UBUNTU16.04執行ORB SLAM2

是皮皮攀呀,發表於2019-04-22

下載好原始碼:https://github.com/raulmur/ORB_SLAM2

chmod +x build.sh
./build.sh

執行問題1:

 error: ‘usleep’ was not declared in this scope
         usleep(5000);

解決方法:

 在ORB_SLAM2-master/include/system.h中,增加 "#include <unistd.h>" 。

執行成功

最後一行顯示:

[100%] Built target stereo_euroc

建立catkin_ws,其中主檔案放於新建的src檔案中。

將包含Examples/ROS/ORB_SLAM2的路徑新增到ROS_PACKAGE_PATH環境變數中。gedit ~/.bashrc檔案並在最後新增以下行。

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:

catkin_make

 

在終端執行命令

source ./bashrc

(2)編譯ROS下的ORB-SLAM2

chmod +x build_ros.sh

 ./build_ros.sh

編譯報錯:

/usr/bin/ld: CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/Stereo.dir/build.make:214: recipe for target '../Stereo' failed
make[2]: *** [../Stereo] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/Stereo.dir/all' failed
make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2

解決方法:https://blog.csdn.net/sinat_38343378/article/details/78883919

是要在管理員許可權下把locate到的3個檔案全部複製過去。

再 ./build_ros.sh 執行成功。

[100%] Built target Mono

 

單目模式(非ros模式):

rosrun ORB_SLAM2 Mono /home/zp/p_s/ORB_SLAM2-master/src/Vocabulary/ORBvoc.txt /home/zp/p_s/ORB_SLAM2-master/src/Examples/Monocular/TUM1.yaml

沒有輸出。

上述路徑不完整。

./mono_tum path_to_vocabulary path_to_settings path_to_sequence

./mono_tum /home/zp/p_s/ORB_SLAM2-master/src/Vocabulary/ORBvoc.txt /home/zp/p_s/ORB_SLAM2-master/src/Examples/Monocular/TUM1.yaml /media/zp/zengpan/dataset/TUM dataset/rgbd_dataset_freiburg1_room/rgb
【報錯】

經驗教訓是:千萬不要在檔名中包含空格,不然作為輸入時,會自動視為2個引數。

./mono_tum ../../Vocabulary/ORBvoc.txt TUM1.yaml /media/zp/zengpan/dataset/TUM_dataset/rgbd_dataset_freiburg1_room 

【成功了】

執行單目,TUM資料集:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /media/zp/zengpan/dataset/TUM%20dataset/rgbd_dataset_freiburg1_room/rgb

執行orbslam2會在中間卡死,在介面上會顯示track lost 。經過查詢在rgbd_tum.cc中,執行完slam過程會執行SLAM.Shutdown()函式,就算這個函式卡住,導致後面軌跡無法儲存。

解決辦法是把儲存軌跡的函式放在SLAM.Shutdown()前面,這個可以將軌跡儲存,但是shutdown()函式還是不能通過。
 

執行單目,Euroc資料集:

在/home/zp/p_s/ORB_SLAM2-master/src/Examples/Monocular/目錄下:

./mono_euroc ../../Vocabulary/ORBvoc.txt EuRoC.yaml /media/zp/zengpan/dataset/Euroc_dataset/MH_01_easy/mav0/cam0/data /home/zp/p_s/ORB_SLAM2-master/src/Examples/Monocular/EuRoC_TimeStamps/MH01.txt

===============================================

單目模式(ros模式):

相關文章