Ubuntu18.04 ORB_SLAM2的安裝、配置、運行SLAM單目實例

本博客記錄的是在Ubuntu18.04中ORB_SLAM2的配置過程,並且包含ROS 環境下ROB_SLAM的配置。

1、安裝工具

配置前需要下載cmake、gcc、g++和Git工具。

下載cmake

sudo apt-get install cmake

下載git

sudo apt-get install git

下載gcc和g++

sudo apt-get install gcc g++  

2、安裝Pangolin

在安裝pangolin之前,先安裝依賴項。

sudo apt-get install libglew-dev
sudo apt-get install libpython2.7-dev

下載安裝Pangolin。可能會有點慢,如果因爲網不太好斷開了,再重新執行一次下列命令即可。

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

下載好後,進入Pangolin文件夾。

cd Pangolin

創建編譯文件夾,命名爲build。

mkdir build

進入文件夾進行配置。

cd build

cmake一下。這裏使用命令cmake ..也是可以的。
如果報錯:‘No package ‘xkbcommon’ found’,可以參考後面第7部分問題1的解決方法。

cmake -DCPP11_NO_BOOSR=1 ..

完成如下圖所示。
在這裏插入圖片描述
執行如下命令,編譯過程可能會有點慢,耐心等待哦。
這裏也可以使用make -j等命令速度會稍快一些,但如果電腦性能不佳,還是使用make命令較好。

sudo make

編譯安裝。

sudo make install

3、安裝OpenCV

如果之前就安裝過opencv的可以跳過這一步。如果沒有安裝的,可以參考此博客:Ubuntu18.04安裝並配置OpenCV 3.4.1

4、安裝Eigen

方法1
使用下列命令來安裝eigen。

sudo apt-get install libeigen3-dev

如下圖所示:
在這裏插入圖片描述
方法2
在http://eigen.tuxfamily.org下載,最低至少爲3.1.0版本。
解壓後。創建編譯文件夾,命名爲build。

mkdir build

進入文件夾進行配置。

cd build

cmake一下。

cmake ..

然後執行如下命令,編譯過程可能會有點慢,耐心等待哦。
這裏也可以使用make -j等命令速度會稍快一些,但如果電腦性能不佳,還是使用make命令較好。

sudo make

編譯安裝。

sudo make install

5、安裝ORB_SLAM2

如果需要在ROS環境下運行ORB_SLAM,最好放在工作區的src文件夾下(這是我的工作區目錄:catkin_ws/src)
進入ROS工作區的src文件夾。

cd ~/catkin_ws/src/

執行下列命令下載安裝ORB_SLAM2。

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

進入ORB_SLAM2文件夾。

cd ORB_SLAM2

給build.sh文件權限。

chmod +x build.sh

編譯build.sh文件。
如果報錯:ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000)。可以參考後面第7部分問題2的解決方法。

./build.sh

如需要在ROS環境下運行ORB_SLAM,則需要執行下列三條命令:
如果編譯build_ros.sh文件報錯:CMakeFiles/RGBD.dir/build.make:197: recipe for target ‘…/RGBD’ failed。可參考後面第7部分問題3的解決方法。

chmod +x build_ros.sh
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
./build_ros.sh

最後,執行下列指令:
編譯過程可能會有點慢,耐心等待哦。這裏也可以使用make -j、make -j4、make -j8等命令速度會稍快一些,-j 後的的數字代表線程。但如果電腦性能不佳,可以把build.sh文件和build_ros.sh文件中的最後一句命令make -j 改爲make

make

至此,ORB_SLAM2已經安裝好啦。

6、運行單目SLAM實例

編譯完成後會在ORB_SLAM2/Examples文件夾下生成各種可執行文件。這裏以單目情況爲例,展示如何運行ORB_SLAM2程序。
(1)下載數據集
有TUM、KITTI、EuRoC三種數據集,這兒使用TUM數據集,從http://vision.in.tum.de/data/datasets/rgbd-dataset/download下載序列並解壓縮。我下載的是第一個的,下載下來的文件名是:rgbd-dataset_freiburg_xyz。
(2)編譯
官方給出的命令格式如下:
PATH_TO_SEQUENCE_FOLDER爲數據集的存儲路徑。
tumx.yaml與數據集對應,比如TUM1.yaml、TUM2.yaml 、TUM3.yaml 分別對應 freiburg1、freiburg2 、 freiburg3。

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txtExamples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER

根據自己保存路徑不一樣適當修改。我的數據集放在/home/hadoop目錄下。

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/hadoop/rgbd_dataset_freiburg1_xyz

整體運行效果如下:
在這裏插入圖片描述

7、問題與解決方案

問題1
編譯Pangolin時報錯:‘No package ‘xkbcommon’ found’
解決方案:
使用下列命令:

sudo apt-get install libxkbcommon-x11-dev

問題2
ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000);
解決方案:
找到對應的System.cc文件的首部加入 頭文件

#include<unistd.h>

需要根據實際情況,提示哪個文件usleep有問題,就去加這個頭文件。
需要增加unistd.h的文件還有:
Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc
Examples/RGB-D/rgbd_tum.cc
Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/System.cc
src/Tracking.cc
src/Viewer.cc

參考教程:https://blog.csdn.net/qq_15698613/article/details/98453592

問題3
CMakeFiles/RGBD.dir/build.make:197: recipe for target ‘…/RGBD’ failed
在這裏插入圖片描述
解決方案:
修改home/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/文件夾下的CMakeLists.txt文件。
在set(LIBS xxxxx 的後面加上下列這一句代碼。

-lboost_system

如圖所示:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章