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