SLAM精度评定工具——EVO使用方法详解

系统版本:Ubuntu20.04

ROS版本:Noetic

EVO是用于处理、评估和比较里程计和SLAM算法的轨迹输出的工具。

注意:本文的评测是在kitti数据集下进行评测,其他的数据集也支持评测。

安装EVO,可以执行下面这条命令。

pip install evo --upgrade --no-binary evo

evo工具主要有6个常用命令

    evo_ape:用于评估绝对位姿误差
    evo_rpe:用于评估相对位姿误差
    evo_traj:用于画轨迹、输出轨迹文件、转换轨迹数据格式
    evo_res:比较来自evo_ape和evo_rpe生成的一个或多个结果文件的工具
    evo_fig:(不常用)用于重新打开序列化图
    evo_config:(不常用)evo工具全局设置和配置文件操作

1.evo_ape

评价的是绝对误差随路程的累计,是一个累积量。

用于评估两个轨迹的绝对轨迹误差,最简单的使用方法如下:

evo_ape kitti 1.txt 2.txt

执行命令后,结果如下图:

上述命令运行之后会在终端输出统计信息(单位:米),其中

max:最大误差
mean:误差均值
median:误差中位数
min:最小误差
rmse:均方根误差
sse:方差
std:标准差

发现一个问题,就是运行结果中只给出了数据,没有给出数据图,显得不直接明了,可执行下面的命令解决。

evo_ape kitti 1.txt 2.txt -r full --plot --plot_mode xyz

-r表示ape所基于的姿态关系

-r/–pose_relation可选参数 含义
full 表示同时考虑旋转和平移误差得到的ape,无单位(unit-less)
trans_part 考虑平移部分得到的ape,单位为m
rot_part 考虑旋转部分得到的ape,无单位(unit-less)
angle_deg 考虑旋转角得到的ape,单位°(deg)
angle_rad 考虑旋转角得到的ape,单位弧度(rad)

不添加-r/–pose_relation和可选项,则默认为trans_par

-plot表示画图

–plot_mode选择画图模式,二维图或者三维图,可选参数为[xy, xz, yx, yz, zx, zy, xyz],默认为xyz。

-save_results表示存储结果

存储结果可以手动储存,也可自动储存。自动储存的命令如下:

evo_ape kitti 1.txt 2.txt -r full --plot --plot_mode xyz --save_plot ./trajecoty --save_results ./result.zip

其中,./trajecoty表示结果储存的目录 ./result.zip表示结果文件的命名。

结果如下:

 

 此外

v表示verbose mode,详细模式

-a表示采用SE(3) Umeyama对齐,其余可选项如下所示

不加表示默认尺度对齐参数为1.0,即不进行尺度对齐。
命令 含义
–align/-a 采用SE(3) Umeyama对齐,只处理平移和旋转
–align –correct_scale/-as 采用Sim(3) Umeyama对齐,同时处理平移旋转和尺度
–correct_scale/-s 仅对齐尺度

例如,下面这条指令:

evo_ape kitti 1.txt 2.txt -r full -vas --plot --plot_mode xyz --save_plot ./trajecoty --save_results ./result.zip

 2.evo_rpe

相对位姿误差不进行绝对位姿的比较,相对位姿误差比较运动(姿态增量)。相对位姿误差可以给出局部精度,例如slam系统每米的平移或者旋转漂移量。

一个例子:

evo_rpe kitti ground_truth.txt laser_odom.txt -r trans_part --delta 100 --plot --plot_mode xyz

其中,其中–delta 100表示的是每隔100米统计一次误差,这样统计的其实就是误差的百分比,和kitti的odometry榜单中的距离误差指标就可以直接对应了。

运行的结果如下:

 

 注:数据效果不是很好。

-r表示ape所基于的姿态关系

-r/–pose_relation可选参数 含义
full 表示同时考虑旋转和平移误差得到的ape,无单位(unit-less)
trans_part 考虑平移部分得到的ape,单位为m
rot_part 考虑旋转部分得到的ape,无单位(unit-less)
angle_deg 考虑旋转角得到的ape,单位°(deg)
angle_rad 考虑旋转角得到的ape,单位弧度(rad)

v表示verbose mode,详细模式

-a表示采用SE(3) Umeyama对齐,其余可选项如下所示

不加表示默认尺度对齐参数为1.0,即不进行尺度对齐。
命令 含义
–align/-a 采用SE(3) Umeyama对齐,只处理平移和旋转
–align –correct_scale/-as 采用Sim(3) Umeyama对齐,同时处理平移旋转和尺度
–correct_scale/-s 仅对齐尺度

-d/-delta表示相对位姿之间的增量

-u/-delta_unit表示增量的单位

可选参数为[f, d, r, m],分别表示[frames, deg, rad, meters]。–d/–delta -u/–delta_unit合起来表示衡量局部精度的单位,如每米,每弧度,每百米等。其中–delta_unit为f时,–delta的参数必须为整形,其余情况下可以为浮点型。–delta 默认为1,–delta_unit默认为f。

一个例子:

evo_rpe euroc MH_data3.csv pose_graphloop.txt -r angle_deg --delta 1 --delta_unit m -va --plot --plot_mode xyz --save_plot ./VINSplot --save_results ./VINS.zip

命令的含义为 求每米考虑旋转角的rpe,以详细模式显示并画图。

 3.evo_traj

最基本的命令,用于画出轨迹、输出轨迹文件、进行轨迹之间的转换。在使用前需要给出轨迹的数据标准。一个例子:

evo_traj kitti ground_truth.txt --plot --plot_mode xyz

实际运行效果:

 

常用的就这几个。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年4月6日
下一篇 2023年4月6日

相关推荐