其实如果之前搭建好了ORB-SLAM2的环境,环境搭建这一块感觉就可以略过了。。
新版本的Pangolin有问题,需要安装旧版本
见链接:https://www.cnblogs.com/zzx2cnblogs/p/6438626.html
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版本)
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
在安装ROS-Melodic时安装了pcl-1.8.1版本,没有再次安装
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
cd ORB_SLAM3
chmod +x build.sh
./build.sh
代码针对普通编译和ROS版本的编译提供了两个脚本build.sh
和build_ros.sh
,如果不用ROS跑数据集使用前者就好了。
在编译ROS版本时,将build_ros.sh
中的Example
路径改成Example_old
数据集官网: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
数据集官网: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
(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