SLAM和里程计评估工具——evo

SLAM和里程计评估工具——evo

  • evo数据格式
  • evo命令行工具
    • 使用evo进行轨迹可视化(``evo_traj``)
    • 使用evo可视化误差(``evo_ape``)
    • 使用evo进行详细评估(``evo_res``)

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/PoseStampedgeometry_msgs/TransformStampedgeometry_msgs/PoseWithCovarianceStampednav_msgs/Odometry任意一种topic的bag文件。

evo命令行工具

evo包括两个带尺度的评估工具和四个简单的工具:

Metrics工具

  • evo_ape:绝对位姿评估工具;
  • evo_rpe:相对位姿评估工具;

简单工具

  • evo_traj:轨迹可视化工具
  • evo_res:结果评估工具
  • evo_fig:绘图查看工具
  • evo_config:evo配置工具

在上述工具中,我们最常用的为evo_apeevo_trajevo_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会如下所示分别绘制各估计轨迹和标称轨迹的三维轨迹对比、三轴位置对比以及三轴姿态角对比。
SLAM和里程计评估工具——evo_第1张图片SLAM和里程计评估工具——evo_第2张图片SLAM和里程计评估工具——evo_第3张图片此外, 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评估使用。

该工具会显示如下所示的轨迹误差曲线和误差热力图。
SLAM和里程计评估工具——evo_第4张图片SLAM和里程计评估工具——evo_第5张图片

使用evo进行详细评估(evo_res

该工具调用方式如下,最后的--save_table命令会将分析结果存储为一个csv文件:

evo_res results/*.zip -p --save_table results/table.csv

该工具的分析结果较多,这里就不一一贴图了。

你可能感兴趣的:(SLAM开源工具包)