大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看完会有一定的收获。如有不对的地方欢迎指出,欢迎各位大佬交流讨论,一起进步。博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论。
SLAM和里程计评估工具——evo - 灰信网(软件开发博客聚合)?
evo详细参考见上述链接
EVO代表"Evaluating Visual Odometry and SLAM systems",是一组用于比较和评估视觉里程计(Visual Odometry,VO)和SLAM(Simultaneous Localization and Mapping)系统的工具和方法。EVO工具箱提供了一种用于评估VO和SLAM算法输出轨迹与真实轨迹之间差异的方式。它可以从ROS数据包、KITTI数据集或者Euroc数据集等输入中读取数据,然后计算和显示VO和SLAM轨迹的误差、相对运动信息、以及其他性能指标。
pip install evo --upgrade --no-binary evo
evo包括两个带尺度的评估工具和四个简单的工具:
Metrics工具
evo_ape
:绝对位姿评估工具;evo_rpe
:相对位姿评估工具;简单工具
evo_traj
:轨迹可视化工具evo_res
:结果评估工具evo_fig
:绘图查看工具evo_config
:evo配置工具主要用途是显示轨迹
显示一个轨迹
evo_traj tum a.txt -p
显示多个轨迹
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p -vas --plot_mode=xz
--ref=[ground_truth]
:该选项明确了轨迹可视化中所需使用的标称轨迹文件,使用该选项后,evo会以灰色虚线绘制标称轨迹;
-p 画图像
--plot_mode=xz 画二维图像,也可以xy、yz自己选择
--align_origin 匹配到统一起点
–align/-a | 采用SE(3) Umeyama对齐,只处理平移和旋转 |
–align --correct_scale/-as | 采用Sim(3) Umeyama对齐,同时处理平移旋转和尺度 |
–correct_scale/-s | 仅对齐尺度 |
--save_plot ./output.pdf? 保存图片为PDF
-- full_check可以对轨迹进行检查
轨迹对比
三轴位置对比
三轴姿态角对比?
evo_ape kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt -r full -p -vas --plot_mode=xz --save_results --delta 100
evo_rpe kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt -r full -p -vas --plot_mode=xz --save_results --delta 100
ape是绝对误差,rpe是相对误差,默认第一个文件是ground truth
该工具会显示如下所示的轨迹误差曲线和误差热力图。
--save_results
,该参数允许我们将evo_ape
的结果存储在一个zip文件中,后后续的evo_res
评估使用。
-r 表示ape/rpe所基于的姿态关系
--delta 100 表示100m统计一次
对比多个方法与真值的精度
evo_res results/*.zip -p --save_table results/table.csv
evo_config用于保存配置文件,可以把自己的参数保存下来,这样就可以避免每次都输入相同的参数。?
1、生成配置文件
evo_config generate --pose_relation angle_deg --delta 1 --delta_unit m --verbose --plot --out rpe_config.json
生成json配置文件如下所示
{
"delta": 1.0,
"delta_unit": "m",
"plot": true,
"pose_relation": "angle_deg",
"verbose": true
}
2、调用生成的配置文件?
evo_rpe groundtruth.txt estimate2.txt -c rpe_config.json
?