UBUNTU16.04執行ORB SLAM2
下載好原始碼: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模式):
相關文章
- Ubuntu20.04 部署 ORB SLAM2 並執行UbuntuORBSLAM
- 建立DBow離線詞典用於ORB SLAM2ORBSLAM
- ORB_SLAM2安裝編譯測試ubuntu16.04ORBSLAM編譯Ubuntu
- [深度學習]Ubuntu16.04執行Python程式時會黑屏深度學習UbuntuPython
- ORB problem determinationORB
- ORB 相關的次程式碼ORB
- 華碩飛行堡壘安裝Ubuntu16.04Ubuntu
- 解析ORB-SLAM3的原始碼ORBSLAM原始碼
- Linux ORB-SLAM2 程式解讀LinuxORBSLAM
- ORB_SLAM2之Pangolin的安裝ORBSLAMGo
- 詳細解析ORB-SLAM3的原始碼ORBSLAM原始碼
- 保證執行緒在主執行緒執行執行緒
- sift、surf、orb 特徵提取及最優特徵點匹配ORB特徵
- KITTI_00_SPTAM軌跡和KITTI_00_ORB軌跡ORB
- Ubuntu16.04搭建LAMPUbuntuLAMP
- Ubuntu16.04搭建LNMPUbuntuLNMP
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 多執行緒-執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒
- 多執行緒-執行緒控制之禮讓執行緒執行緒
- 多執行緒-執行緒控制之中斷執行緒執行緒
- 執行緒執行順序——CountDownLatch、CyclicBarrier 、join()、執行緒池執行緒CountDownLatch
- 多執行緒-執行緒控制之守護執行緒執行緒
- Java執行緒中斷與終止執行緒執行Java執行緒
- ORB:調查顯示英國55%的人支援退出歐盟ORB
- 執行緒和執行緒池執行緒
- 多執行緒【執行緒池】執行緒
- 多執行緒--執行緒管理執行緒
- Java多執行緒——執行緒Java執行緒
- 執行緒 執行緒池 Task執行緒
- 執行緒與多執行緒執行緒
- 並行執行並行
- ubuntu16.04 找回密碼Ubuntu密碼
- ubuntu16.04安裝rosUbuntuROS
- Pytest 順序執行,依賴執行,引數化執行
- 多執行緒之初識執行緒執行緒
- 執行上下文和執行棧
- Java多執行緒-執行緒中止Java執行緒