ubuntu18.04系统下搭建ORB-SLAM3的环境并跑数据集

1 ORB-SLAM3算法环境搭建

其实如果之前搭建好了ORB-SLAM2的环境,环境搭建这一块感觉就可以略过了。。

1.1 安装Pangolin

新版本的Pangolin有问题,需要安装旧版本
见链接:https://www.cnblogs.com/zzx2cnblogs/p/6438626.html

1.2 安装OPENCV

Tested with OpenCV 3.2.0 and 4.4.0.
安装opencv4.4.0参考链接:https://www.jianshu.com/p/59608e83becb
opencv4.4版本在不使用ROS跑数据集时是正常的,但是在使用ROS跑数据集时出现了segmentation fault(core dumped),后来换成opencv3.2.0成功了(安装OPENCV3.2.0之后需要在CMakeLists.txt中修改相应的opencv版本)

1.3 安装Eigen

Required at least 3.1.0.

git clone https://github.com/eigenteam/eigen-git-mirror
#安装
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install

1.4 安装PCL点云库

在安装ROS-Melodic时安装了pcl-1.8.1版本,没有再次安装

2 编译ORBSLAM3

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
cd ORB_SLAM3
chmod +x build.sh
./build.sh

代码针对普通编译和ROS版本的编译提供了两个脚本build.shbuild_ros.sh,如果不用ROS跑数据集使用前者就好了。
在编译ROS版本时,将build_ros.sh中的Example路径改成Example_old

3 跑图片数据集

3.1 跑TUM-VI数据集

数据集官网:https://vision.in.tum.de/data/datasets
进去之后选择VI数据集Visual-Inertial Dataset,根据自己的需要下载
对于运行脚本,作者以前的发行版本有一个汇总的,最新版本没有了,可以在git上搜一下,有很多人保存了。
可以从链接https://github.com/yuantao15/ORB_SLAM3 里面找
ORB-SLAM3路径下新打开一个终端

# 命令格式:可执行文件 词袋路径 yaml路径 数据集路径 图片时间戳路径 IMU时间戳路径 需要保存的轨迹文件名称
./Examples/Monocular-Inertial/mono_inertial_tum_vi Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/TUM-VI.yaml ~/data/TUM/tum_vi/dataset-corridor4_512_16/mav0/cam0/data Examples/Monocular-Inertial/TUM_TimeStamps/dataset-corridor4_512.txt Examples/Monocular-Inertial/TUM_IMU/dataset-corridor4_512.txt dataset-corridor4_512_monoi

EuroC数据集

数据集官网:https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
图片数据集下载好解压后是一个mav0这种形式的文件夹,新建一个名称为MH01的文件夹,把mav0整个文件夹拷贝到MH01文件夹
ORB-SLAM3路径下新打开一个终端:

# 命令格式 可执行文件 词袋路径 yaml路径 数据集图片路径 时间戳路径 需要保存的轨迹文件名称
./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ~/data/EuRoc/MH01 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_monoi

7 使用ROS跑数据集

(1)在ROS/ORB-SLAM3目录下的CMakeLists.txt中的include_dictories中的内容替换成如下部分

#lusx change 20220518 
include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/../../../
${PROJECT_SOURCE_DIR}/../../../include/CameraModels/
${PROJECT_SOURCE_DIR}/../../../include
${Pangolin_INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
${EIGEN3_INCLUDE_DIR}
${catkin_INCLUDE_DIRS} 
)

(2)AR部分有问题,暂时注释CMakeLists.txt中 AR部分相关的内容
(3)编译成功后在Examples_old/ROS/ORB_SLAM3目录下打开一个终端刷新一下环境变量

source bulid/devel/setup.bash

Examples_old/ROS/ORB_SLAM3目录下打开一个终端依次进行以下操作,注意要选对正确的yaml文件,播放数据集时根据单目和双目分别转换成相应的topic,不然SLAM系统订阅不到图像数据的topic
使用ROS跑数据集可以参考我另一篇博客《在ubuntu18.04系统上使用ROS跑ORB-SLAM3时遇到的问题总结》

# 启动ROS
roscore
# 启动程序
rosrun ORB_SLAM3 Mono_Inertial ../../../Vocabulary/ORBvoc.txt ../../Monocular-Inertial/EuRoC.yaml true
# 播放数据集
rosbag play ~/data/EuRoc/MH_01_easy.bag /cam0/image_raw:=/camera/image_raw /imu0:=/imu

最后放一张跑TUM-VI数据集的图片
ubuntu18.04系统下搭建ORB-SLAM3的环境并跑数据集_第1张图片

你可能感兴趣的:(SLAM,自动驾驶,人工智能,机器学习)