本博客记录的是在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

如图所示:
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐