Possible values are: Huber, Cauchy, Tukey ~TrackerMEstimator , default: Tukey: Estimator to be used for bundle adjustment.. Retrieve this value from --the cameracalibrator node ~Cam_
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Trang 2
Độc lập – Tự do – Hạnh phúc
BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
Họ và tên tác giả luận văn:
Đề tài luận văn: robot trong
Trang 4LỜI CẢM ƠN
Trước hết em xin gửi lời cám ơn chân thành tới các thầy cô và cán bộ giảng dạy tại trường đại học Bách hoa Hà Nội, các thầy cô trong bộ môn ỹ thuật máy tính khoa K k kỹ thuật máy tính và ruyền thông đã tận tình chỉ bảo, giúp đỡ em trong quá trình học tập t
và nghiên cứu khoa học tại trường Các thầy cô không chỉ dạy kiến thức, phương pháp làm việc và nghiên cứu khoa học, mà còn giúp đỡ chúng em trưởng thành hơn trong cuộc sống
Em xin gửi lời tri ân chân thành nhất tới thầy Ngô Lam Trung đã luôn nhiệt tình giúp
đỡ, hướng dẫn và tạo điều kiện tốt nhất giúp em nghiên cứu trong suốt quá trình thực tập tại phòng thí nghiệm CSLAB 505 – Tòa nhà B1 đại học Bác h K hoa Hà Nội
Cuối cùng, em xin gửi lời cám ơn tới gia đình, bạn bè đã giúp đỡ, động viên trong thời gian em học tập và nghiên cứu tại trường.
Hà Nội, tháng năm 20 6 20 Dương Quốc Hùng Viện CNTT&TT ĐH Bách Khoa Hà Nội
Trang 5Đối tượng và phạm vi nghiên cứu
Trang 6
Ký
Trang 7MỤC LỤC
LỜI CẢM ƠN 2
DANH MỤC HÌNH ẢNH 7
DANH MỤC TỪ VIẾT TẮT 8
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 9
1.1 Đặt vấn đề 9
1.2 Mục đích nghiên cứu 9
1.3 Đối tượng và phạm vi nghiên cứu 10
1.4 Phương pháp nghiên cứu 10
CHƯƠNG 2 LÍ THUYẾT XÁC ĐỊNH VỊ TRÍ VÀ THUẬT TOÁN PTAM 11
2.1 Cơ sở lí thuyết xác định vị trí 11
2.2 Hệ thống PTAM 11
2.2.1 11
2.2.2 toán SLAM trong PTAM 11
2.2.3 12
2.2.4 Theo dõi (Tracking) 12
2.2.5 15
2.3 PTAM với hệ điều hành ROS 18
2.3.1 18
2.3.2 OS 21
2.3.3 24
2.4 Xây dựng thử nghiệm định vị cho robot trong nhà dùng PTAM 30
2.4.1 30
2.4.2 Xây 34
2.4.3 38
2.4.4 41
2.4.5 45
2.4.6 47
CHƯƠNG 3 KẾT LUẬN 52
3.1 Những công việc đã hoàn thành 52
3.2 Kết quả thử nghiệm 52
3.3 Những hạn chế của thuật toán PTAM 52
3.4 Chú ý khi sử dụng ethzasl_ptam 53
3.5 Hướng phát triển của đồ án trong tương lai 53
TÀI LIỆU THAM KHẢO 54
Trang 8DANH MỤC HÌNH ẢNH
Hình 2.2.1 : Hoạt động của luồng ánh xạ 15
Hình 2.3.1 : Sơ đồ khối hệ điều hành ROS 19
Hình 2.3.2 : Sơ đồ tương tác giữa các node và topic 20
Hình 2.4.1: Camera yokoo 35
Hình 2.4.2: Thông tin bus usb camera 35
Hình 2.4.3 : Thông tin về camera 36
Hình 2.4.4: Danh sách topic 37
Hình 2.4.5 : Hình ảnh rgb từ camera 37
Hình 2.4.6 : Hình ảnh đa mức xám từ camera 38
Hình 2.4.7 : Hình ảnh hiệu chỉnh camera 39
Hình 2.4.8 : Giao diện hiệu chỉnh camera 39
Hình 2.4.9 : Hiệu chỉnh camera 40
Hình 2.4.10 : Kết quả hiệu chỉnh camera 40
Hình 2.4.11 : Chạy node ptam 41
Hình 2.4.12: node rqt_reconfigure 42
Hình 2.4.13 : Khởi tạo khung hình chính 1 42
Hình 2.4.14 : Khởi tạo khung hình chính 2 43
Hình 2.4.15 : Bản đồ Feature và mặt phẳng 43
Hình 2.4.16 : Vị trí mặt phẳng khi di chuyển camera 44
Hình 2.4.17 : Bản đồ 3D vị trí camera và features 44
Hình 2.4.18 : Cửa sổ vlsam/preview 46
Hình 2.4.19 : Hiển thị đường đi trong rViz 47
Hình 2.4.20: Khoảng cách đơn vị trên bản đồ 48
Hình 2.4.21 : Bản đồ 3D tại vị trí 1 và 2 48
Hình 2.4.22 : Vị trí camera tại điểm 3 48
Hình 2.4.23 : Bản đồ features map trường hợp camera hướng lên trần 49
Hình 2.4.24 : Bản đồ 3D vị trí camera tại điểm 1 và 2 50
Hình 2.4.25 : Bản đồ 3D vị trí camera tại vị trí 3 50
Trang 9DANH MỤC TỪ VIẾT TẮT
ROS Ros Operating System
GPS Global Positioning System
GNSS Global Navigation Satellite
System
IPS Indoor Positioning System
PTAM Parallel Tracking And Mapping SLAM Simultaneous Localization And
Mapping
H
ngoài
CPU Central Processing Unit
Trang 10
camera
Trang 111.3 Đối tượng và phạm vi nghiên cứu
trong nhà
1.4 Phương pháp nghiên cứu
Trang 122.2.1 Giới thiệu hệ thống PTAM
PTAM (Parallel Tracking and Mapping)
2.2.2 Thuật toán SLAM trong PTAM
Theo dõi (tracking)
(Batch Techniques)
Trang 13
80x60 pixel
2.2.4 Theo dõi (Tracking)
theo dõi (tracking)
theo dõi (tracking)
3
4 ng
5
Trang 15 Chất lượng theo dõi (tracking) và sửa lỗi
theo dõi theo dõi theo dõi
theo dõi
theo dõi kém Theo dõi
Trang 16Hình 2.2.1 : Hoạt động của luồng ánh xạ
Trang 20Hình 2.3.1 : Sơ đồ khối hệ điều hà nh ROS
Trong (packages) có liên quan
Navigation , gói này
thân, bánh, c cài
Trang 22 m
type rostopic echo /tên topic.
Trang 24 Graph khác
ROS Community level
Trang 25
frame (transform tf
ptam: The main node described here
remote_ptam: №de for displaying PTAM information and managing PTAM from a remote (ground) station
ptam_visualizer: №de to store map, keyframe and path information and visualize it in RViz
cameracalibrator: №de to calibrate the camera Copy the obtained calibration to the fix parameter file
№de ptam
PTAM
các
-máy
Trang 27 vslam/pointcloud point cloud service to visualize 3D points in RViz :
vslam/keyframes: keyframe service to visualize keyframes in RViz
PTAM:
~Scale double ( , default: 1.0): Scale Range: 0.01 30.0
~MotionModelSource (str, default: CONSTANT) selects the source for the : motion model Possible values are: MM_CONSTANT (CONSTANT): use constant motion model., MM_IMU (IMU): use imu orientation for the motion model., MM_FULL_POSE (FULL_POSE): use full pose estimated externally for motion model
~MaxPatchesPerFrame double ( , default: 500.0): max features per frame Range: 10.0 to 1000.0
~MaxKFDistWiggleMult double ( , default: 3.0): 'distance' after which a new
kf is requested Range: 0.1 to 10.0
~UseKFPixelDist bool ( , default: False): use AutoInitPixel as new KF request criteria
Trang 28 ~DisableCoarse bool ( , default: False): enable/disable coarse tracking
~CoarseMinVelocity double ( , default: 0.006): speed above which coarse stage
~UpdateSquaredConvergenceLimit double ( , default: 1e-06): limit for convergence in bundle adjustment Range: 0.0 to 1.0
~BundleDebugMessages bool ( , default: False): print bundle debug messages
~FAS™ethod (str, default: FAST9_nonmax): FAST corner method Possible values are: FAST9 (FAST9): FAST 9, FAST10 (FAST10): FAST 10, FAST9_nonmax (FAST9_nonmax): FAST 9 with nonmax suppression, AGAST12d (AGAST12d): AGAST 12 pixel diamond, OAST16 (OAST16): AGAST 16 pixel circular
~Thres_lvl0 int ( , default: 10): threshold for FAST features on level 0 Range: 0
to 255
Trang 29 ~AdaptiveThrs bool ( , default: False): adaptive threshold for corner extraction
~AdaptiveThrsMult double ( , default: 5.0): controls adaptive threshold
to MaxPatches*N corners Range: 0.5 to 20.0
~RotationEstimatorBlur double ( , default: 0.75): small images for the rotation estimator blur Range: 0.0 to 10.0
~UseRotationEstimator bool ( , default: True): small images for the rotation estimator enable/disable
~MiniPatchMaxSSD int ( , default: 100000): MiniPatch tracking threshhold Range: 0 to 10000000
~PlaneAlignerRansacs (int, default: 100): number of dominant plane RANSACs Range: 0 to 1000
~RelocMaxScore (int, default: 9000000): score for relocalization Range: 0 to
90000000
~AutoInit bool ( , default: False): enable auto initialization
~AutoInitPixel (int, default: 20): min pixel distance for auto initialization Range: 1 to 100
~MaxStereoInitLoops (int, default: 10): max # of loops for stereo initialization Range: 1 to 100
~InitLevel (, default: 1): minimal pyramidal level for map initialization Use higher levels on self-similar structures Range 0 to 3
~gui (, default: true): enables/disables the graphical feedback Disable this on onboard computers
~ImageSizeX (, default: 752): x-dimensions of the input image to be processed
Trang 30 ~MinTukeySigma (, default: 0.4): Sigma value for Tukey estimator
~CandidateMinSTScore (, default: 70): minimal Shi-Tomasi score for a point
to be considered as a candidate feature
~Cam_fx (, default: ): Camera focal length in x Retrieve this value from the cameracalibrator node
~Cam_fy (, default: ): Camera focal length in y Retrieve this value from the cameracalibrator node
~Cam_cx (, default: ): Camera center in x Retrieve this value from the cameracalibrator node
~Cam_cy (, default: ): Camera center in y Retrieve this value from the cameracalibrator node
~Cam_s (, default: ): Camera distortion factor Retrieve this value from the cameracalibrator node
~Calibrator_BlurSigma (, default: 1.0): blur factor for the cameracalibrator
~Calibrator_MeanGate (, default: 10): mean value for the cameracalibrator
~Calibrator_MinCornersForGrabbedImage (, default: 20): min # of corners for the cameracalibrator
~Calibrator_Optimize (, default: 0): optimize flag for the cameracalibrator
~Calibrator_Show (, default: 0): show flag for the cameracalibrator
~Calibrator_№Distortion (, default: 0): enable/disable distortion flag for the cameracalibrator
~CameraCalibrator_MaxStepDistFraction (, default: 0.3): max step for the cameracalibrator
~CameraCalibrator_CornerPatchSize (, default: 20): size for patches used in the cameracalibrator
~GLWindowMenu_Enable (, default: true): use the openGL window
~GLWindowMenu_mgvnMenuItemWidth (, default: 90): openGL window size
~GLWindowMenu_mgvnMenuTextOffset (, default: 20): offset trong openGL window
Trang 31to display the 3D path of the camera
array for RViz to display KF tripods
đến 60000
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu
$(lsb_release -sc) main" > latest.list'
/etc/apt/sources.list.d/ros-Cài keys
sudo apt-key adv keyserver 'hkp://keyserver.ubuntu.com:80' recv key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 -
Trang 32 :
sudo apt update
sudo apt install ros melodic desktop full - -
1 sudo apt -y update
2 sudo apt -y upgrade
Step 2: Cài OS Libraries
1 sudo apt -y remove x264 libx264- dev
2 ## Install dependencies
3 sudo apt -y install build-essential checkinstall cmake pkg-config yasm
4 sudo apt -y install git gfortran
5 sudo apt -y install libjpeg8-dev libjasper-dev libpng12-dev
6 sudo apt -y install libtiff5-dev
7 sudo apt -y install libtiff-dev
8 sudo apt -y install libavcodec dev - libavformat- dev
libswscale-dev libdc1394- 22 -dev
Trang 3314 sudo apt -y install libgtk2.0- dev libtbb- dev qt5 -default
15 sudo apt -y install libatlas-base-dev
16 sudo apt -y install libfaac-dev libmp3lame-dev libtheora- dev
17 sudo apt -y install libvorbis- dev libxvidcore- dev
18 sudo apt -y install libopencore-amrnb-d ev libopencore-amrwb- dev
19 sudo apt -y install libavresample-dev
20 sudo apt -y install x264 v4l -utils
21 # Optional dependencies
22 sudo apt -y install libprotobuf- dev protobuf-compiler
23 sudo apt -y install libgoogle- glog dev - libgflags- dev
24 sudo apt -y install libgphoto2- dev libeigen3- dev libhdf5- dev doxygen
Step 3: Cài Python Libraries
1 sudo apt -y install python3-dev python3-pip
2 sudo -H pip3 install -U pip numpy
3 sudo apt -y install python3-testresources
C ài virtualenv virtualenvwrapper modules và Python virtual environments
1 cd $cwd
2 ############ For Python 3 ############
3 # create virtual environment
4 python3 -m venv OpenCV-"$cvVersion"- py3
5 echo "# Virtual Environment Wrapper" >> ~/.bashrc
6 echo "alias workoncv-$cvVersion=\"source $cwd/Ope nCV
-$cvVersion-py3/bin/activate "" \ >> ~/.bashrc
7 source "$cwd"/OpenCV-"$cvVersion"-py3/bin/activate
8 # now install python libraries within this virtual environment
9 pip install wheel numpy scipy matplotlib image
scikit-learn ipython dlib
10 # quit virtual environment
11 deactivate
Step 4: T opencv and opencv_contrib
1 git clone https://github.com/opencv/opencv.git