上篇博文已通过代码修改、数据格式转换、数据测试实现使用evo评测VINS-MONO,该篇将详细介绍evo评测出的数据指标,以及VINS-MONO在数据集下的精度情况。
EVO评价指标介绍
绝对轨迹误差(ATE:abosulte trajectory error):直接计算相机位姿的真实值与SLAM系统的估计值之间的差,程序首先根据位姿的时间戳将真实值和估计值进行对齐, 然后计算每对位姿之间的差值, 并最终以图表的形式输出, 该标准非常适合于评估视觉 SLAM 系统的性能。
相对位姿误差(RPE:relative pose error):用于计算相同两个时间戳上的位姿变化量的差, 同样, 在用时间戳对齐之后, 真实位姿和估计位姿均每隔一段相同时间计算位姿的变化量, 然后对该变化量做差, 以获得相对位姿误差, 该标准适合于估计系统的漂移。
均方根误差( RMSE:Root Mean Square Error): 是观测值与真值偏差的平方和与观测次数m比值的平方根。 是用来衡量观测值同真值之间的偏差。表达式为:
平均绝对误差(MAE:Mean Absolute Error ): 是绝对误差的平均值,能更好地反映预测值误差的实际情况。表达式为:
标准差(SD: Standard Deviation ): 是方差的算数平方根.是用来衡量一组数自身的离散程度.表达式为:
SSE(和方差、误差平方和):The sum of squares due to error ,该统计 参数计算的是拟合 数据和原始数据对应点的误差的平方和,计算公式如下:
SSE越接近于0,说明模型选择和拟合更好,数据预测也越成功。
MSE(均方差) Mean squared error :该统计参数是预测数据和原始数据对应点误差的平方和的均值,也就是SSE/n,和SSE没有太大的区别,计算公式如下:
**STD(标准差) Standard Deviation:**一种量度数据分布的分散程度之标准,用以衡量数据值偏离算术平均值的程度。标准偏差越小,这些值偏离平均值就越少,反之亦然。
精度分析
测试数据集:Euroc数据集MH_01_easy.bag
上篇博文给出了该数据集VINS-MONO算法noloop和loop下的绝对位姿误差:
noloop:
evo_ape euroc data.csv vins_result_no_loop.csv -va --plot --plot_mode xyz --save_results a.zip
APE w.r.t. translation part (m)
(with SE(3) Umeyama alignment)
max 0.349640
mean 0.144082
median 0.140714
min 0.034372
rmse 0.154602
sse 43.429475
std 0.056053
loop:
evo_ape euroc data.csv vins_result_loop.txt -va --plot --plot_mode xyz --save_results b.zip
APE w.r.t. translation part (m)
(with SE(3) Umeyama alignment)
max 0.130568
mean 0.055452
median 0.052395
min 0.003648
rmse 0.061941
sse 4.066875
std 0.027600
将两个结果放在一个图中,进行对比
evo_res a.zip b.zip -p --save_table table.csv
通过对比图可看出,回环后各项精度指标大大增加,不回环平均位姿精度为14.4cm,回环平均位姿精度为5.5cm,精度大大提高,并且根据std,rmse等指标,数据稳定性鲁棒性更好。
下面将测试开启地图匹配后的定位效果测评。
地图匹配:
重载地图(load_previous_pose_graph: 1)
catkin_make
程序运行后,会先加载地图的位姿图信息至vins_result_loop.txt,故先去除加载的位姿图信息,再进行evo评测。
查看轨迹:
evo_traj tum vins_result_loop_map.txt -p --plot_mode=xyz
name: vins_result_loop_map
infos: 1057 poses, 80.345m path length, 181.200s duration
轨迹总长度80.345米,用时181.200s
精度测试:
evo_ape euroc data.csv vins_result_loop_map.txt -va --plot --plot_mode xyz --save_results c.zip
APE w.r.t. translation part (m)
(with SE(3) Umeyama alignment)
max 0.141669
mean 0.055870
median 0.051059
min 0.005496
rmse 0.062941
sse 4.163599
std 0.028984
将地图匹配后的回环定位结果与之前回环结果相比:
evo_res b.zip c.zip -p --save_table table1.csv
APE w.r.t. translation part (m)
(with SE(3) Umeyama alignment)
rmse mean median std \
vins_result_loop.txt 0.0619409 0.0554517 0.0523953 0.0276005
vins_result_loop_map.txt 0.0629409 0.0558704 0.0510591 0.0289838
min max sse
vins_result_loop.txt 0.00364827 0.130568 4.06688
vins_result_loop_map.txt 0.00549563 0.141669 4.1636
从以上对比结果可看出:
位姿图重载后,定位精度较无地图匹配后的各项精度指标并没有大幅度提升,基本持平,反而一些指标还不如无地图匹配的定位效果好。
个人分析,出现这个情况的原因,可能是,重载的这个位姿图精度并不高,导致基于这个地图的定位匹配反而加大了定位误差。
关于数据集Euroc下的MH_01_easy.bag测试VINS-MONO的定位精度指标分析如上,本来想着多测试几个数据集,但奈何数据包太大,下载测试均有些浪费时间,另外测试数据集也只是为了实际数据测试打基础,所以,以下引用其他博主文章中的数据https://rupingcen.blog.csdn.net/article/details/110485772?spm=1001.2014.3001.5506,仅为了展示说明:
定位精度:
我的MH_01_easy.bag测试下的数据为:0.154602 0.0619409
位姿估计时间:0.170140845 0.171590909
数据会受到电脑性能等因素影响有所差异,但差别不大,上述数据可供参考。
下图为VINS-Mono在EUROC数据集上开启回环模式下的轨迹图:
计算时间:
在跟踪时间上 VISN-Mono 把特征点跟踪和位姿求解分成了两个ROS节点运行,其在整个EUROC数据集上的平均跟踪时间为0.01s(10 ms), 但位姿估计的时间确有36ms, 详细的数据见下表,因此也可以在时间上优化VINS-Mono的位姿优化
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)