当前位置:   article > 正文

SLAM精度测评——EVO进阶再进阶_slam精度评估

slam精度评估

分别观察单个坐标轴差异

1.2 评价指标
  • ATE(Absolute Trajectory Error):绝对轨迹误差,首先根据位姿的时间戳将真实值和估计值进行对齐,直接比较估计姿势和参考/真实姿势,计算差值,以直观地反应算法精度和轨迹全局一致性。(-r full 命令把旋转误差加进来,或者用-r torpart/-r transpart单独显示旋转或者平移误差)。 然后计算每对位姿之间的差值。可以相当与计算绝对时间下的绝对空间位置。(默认情况)
    注:假设算法估计位姿为 P 1 , P 2 , . . . . , P n ∈ S E ( 3 ) P_1 ,P_2,....,P_n \in{SE(3)} P1,P2,....,PnSE(3),真实位姿: Q 1 , Q 2 , . . . . , Q n ∈ S E ( 3 ) Q_1 ,Q_2,....,Q_n \in{SE(3)} Q1,Q2,....,QnSE(3)下标代表时间t(或帧),这里我们假设估计位姿和真实位姿各帧时间已对齐,总帧数相同。 Δ \Delta Δ表示相隔时间time interval。;对于单目相机,具有尺度不确定性,我们需要计算一个从估计位姿到真实位姿的相似转换矩阵 S ∈ S i n ( 3 ) S \in{Sin(3)} SSin(3)因此第i帧的ATE定义如下:
    F i : = Q i − 1 S P i F_i := Q^{-1}_{i} SP_i Fi:=Qi1SPi
    ATE对应RMSE统计为:
    R M S E ( F 1 : n , , Δ ) : = 1 m ( ∑ i = 0 n ∥ t r a n s ( F i ) ∥ 2 ) RMSE(F_{1:n,},\Delta):= \sqrt[]{\frac{1}{m} (\sum_{i=0}^n{\| {trans(F_i) } \|}^{2})} RMSEF1n,Δ:=m1(i=0ntrans(Fi)2)
    将对齐后的轨迹直接与真值比较,求取每个状态的RMSE作为整段轨迹总误差。其计算步骤主要包含两个:(1)轨迹对齐 (2)在对齐轨迹与真值之间计算RMSE。这里需要注意的是对于角度的处理。在得到旋转误差的旋转矩阵后,有多种办法衡量角度误差:(1)将旋转矩阵转成角轴,以“角”作为误差(2)将旋转矩阵转为欧拉角,依次计算三轴误差。具体可见论文2里的计算公式23、24。
    RPE(Relative Pose Error): 相对位姿误差,计算相同两个时间戳上的位姿变化量的差, 同样, 在用时间戳对齐之后, 真实位姿和估计位姿均每隔一段相同时间计算位姿的变化量, 然后对该变化量做差, 以获得相对位姿误差, 该标准适合于估计系统的漂移。
    注:相对位姿误差主要描述的是相隔固定时间差 Δ \Delta Δ 两帧位姿差的精度(相比真实位姿),相当于直接测量里程计的误差。 因此第i帧的RPE定义如下:
    E i : = ( Q i − 1 Q i + Δ ) − 1 ( P i − 1 P i + Δ ) E_i := {(Q^{-1}_{i} Q_{i+\Delta} )}^{-1} (P_i^{-1}P_{i+\Delta}) Ei:=(Qi1Qi+Δ)1(Pi1Pi+Δ)
    已知总数n与间隔 Δ \Delta Δ的情况下,可以得到 m =n- Δ \Delta Δ 个RPE,然后我们可以用均方根误差RMSE统计这个误差,得到一个总体值:其中 E i E_i Ei相对位姿误差, 它包含了两部分的误差,分别是旋转误差和平移误差,通常使用平移误差进行评价已经足够,但是如果需要,旋转角的误差也可以使用相同的方法进行统计。此外,当然也有人不用RMSE,直接使用平均值、甚至中位数来描述相对误差情况。
    R M S E ( E 1 : n , , Δ ) : = 1 m ( ∑ i = 0 n ∥ ( E i ) ∥ 2 ) RMSE(E_{1:n,},\Delta):= \sqrt[]{\frac{1}{m} (\sum_{i=0}^n{\| {(E_i) } \|}^{2})} RMSEE1n,Δ:=m1(i=0n(Ei)2)
    至此,我们基本可以从RMSE值的大小来评价算法的表现,然而实际情况中,我们发现对Δ 的选取有多种选择,为了能综合衡量算法表现,我们可以计算遍历所有Δ 的RMSE的平均值:
    R M S E ( E 1 : n , , Δ ) : = 1 n ( ∑ Δ = 1 n R M S E ∥ ( E i : n , Δ ) ∥ 2 ) RMSE(E_{1:n,},\Delta):= {\frac{1}{n} (\sum_{\Delta=1}^n{RMSE\| {(E_{i:n},\Delta) } \|}^{2})} RMSEE1n,Δ:=n1(Δ=1nRMSE(Ei:n,Δ)2)
    理论上基于上式计算复杂度非常高,很耗时间,因此在EVO中,通过计算固定数量的RPE样本计算一个估计值作为最终结果。
    RPE计算步骤:将整段轨迹按一定规则截取成若干小段。取每一小段的第一个状态求取与真值的变换,利用这个变换将最后一个状态与真值对齐,计算误差。该计算结果即作为该段的误差。重复上述步骤即可以得到多段误差。计算步骤主要包含:(1)轨迹分段 (2)利用小段的的一个状态对齐轨迹 (3)计算小段最后一个状态与真值的差异 (4)在每一小段上重复上述步骤 (5)对于不同分段方法重复上述步骤。这便是RTE。RTE是一串数,可以对其进行统计分析,评价算法的一致性等等。具体见论文2公式25、26、27。根据定义,虽然每一小段都有多个状态,但其实我们只用每一小段的起始与终止状态计算。它的中间状态并没有参与计算。不是想当然地在每一小段上进行轨迹对齐然后计算ATE作为该段结果,这个需要注意。
  • 均方根误差( RMSE:Root Mean Square Error): 是观测值与真值偏差的平方和与观测次数m比值的平方根。 是用来衡量观测值同真值之间的偏差。表达式为:
    R M S E ( X , h ) = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 RMSE(X,h)= \sqrt[]{\frac{1}{m} (h(x^{(i)})-y^{(i)})^{2}} RMSEXh=m1(h(x(i))y(i))2
    小结:ape(ate)是两点之间的距离的统计量RMSE,ape反应里程计的精度,代表的是全局一致性。rpe 计算出来过大说明轨迹drift比较大,即累计误差大,反应的是局部误差;
2.0 直接画单个图实例
evo_traj tum pose_2023_08_09_17_54_03.txt -p
  • 1

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

1.2 观察x轴差异
evo_ape tum truth_bj03.txt pose_2023_08_04_12_23_42.txt -r trans_part -va --plot --plot_mode xyz


evo_ape tum truth.txt pose.txt -r trans_part -va --plot --plot_mode xz

  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/519453
推荐阅读
相关标签
  

闽ICP备14008679号