SLAM和里程计评估工具——evo
evo(https://michaelgrupp.github.io/evo/)是一个用于SLAM和里程计结果评估的python工具包,其提供了十分丰富的位姿分析和数据可视化功能。工具包的安装可参见github主页,基本如下可实现简单的一键安装,这里不再赘述。
pip install evo --upgrade --no-binary evo
evo数据格式
evo目前支持以下多种常见的轨迹格式:
TUM
数据集:一行8个数据,依次为time、 p x p_x px、 p y p_y py、 p z p_z pz、 q x q_x qx、 q y q_y qy、 q z q_z qz、 q w q_w qw,数据之间以空格分割,最常用的数据格式;KITTI
数据集:一行12个数据,是将位姿变换矩阵 T \bm{T} T按行连接构建成行向量得到的,由于该数据不带时戳,一般不建议用来进行数据分析;EuRoc
数据集:一行17个数据,除了和TUM
一样包时间和位姿以外,还有IMU的零偏数据,在使用该数据集时经常会出现格式错误,因此一般也会转为TUM
格式后再进行评估;ROS bagfile
:包含geometry_msgs/PoseStamped
、geometry_msgs/TransformStamped
、geometry_msgs/PoseWithCovarianceStamped
和nav_msgs/Odometry
任意一种topic的bag文件。
evo命令行工具
evo包括两个带尺度的评估工具和四个简单的工具:
Metrics工具
evo_ape
:绝对位姿评估工具;evo_rpe
:相对位姿评估工具;
简单工具
evo_traj
:轨迹可视化工具evo_res
:结果评估工具evo_fig
:绘图查看工具evo_config
:evo配置工具
在上述工具中,我们最常用的为evo_ape
、evo_traj
和evo_res
这三个。另外evo_rpe
本质上和evo_ape
并没有区别,因此下面我们以evo_ape
为例,实际应用中根据需求替换即可。
使用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
在所有参数中,必要的参数只有数据集格式和需要可视化的轨迹文件,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 xz xz平面的二维图。
evo_traj会如下所示分别绘制各估计轨迹和标称轨迹的三维轨迹对比、三轴位置对比以及三轴姿态角对比。
此外, evo_traj还可以进行不同位姿数据格式之间的转换,只需使用命令行参数
--save_as_bag
、--save_as_kitti
、--save_as_tum
即可转换为对应的数据格式(没有EuRoc是因为EuRoc位姿数据的格式和TUM一样,不同的是真值文件)。需要注意的是,KITTI
数据格式由于没有时戳,不能转换为其他格式。
使用evo可视化误差(evo_ape
)
该工具调用方式如下:
# evo_ape [format] [ground_truth] [traj_1] [traj_2] ... [options]
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results/ORB.zip
options
中大多数参数同evo_traj
一样,这里不再赘述,唯一不同的命令航参数是--save_results
,该参数允许我们将evo_ape
的结果存储在一个zip文件中,后后续的evo_res
评估使用。
该工具会显示如下所示的轨迹误差曲线和误差热力图。
使用evo进行详细评估(evo_res
)
该工具调用方式如下,最后的--save_table
命令会将分析结果存储为一个csv文件:
evo_res results/*.zip -p --save_table results/table.csv
该工具的分析结果较多,这里就不一一贴图了。