本博客记录的是在Ubuntu18.04中ORB_SLAM2的配置过程,并且包含ROS 环境下ROB_SLAM的配置。
配置前需要下载cmake、gcc、g++和Git工具。
下载cmake
sudo apt-get install cmake
下载git
sudo apt-get install git
下载gcc和g++
sudo apt-get install gcc g++
在安装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
如果之前就安装过opencv的可以跳过这一步。如果没有安装的,可以参考此博客:Ubuntu18.04安装并配置OpenCV 3.4.1
方法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
如果需要在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已经安装好啦。
编译完成后会在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
问题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
需要根据实际情况,提示哪个文件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