前言
本帖的主要内容是整理evo的使用方法及各种命令,不含安装步骤及过程,还未安装的请移步其他博主。
evo目前支持的公开数据集格式有:TUM、KITTI、EuRoC以及ROS bagfile。如果使用的数据集格式为这些中的某一种,那么无须额外的数据格式处理,就可以直接使用evo进行精度相关内容评估。
一、evo_traj 轨迹管理
可以打开任意多个轨迹,查看统计信息,并且可以统计当前文件中所对应的轨迹长度。
evo_traj tum results.txt groundtruth.txt -v -p --full_check
[-v]:以详细模式显示;[--full_check]:可以对轨迹进行检查。(详见二、evo_ape中的可选项补充)
evo_traj tum results.txt --ref=groundtruth.txt -va -p --save_plot traj_va_results.pdf
[-a]:位姿对齐;[-s]:尺度对齐;[--plot_mode=xy]:画图模式为xy二维图。(详见二、evo_ape中的可选项补充)
补充:转换轨迹格式
evo_traj tum data.csv --save_as_kitti
* | –save_as_bag | –save_as_kitti | –save_as_tum |
---|---|---|---|
bag | yes | yes | yes |
euroc | yes | yes | yes |
kitti | no(no timestamps) | yes | no(no timestamps) |
tum | yes | yes | yes |
二、evo_ape 计算绝对轨迹误差
APE绝对位姿误差,常被称作绝对轨迹误差,比较估计轨迹和参考轨迹并计算整个轨迹的统计数据,适用于测试轨迹的全局精度和全局一致性。
1、十四讲中的定义:
(1)位姿均方根误差:
(2)平移均方根误差:
说明:假设估计位姿和实际位姿时间戳对齐,总帧数都为n;算法估计位姿 P1 , P2 , … , Pn ∈ SE(3) ;真实位姿 Q1 , Q2 , … , Qn ∈ SE(3)。
2、实际情况:
估计位姿和groundtruth通常不在同一坐标系中,因此我们需要先将两者对齐。对于双目SLAM和RGB-D SLAM,尺度统一,因此我们需要通过最小二乘法计算一个从估计位姿到真实位姿的转换矩阵S ∈ SE(3);对于单目相机,具有尺度不确定性,我们需要计算一个从估计位姿到真实位姿的相似转换矩阵S ∈ Sim(3)。
进而,实际上每一帧对应的位姿误差为:
对应的位姿误差和平移误差变为:
3、命令:
命令语法:
命令 数据集格式 参考轨迹 估计轨迹 [可选项]
数据集格式包括euroc、tum等数据格式;
参考和估计轨迹中填入txt或csv格式文件;
可选项有对齐命令、画图、保存结果等。
可选项补充:
(1)-r/–pose_relation可选参数:选择平移还是旋转误差
不添加-r/–pose_relation和可选项,则默认为trans_part。
-r/–pose_relation可选参数 | 含义 |
---|---|
full | 表示同时考虑旋转和平移误差得到的ape,无单位(unit-less) |
trans_part | 考虑平移部分得到的ape,单位为m |
rot_part | 考虑旋转部分得到的ape,无单位(unit-less) |
angle_deg | 考虑旋转角得到的ape,单位°(deg) |
angle_rad | 考虑旋转角得到的ape,单位弧度(rad) |
(2) -v、-a、-s可选项:对齐方式选择(可以任意组合,例如:-va、-vas等)
命令 | 含义 |
---|---|
-v | verbose mode,以详细模式 |
-a / –align | 采用SE(3) Umeyama对齐,只处理平移和旋转 |
-as / –align --correct_scale | 采用Sim(3) Umeyama对齐,同时处理平移旋转和尺度 |
-s / –correct_scale | 仅对齐尺度 |
对齐效果(摘自参考文献):
(3)绘图、保存文件及帮助可选项:
示例:使用TUM数据集,计算考虑平移部分误差的ape,进行平移和旋转和尺度对齐,以详细模式显示,保存画图结果为PDF文件并保存计算结果为zip文件。
evo_ape tum groundtruth.txt results_new.txt -r trans_part -vas --plot --save_plot ape_trans_vas.pdf --save_results ape_trans_vas.zip
三、evo_rpe计算相对轨迹误差
相对位姿误差不进行绝对位姿的比较,相对位姿误差比较运动(姿态增量)。相对位姿误差可以给出局部精度,例如slam系统每米的平移或者旋转漂移量。
1、十四讲中的定义:
(1)相对轨迹误差:
(2)只取平移部分(△-固定时间差):
说明:假设估计位姿和实际位姿时间戳对齐,总帧数都为n;算法估计位姿 P1 , P2 , … , Pn ∈ SE(3) ;真实位姿 Q1 , Q2 , … , Qn ∈ SE(3)。
2、实际情况:
每一帧对应的相对位姿误差为:
相当于直接测量里程计的误差。Δ的选取直接影响RMSE的结果,为了能综合衡量算法表现,可以遍历 Δ 的所有取值如下:
3、命令:
evo_rpe tum groundtruth.txt results.txt -r trans_part -d 1 -u m -va -p --save_plot rpe_trans_va.pdf --save_results rpe_trans_va.zip
–d/–delta:表示相对位姿之间的增量;–u/–delta_unit:表示增量的单位,可选参数为[f, d, r, m],分别表示[frames, deg, rad, meters];合起来表示每米、每百米等。–d 默认为1,–u默认为f。
四、evo_res 结果比较
evo_res results1.txt results2.txt -v -p --save_plot comparsion.pdf
五、evo_config 全局设置和配置文件操作
evo_config set plot_seaborn_style whitegrid 将画图背景更改成白色网格
evo_config set plot_fontfamily serif plot_fontscale 1.2 将字体改为衬线型并调为1.2倍大小
evo_config set plot_reference_linestyle - 将画图所使用的线型改为 -
evo_config set plot_figsize 10 9 将所画图的图像大小调整为10 9(宽 高)
evo_config reset 将参数还原到默认值
参数 | 含义 | 可选项 |
---|---|---|
plot_export_format | 输出图像时图像存储格式 | 常用png,pdf等 |
plot_linewidth | 作图时线的宽度 | matplotlib支持的宽度,默认1.5 |
plot_reference_color | 图像中参考轨迹的颜色 | black,red,green等 |
plot_reference_linestyle | 参考轨迹的线型 | matplotlib支持的线型,默认– |
plot_seaborn_style | 图像背景和网格 | whitegrid,darkgrid,white,dark |
plot_split | 是否分开显示/存储图像 | false/true |
plot_figsize | 画图的图像大小 | 默认宽高均为6,可使用其他值 |
table_export_format | 表格数据输出格式 | 常用 csv,excel,latex,json |
参考链接:
1、SLAM精度评定工具EVO使用方法详解_evo slam_wongHome的博客-CSDN博客
2、一种SLAM精度评定工具——EVO使用方法详解_dcq1609931832的博客-CSDN博客
3、SLAM和里程计评估工具——evo - 灰信网(软件开发博客聚合)文章来源:https://www.toymoban.com/news/detail-479294.html
4、ORBSLAM数据集、evo评估工具介绍_orbslam evo_Z-way的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-479294.html
到了这里,关于SLAM和里程计评估工具——evo使用方法全解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!