欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-07 11:54:06
...

evo(https://michaelgrupp.github.io/evo/)是一个用于SLAM和里程计结果评估的python工具包,其提供了十分丰富的位姿分析和数据可视化功能。工具包的安装可参见github主页,基本如下可实现简单的一键安装,这里不再赘述。

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

evo数据格式

evo目前支持以下多种常见的轨迹格式:

  • TUM数据集:一行8个数据,依次为time、pxp_xpyp_ypzp_zqxq_xqyq_yqzq_zqwq_w,数据之间以空格分割,最常用的数据格式;
  • KITTI数据集:一行12个数据,是将位姿变换矩阵T\bm{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:该选项表示将所有轨迹和标称轨迹在SE(3)SE(3)上进行位姿对齐和尺度对齐(其中-a选项是位姿对齐,-s选项是尺度对其,两者可以单独开启,-v未发现有何作用);
  • -p: 该选项表示开启绘图,否则我们只能在控制台看见结果,而不会得到有效的可视化结果。evo绘图默认是3D轨迹图,我们也可以向例子中一样进一步使用--plot_mode=xz命令其只绘制xzxz平面的二维图。

evo_traj会如下所示分别绘制各估计轨迹和标称轨迹的三维轨迹对比、三轴位置对比以及三轴姿态角对比。
SLAM和里程计评估工具——evoSLAM和里程计评估工具——evoSLAM和里程计评估工具——evo此外, 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和里程计评估工具——evoSLAM和里程计评估工具——evo

使用evo进行详细评估(evo_res

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

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

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

相关标签: SLAM开源工具包