SLAM精度测评——EVO进阶
1. 基本概念
1.1 Umeyama算法
ATE:
evo_ape tum state_groundtruth_estimate0/data.tum orb2/CameraTrajectory.txt -r trans_part -va --plot --plot_mode xy --save_results /home/sun/evo/v1_01_easy/orb2/ate.zip
RPE:
evo_rpe tum state_groundtruth_estimate0/data.tum orb2/CameraTrajectory.txt -r full --delta 1 --delta_unit m -va --plot --plot_mode xy --save_results /home/sun/evo/v1_01_easy/orb2/rpe.zip
1.2 SE(3)與Sim(3)
雙目SLAM和RGB-D SLAM,尺度統一,因此我們需要通過最小二乘法計算一個從估計位姿到真實位姿的轉換矩陣 [公式] 對于單目相機,具有尺度不確定性,我們需要計算一個從估計位姿 [公式] 到真實位姿 [公式] 的相似變換矩陣 [公式] 。在evo代碼中,給予 --correct_scale命令就會估計Sim,否則默認為SE(3)。
2. 測試標準機器含義
1. evo_ape 計算絕對位姿誤差
evo_ape tum data.tum pos_and_quate.txt -r full -va --plot --plot_mode xyz --save_results /home/sun/evo/mh_01_easy/ours.zip
-r full/rot_part/…
計算考慮平移和旋轉部分誤差的ape,進行平移和旋轉對齊,其中-r表示ape所基于的姿態關系不添加-r/–pose_relation和可選項,則默認為trans_part。
1.1 metrics解析
上文提到pose error包含平移和旋轉兩部分誤差,在evo中的option為-r,–pose_relation,并有如下模式:
其中trans_part很容易理解,但是無單位的full和rot_part的誤差指標比較特殊,使用了矩陣的二范數:
error_full=∥δT_i ? E∥, \?d?e?l?t?a?T?_i表示groundtruth和estimate位姿之間的變換矩陣,E 為單位陣,矩陣的范數也可以表示某種抽象的空間距離
同理rot_part的誤差:
ERROR_rot = ∥ δR_i ? E ∥
相比較而言,用平移誤差單位為m,旋轉誤差單位可以是度或弧度,更容易理解。從旋轉矩陣R 到旋轉角的轉換使用了羅德里格斯公式(旋轉向量的二范數為旋轉角的大小)。
-v表示verbose mode,詳細模式,-a表示采用SE(3) Umeyama對齊,其余可選項如下表所示。不加-s表示默認尺度對齊參數為1.0,即不進行尺度對齊。
2. evo_rpe 計算相對位姿誤差
相對位姿誤差不進行絕對位姿的比較,相對位姿誤差比較運動(姿態增量)。相對位姿誤差可以給出局部精度,例如slam系統每米的平移或者旋轉漂移量。
evo_rpe tum data.tum pos_and_quate.txt -r angle_deg --delta 1 --delta_unit m -va --plot --plot_mode xz --save_plot ./VIO --save_results /home/sun/evo/mh_01_easy/ours_rpe.zip
命令的含義為 求每米考慮旋轉角的rpe,以詳細模式顯示并畫圖。
其中-r表示ape所基于的姿態關系
不添加-r/–pose_relation和可選項,則默認為trans_part。
–d/–delta表示相對位姿之間的增量,–u/–delta_unit表示增量的單位,可選參數為[f, d, r, m],分別表示[frames, deg, rad, meters]。–d/–delta -u/–delta_unit合起來表示衡量局部精度的單位,如每米,每弧度,每百米等。其中–delta_unit為f時,–delta的參數必須為整形,其余情況下可以為浮點型。–delta 默認為1,–delta_unit默認為f。
當在命令中加上–all_pairs,則計算rpe時使用位置數據中所有的對而不是僅連續對,此時,可以通過-t/–delta_tol控制–all_pairs模式下的相對增量的容差(relative delta tolerance)。需要注意–all_pairs下不能使用–plot函數。
3. evo_config 全局設置和配置文件操作
evo_config set 進行參數設置
下面是幾個常用的參數,其含義以及可選項
例如命令
evo_config set plot_seaborn_style whitegrid 將畫圖背景更改成白色網格
evo_config set plot_fontfamily serif plot_fontscale 1.2 將字體改為襯線型并調為1.2倍大小
evo_config set plot_reference_linestyle - 將畫圖所使用的線型改為 -
evo_config set plot_figsize 10 9 將所畫圖的圖像大小調整為10 9(寬 高)
evo_config reset 將參數還原到默認值
evo_config generate 將命令行參數轉換成–out指定的.json文件
例如:evo_config generate --pose_relation angle_deg --delta 1 --delta_unit m --verbose --plot --out rpe_config.json
4. evo_traj 軌跡管理的主要工具
evo_traj可以打開任意多個軌跡,查看統計信息。-v表示以詳細模式顯示,–full_check可以對軌跡進行檢查。=
evo_traj euroc MH_data1.csv MH_data3.csv -v --full_check
如果需要將軌跡對齊(-a/ --align, -s / --correct_scale, --n_to_align),則需要利–ref指定參考軌跡。例如evo_traj bag ROS_example.bag ORB-SLAM S-PTAM --ref groundtruth -s
因euroc格式只對euroc數據集的groundtruth數據有意義,所以沒有–save_as_euroc。
evo_traj euroc data.csv --save_as_tum
可通過 evo_traj +數據格式 + --help查看更多參數的含義以及如何使用。例如
evo_traj euroc --help
5. evo_res 進行結果比較
evo_res --help可查看可選參數含義。
evo其他常用命令
3. ref
- https://github.com/MichaelGrupp/evo/wiki/evo_traj
- https://github.com/MichaelGrupp/evo/wiki
- https://github.com/MichaelGrupp/evo
- 【SLAM】評估軌跡誤差,手寫ATE、RPE對比EVO
總結
以上是生活随笔為你收集整理的SLAM精度测评——EVO进阶的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求style歌词!
- 下一篇: ORB-SLAM2 论文翻译