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/
本文作者原创,未经许可不得转载,谢谢配合