[学习笔记-SLAM篇]Ubuntu16.04+ROS下配置ORB-SLAM3

这篇博客参考性可能不是很强,一方面之前配过ROS,所以这部分会省略,一方面之前也配过ORB-SLAM2,相关依赖项不会重新配置,不过可以参考[学习笔记-SLAM篇]Ubuntu16.04+ROS下配置mynteye版本ORB-SLAM2,一起对应结合着配置,这个里面有ROS和ORB-SLAM2(mynteye版)的安装过程。


主要参考内容是代码里的README.md

考虑到要结合ROS安装,所以东西都是安装在ROS的src文件夹下的,也就是说要先安装ROS。

目录

  • 一、安装安装ROS kinect
  • 二、安装C++11 or C++0x Compiler
  • 三、安装Pangolin
  • 四、安装OpenCV
  • 五、安装Eigen3
  • 六、安装DBoW2和g2o
  • 七、安装Python
  • 八、安装ORB-SLAM3
  • 九、测试
    • 9.1 标准数据集测试
    • 9.2 ROS测试

一、安装安装ROS kinect

老规矩,参见[学习笔记-SLAM篇]Ubuntu16.04下配置VINS-Mono。

二、安装C++11 or C++0x Compiler

#这个以前配别的东西有安装
#开终端,输入
sudo apt-get install gcc
sudo apt-get install g++

三、安装Pangolin

建议自行找教程,或尾部有一些链接可参考。
我的安装教程有水分。

四、安装OpenCV

参考链接中说源码中要求OpenCV最低版本为:OpenCV 3.0,因此需要注意一下版本。

五、安装Eigen3

同样源码中要求Eigen3最低版本为:3.1.0

六、安装DBoW2和g2o

都在源码ThirdParty中,安装ORB-SLAM3自然会安装的。

七、安装Python

#安装python
sudo apt install libpython2.7-dev

八、安装ORB-SLAM3

#可以直接在src中使用指令
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
#也可以自己下载好包解压
#进入ORB-SLAM3文件夹
cd ORB_SLAM3
chmod +x build.sh
#可以把build.sh中的make -j后面加个4或者8,变成多线程,会快一点
./build.sh
#编译ros
#添加环境变量
gedit ~/.bashrc
#添加自己的orb-slam3的ROS路径
#如果有其他版本的orb的ROS路径,可以先注释掉
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:<PATH>/ORB_SLAM3/Examples/ROS
#保存后source一下
source ~/.bashrc
#进入ORB-SLAM3文件夹
chmod +x build_ros.sh
./build_ros.sh

九、测试

9.1 标准数据集测试

测试一下双目+IMU(有单/双目+IMU)

#下好数据集
./Examples/Stereo-Inertial/stereo_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/EuRoC.yaml <数据集路径>/MH_05 ./Examples/Stereo-Inertial/EuRoC_TimeStamps/MH05.txt

9.2 ROS测试

有大佬改进单目IMU和双目IMU,替换了词典为二进制格式,加载速度更快。

https://github.com/xiefei2929/ORB_SLAM3-ROS-Interface

后面可以测试一下。

如果用ros的bag包。
由于代码文件中的节点信息可能与自己采集的数据节点不同,因此首先需要检查一下bag包的节点信息,然后进行修改。
有2种方法,1)在ROS中把对应.cc文件中的节点名称修改为自己的节点名称(比较麻烦,要重新编译ros.sh);2)直接在运行ros的指令中对节点名称说明(事先查询一下.cc文件中的节点名称)。
具体使用不同模式的接口文件时,需要对应修改一下输入参数(模式名称、是否矫正等)。

#在bag包的位置开终端查看节点信息
rosbag info <filename>.bag
#测试.bag包
#在ORB_SLAM3文件夹开一个终端
roscore
#2
rosrun ORB_SLAM3 <不同模式> Vocabulary/ORBvoc.txt <设置文件路径>.yaml [部分需要输入truefalse]
#3
#下面以第2种方式修改节点信息
#以双目+imu为例
rosbag play --pause <路径>/xxx.bag <自己bag的左图节点>:=<.cc文件中左图节点> <自己bag的右图节点>:=<.cc文件中右图节点> <自己bag的imu节点>:=<.cc文件中imu节点>
#由于加入--pause指令,可用控制键暂停/恢复,第三行代码运行之后记得按下空格键开始播放bag文件
#如果以第一种方式修改.cc中的节点信息,则需要重新编译
#在ORB_SLAM3中
./build_ros.sh
#1
roscore
#2
rosrun ORB_SLAM3 <不同模式> Vocabulary/ORBvoc.txt <设置文件路径>.yaml [部分需要输入truefalse]
#3
rosbag play <bag包路径>xxx.bag

参考
Ubuntu16.04环境下配置运行ORB-SLAM3
ubuntu18.04配置ORB-SLAM3
前沿 | 手把手带你玩转ORB-SLAM3
ORBSLAM3 用ROS接口运行双目IMU和单目IMU模式
ORB-SLAM3 ROS 运行
ROS运行ORB_SLAM3遇到的问题以及解决

你可能感兴趣的:(SLAM篇)