Ubuntu18.04+ROS Melodic配置ORB_SLAM2框架

文章目录


一、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文件夹中自带。
Ubuntu18.04+ROS Melodic配置ORB_SLAM2框架
而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>
Ubuntu18.04+ROS Melodic配置ORB_SLAM2框架
Ubuntu18.04+ROS Melodic配置ORB_SLAM2框架
之后再进行编译就不会出现报错。

# 源码目录下
./build.sh

注意:此处的报错是指红色的字句,如下图蓝色的警告可以忽略不计。下图显示编译为100%即表示编译成功。
Ubuntu18.04+ROS Melodic配置ORB_SLAM2框架
如果正常编译完成,则lib目录下会生成libORB_SLAM2.so库,Examples目录下会生成对应的可执行程序 mono_tum、mono_kitti、mono_euroc、 stereo_kitti、 stereo_euroc、 rgbd_tum

Ubuntu18.04+ROS Melodic配置ORB_SLAM2框架
Ubuntu18.04+ROS Melodic配置ORB_SLAM2框架

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-industrial tutorial Training[melodic] demo代码补全记录(demo1)


下一篇:2021-02-28