SLAM轨迹精度评价工具evo简介与使用

Mar 27,2021   2137 words   8 min

Tags: SLAM

1.简单介绍

做SLAM肯定都知道,最后在得到轨迹以后需要进行精度评价。一方面需要对轨迹进行可视化,另一方面需要定量评价精度。当然,说起来其实都不是什么难事,自己写代码也可以实现,但有些没有必要。网上有很多很好用的工具,我们就不需要重复造轮子了。比如这里介绍的evo,就是一个十分方便好用、轻量级的轨迹精度评价工具,官方Github主页是这里。为了使用方便使用,作者将evo打包成了标准的Python包并上传到了PyPI,主页是这里。下面就简单介绍相关使用方法。

2.下载安装

既然是标准的PyPI包,固然就可以用标准的安装流程进行安装。打开终端,输入如下内容即可安装evo的最新版。

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

注意了,最新版本的evo只支持Python3.6+,因此如果你在用Python 2.7,最高能安装的evo版本是1.12.0,可以输入pip install evo==1.12.0安装。顺便解释一下--no-binary evo的意思,作者在Github中说,如果没有这个参数,绘图时标签可能会有点问题,因此建议按作者说的来。安装好之后如下图所示。

3.使用测试

安装好以后,可以在终端中输入evo,如果出现下面的内容,说明安装成功。 evo支持TUM、KITTI、EuRoC MAV、Bag格式的轨迹/姿态文件,因此使用起来还是十分方便的。evo主要提供了以下命令以供使用(在控制台中直接输入):

* `evo_ape`: absolute pose error

* `evo_rpe`:relative pose error

* `evo_traj`: tool for analyzing, plotting or exporting one or more trajectories

* `evo_res`: tool for comparing one or multiple result files from evo_ape or evo_rpe

* `evo_fig`: (experimental) tool for re-opening serialized plots (saved with --serialize_plot)

* `evo_config`: tool for global settings and config file manipulation

如果对于使用的参数有不懂的地方,可以输入参数--help,例如evo_ape --help查看详细的帮助信息。下面就以一个实际的例子进行说明。

(1) 示例数据下载

首先,我们可以把evo的Github项目clone下来,在test/data目录下就有可供使用的示例数据。

(2) 可视化轨迹

在获得估计的轨迹文件以后,我们想做的第一件事自然是绘制出一个三维轨迹看看效果。这个需求可以用evo_traj实现。在刚刚上面提到的test/data目录下,输入如下内容:

evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz

你就可以绘制出多个轨迹了(一个ORB的轨迹、一个SPTAM的轨迹,还有真值),如下图所示。 配色还是蛮好看的。这里还有其它视图标签,这里就不展示了。另外说一句,--plot_mode这个参数,如果你设置为xyz,那么绘制的轨迹就是3D的了,如下图所示。

(3) 精度评价

轨迹可视化出来了,算是“定性”评价了精度,下一步自然就是定量评价。因此自然用到evo_ape命令。还是在test/data目录下打开终端,下面这两条命令就是分别对ORB和SPTAM轨迹进行了评价。

evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results_ORB.zip
evo_ape kitti KITTI_00_gt.txt KITTI_00_SPTAM.txt -va --plot --plot_mode xz --save_results results_SPTAM.zip

如下图所示。 可以看到,画出的图还是非常漂亮的,颜值很高。而且结果也保存到了各自的zip文件中。

(4) 精度对比

在上面,我们已经分别将ORB和SPTAM的轨迹与真值进行了对比,得到了各自的精度。但我们肯定还想知道各个方法间的精度对比,这就需要用evo_res命令了。在test/data目录下,打开终端,输入如下内容。

evo_res results_ORB.zip results_SPTAM.zip --save_table results_compare.csv

运行之后你就会得到各个方法之间的详细定量比较,如下图所示。 至此,一个基本、常规的轨迹评价流程就完成了,利用上面生成的数据你还可以画出各种看起来很酷炫的图,如下。 然后就可以写论文了(笑。

4.参考资料

  • [1] https://github.com/MichaelGrupp/evo
  • [2] https://pypi.org/project/evo/

本文作者原创,未经许可不得转载,谢谢配合

返回顶部