这个包提供可执行文件和一个小库,用于处理、评估和比较里程计和SLAM算法的轨迹输出。

目录

evo地址与安装

从PyPi

从源码安装

命令行界面

指标:

工具:

使用--help调用命令以查看选项

evo_traj tum -h

evo_res -h

适用于数据集有:

关于数据格式:

示例工作流程1

示例工作流程2

具体用法:

格式(KITTI/TUM)

kitti -KITTI数据集姿势格式

tum -TUM RGB-D数据集轨迹格式

保存/导出为其他格式(格式转换)

evo_res结果zip文件


evo地址与安装

https://github.com/MichaelGrupp/evo
根据说明,在安装pip之后,根据自己电脑安装的Python,可以键入:
pip3 install evo --upgrade 或 pip install evo --upgrade 获取evo

都支持Python 3.4+Python 2.7 。 如果要使用ROS bagfile接口,请首先检查ROS安装使用的是哪个Python版本,然后进行相应安装。 您可能还想使用虚拟环境 。

从PyPi

如果只想使用最新版本的可执行文件,最简单的方法是运行:

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

这将从PyPi下载该软件包及其依赖项,并安装或升级它们。 根据您的操作系统,您也许可以使用pip2pip3来指定所需的Python版本。 在大多数UNIX系统上,通过argcomplete软件包支持Bash终端的制表符补全 -在安装后打开新的外壳以使用它(没有--no-binary evo选项卡--no-binary evo全可能未正确安装)。 如果需要,可以通过https://libraries.io/pypi/evo订阅新版本。

从源码安装

在存储库的基本文件夹中运行此命令:

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

命令行界面

使用setup.py或pip安装后,可以从命令行全局调用以下可执行文件:

指标:

  • evo_ape - 绝对姿势错误
  • evo_rpe - 相对姿势错误

工具:

  • evo_traj - 用于分析,绘制或导出一个或多个轨迹的工具
  • evo_res - 用于比较evo_apeevo_rpe一个或多个结果文件的evo_rpe
  • evo_fig - 用于重新打开序列化图的(实验性)工具(使用--serialize_plot保存)
  • evo_config - 全局设置和配置文件操作的工具

使用--help调用命令以查看选项,例如evo_ape --help 。 在类UNIX系统上可以使用命令行参数的Tab键完成。

更多文档 在GitHub上查看Wiki 。

使用--help调用命令以查看选项

evo_traj tum -h

usage: evo_traj tum [-h] [-f] [-a] [-s] [--n_to_align N_TO_ALIGN] [--sync]
                    [--transform_left TRANSFORM_LEFT]
                    [--transform_right TRANSFORM_RIGHT]
                    [--propagate_transform] [--invert_transform] [--ref REF]
                    [--t_offset T_OFFSET] [--t_max_diff T_MAX_DIFF] [--merge]
                    [-p] [--plot_mode {xy,xz,yx,yz,zx,zy,xyz}]
                    [--save_plot SAVE_PLOT] [--serialize_plot SERIALIZE_PLOT]
                    [--save_as_tum] [--save_as_kitti] [--save_as_bag]
                    [--logfile LOGFILE] [--no_warnings] [-v] [--silent]
                    [--debug] [-c CONFIG]
                    traj_files [traj_files ...]

evo_res -h

usage: evo_res [-h] [--merge] [--use_rel_time] [--use_filenames]
               [--ignore_title] [-p] [--plot_markers] [--save_plot SAVE_PLOT]
               [--serialize_plot SERIALIZE_PLOT] [--save_table SAVE_TABLE]
               [--logfile LOGFILE] [--no_warnings] [-v] [--silent] [--debug]
               [-c CONFIG]
               result_files [result_files ...]


适用于数据集有:

TUM 轨迹文件

KITTI 位姿

EUROC .csv和.txt文件

ROS bag文件

关于数据格式:

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

该软件包提供可执行文件和一个小型库,用于处理,评估和比较测距法和SLAM算法的轨迹输出。

支持的轨迹格式:

  • “ TUM”轨迹文件
  • 'KITTI'姿势文件
  • 'EuRoC MAV'(.csv groundtruth和TUM轨迹文件)
  • ROS bagfile具有geometry_msgs/PoseStampedgeometry_msgs/TransformStampedgeometry_msgs/PoseWithCovarianceStampednav_msgs/Odometry主题

有关格式的更多信息,请参见此处 。

示例工作流程1

test/data的源文件夹中有一些示例轨迹。

  1. 绘制多条轨迹

在这里,我们使用evo_traj绘制两个KITTI姿势文件和地面真实evo_traj

 cd test/data evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz 

  1. 对轨迹运行度量

例如,在这里,我们使用evo_ape (以KITTI_00_gt.txt为参考(事实))计算来自ORB-SLAM和S-PTAM的两个轨迹的绝对姿态误差,并绘制并将各个结果保存到.zip文件中以获取evo_res

第一条轨迹(ORB立体声):

 mkdir results evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results/ORB.zip 

第二轨迹(S-PTAM):

 evo_ape kitti KITTI_00_gt.txt KITTI_00_SPTAM.txt -va --plot --plot_mode xz --save_results results/SPTAM.zip 

  1. 处理一个指标的多个结果

evo_res可用于比较来自指标的多个结果文件,即:

  • 打印信息和统计信息(默认)
  • 绘制结果
  • 将统计信息保存在表中

在这里,我们使用上面的结果生成图表和表格:

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


示例工作流程2

下载源码示例数据 git clone https://github.com/MichaelGrupp/evo

具体用法:

cd data/test

test/data中的源文件夹中有一些示例轨迹。

(1)evo_traj euroc V102_groundtruth.csv --plot

可直接输出 name: data

infos: 36382 poses, 80.626m path length, 181.905s duration

以及 trajectory xyz_view rpy_view 随时间变化的曲线图

(2)evo_traj euroc V102_groundtruth.csv --save_as_tum

--save_as_bag

--save_as_kitti

保存为data.tum格式

(3)evo_ape (绝对位姿误差)evo_rpe(相对位姿误差) evo_rpe euroc --help

绝对位姿误差,常作为绝对轨迹误差使用。通过姿态关系直接估计和参考对应姿态。然后,计算整个轨迹的统计数据。这对于测试轨迹的全局一致性是有用的。

相对于绝对姿态的直接比较,相对姿态误差比较运动(“姿态三角”)。该度量给出了关于局部精度的见解,即漂移。例如,可以评估每米的平移或旋转漂移:

一般模式: command format reference-trajectory estimated-trajectory [options]

e.g evo_ape euroc data00.csv SaveTrajectory0.txt -va --plot --save_results ./result/ORB.ZIP

evo_ape euroc V102_groundtruth.csv  V102.txt -va --plot --save_results ./result/ORB.ZIP

e.g evo_rpe tum reference.txt estimate.txt --pose_relation angle_deg --delta 1 --delta_unit m

bag模式:command bag bagfile-path reference-topic estimated-topic [options]

(4)绘制不同算法(ORB PTAM等)中与真实轨迹的图

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

evo_traj tum  fr2_desk_ORB.txt  --ref=fr2_desk_groundtruth.txt -p --plot_mode=xyz

(5)调整显示尺寸

evo_config set plot_figsize 5 4.5

evo_config reset 恢复默认设置

(6)处理不同结果

*First trajectory (ORB Stereo):*

mkdir results

evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results/ORB.zip

*Second trajectory (S-PTAM):*

evo_ape kitti KITTI_00_gt.txt KITTI_00_SPTAM.txt -va --plot --plot_mode xz --save_results results/SPTAM.zip

Here, we use the results from above to generate a plot and a table:evo_res results/*.zip -p --save_table results/table.csv

格式(KITTI/TUM)

kitti -KITTI数据集姿势格式

实际上,这不是真正的轨迹格式,因为它没有时间戳-它仅在文本文件中包含姿势。 这意味着当您要比较此格式的两个文件与度量标准时必须小心,因为姿势的数量必须完全相同。

文件的每一行都包含平整为一行的4x4同构姿势矩阵(SE(3)矩阵)的前3行,每个值之间用空格分隔。 例如,此姿势矩阵:

 a b c d
e f g h
i j k l
0 0 0 1 

将在文件中显示为以下行:

 a b c d e f g h i j k l 

更多信息: http : //www.cvlibs.net/datasets/kitti/eval_odometry.php


tum -TUM RGB-D数据集轨迹格式

每行有8个条目,其中包含时间戳记(以秒为单位),位置和方向(以四元数表示),每个值用空格分隔:

 timestamp xyz q_x q_y q_z q_w 

更多信息: https : //vision.in.tum.de/data/datasets/rgbd-dataset/file_formats


保存/导出为其他格式(格式转换)

通常,可以使用--save_as_<other_format>选项使用--save_as_<other_format>将轨迹导出为其他格式。

可能有以下组合:

  --save_as_bag --save_as_kitti --save_as_tum
bag
euroc
kitti 否(无时间戳记) 否(无时间戳记)*
tum

* ...但是您可以将此脚本与KITTI数据集的时间戳文件一起使用

导出的ROS袋文件将包含geometry_msgs/PoseStamped消息

例:

  #将EuRoC groundtruth文件导出到TUM轨迹evo_traj euroc data.csv --save_as_tum# (将另存为data.tum)#将TUM轨迹导出为KITTI格式evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_kitti# (将另存为* .kitti)#将TUM轨迹导出到ROS bagfileevo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_bag# (将另存为<timestamp> .bag,主题为traj_1,traj_2和traj_3)#等等... 

没有--save_as_euroc选项,因为EuRoC格式仅对EuRoC数据集的基本事实有意义。

注意:在1.0.5版之前,如果导出TUM文件,则四元数存在一个错误。 使用evo pkg --version或upgrade确保版本至少为v1.0.5


evo_res结果zip文件

带有--save_results选项的度量标准生成的这些文件包含将不同结果与evo_res进行比较所需的数据。 它们只是.zip文件,其中包含一些.npz文件和.npz文件,用于存储较大的numpy数组。

如果需要,还可以将用于生成结果的轨迹的备份存储在.zip文件中。 要在每次使用--save_results时自动执行此--save_results ,请更改设置:

 evo_config set save_traj_in_zip true 

请注意,这会增加文件的大小。


更详细的使用说明可以参见 evo 的官方说明:
https://github.com/MichaelGrupp/evo

SLAM 中evo的使用(二) (evaluation of odometry) evo_traj/ape rpe/evo_ape说明与示例相关推荐

  1. SLAM中evo评估工具(用自己的数据集评估vinsFusion)

    目录: 配置标题文件修改 源码修改 第一处 第二处 第三处 重新编译工程 安装evo 1.安装命令 2.常用指令 运行vinsFusion生成位姿估计文件 使用evo评估轨迹 配置标题文件修改 主要根 ...

  2. 二十五.SLAM中Mapping和Localization区别和思考

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  3. SLAM中的位姿与轨迹评价指标:APE、RPE、ATE、RTE

    本篇文章原文为<SLAM中的位姿与轨迹评价指标:APE.RPE.ATE.RTE> 0.背景 前两天学弟在看EVO的一个有关于Metrics的文档的时候,对于APE和RPE的计算不太清楚.问 ...

  4. SLAM中的卡尔曼滤波:究竟滤了谁?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在SLAM系统中,后端优化部分有两大流派. 一派是基于马尔科夫性假 ...

  5. 视觉SLAM总结——LSD SLAM中关键知识点总结

    视觉SLAM总结--LSD SLAM中关键知识点总结 视觉SLAM总结--LSD SLAM中关键知识点总结 1. LSD SLAM的创新点/关键点是什么? 2. LSD SLAM的整体框架是怎样的? ...

  6. 论文精读 | slam中姿态估计的图优化方法比较

    一. 摘要 对于位置环境中的自主导航问题,同步定位与建图(Simultaneous localization and mapping, SLAM)是一个非常重要的工具框架.根据SLAM字面含义可以得知 ...

  7. 三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程)

    三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程) 一.显示运动轨迹原理讲解 二.前期准备 三.git管理子模块及克隆源代码 1.学习使用Git Submodule 2.克隆源 ...

  8. 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了

    摘自:https://mp.weixin.qq.com/s/OZnnuA31tEaVt0vnDOy5hQ 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了 原创 小翼 飞思实验室 今天 基 ...

  9. SLAM中姿态估计的图优化方法比较(g2o/Ceres/GTSAM/SE-Sync)

    编辑 | 深蓝AI 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 后台回复[SLAM综述]获取视觉SLAM.激光SLAM.RGBD-SLAM等多篇综述! 本 ...

  10. 深度学习结合SLAM的研究思路/成果整理之(一)使用深度学习方法替换SLAM中的模块

    整理了部分近两年深度学习结合SLAM的一些研究成果(参考知乎帖子https://www.zhihu.com/question/66006923 和泡泡机器人公众号,附上论文链接和已找到的源代码/数据集 ...

最新文章

  1. sql OFFSET 和 ORDINAL
  2. CALayer 一些简单的小例子
  3. 来伊份与第四范式宣布战略合作 携手打造智慧零售新范本
  4. sqlite like concat 怎么 替代_Joplin:真正的 Evernote 开源替代品
  5. [译]GC专家系列2:Java 垃圾回收的监控
  6. 华容道与数据结构 (1)
  7. C++从入门到进阶近100本书推荐电子书pdf
  8. POJ 1182 食物链(并查集+偏移向量)题解
  9. windows10怎么锁定计算机,别让Windows 10锁住亲友
  10. 前端开发~H5 ·学习笔记 ·001——【HTML介绍、常用HTML标签】
  11. python——re模块
  12. 【优化算法】果蝇算法(FOA)【含Matlab源码 1568期】
  13. Coverity介绍以及典型缺陷说明
  14. vue代码查重(任意格式文件)
  15. element表格多出一列空白
  16. 精彩回顾|「源」来如此 第六期 - 开源经济与产业投资
  17. 支付宝生活缴费视频课程
  18. xml基础、DTD验证、Schema验证(备忘)
  19. Thinkphp 6 + Vue 2 + ElementUI + Vxe-table 前后端分离的,一键生成代码和API接口的,通用后台管理系统 快速开发框架,开发小程序和APP的推荐框架!
  20. 英语——动名词(一)

热门文章

  1. 学习《医学三字经白话解》之心腹痛、胸痹
  2. in predict assert self.binded and self.params_initialized AssertionError
  3. 计算机软件服务费入哪个科目,软件服务费计入什么科目?
  4. 微信线下门店二维码扫码支付和退款
  5. python爬取饿了么评论_爬虫实例:饿了么爬虫
  6. Windows Server 无法启用 网络发现
  7. Apache ShenYu源码阅读系列-基于WebSocket的数据同步
  8. python实现garch模型_【一点资讯】Python玩转金融时间序列之ARCH与GARCH模型
  9. 毕业论文格式|自制word模板 |.domt | word格式模版
  10. mysql卸载报错2503_Win10系统卸载Skype软件报错2503的解决方法