一、ORB_SLAM2
ORB_SLAM2是能够用于单目、双目、RGB-D相机的实时SLAM库,可计算相机轨迹和稀疏3D重建(在具有真实比例的双目数据和RGB-D情况下)。 它能够实时检测环路并重新定位摄像机。
ORB_SLAM2框架提供了基于真实道路的 KITTI数据集采用双目、单目摄像头进行SLAM;提供了基于室内的 TUM数据集采用用RGB-D、单目摄像头实现SLAM;也提供了基于四轴飞行器采集的EuRoC数据集采用双目、单目摄像头实现SLAM。
使用该框架需要进行下载全部内容并配置依赖,该项目的Github地址:https://github.com/raulmur/ORB_SLAM2
该框架可以在没有ROS的情况下进行编译,此处主要采用ROS进行配置。
二、配置环境和依赖
根据ORB_SLAM2的官方文档说明,需要现行安装Pangolin、OpenCV、Eigen3、DBoW2 和g2o以及ROS框架。
其中 DBoW2 和g2o两个库文件在ORB_SLAM2的GitHub主目录下的Thirdparty文件夹中自带。
而ROS框架(Melodic版本)内自带OpenCV-3.2.0库文件也无需另外下载。
1.Pangolin
Pangolin是一个用于3D视觉和导航的轻量级操作库。安装该库文件需要执行如下命令
# 安装boost编译依赖环境
sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
# 下载源码
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
# 执行编译,这里的参数根据cpu核心数来,8核的就是-j8
make -j4
# 编译完之后,执行安装
sudo make install
2.Eigen3
该库文件的安装直接下载即可:
sudo apt-get install libeigen3-dev
使用该库文件,只需要在CMakeLists.txt 文件中只要包含如下内容即可
![](/qrcode.jpg)
include_directories("/usr/include/eigen3")
其中括号内填写该库文件的安装地址,可以采用如下指令进行查找
sudo updatedb
locate eigen3
3.编译ORB_SLAM2
# 下载源码
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
# 赋予可执行权限
cd ORB_SLAM2
chmod +x build.sh
由于ORB_SLAM2的官方仅在Ubuntu 12.04、14.04、16.04上进行过测试,所以作者未考虑18.04的兼容性问题。
如若此时直接进行编译会产生报错,因而需要手动在下载的源码内 include/System.h文件中添加一个include头#include <unistd.h>
之后再进行编译就不会出现报错。
# 源码目录下
./build.sh
注意:此处的报错是指红色的字句,如下图蓝色的警告可以忽略不计。下图显示编译为100%即表示编译成功。
如果正常编译完成,则lib目录下会生成libORB_SLAM2.so库,Examples目录下会生成对应的可执行程序 mono_tum、mono_kitti、mono_euroc、 stereo_kitti、 stereo_euroc、 rgbd_tum。
4.配置编译
可以在执行cmake和make编译命令之前,在根目录的 CMakeLists.txt 文件中(12行)添加以下两行配置,来屏蔽大量的代码过时警告(对编译结果没有影响),方便编译出错时候排查问题。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
三、编译ROS环境
在使用ROS来控制ORB_SLAM2之前,需要先对 mono、 monoAR、 stereo、RGB-D进行编译。这些节点分别针对于单目、单目+AR、双目、深度摄像头进行控制。编译ROS节点主要包括如下几步
1.添加节点路径
首先需要将上述节点的源码路径添加入ROS_PACKAGE_PATH中,具体方式为向主目录中的**.bashrc**文件中加入如下内容,其中 PATH/ORB_SLAM2 替换成你自己的源码路径。
# 编辑.bashrc文件
sudo vi ~/.bashrc
# 在文件最后添加如下内容
source /opt/ros/melodic/setup.bash
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
此处,由于我使用的命令行为zsh而非默认的bash,所以我实际进行添加时修改的文件为**.zshrc**
随后,执行如下指令使得上述修改生效,同样此处由于我使用的为zsh,故而重载的为**.zshrc**。
# bash
source ~/.bashrc
# zsh
source ~/.zshrc
2.编译
完成第一步后即可进行编译了。
# 进入源码根目录
cd ~/ORB_SLAM2
# 赋予脚本可执行权限
chmod +x build_ros.sh
# 编译
./build_ros.sh
此处需要说明,若所用Ubuntu版本为18.04以及之后的,初次编译会产生如下错误,需要进行一些修改再进行编译。
解决此问题需要打开 源码根目录下的Examples/ROS/ORB_SLAM2/CMakeLists.txt文件,并在第58行添加如下内容
-lboost_system
随后就可以成功编译了。
总结
至此,有关Ubuntu18.04进行配置ORB_SLAM2环境的步骤就全部完成了。