针对于Vins-Mono中的评价工具evo中的评价参数的理解

对于一个系统来说,最重要的是如何衡量这个系统的精度,这里介绍了评价指标的意义,具体的evo代码参见其他人的博客。

评价指标

2、绝对轨迹误差(ATE:abosulte trajectory error):直接计算相机位姿的真实值与SLAM系统的估计值之间的差,程序首先根据位姿的时间戳将真实值和估计值进行对齐, 然后计算每对位姿之间的差值, 并最终以图表的形式输出, 该标准非常适合于评估视觉 SLAM 系统的性能。

B.绝对轨迹误差(ATE)对于视觉SLAM系统,此外,估计轨迹的全局一致性是重要的数量。可以通过比较全局一致性来评估估计与地面之间的绝对距离真相轨迹。 因为两个轨迹都可以在任意坐标系,它们首先需要对齐。可以使用该方法以封闭形式实现Horn [46]的方程,找到了刚体变换S对应于映射最小二乘解的最小二乘解估计轨迹P1:n在地面真实轨迹上Q1:n。 给定这种变换,绝对轨迹误差在时间步长我可以计算为

与相对姿态误差类似,我们建议评估在所有时间指标上的均方根误差变换组件,即

1、相对位姿误差(RPE:relative pose error):用于计算相同两个时间戳上的位姿变化量的差, 同样, 在用时间戳对齐之后, 真实位姿和估计位姿均每隔一段相同时间计算位姿的变化量, 然后对该变化量做差, 以获得相对位姿误差, 该标准适合于估计系统的漂移。

                                                                            

请注意,此表达式的计算复杂度在轨迹长度上是二次方的 因此,我们建议通过固定数量的相对姿势样本。 我们的自动评估脚本允许精确的评估以及对a的近似给定样本数。相对姿态误差的示例在图6中给出。在这里,相对姿势误差已经评估了两个视觉测距法[44]。 从这里可以看出如图所示,RBM方法具有较低的漂移和较少的漂移
与GICP相比的异常值。

 

均方根误差( RMSE:Root Mean Square Error): 是观测值与真值偏差的平方和与观测次数m比值的平方根。 是用来衡量观测值同真值之间的偏差。表达式为:
在这里插入图片描述

** 平均绝对误差(MAE:Mean Absolute Error )**: 是绝对误差的平均值,能更好地反映预测值误差的实际情况。表达式为:
在这里插入图片描述

另外,RPE也可用于评估通过平均所有可能的轨迹的全局误差时间间隔。请注意,RPE认为这两种翻译和旋转误差,而ATE仅考虑了翻译错误。结果,RPE总是稍微大于ATE(如果没有旋转则等于错误)。这在图7b中也可以看到,RPE和ATE是根据各种估算得出的RGB-D SLAM系统的轨迹。因此,RPE指标提供了一种结合旋转角度的优雅方法并将翻译错误合并为一个度量。然而,旋转误差通常也会表现为错误翻译,因此也间接地被ATE。从实际的角度来看,ATE具有直观的可视化,便于视觉检查。不过这两个指标密切相关:在我们所有的实验中我们从未遇到过使用RPE和ATE的情况。实际上,通常相对顺序独立于实际使用的措施。

与RPE相似,建议使用RMSE统计ATE,当然,使用平均值、中位数等来反应ATE亦可,现在很多evaluation工具会将RMSE、Mean、Median都给出。 综上,我们需要注意的是,RPE误差包含了translation和rotation两部分的误差,而ATE只包含translation的误差(从二者的全称中也可以看出),二者具有强烈的相关性,却也不尽相同。我们仍需结合实际,选择合适的指标进行算法评价。

ATE的叫法参考了文章中提到的TUM论文,APE也有自己实际的含义,比ATE多了rotation error。目前看来,ATE的评价指标更流行一些。不过就像这篇文章里说的,evo的脚本提供模式的选择。用-r参数,-r full 应该计算的就是ape; -r trans_part计算的就是ate;不添加默认为tran_part。我这么猜测的,试一下就知道,已试。evo_ape的默认模式是 -r trans_part,即计算的是ate。想要计算ape,可以使用 -r full

如果只是使用ATE RPE这些指标,无论什么工具,可以直接引用A benchmark for the evaluation of RGB-D SLAM systems.这篇,另外推荐另外一篇可以增加对误差评价理解的论文A Tutorial on Quantitative Trajectory Evaluation for Visual(-Inertial) Odometry

SSE(和方差、误差平方和):The sum of squares due to error
MSE(均方差、方差):Mean squared error
RMSE(均方根、标准差):Root mean squared error
R-square(确定系数):Coefficient of determination
Adjusted R-square:Degree-of-freedom adjusted coefficient of determination

参考https://blog.csdn.net/danmeng8068/article/details/80143306

APE

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

RPE

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

使用evo_ape确定轨迹误差。

evo_ape euroc data.csv vins_result_no_loop.csv -va --plot --plot_mode xyz --save_results a.zip

    对于带有回环检测的数据可能报错:[ERROR] found no matching timestamps between data.csv and vins_result_loop.csv with max. time diff 0.01 (s) and time offset 0.0 (s)。时间戳错误,解决方法,使用文本编辑器打开,将第一列中的“E+018”改为“E+009”。

    最终的结果会保存在 result_vins.zip中:

{"std": 0.02860583962864544, "rmse": 0.08262275867937034, "sse": 6.969877177077047, "max": 0.15694899033138723, "min": 0.022182102135421995, "median": 0.07525605040255529, "mean": 0.07751274857034607}

    evo还可以将两个结果放在一个图中,进行对比。参数中的两个zip文件就是刚刚前面生成的。

evo_res a.zip b.zip -p --save_table table.csv

 

1)绘制多条轨迹,例子:使用evo_traj绘制两个KITTI姿势文件和地面真实evo_traj

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

绘制结果:
在这里插入图片描述
2)对轨迹进行度量:使用evo_ape (以KITTI_00_gt.txt为参考(事实))计算来自ORB-SLAM和S-PTAM的两个轨迹的绝对姿态误差,并绘制并将各个结果保存到.zip文件中以获取evo_res
第一条命令,画ORB-SLAM与参考轨迹的APE,并存入ORB.zip中。

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

在这里插入图片描述
第二条命令,画S-PTAM与参考轨迹的APE,并存入SPTAM.zip

evo_ape kitti KITTI_00_gt.txt KITTI_00_SPTAM.txt -va --plot --plot_mode xz --save_results results/SPTAM.zip
  • 1

在这里插入图片描述
3)处理一个指标的多个结果: evo_res可用于比较来自指标的多个结果文件, 包括打印信息和统计信息(默认)
,绘制结果,将统计信息保存在表中。将上面产生的压缩文件生成图表和表格

evo_res results/*.zip -p --save_table results/table.csv
  • 1

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

在这里插入图片描述
4)数据集格式转换

evo_traj euroc V102_groundtruth.csv --save_as_tum
evo_traj euroc V102_groundtruth.csv --save_as_bag
evo_traj euroc V102_groundtruth.csv --save_as_kitti
  • 1
  • 2
  • 3

将*.csv格式转换为其它三种数据集格式。
在这里插入图片描述

evo_traj tum fr2_desk_ORB.txt --ref=fr2_desk_groundtruth.txt -p --plot_mode=xyz

没有–save_as_euroc选项,因为EuRoC格式仅对EuRoC数据集的基本事实有意义

5)调整显示尺寸

evo_config set plot_figsize 5 4.5

evo_config reset 恢复默认设置

  • 使用evo进行轨迹可视化(evo_traj

    轨迹可视化工具的调用格式如下:

    # evo_traj [数据格式] [traj_1] [traj_2] .. --ref=[ground_truth] -p -va
    # example:
    evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p -vas --plot_mode=xz
    
  • 1
  • 2
  • 3

 

在所有参数中,必要的参数只有数据集格式和需要可视化的轨迹文件,evo_traj可以同时可视化多个文件,并没有数量限制。

各可选参数作用如下:

--ref=[ground_truth]:该选项明确了轨迹可视化中所需使用的标称轨迹文件,使用该选项后,evo会以灰色虚线绘制标称轨迹; -vas:该选项表示将所有轨迹和标称轨迹在S E ( 3 ) SE(3)SE(3)上进行位姿对齐和尺度对齐(其中-a选项是位姿对齐,-s选项是尺度对其,两者可以单独开启,-v未发现有何作用); -p: 该选项表示开启绘图,否则我们只能在控制台看见结果,而不会得到有效的可视化结果。evo绘图默认是3D轨迹图,我们也可以向例子中一样进一步使用--plot_mode=xz命令其只绘制x z xzxz平面的二维图。本博客参考: https://blog.csdn.net/KYJL888/article/details/89956551

另外,评价TUM数据集的另外两个评价工具:evaluate_ate.py evaluate_rpe.py
参考 https://blog.csdn.net/Darlingqiang/article/details/89059466

再附一个参考连接:目的是方便查看各数据集的格式: https://blog.csdn.net/Darlingqiang/article/details/102631102

总之,evo是一个很不错的工具。

https://blog.csdn.net/weixin_38504276/article/details/103463758?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

参考:

1、使用evo评估VINS-MONO

具体参考:

https://zhuanlan.zhihu.com/p/105428199

https://ieeexplore.ieee.org/document/6385773

https://blog.csdn.net/weixin_38504276/article/details/103463758

  • 3
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack Ju

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值