一、下載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