7

视觉里程计的轨迹评估的工具:evo

 3 years ago
source link: https://mp.weixin.qq.com/s/xkitaeOt7i7bZOGqfvHhOg
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

视觉里程计的轨迹评估的工具:evo

Original 董岩 3D视觉工坊 2/10
收录于话题
#SLAM

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

evo是一款用于视觉里程计和slam问题的轨迹评估工具。核心功能是能够绘制相机的轨迹,或评估估计轨迹与真值的误差。支持多种数据集的轨迹格式(TUM、KITTI、EuRoC MAV、ROS的bag),同时支持这些数据格式之间进行相互转换。在此仅对其基本功能做简要介绍。

一、安装

安装方式极其简单,采用pip安装:

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

或者通过github下载源码后(https://github.com/MichaelGrupp/evo),使用源码安装:

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

安装时会自动安装相关依赖项。

安装完毕后,在命令行输入evo,若显示了相关信息,则表明安装成功。若提示"command not found"也不用惊慌,很多人遇到这种问题,重启电脑即可找到evo相应指令。

二、绘制轨迹

1. 基础指令

evo绘制轨迹的指令为:evo_traj,后跟必要参数有:数据的格式(tum/kitti/bag/euroc等),轨迹文件。轨迹文件可以有多个,例如:

evo_traj tum traj1.txt traj2.txt

这个指令只是显示轨迹的基本信息,若要绘制轨迹,则增加可选参数 -p 或 --plot

evo_traj tum traj1.txt –p

640?wx_fmt=png

2. 轨迹对齐

我们时常需要将估计轨迹与真实轨迹同时绘制,可采用指令:

evo_traj tum realTraj.txt estTraj.txt -p

然而存储时轨迹多为相对位置变化,所以绘制出的轨迹在初始位置上存在一定的位置和角度偏移,出现以下情况。

640?wx_fmt=png

(如图所示,左图为绘制的两条曲线,通过调整可以发现两个曲线形状大体相同,但没有对齐,从而具有较大的误差)

这时我们采用对齐指令将两条轨迹进行对齐。为此我们需要通--ref参数指定参考轨迹,并增加参数-a(或--align)进行对齐(旋转与平移)

evo_traj tum estTraj.txt --ref realTraj.txt -p -a

3. 轨迹尺度缩放

单目相机会存在尺度的不确定性,evo_traj 支持使用-s(或 --correct_scale)参数进行Sim(3)上的对齐(旋转、平移与尺度缩放)

640?wx_fmt=png

(图片从左到右:两条未对齐曲线、曲线对齐后绘制结果、曲线通过尺度缩放后结果)

三、轨迹评估

evo可以评估两条轨迹的误差,主要有两个命令:

evo_ape:计算绝对位姿误差(absolute pose error),用于整体评估整条轨迹的全局一致性;

evo_rpe:计算相对位姿误差(relative pose error),用于评价轨迹局部的准确性。

这两个指令也支持evo_traj的可选参数,轨迹对齐-a与尺度缩放-s。完整指令如下:

evo_ape tum realTraj.txt estTraj.txt -a –s

此时将显示轨迹误差相关结果。

640?wx_fmt=png

若增加可选参数-p,可以绘制误差相关曲线:

640?wx_fmt=png

注意:在进行评估时,若经过了缩放,应将真实轨迹(参考轨迹)放在估计轨迹(计算轨迹)前方,避免在缩放时参考轨迹错误而造成误差被错误缩放。

四、进阶学习

这里只介绍了evo的基本操作,除此之外evo可以进行数据格式转化、曲线颜色配置、轨迹导出等多种功能,详细请参考evo在github上的wiki:

https://github.com/MichaelGrupp/evo/wiki

同时,可以在命令行通过-h参数查看当前evo指令的参数及相关说明。例如:

evo_traj tum –h

注意一定要输入完整的evo指令(evo_traj, evo_ape等),与必选参数,即数据格式(tum/kitti/euroc/bag)

上述内容,如有侵犯版权,请联系作者,会自行删文。

重磅!3DCVer-学术交流群已成立

欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

640?wx_fmt=jpeg

▲长按加群或投稿

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款640?wx_fmt=jpeg 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK