使用EuRoC数据集测试ORB-SLAM3

ORB-SLAM3编译安装请参考

ORB-SLAM3的CMake与ROS编译以及测试(亲自总结,亲测可用)_RobotsRuning的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/u014374826/article/details/132013820?spm=1001.2014.3001.5502 本文主要讲使用EuRoC数据集​对ORB-SLAM3的测试

ORB-SLAM3支持的传感器模式如下:

1. 单目(已测试,未通过)

2. 单目-IMU(已测试,未通过)

3. 双目(已测试,并通过)

4. 双目-IMU(已测试,并通过)

5. RGB-D(未测试)

6. RGB-D-IMU(未测试)

 1. EuRoC数据集

        这里我们使用EuRoC数据集对ORB-SLAM3进行测试,数据集如下图所示。

使用EuRoC数据集测试ORB-SLAM3_第1张图片

        对于常规CMake生成的可执行文件,我们使用的是ASL格式的数据。下载完成后解压即可。以EuRoC MH—04-difficult为例。

        因为众所周知的原因,可能数据下载不下来,下面给出百度网盘数据集的链接

链接:https://pan.baidu.com/s/1MA9W7fXQJnz17w41G1kONg 
提取码:SLAM 

使用EuRoC数据集测试ORB-SLAM3_第2张图片

2. 双目模式使用EuRoC数据集对ORB-SLAM3进行测试

2.1 解压字典

        首先,我们需要把源码根目录下的Vocabulary文件夹下的字典文件解压一下,得到一个ORBvoc.txt文件。

2.2 对数据集的预处理

        按照ORB-SLAM3双目启动参数的要求,需要以下参数:

终端输入:

./stereo_euroc path_to_vocabulary(字典文件路径) path_to_settings(参数设置文件路径) path_to_sequence_folder_1(影像序列文件夹路径) path_to_times_file_1(对应的时间戳文件路径) save_file_name(SLAM结果的保存文件名)

这是一个命令行的使用方法,需要提供以下参数:

  1. path_to_vocabulary:ORB-SLAM3使用的词汇文件的路径。词汇文件是在训练阶段生成的,包含了ORB特征的描述子,用于在实时定位和建图中进行特征匹配。

  2. path_to_settings:ORB-SLAM3的配置文件路径。配置文件包含了ORB-SLAM3的各种参数设置,如相机参数、特征提取和匹配的参数等。

  3. path_to_sequence_folder_1:欧洲机器人竞赛(Euroc)数据集中第一个序列的文件夹路径。ORB-SLAM3可以使用Euroc数据集进行定位和建图的测试。

  4. path_to_times_file_1:欧洲机器人竞赛(Euroc)数据集中第一个序列的时间戳文件路径。时间戳文件包含了图像帧的时间戳信息,用于时间同步和数据对齐。

  5. save_file_name:保存结果的文件名。ORB-SLAM3运行后,会将定位和建图的结果保存到指定的文件中(如果不写就以默认名称CameraTrajectory.txtKeyFrameTrajectory.txt保存)。

        我们需要字典文件、参数设置文件、影像序列文件夹路径、对应的时间戳文件以及SLAM结果的保存文件名(保存文件名如果不写就以默认名称 CameraTrajectory.txtKeyFrameTrajectory.txt保存)。这里可以发现,前三个参数都很容易得到,但直接下载下来的EuRoC数据集里并没有时间戳文件,不要担心,ORB-SLAM3已经贴心地为我们准备好了时间戳文件。

使用EuRoC数据集测试ORB-SLAM3_第3张图片

​        EuRoC_TimeStamps 里放的是相机的时间戳。关于这些参数的更详细的说明和使用,直接查看对应Example的源码即可,都非常简单,基本一看就懂了。

        另外一个非常重要的点是,在代码中,是有mav0这个文件夹的。意思就是,对于下载的MH_04_difficult.zip文件,如果右键,在Ubuntu下直接解压(提取到此处)得到的是一个mav0文件夹,里面是cam0cam1、imu0、leica0、state_groundtruth_estimate0、body.yaml文件。这时一定不要直接把mav0修改成其它名字,而是应该新建一个文件夹,然后将mav0整体放进去,对新建的文件夹改名字。不然程序一启动就会卡住,也不会报错。原因就在于他在代码里是这样写的,如下。 

使用EuRoC数据集测试ORB-SLAM3_第4张图片

​2.3 程序运行

./stereo_euroc ../../Vocabulary/ORBvoc.txt ./EuRoC.yaml /home/fairlee/MH_04_difficult ./EuRoC_TimeStamps/MH04.txt mh04_results 

运行界面如下:

使用EuRoC数据集测试ORB-SLAM3_第5张图片

​2.4 运行结果

使用EuRoC数据集测试ORB-SLAM3_第6张图片

 在这么黑暗的条件下都可以提取特征,这个算法还是牛啊。

使用EuRoC数据集测试ORB-SLAM3_第7张图片

3. 双目-IMU模式使用EuRoC数据集对ORB-SLAM3进行测试

3.1 程序运行——运行命令如下

./stereo_inertial_euroc_old ../../Vocabulary/ORBvoc.txt ./EuRoC.yaml /home/fairlee/MH_04_difficult ./EuRoC_TimeStamps/MH04.txt mh04_results 

        上面的程序运行命令不知道为什么只针对Examples_old文件夹下的可执行文件有效,对Examples文件夹下的可执行文件无效!

使用EuRoC数据集测试ORB-SLAM3_第8张图片

3.2 运行结果如下 

使用EuRoC数据集测试ORB-SLAM3_第9张图片

        而且我们也得到了两个txt文件,一个是每一帧的位姿,一个是关键帧的位姿。至此,双目-IMU的ORB-SLAM3的运行就完成了。其它配置模式的运行其实都是类似的,会了这一个其它也基本不会有问题了。

你可能感兴趣的:(人工智能,计算机视觉,ubuntu)