SLAM中常用到的评价指标

主要是想整理一下关于tum rgbd数据集和kitti数据集的评价指标,之后比较结果不能只看数值大小,还要非常清楚背后的含义。

一. 从TUM数据集出发

前提假设:
给出的位姿估计值为 P 1 . . . P n ∈ S E ( 3 ) P_1 ... P_n \in SE(3) P1...PnSE(3), 真值为 Q 1 . . . Q n ∈ S E ( 3 ) Q_1 ... Qn \in SE(3) Q1...QnSE(3), 下标代表时间t(或帧),这里假设估计位姿和真实位姿各帧时间已对齐,总帧数相同。

1. 相对位姿误差RPE(relative pose error)

用来评价轨迹中相隔固定时间的局部准确度, Δ \Delta Δ表示时间间隔,也可以转变成frame的间隔。 P i P_i Pi是估计的位姿,是一个4*4的矩阵,因此这个相对位姿误差是包括了旋转和平移的。
E i = ( Q i − 1 Q i + Δ ) − 1 ( P i − 1 P i + Δ ) E_i = (Q_i^{-1}Q_{i+\Delta})^{-1} (P_i^{-1} P_{i+ \Delta}) Ei=(Qi1Qi+Δ)1(Pi1Pi+Δ)

为什么要有一个指标来计算相隔固定时间差的两帧间位姿“差”的精度呢?
理解:里程计本身就是为了估计相邻帧之间的定位精度,举例子就是为了估计人走一步的距离(类似于位姿“差”),RPE就是为了估计这人走一步的精度是怎么样的。

RMSE
实验比较中写的RMSE(root mean squared error),是平方后求均值再开根号,其中 m = n − Δ m=n - \Delta m=nΔ
R M S E ( E 1 : n , Δ ) : = ( 1 m ∑ i = 1 m ∥ t r a n s ( E i ) ∥ 2 ) 1 2 RMSE(E_{1:n}, \Delta) := (\frac{1}{m} \sum_{i=1}^m \Vert trans(E_i) \Vert ^2 )^{\frac{1}{2}} RMSE(E1:n,Δ):=(m1i=1mtrans(Ei)2)21

也有人不用RMSE,直接使用平均值、甚至中位数来描述相对误差情况。 需要注意的是,RPE包含了两部分的误差,分别是旋转误差和平移误差,通常使用平移误差进行评价已足够,但如果需要,旋转角的误差也可以使用相同的方法进行统计。

举例

  • 对于匹配相邻帧的视觉里程计系统, Δ = 1 \Delta=1 Δ=1是直觉的选择,算出来的 R M S E ( E 1 : n ) RMSE(E_{1:n}) RMSE(E1:n)就能给出每帧的偏移;如果对于一个序列记录频率是30Hz的系统, Δ = 30 \Delta=30 Δ=30时就相当于是在算每一秒的偏移。
  • 如果直接取最大值 Δ = n \Delta=n Δ=n, 就代表着直接去比较起点和终点,这样度量就会产生误导性,因为他对起始时的旋转误差的惩罚比终点时更大(这里个人的理解就是,相同的旋转误差,如果发生在起点附近,对最后的偏移影响会更大,因为后续所有的位姿都会被影响。TUM一个数据集随便就是几千帧,差别肯定会很明显)。所以说,为了避免这种不一致的影响,就会来平均所有可能的 Δ \Delta Δ值的结果

实际情况中,我们发现对 Δ \Delta Δ的选取有多种选择,为了能综合衡量算法表现,我们可以计算遍历所有 Δ \Delta Δ的RMSE的平均值:
R M S E ( E 1 : n , Δ ) : = 1 n ∑ Δ = 1 n R M S E ( E 1 : n , Δ ) RMSE(E_{1:n}, \Delta) := \frac{1}{n} \sum_{\Delta=1}^n RMSE(E_{1:n}, \Delta) RMSE(E1:n,Δ):=n1Δ=1nRMSE(E1:n,Δ)
但这样计算复杂度非常高,很耗时间,所以最终在TUM的工具中,通过计算固定数量的RPE样本计算一个估计值作为结果。

*这里的trans是指的平移部分,也可以计算旋转的。 怎么对3*1的平移求模长??对两种“位姿差”求

2. 绝对轨迹误差ATE(absolute trajectory error)

把跑出来的轨迹直接和gt轨迹计算误差,可以非常直观地反应算法精度和轨迹全局一致性。但是,因为估计位姿和groundtruth通常不在同一坐标系中,所以要先将两者对齐:
1)对于双目SLAM和RGB-D SLAM,尺度统一,因此我们需要通过最小二乘法计算一个从估计位姿到真实位姿的转换矩阵 S ∈ S E ( 3 ) S \in SE(3) SSE(3)
2)对于单目相机,具有尺度不确定性,我们需要计算一个从估计位姿到真实位姿的相似转换矩阵 S ∈ S i m ( 3 ) S \in Sim(3) SSim(3)。 因此第i帧的ATE定义如下:
F i : = Q i − 1 S P i F_i := Q_i^{-1} S P_i Fi:=Qi1SPi

与RPE相似,建议使用RMSE统计ATE:
R M S E ( F 1 : n , Δ ) : = ( 1 m ∑ i = 1 m ∥ t r a n s ( F i ) ∥ 2 ) 1 2 RMSE(F_{1:n}, \Delta) := (\frac{1}{m} \sum_{i=1}^m \Vert trans(F_i) \Vert ^2 )^{\frac{1}{2}} RMSE(F1:n,Δ):=(m1i=1mtrans(Fi)2)21
当然,使用平均值、中位数等来反应ATE都可以。 综上,我们需要注意的是,RPE误差包含了translation和rotation两部分的误差,而ATE只包含translation的误差(论文里又说ATE会间接捕捉到旋转误差,因为旋转误差也可能体现在错误的平移上),二者具有强烈的相关性,却也不尽相同。我们仍需结合实际,选择合适的指标进行算法评价。
论文中说道:
用所有可能的 Δ \Delta Δ求平均值得到的RPE也可以用来评估轨迹的全局误差。这时的RPE总会比ATE稍微大一点(如果等于的化,就说明没有旋转误差),下面还给出了图示:
在这里插入图片描述

在检索时看到答主大佬评论区的几个问答(供参考):
Q1:在TUM格式的位姿结果,当相机不动即每帧真值的平移和旋转都不变(统一设为0,0,0,0,0,0,1),此时evo还可以评估ape吗?跑的时候会出现[ERROR]“Degenerate covariance ranke,Umeyama alignment is not possible”
A: 这个错误是进行轨迹对齐的时候发生的,因为没有足够的约束无法求解。可以试试去掉-a选项。默认not align即可。

Q2:现实slam 时间与Ground truth 都是不同的,而且帧数也不同。请问有什么方法来对齐时间戳?
A:EVO本身提供了时间戳对齐的选项,前提是要有时间戳。像ORB SLAM跑出的单目结果,轨迹里只包含关键帧位姿,并且尺度也不一致,可以加-as选项,将估计的轨迹做一个7DoF变换与groundtruth对齐。

Q3:用evo评估轨迹精度(使用旋转对齐和尺度缩放),会导致轨迹起点与真值起点不一样,请问这样算出的APE科学吗(其他几种评估算法大都将起点设置为与真值一致)?还是说evo的评价角度不一样:侧重于评价整体轨迹趋势?
A:其实学届对这个问题也有争议,有一个观点认为只拿前几帧的数据与真值对齐(相当于你说的把起点对齐)更符合判断轨迹误差的直觉,但这样通常会使得后面的轨迹偏移的过大,反而不好比较整体轨迹的走向或模式。我认为只要保证使用的评价标准一致,那么这个指标还是可以提现出算法的表现优劣。

Q4:orbslam2的stereo对应的三个指标RPE(%) RRE(度/100m) ATE(m)前面两个怎么通过evo的结果得到呢? (这个问题和kitti的评价标准有关)
A:https://blog.csdn.net/xiaoxiaoyikesu/article/details/108963108#t3

二. 关于evo的实际使用

这里记录几条实际使用过程中经常用到的点。

1. 常用数据格式

有tum,kitti,euroc, 具体的说明参考https://github.com/MichaelGrupp/evo/wiki/Formats

2. 常用指令

1) 轨迹可视化

evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz

2)APE

在evo中,有关于APE的指令,注意evo_ape默认情况下计算的是ATE(相当于默认加了参数-r tran_part),如果想计算APE,可以加上参数-r full

evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results/ORB.zip

3) RPE

evo_rpe tum fr2_desk_groundtrutr2_desk_ORB.txt -va --plot --plot_mode xyz

4) evo_res

先用evo_ape得到zip,再使用evo_res得到可视化的结果

3. 如何与论文中结果对应

下面是dynaSLAM论文中的结果:
在这里插入图片描述ATE[m]: 这个使用evo_ape 默认参数,得到的rmse就是结果了
对于另外两个指标,可以用KITTI-odometry-tool来计算,定义可以参考论文VSO: Visual Semantic Odometry, 其他两个指标表示:
在这里插入图片描述
RPE[%]: 每100m的平均相对translation error(m) (理解:所以单位就变成了百分之一,成了一个百分号)
RRE[deg/100m]: 每100m的平均相对rotation error(degree)。
可以先利用EVO算出轨迹整体RPE,分别为translation和rotation,然后除以ground truth的里程(单位:百米),得到最终结果。

可以使用KITTI_odometry_evaluation_tool得到结果:
在这里插入图片描述这里是RRE[deg/m],所以最后一个值要乘以100才能变为RRE[deg/100m]。
* kitti提供的evaluation工具源码与EVO或者TUM数据集工具的不同之处在于:它是将距离[100 200 …800](m) 作为计算RPE所需两帧之间的interval,而不是时间或帧数,并且将单个计算结果都除以了长度,而EVO则没有。另外EVO的interval采样更丰富,所以理论上讲,EVO的RPE结果除以100m,应该与KITTI evaluation tool得到的结果接近。


参考:
1.论文 A Benchmark for the Evaluation of RGB-D SLAM Systems
2.https://zhuanlan.zhihu.com/p/105428199
3.https://blog.csdn.net/xiaoxiaoyikesu/article/details/108963108#t3

相关推荐:

1.单目ORB-SLAM2 跑KITTI数据集的时候怎么做到和ground truth对齐呢?https://www.zhihu.com/question/56510863
2.除了evo还有一个评估工具rpg_trajectory_evaluation:https://github.com/uzh-rpg/rpg_trajectory_evaluation
3.增加对误差评价的理解:A Tutorial on Quantitative Trajectory Evaluation for Visual(-Inertial) Odometry

  • 19
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SLAM(Simultaneous Localization and Mapping)是一种同时进行定位和建图的技术,其导航地图指标是用于评估SLAM系统性能的指标。 首先,导航地图指标的一个重要指标是定位精度。定位精度指的是SLAM系统计算出来的机器人位置与实际位置之间的差距。一个好的导航地图应该能够准确地定位机器人的位置,以确保导航路径的准确性和可靠性。 其次,建图精度也是导航地图指标的一个重要指标。建图精度指的是SLAM系统构建地图的准确程度。一个好的导航地图应该能够准确地表示环境的结构和特征,以提供给机器人导航使用。 另外,导航地图指标的一项指标是实时性。实时性指的是SLAM系统对机器人运动的响应速度。一个好的导航地图应该能够及时地更新机器人的位置和地图信息,以实现实时的路径规划和导航。 此外,导航地图指标还包括地图的一致性和稳定性。地图的一致性指的是SLAM系统在不同时间和场景下构建的地图之间的一致性。一个好的导航地图应该能够在不同时间和场景下保持一致的地图特征,以便机器人能够正确地识别和导航。地图的稳定性指的是地图的抖动或变动程度。一个好的导航地图应该是稳定的,以确保机器人的导航路径的可靠性和精确性。 总之,导航地图指标包括定位精度、建图精度、实时性、一致性和稳定性等方面的指标。通过评估这些指标,可以评估SLAM系统的性能和导航地图的质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值