文章目录
一、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 文件中只要包含如下内容即可
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")