轨迹误差评估指标[APE/RPE]和EVO
- 1. ATE/APE
- 2. RPE
- 3. EVO
- 3.1 评估指标
- 3.2 使用
- 3.2.1 轨迹可视化
- 3.2.2 APE
- 3.2.3 RPE
Reference:
- 高翔,张涛 《视觉SLAM十四讲》
- 视觉SLAM基础:算法精度评价指标(ATE、RPE)
在实际工程中,我们经常需要评估一个算法的估计轨迹与真实轨迹的差异来评价算法的精度。真实轨迹往往通过某些更高精度的系统获得,而估计轨迹则是由待评价的算法计算得到的。考虑一条估计轨迹 T e s t i , i T_{esti,i} Testi,i 和真实轨迹 T g t , i T_{gt,i} Tgt,i,其中 i = 1 , ⋅ ⋅ ⋅ , N i=1,\cdot\cdot\cdot,N i=1,⋅⋅⋅,N,那么我们可以定义一些误差指标来描述它们之间的差别。
1. ATE/APE
《视觉SLAM十四讲》上的命名感觉跟 EVO 稍微有一点点区别,比如绝对轨迹误差(Absolute Trajectory Error, ATE)
:
A
T
E
a
l
l
=
1
N
∑
i
=
1
N
∥
log
(
T
g
t
,
i
−
1
T
esti
,
i
)
∨
∥
2
2
,
\mathrm{ATE}_{\mathrm{all}}=\sqrt{\frac{1}{N} \sum_{i=1}^N\left\|\log \left(T_{\mathrm{gt}, i}^{-1} T_{\text {esti }, i}\right)^{\vee}\right\|_2^2},
ATEall=N1i=1∑N
log(Tgt,i−1Testi ,i)∨
22,这玩意儿应该就是 EVO 中的 绝对位姿误差(Absolute Pose Error, APE)
,后面这个概念统称 APE。
这个公式实际上是每个位姿李代数的均方根误差(Root-Mean-Squared Error, RMSE)
。这种误差可以刻画两条轨迹的旋转和平移误差。同时,也有的地方仅考虑平移误差,从而可以定义绝对平移误差(Absolute Translational Error, ATE)
:
A
T
E
trans
=
1
N
∑
i
=
1
N
∥
trans
(
T
g
t
,
i
−
1
T
est
,
i
)
∥
2
2
\mathrm{ATE}_{\text {trans }}=\sqrt{\frac{1}{N} \sum_{i=1}^N\left\|\operatorname{trans}\left(\boldsymbol{T}_{\mathrm{gt}, i}^{-1} \boldsymbol{T}_{\text {est }, i}\right)\right\|_2^2}
ATEtrans =N1i=1∑N
trans(Tgt,i−1Test ,i)
22其中 trans 表示取括号内部变量的平移部分。因为从整条轨迹上看,旋转出现误差后,随后的轨迹在瓶以上也会出现误差,所以两种指标在实际中都适用。
2. RPE
RPE 定义的是相对的误差。例如,考虑
i
i
i 时刻到
i
+
Δ
t
i+\Delta t
i+Δt 时刻的运动,那么相对位姿误差(Relative Pose Error, RPE)
可定义为:
R
P
E
all
=
1
N
−
Δ
t
∑
i
=
1
N
−
Δ
t
∥
log
(
(
T
g
t
,
i
−
1
T
g
t
,
i
+
Δ
t
)
)
−
1
(
T
esti
,
i
−
1
T
esti
,
i
+
Δ
t
)
)
∨
∥
2
2
,
\mathrm{RPE}_{\text {all }}=\sqrt{\left.\frac{1}{N-\Delta t} \sum_{i=1}^{N-\Delta t} \| \log \left(\left(T_{\mathrm{gt}, i}^{-1} T_{\mathrm{gt}, i+\Delta t}\right)\right)^{-1}\left(T_{\text {esti }, i}^{-1} T_{\text {esti }, i+\Delta t}\right)\right)^{\vee} \|_2^2,}
RPEall =N−Δt1i=1∑N−Δt∥log((Tgt,i−1Tgt,i+Δt))−1(Testi ,i−1Testi ,i+Δt))∨∥22,同样地,也可只取平移部分:
R
P
E
trans
=
1
N
−
Δ
t
∑
i
=
1
N
−
Δ
t
∥
trans
(
(
T
g
t
,
i
−
1
T
g
t
,
i
+
Δ
t
)
)
−
1
(
T
esti
,
i
−
1
T
esti
,
i
+
Δ
t
)
)
∥
2
2
\mathrm{RPE}_{\text {trans }}=\sqrt{\left.\frac{1}{N-\Delta t} \sum_{i=1}^{N-\Delta t} \| \operatorname{trans}\left(\left(\boldsymbol{T}_{\mathrm{gt}, i}^{-1} \boldsymbol{T}_{\mathrm{gt}, i+\Delta t}\right)\right)^{-1}\left(T_{\text {esti }, i}^{-1} T_{\text {esti }, i+\Delta t}\right)\right) \|_2^2}
RPEtrans =N−Δt1i=1∑N−Δt∥trans((Tgt,i−1Tgt,i+Δt))−1(Testi ,i−1Testi ,i+Δt))∥22
3. EVO
使用示例如下:
evo_ape kitti ground_truth.txt laser_odom.txt -r full --plot --plot_mode xyz
evo_rpe kitti ground_truth.txt laser_odom.txt -r trans_part --delta 100 --plot --plot_mode xyz
evo_ape 的默认形式是 -r trans_part,即计算的是这里的 ATE,想要计算 APE,可以使用 -r full。
3.1 评估指标
- max:表示最大误差;
- mean:平均误差;
- median:误差中位数;
- min:最小误差;
- rmse:均方根误差;
- sse:和方差、误差平方和;
- std:标准差
3.2 使用
可以先使用 EVO 仓库中自带的数据尝试
3.2.1 轨迹可视化
cd test/data
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz



3.2.2 APE
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz


3.2.3 RPE
evo_rpe tum fr2_desk_groundtruth.txt fr2_desk_ORB.txt -va --plot --plot_mode xyz

