前言
做SLAM或是CV方向的應該大都接觸過TUM提供的各種數據集,如RGBD數據集、單目數據集等。最近TUM發佈了關於VIO即視覺慣性狀態估計的對應數據集,成爲了繼飛行數據集EuRoc、MAV、車輛數據集Kitti等之後的又一個常用大型數據集。
本博客將就其數據集的論文《The TUM VI Benchmark for Evaluating Visual-Inertial Odometry》對TUM VIO數據集進行簡要介紹,並用VINS跑跑看。
數據集鏈接:https://vision.in.tum.de/data/datasets/visual-inertial-dataset
摘要
視覺里程計和SLAM方法在諸如AR或機器人之類的領域中具有廣泛的應用。慣性測量輔助視覺傳感器極大地提高了跟蹤精度和魯棒性,引發了對視覺慣性(VI)里程計開發的極大興趣。在本文中,我們提出了TUM VI基準測試集,這是一種新穎的數據集,在不同的場景中具有多種序列,用於評估VIO。它提供具有1024x1024分辨率,20 Hz,高動態範圍和光度校準的相機圖像。 IMU以200 Hz的頻率測量3個軸上的加速度和角速度,而攝像機和IMU傳感器在硬件中進行時間同步。對於軌跡評估,我們還在序列的開始和結束處以高頻率(120 Hz)從運動捕捉系統中提供準確的姿態地面真值,我們準確地將其與攝像機和IMU測量對準。具有原始數據和校準數據的完整數據集可公開獲取。我們還在數據集上評估了最先進的VIO方法。
相關工作
表I介紹了包含視覺和IMU數據的最相關數據集。
The EuRoC MAV、PennCOSYVIO 、Zurich Urban MAV等數據集並不包含光度校準,也不包含IMU和相機圖像的準確ground truth(即真值)或時間同步,而TUM的基準測試集就具備。
數據集
序列
校準序列
- calib-cam
用於校準相機內參和深度相機的外參。 以低幀速率記錄了AprilTags網格,其中視角和攝像機運動變化較小。 - calib-imu
用於cam-imu校準以找到相機和IMU之間的相對位姿。 包括激發所有6個自由度April網格前的快速運動。 選擇短時曝光以避免運動模糊。 - calib-vignette
用於暈影校準。 帶有校準標籤的特徵運動在白牆前方。 - imu-static
只有IMU數據以估算噪聲和隨機遊走參數(靜止111小時)。
數據集序列
- room
房間內帶有運動捕捉系統的序列,可以在整個軌跡中提供 ground truth。 - corridor
走廊和幾個辦公室中的序列,可以爲開始和結束段提供 ground truth。 - magistrale
在大學建築的中央大廳移動的序列,開始和結束段提供ground truth。 - outdoors
在大學校園外移動的序列,開始和結束段提供ground truth。 - slides
在大學建築的中央大廳移動的序列,其中小部分在沒有視覺特徵的封閉管中運動,開始和結束段提供ground truth。
格式
1)ROS Bag Files
對於每個序列,我們提供三種不同的ROS包文件,原始包和兩種校準後的包。
原始包包含在手眼標定、時移或IMU校準之前已記錄的數據。 它們包括以下topic:
/cam0/image raw
/cam1/image raw
/imu0
/vrpn client/raw transform
前兩個包含有相機的圖像。 消息中的大多數字段都是一目瞭然的並遵循標準約定。但請注意frame_id提供以納秒爲單位的曝光時間。
在IMU topic中,我們沒有給出方向,但我們使用orientation covariance的第二項來提供IMU的攝氏度溫度。 最後一個topic包含原始動作捕捉位姿TWM。 對於每個位姿,動作捕捉時間中都有一個時間戳,一個平移向量和一個旋轉四元數。
校準包包含與原始包相同的主題,但具有校準數據。 不同之處是:
1、動作捕捉位姿已與IMU座標系對齊(通過手眼校準,TWI)
2、使用中值濾波器移除動作捕捉位姿的異常值
3、通過使用時移校準,動作捕捉位姿的時間戳與IMU時間同步
4、IMU數據已根據以下兩式進行處理
提供兩種校準包:一種具有全分辨率,一種具有四分之一分辨率(每個尺寸的半分辨率)。 下采樣版本有助於使用存儲或帶寬受限制的用戶。
其中校準包下載地址:
Bag 1024×1024: http://vision.in.tum.de/tumvi/calibrated/1024_16/
Bag 512×512: http://vision.in.tum.de/tumvi/calibrated/512_16/
傳感器設置與校準參數
如圖2,傳感器設置包括兩個單色相機組成的深度相機和IMU。左圖顯示了所有相關座標系的示意圖。 我們規定:位姿變換矩陣SE(3)表示從A座標系到B座標系的變換。對於座標系,使用以下縮寫:
縮寫 | 含義 |
---|---|
I | IMU |
C0 | camera 0 |
C1 | camera 1 |
M | IR-reflective markers |
G | grid of AprilTags |
W | world frame(reference frame of MoCap system) |
Time Alignment, Hand-Eye Calibration, IMU Axis Scaling and Misalignment
Please note that the calibrated datasets already have corrected IMU measurements and Ground Truth in IMU frame.
T_i_c0:
-0.999506 0.00759167 -0.030488 0.0447659
0.0302105 -0.0343071 -0.998955 -0.0755245
-0.00862969 -0.999383 0.0340608 -0.0465419
0 0 0 1
T_i_c1:
-0.999497 0.00813335 -0.0306525 -0.0561178
0.0307588 0.0132798 -0.999439 -0.0738562
-0.00772172 -0.999879 -0.0135233 -0.0494102
0 0 0 1
T_w_moc:
-0.999641 0.0266075 -0.00313757 0.146549
-0.00698843 -0.145899 0.989275 -0.192952
0.0258644 0.988942 0.146032 0.766471
0 0 0 1
T_mark_i:
0.99975 -0.0167084 0.0148858 -0.0105073
0.0166986 0.99986 0.000784897 -0.0596456
-0.0148968 -0.00053613 0.999889 -0.0389606
0 0 0 1
cam_time_offset_ns: 126788
mocap_time_offset_ns: -6022600
accel_bias: -1.30318 -0.391441 0.380509
accel_scale:
1.00422 0 0
-7.82123e-05 1.00136 0
-0.0097745 -0.000976476 0.970467
gyro_bias: 0.0283122 0.00723077 0.0165292
gyro_scale:
0.943611 0.00148681 0.000824366
0.000369694 1.09413 -0.00273521
-0.00175252 0.00834754 1.01588
IMU參數校準
在參數配置中加速度計和陀螺儀的噪聲和隨機遊走給標定值乘以一個係數(20倍、10倍)等。
rostopic: /imu0
update_rate: 200.0 # Hz
# Values from allan plots
# sequence: dataset-calib-imu-static2.bag (full data range)
#accelerometer_noise_density: 0.0014 # m/s^1.5
#accelerometer_random_walk: 0.000086 # m/s^2.5
#gyroscope_noise_density: 0.000080 # rad/s^0.5
#gyroscope_random_walk: 0.0000022 # rad/s^1.5
# Inflated values (to account for unmodelled effects)
# Those values work well with Kalibr cam-imu calibration.
# - white noise multiplied by 2
# - bias random walk multiplied by 10
accelerometer_noise_density: 0.0028 # m/s^1.5
accelerometer_random_walk: 0.00086 # m/s^2.5
gyroscope_noise_density: 0.00016 # rad/s^0.5
gyroscope_random_walk: 0.000022 # rad/s^1.5
評估結果
下表爲使用TUM的基準數據集來評估最先進的單目和雙目視覺慣性方法的性能。
其中對於ROVIO和OKVIS,TUM還提供了對應的配置文件:
configuration file we used for OKVIS
inflated 50 times for white noise and 20 times for bias random walk, which gave the best result in a simple parameter search
configuration file we used for ROVIO
default parameters, synchronous, no real-time enforcement, noise values from Allan plot inflated 10 times for all parameters as determined by a simple parameter search
我的實驗
TUM的網站上並沒有提供VINS的配置文件,原本以爲還需要自己寫,後來發現最新的VINS-Mono已經配置好了圖像下采樣版本的yaml,直接用就可以。這裏我使用了corridor4的校準數據集,因爲其最小。
roslaunch vins_estimator tum.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play /home/your path/dataset/dataset-corridor4_512_16.bag
運行結果圖
過程中可以看到設備在一個房間中亂晃,然後經過一條長走廊再往回走,最後仍能回到最初的房間。
這個是TUM對corridor4使用不同的VIO算法得到的軌跡圖。
接下來還需要再研究一下如何與動作捕捉的 ground truth以衡量誤差。