测评工具evo安装与使用

slam测评工具——evo的安装及使用

  • evo简介
    • evo安装
    • 常见问题
    • evo使用
      • **几个常用的evo工具为:**
        • evo_traj:直接画出轨迹
      • evo_ape:绝对位姿误差的计算
      • evo_rpe:相对位姿误差的计算
      • 其他参数

evo简介

evo是一个很好的测评工具,它可以根据时间戳将轨迹进行对齐,同时可以将不同尺度的轨迹按照你指定的标准轨迹进行拉伸对齐,并可以算出均方差等评定参数,用于测评slam算法性能

evo安装

evo共有两种安装方式

  1. 快捷安装 ,直接安装最新的稳定发行版;
pip install evo --upgrade --no-binary evo
  1. 源码安装 ,下载源码进行安装;
    首先在任意文件夹下下载evo,也可以在home中直接下载
git clone https://github.com/MichaelGrupp/evo.git
	 然后进入evo文件夹
pip install --editable . --upgrade --no-binary evo

常见问题

1.安装的时候可能需要安装一些python的package,(有的用户可能已经安装过了就会很快跳过这一步),这些是需要通过pip安装的,注意是python2.7下的,可能会出现下载时间巨长的情况,这时候需要更改python的pip源,

在pip 语句后面增加指定源路径,如下
pip install --editable . --upgrade --no-binary evo -i https://pypi.tuna.tsinghua.edu.cn/simple

这里增加了清华源,下载速度飞升,当然这只是一种简易方法,如果想长期提升pip下载速度,可以看

2.直接使用pip下载会出现无权限等问题,如下

Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/lib/python2.7/dist-packages/dateutil/relativedelta.pyc'
Consider using the `--user` option or check the permissions

在pip语句后面增加 --user

pip install --editable . --upgrade --no-binary evo --user

3.安装后虽然成功,但是报错numpy版本低,最低要求为1.12.0,而当前的为1.11.0,如下

raise VersionConflict(dist, req).with_context(dependent_req)
ContextualVersionConflict: (numpy 1.11.0 (/usr/lib/python2.7/dist-packages), Requirement.parse('numpy>=1.12.0'), set(['pandas']))
 
[ERROR] evo module evo.main_traj crashed - no logfile written (disabled)

这时只需将numpy的版本手动升级即可

pip install numpy --upgrade --user

有的小伙伴可能会遇到下载更新后不通过的问题,要求python版本大于3.5,如下(不要用pip3,不然安完也无法使用,解决方法看下面)

Looking in indexes: http://pypi.douban.com/simple
Collecting numpy
  Downloading http://pypi.doubanio.com/packages/ff/59/d3f6d46aa1fd220d020bdd61e76ca51f6548c6ad6d24ddb614f4037cf49d/numpy-1.17.4.zip (6.4MB)
     |████████████████████████████████| 6.4MB 2.3MB/s 
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ir0cOk/numpy/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ir0cOk/numpy/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-ir0cOk/numpy/pip-egg-info
         cwd: /tmp/pip-install-ir0cOk/numpy/
    Complete output (5 lines):
    Traceback (most recent call last):
      File "", line 1, in 
      File "/tmp/pip-install-ir0cOk/numpy/setup.py", line 31, in 
        raise RuntimeError("Python version >= 3.5 required.")
    RuntimeError: Python version >= 3.5 required.
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

这是由于你所在的源中numpy版本过高,适用于python3,所以更改你的源或者直接下载稍低版本的numpy
我这里使用的清华源下载的1.16.5版本的numpy,亲测可用

4.使用涉及到画图的功能时,报错,如下

  File "/home/wyt/evo/evo/tools/plot.py", line 150, in tabbed_tk_window
    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
ImportError: cannot import name NavigationToolbar2Tk

[ERROR] evo module evo.main_traj crashed - no logfile written (disabled)

这是由于缺少TK工具导致的,我没有去下载这个python工具,而是直接更改evo的setting

cd ~/.evo
sudo gedit settings.json

然后将"plot_backend"后面的值改为"QT5Agg",

"plot_backend": "QT5Agg",

然后就可以正常使用了。

evo使用

evo支持一下几种数据格式:

TUM 轨迹文件
KITTI 位姿
EUROC .csv和.txt文件
ROS bag文件

在使用evo的时候都要在工具后面先给出想要处理的数据格式如

evo_traj tum -h(查看帮助)

几个常用的evo工具为:

evo_traj:直接画出轨迹

如:

evo_traj tum myslam.txt -p

也可以将多个轨迹画到一起

evo_traj tum data.txt vins_data.txt --ref data.txt -va -p

图如下:
测评工具evo安装与使用_第1张图片
其中ref是参考轨迹,-va是对齐后的详细信息,-p是画出图像,也可以使用
–plot_mode {xy,xz,yx,yz,zx,zy,xyz}
来选择单独绘制某个平面的信息

evo_ape:绝对位姿误差的计算

如:

evo_ape tum data.txt vins_data.txt  -va -p

结果如下
测评工具evo安装与使用_第2张图片
使用ape的时候无需给出–ref 的文件,tum 后第一个文件即为标准文件,
这里标准文件为data.txt

evo_rpe:相对位姿误差的计算

其使用方法与ape基本一致

其他参数

将文件保存为其他类型的文件,可以使用如下句柄

--save_as_tum         save trajectories in TUM format (as *.tum)
--save_as_kitti          save poses in KITTI format (as *.kitti)
--save_as_bag         save trajectories in ROS bag as .bag

保存图片

--save_plot “保存的路径”

合并轨迹

--merge

给出数据的最大时间戳差异

--t_max_diff “具体差异”

具体其他参数请参考不同工具后的-h(–help)

你可能感兴趣的:(slam,建图与重定位,slam测评)