ORB_SLAM2在ubuntu16.04上的安裝測試


一、下載ORB_SLAM2源碼

git clone https://github.com/raulmur/ORB_SLAM2.git

參考功能包的說明,在編譯之前需要安裝相應依賴包:

sudo apt-get install libboost-all-dev libblas-dev liblapack-dev

二、安裝Pangolin庫

1、安裝依賴

sudo apt-get install libpython2.7-dev

2、下載Pangolin庫

git clone https://github.com/stevenlovegrove/Pangolin.git

3、源碼編譯

mkdir build
cd build
cmake ..
make
sudo make install

如果執行cmake ..指令出現錯誤:Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE),執行如下指令后重新編譯:

sudo apt-get install doxygen

三、安裝OpenCV3.2.0以及eigen3

安裝方法:進入文件根目錄,執行:

mkdir build
cd build
cmake ..
make
sudo make install

四、ORB_SLAM2安裝

1、編譯ORB_SLAM2包,進入ORB_SLAM2根目錄,執行:

chmod +x build.sh
./build.sh

編譯過程可能會報錯:ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000),這是因為system.h文件中缺少一個頭文件,打開ORB_SLAM2/include/system.h文件,然后在頭文件處添加:#include <unistd.h>

再次進行編譯,應該可以順利通過。

2、編譯ORB_SLAM2的ROS功能包

在編譯ROS功能包之前,在終端設置ORB_SLAM2功能包的路徑,最好將配置文件放入終端配置文件中:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:ORB_SLAM_PATH/ORB_SLAM2/Examples/ROS

其中ORB_SLAM_PATH是ORB_SLAM2功能包的所在路徑

根據個人文件位置,本文所用指令為:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/oay/application/ORB_SLAM2/Examples/ROS

執行如下編譯命令:

chmod +x build_ros.sh
./build_ros.sh

可能出現的錯誤:

CMakeFiles/Stereo.dir/build.make:227:recipe for target '../Stereo' failed
CMakeFiles/RGBD.dir/build.make:197: recipe for target ‘…/RGBD’ failed
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/RGBD.dir/all' failed,
CMakeFiles/Makefile2:104:recipe for target 'CMakeFiles/Stereo.dir/all' failed

解決方法:修改ORB_SLAM2/Examples/ROS/ORB_SLAM2/路徑下的CMakeLists.txt文件,在set(LIBS......最后部分加入-lboost_system),如下圖所示:

 再次編譯,一般可以通過

3、設置環境變量

source /home/oay/application/ORB_SLAM2/Examples/ROS/ORB_SLAM2/build/devel/setup.bash

最好可以將其加入到~/.bashrc中,以便在所有終端都可以使用該環境變量

echo "source /home/oay/application/ORB_SLAM2/Examples/ROS/ORB_SLAM2/build/devel/setup.bash" >> ~/.bashrc

安裝完成,接下來運用自己搭建的仿真環境進行測試。

五、仿真環境下測試

仿真環境下所用為RGB-D深度相機,因此執行:

rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml

可能會出現錯誤(段錯誤,核心已轉儲):

Depth Threshold (Close/Far Points): 2.98842
terminate called after throwing an instance of 'std::runtime_error'
what(): Pangolin X11: Unable to retrieve framebuffer options
Aborted (core dumped)

 

 解決方法:

對Pangolin包里面的Pangolin/src/display/device/display_x11.cpp文件如下兩行進行注釋: 

 

 然后重新對Pangolin包進行編譯和安裝,再次運行ORB_SLAM2即可。

 運行效果如下圖所示:

 

 

 

參考自: https://blog.csdn.net/weixin_45168199/article/details/107106811


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM