ORB-SLAM2:(二)Monocular/Stereo/RGB-D数据集

目录

    • 前言
    • RGB-D
    • Monocular
    • Stereo
    • 总结

前言

这是运行ORB-SLAM2代码系列文章的第二篇,主要完成在Monocular/Stereo/RGB-D数据集上运行ORB-SLAM2。
默认已经完成源码下载、编译和相关环境的配置,环境配置具体可参考:ORB-SLAM2:环境配置&源码编译。

RGB-D

  1. 下载数据集

下载:TUM数据集,此处下载的是:fr1/desk,并将其解压、存放在如下目录:

~/catkin_ws/src/ORB_SLAM2/Examples/RGB-D
  1. 生成associations.txt文件

生成associations.txt文件,需要借助:associate.py文件(此链接处“右键-链接另存为”即可下载)。下载后存放在如下文件夹:

~/catkin_ws/src/ORB_SLAM2/Examples/RGB-D/rgbd_dataset_freiburg1_desk

执行如下命令,生成associations.txt文件:

cd ~/catkin_ws/src/ORB_SLAM2/Examples/RGB-D/rgbd_dataset_freiburg1_desk 
python associate.py rgb.txt depth.txt > associations.txt
  1. 运行

依次执行如下命令,具体参数可根据自己的文件存储位置进行修改。

/* RGB-D执行参数顺序:5个,以空格分隔
*	1.可执行文件:rgbd_tum
*	2.离线词典文件:ORBvoc.txt
*	3.参数文件:TUM1.yaml	(下载的数据集freiburg1/2/3分别对应TUM1/2/3.yaml)
*	4.RGB-D文件夹:如rgbd_dataset_freiburg1_desk
*	5.RGB与D对齐信息文件:associations.txt
*/
cd ~/catkin_ws/src/ORB_SLAM2/Examples/RGB-D
./rgbd_tum ../../Vocabulary/ORBvoc.txt TUM1.yaml rgbd_dataset_freiburg1_desk rgbd_dataset_freiburg1_desk/associations.txt

Monocular

Monocular是单目SLAM,相比于RGB-D SLAM少了深度信息,因此两者可以使用同一个数据集,Monocular只使用其中的RGB图片集即可。

  1. 准备数据集

将上述RGB-D数据集拷贝到如下目录:

~/catkin_ws/src/ORB_SLAM2/Examples/Monocular
  1. 运行

单目SLAM由于不使用深度图片,也就不需要将彩色图和深度图进行对齐,也就没必要生成associations.txt文件。所以其执行参数的个数随之减少为4个,如下,只需要根据自己的存储文件夹进行修改即可。

/* Monocular执行参数顺序:5个,以空格分隔
 1. 1.可执行文件:mono_tum
 2. 2.离线词典文件:ORBvoc.txt
 3. 3.参数文件:TUM1.yaml	(下载的数据集freiburg1/2/3分别对应TUM1/2/3.yaml)
 4. 4.RGB文件夹:如rgbd_dataset_freiburg1_desk
*/
cd ~/catkin_ws/src/ORB_SLAM2/Examples/Monocular
./mono_tum ../../Vocabulary/ORBvoc.txt TUM1.yaml rgbd_dataset_freiburg1_desk

Stereo

stereo方式与RGB-D/MonoCular方式略有所不同,但执行流程大同小异,这里使用的是EuRoC数据集。

  1. 下载数据集

这里使用的数据集是来自EuRoC的:Vicon Room 1 03,数据集的下载还可参考前篇环境配置中提供的百度云盘方式。
将数据集解压、拷贝到如下目录文件夹:

~/catkin_ws/src/ORB_SLAM2/Examples/Stereo
  1. 运行

依次执行如下命令,具体参数可自己的文件存储位置进行修改。

/* Stereo执行参数顺序:6个,以空格分隔
*	1.可执行文件:stereo_euroc
*	2.离线词典文件:ORBvoc.txt
*	3.参数文件:EuRoC.yaml
*	4.相机0数据文件夹:如 V1_03_difficult/mav0/cam0/data
*	5.相机1数据文件夹:如 V1_03_difficult/mav0/cam1/data
*	6.相机0、1对齐信息文件:EuRoC_TimeStamps/V103.txt
*/
cd ~/catkin_ws/src/ORB_SLAM2/Examples/Stereo
./stereo_euroc ../../Vocabulary/ORBvoc.txt EuRoC.yaml V1_03_difficult/mav0/cam0/data V1_03_difficult/mav0/cam1/data EuRoC_TimeStamps/V103.txt

总结

无论是Mono(单目)、Stereo(双目),还是RGB-D方式,核心目标都是计算出像素点的深度信息,然后再进行定位和建图,只不过受限于传感器获取的参数不同,导致获取深度信息的方式也不同而已。

  • 单目:单目相机只能获取图像的像素信息,因此需要借助相机运动、通过匹配不同视角的图像特征点以及三角测量的方式计算出深度信息。好处是传感器简单、成本低,最有可能产品化。
  • 双目:双目方式是使用两个具有固定间隔的相机采集同一场景的图片,通过这个两个相机之间的视差值计算出像素点的深度信息。双目相机本质上就是两个相对位置固定的单目相机,双目与单目计算像素深度的方式在本质上也是相同的。双目方式简化了单目计算流程,但是计算仍十分耗时、不适用于缺乏纹理结构的场景。
  • RGB-D:RGB-D方式是通过物理方式(红外结构光或TOF)直接测量像素点对应的深度值,避免了单目、双目计算深度的过程,降低了计算成本,但问题是测量范围过小、易受噪声影响,且视野过小,通常用于室内场景,不能应用于室外和大范围场景。

你可能感兴趣的:(SLAM)