TUM RGB-D SLAM Dataset and Benchmark
TUM RGB-D SLAM数据集是德国慕尼黑工业大学机器视觉组录制的一组RGB-D数据集和真值数据(ground-truth), 用于评价视觉里程计(Visual Odometry, VO)和视觉SLAM系统。针对不同的场景和应用目的,该数据集被分成了若干个种类,下面的表格中罗列了其中的测试(Testing and Debugging)、 手持SLAM(Handheld SLAM)、机器人SLAM(Robot SLAM)、结构和纹理(Structure vs. Texture)、动态物体(Dynamic Objects)、三维物体重建(3D Object Reconstruction)。 与这些数据相对应的官方还提供了一个验证分类和标定分类,因为没有提供真值数据(ground-truth),所以没有收录在下表中。数据量比较大,而且下载比较麻烦, 所以我准备了一个百度网盘(提取码:btku)保存这些数据。
序号 | 类别 | 名称 | 时长 | 轨迹长度 | 说明 | 原始数据链接 |
---|---|---|---|---|---|---|
1 | Testing and Debugging | fr1/xyz | 30.09s | 7.112m | 这组数据非常简单,基本上只有平移运动没有旋转,适合用来 Debug | tgz |
2 | fr1/rpy | 27.67s | 1.664m | 这组数据基本保持相机的位置不动,分别在三个轴上转动。 | tgz | |
3 | fr2/xyz | 122.74s | 7.029m | 这组数据中相机沿着x,y,z三个方向缓慢的移动,保证图像基本不糊。 | tgz | |
4 | fr2/rpy | 109.97s | 1.506m | 相机缓慢的绕着三个轴缓慢转动,保证图像基本不糊。 | tgz | |
5 | Handheld SLAM | fr1/360 | 28.69s | 5.818m | 在一个办公室环境里转了360度。 | tgz |
6 | fr1/floor | 49.87s | 12.569m | 该组数据扫描办公室的木地板。木纹中有一些深色斑点,用SIFT或者SURF这样的特征点可以很容易检测出来,该场景大部分都是一个平面,只有刚开始的地方有个办公椅。 | tgz | |
7 | fr1/desk | 23.40s | 9.263m | 扫描了一个办公室中的四张桌子。 | tgz | |
8 | fr1/desk2 | 24.86s | 10.161m | 四张办公桌。 | tgz | |
9 | fr1/room | 48.90s | 15.989m | 录制了整个办公室。从四张办公桌开始,沿着办公室的墙走了一圈。可以用来测试SLAM系统的闭环检测功能。 | tgz | |
10 | fr2/360_hemisphere | 91.48s | 14.773m | 站在大厅的中间,水平的转动 kinect 360度。基本没有平移。 | tgz | |
11 | fr2/360_kidnap | 48.04s | 14.286m | 跟上一组数据类似,只是在转动的过程中遮住了几次相机。可以用来验证SLAM系统处理“绑架问题”的能力 | tgz | |
12 | fr2/desk | 99.36s | 18.880m | 两张桌子,一个显示器、电话、椅子等物体。绕着它们转了一圈。 | tgz | |
13 | fr2/large_no_loop | 112.37s | 26.086m | 在一个大厅里录了一段很长的轨迹,但在最后并没有形成闭环。可以用来评估SLAM系统的累计误差。只有开始和结尾的一段轨迹有ground-truth可以用来评估。 | tgz | |
14 | fr2/large_with_loop | 173.19s | 39.111m | 与上一组类似,只是最后形成了闭环。 | tgz | |
15 | fr3/long_office_household | 87.09s | 21.455m | 使用 Asus Xtion 相机录制的一段闭环数据,整个场景具有丰富的纹理和结构。 | tgz | |
16 | Robot SLAM | fr2/pioneer_360 | 72.75s | 16.118m | Kinect 装到 Pioneer 机器人的顶部,在原地转了一圈。数据中还附带了激光雷达的扫描数据和机器人的里程计数据。 | tgz |
17 | fr2/pioneer_slam | 155.72s | 40.380m | 顶着 Kinect 的机器人运动,周围有一些桌子箱子和墙。运动过程中形成了几个闭环可以用于建图。 | tgz | |
18 | fr2/pioneer_slam2 | 115.63s | 21.735m | 顶着 Kinect 的机器人在大厅里运动。 | tgz | |
19 | fr2/pioneer_slam3 | 111.91s | 18.135m | 顶着 Kinect 的机器人在大厅里运动。 | tgz | |
20 | Structure vs. Texture | fr3/nostructure_notexture_far | 15.79s | 2.897m | 在约2米的位置,用Asus Xtion采集的一段木板表面图像,基本看不出什么结构和纹理。 | tgz |
21 | fr3/nostructure_notexture_near_withloop | 37.74s | 11.739m | 在距离约1米的位置,用Asus Xtion采集的3m x 3m木板图像,起始和结尾的轨迹有一段重叠,可以用于闭环检测。 | tgz | |
22 | fr3/nostructure_texture_far | 15.53s | 4.343m | 在约2米的位置,用Asus Xtion采集的富纹理的平面数据。。 | tgz | |
23 | fr3/nostructure_texture_near_withloop | 56.48s | 13.456m | 在约1米的位置,用Asus Xtion采集的富纹理的平面数据,首位轨迹重叠。 | tgz | |
24 | fr3/structure_notexture_far | 27.28s | 4.353m | 约1米的位置,用Asus Xtion 采集的 Zig-Zag 结构的木板图像。木板用塑料膜覆盖,保证基本没有纹理。 | tgz | |
25 | fr3/structure_notexture_near | 36.44s | 3.872m | 约半米的位置,用Asus Xtion 采集的 Zig-Zag 结构的木板图像,基本没有纹理。 | tgz | |
26 | fr3/structure_texture_far | 31.55s | 5.884m | 约1米的位置,用Asus Xtion 采集的 Zig-Zag 结构的木板图像。木板用有很强纹理图案的彩色塑料膜覆盖。 | tgz | |
27 | fr3/structure_texture_near | 36.91s | 5.050m | 约半米的位置,用Asus Xtion 采集的 Zig-Zag 结构的木板图像。木板用有很强纹理图案的彩色塑料膜覆盖。 | tgz | |
28 | Dynamic Objects | fr2/desk_with_person | 142.08s | 17.044m | 有一个人坐在桌子边,拍摄过程中他移动过一些物体。 | tgz |
29 | fr3/sitting_static | 23.63s | 0.259m | 两个人坐在桌边,聊天。 | tgz | |
30 | fr3/sitting_xyz | 42.50s | 5.496m | 两个人坐在桌边,聊天。Asus Xtion相机沿着三个轴平移,基本没有旋转运动。 | tgz | |
31 | fr3/sitting_halfsphere | 37.15s | 6.503m | 两个人坐在桌边,聊天。Asus Xtion相机以约1米的半径,绕着它们转了半圈。 | tgz | |
32 | fr3/sitting_rpy | 27.48s | 1.110m | 两个人坐在桌边,聊天。Asus Xtion相机在同一个位置绕着三个轴转动。 | tgz | |
33 | fr3/walking_static | 24.83s | 0.282m | 两个人走过一个办公室。 | tgz | |
34 | fr3/walking_xyz | 28.83s | 5.791m | 两个人走过一个办公室。Asus Xtion相机沿着三个轴平移,基本没有旋转运动。 | tgz | |
35 | fr3/walking_halfsphere | 35.81s | 7.686m | 两个人走过一个办公室。Asus Xtion相机以约1米的半径,绕着它们转了半圈。 | tgz | |
36 | fr3/walking_rpy | 30.61s | 2.698m | 两个人走过一个办公室。Asus Xtion相机在同一个位置绕着三个轴转动。 | tgz | |
37 | 3D Object Reconstruction | fr1/plant | 41.53s | 14.795m | 绕着一个绿植转了360度。 | tgz |
38 | fr1/teddy | 50.82s | 15.709m | 一个巨大的泰迪熊布偶。 | tgz | |
39 | fr2/coke | 84.55s | 11.681m | 一个可乐易拉罐。 | tgz | |
40 | fr2/dishes | 100.55s | 15.009m | 桌子上有几个盘子。 | tgz | |
41 | fr2/flowerbouquet | 99.40s | 10.758m | 一束花。 | tgz | |
42 | fr2/flowerbouquet_brownbackground | 76s | 11.924m | 棕色背景的一束花。 | tgz | |
43 | fr2/metallic_sphere | 75.60s | 11.040m | 一个金属球。 | tgz | |
44 | fr2/metallic_sphere2 | 62.33s | 11.813m | 还是一个金属球。 | tgz | |
45 | fr3/cabinet | 38.58s | 8.111m | 一个办公室收纳柜。 | tgz | |
46 | fr3/large_cabinet | 33.98s | 11.954m | 一个大一点的办公室收纳柜。 | tgz | |
47 | fr3/teddy | 80.79s | 19.807m | 不同高度绕着泰迪熊布偶转了两圈。 | tgz |
这个数据集的录制过程中,一共用到了三个相机,分别被标记为 fr1/freiburg1、fr2/freiburg2、fr3/freiburg3。其中,fr1和fr2是两个不同的 kinect 相机, fr3则是 Asus Xtion。TUM 以30帧每秒的频率保存了分辨率为 640×480 的深度图和彩色图。另外,TUM还通过一个高频的(100Hz)运动捕捉系统测量的相机真实运动轨迹, 它们把这个轨迹称为 ground-truth,用来与实验结果对比,评价SLAM算法或者系统的准确度。
视觉SLAM系统为了将2D的图像信息转换为3D的空间坐标,需要用到相机的内参。由于每台相机的制作过程多少有些差异,都需要专门进行标定,根据特定的相机模型计算内参。 TUM 以比较常用的针孔相机模型,对三个相机的光心、焦距和畸变系数进行了标定。 下面左侧的表格是从官方搬运过来的数据。 ORB-SLAM2把这三个相机的内参写到了配置文件TUM1.yaml, TUM2.yaml, TUM3.yaml中。我们在跑不同的数据集的时候,需要注意根据选用的相机调整相应的配置文件。
|
上面右侧是我们在ORB_SLAM源码解读中使用的fr1/xyz数据集的目录结构。 它一共有四个文本文件和两个子目录。其中,associations.txt 是我们为了运行 RGB-D 版本的 ORB-SLAM 通过官方脚本生成的深度图与彩色图的对应关系。 depth 和 rgb 是两个子目录,分别保存了分辨率为 640×480 的深度图和彩色图。文本文件 depth.txt 和 rgb.txt 中记录了采集图像的时间戳和文件名。 文件 accelerometer.txt 记录了一个加表的测量值和时间戳,根据它我们可以大体估计相机的俯仰角和横滚角。groundtruth.txt 记录的则是用来对比实验结果的真值数据。