SLAM 中evo的使用(二) (evaluation of odometry) evo_traj/ape rpe/evo_ape说明与示例
这个包提供可执行文件和一个小库,用于处理、评估和比较里程计和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下载该软件包及其依赖项,并安装或升级它们。 根据您的操作系统,您也许可以使用pip2
或pip3
来指定所需的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_ape
或evo_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/PoseStamped
,geometry_msgs/TransformStamped
,geometry_msgs/PoseWithCovarianceStamped
或nav_msgs/Odometry
主题
有关格式的更多信息,请参见此处 。
示例工作流程1
在test/data
的源文件夹中有一些示例轨迹。
- 绘制多条轨迹
在这里,我们使用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
- 对轨迹运行度量
例如,在这里,我们使用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
- 处理一个指标的多个结果
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说明与示例相关推荐
- SLAM中evo评估工具(用自己的数据集评估vinsFusion)
目录: 配置标题文件修改 源码修改 第一处 第二处 第三处 重新编译工程 安装evo 1.安装命令 2.常用指令 运行vinsFusion生成位姿估计文件 使用evo评估轨迹 配置标题文件修改 主要根 ...
- 二十五.SLAM中Mapping和Localization区别和思考
专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...
- SLAM中的位姿与轨迹评价指标:APE、RPE、ATE、RTE
本篇文章原文为<SLAM中的位姿与轨迹评价指标:APE.RPE.ATE.RTE> 0.背景 前两天学弟在看EVO的一个有关于Metrics的文档的时候,对于APE和RPE的计算不太清楚.问 ...
- SLAM中的卡尔曼滤波:究竟滤了谁?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在SLAM系统中,后端优化部分有两大流派. 一派是基于马尔科夫性假 ...
- 视觉SLAM总结——LSD SLAM中关键知识点总结
视觉SLAM总结--LSD SLAM中关键知识点总结 视觉SLAM总结--LSD SLAM中关键知识点总结 1. LSD SLAM的创新点/关键点是什么? 2. LSD SLAM的整体框架是怎样的? ...
- 论文精读 | slam中姿态估计的图优化方法比较
一. 摘要 对于位置环境中的自主导航问题,同步定位与建图(Simultaneous localization and mapping, SLAM)是一个非常重要的工具框架.根据SLAM字面含义可以得知 ...
- 三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程)
三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程) 一.显示运动轨迹原理讲解 二.前期准备 三.git管理子模块及克隆源代码 1.学习使用Git Submodule 2.克隆源 ...
- 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了
摘自:https://mp.weixin.qq.com/s/OZnnuA31tEaVt0vnDOy5hQ 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了 原创 小翼 飞思实验室 今天 基 ...
- SLAM中姿态估计的图优化方法比较(g2o/Ceres/GTSAM/SE-Sync)
编辑 | 深蓝AI 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 后台回复[SLAM综述]获取视觉SLAM.激光SLAM.RGBD-SLAM等多篇综述! 本 ...
- 深度学习结合SLAM的研究思路/成果整理之(一)使用深度学习方法替换SLAM中的模块
整理了部分近两年深度学习结合SLAM的一些研究成果(参考知乎帖子https://www.zhihu.com/question/66006923 和泡泡机器人公众号,附上论文链接和已找到的源代码/数据集 ...
最新文章
- sql OFFSET 和 ORDINAL
- CALayer 一些简单的小例子
- 来伊份与第四范式宣布战略合作 携手打造智慧零售新范本
- sqlite like concat 怎么 替代_Joplin:真正的 Evernote 开源替代品
- [译]GC专家系列2:Java 垃圾回收的监控
- 华容道与数据结构 (1)
- C++从入门到进阶近100本书推荐电子书pdf
- POJ 1182 食物链(并查集+偏移向量)题解
- windows10怎么锁定计算机,别让Windows 10锁住亲友
- 前端开发~H5 ·学习笔记 ·001——【HTML介绍、常用HTML标签】
- python——re模块
- 【优化算法】果蝇算法(FOA)【含Matlab源码 1568期】
- Coverity介绍以及典型缺陷说明
- vue代码查重(任意格式文件)
- element表格多出一列空白
- 精彩回顾|「源」来如此 第六期 - 开源经济与产业投资
- 支付宝生活缴费视频课程
- xml基础、DTD验证、Schema验证(备忘)
- Thinkphp 6 + Vue 2 + ElementUI + Vxe-table 前后端分离的,一键生成代码和API接口的,通用后台管理系统 快速开发框架,开发小程序和APP的推荐框架!
- 英语——动名词(一)
热门文章
- 学习《医学三字经白话解》之心腹痛、胸痹
- in predict assert self.binded and self.params_initialized AssertionError
- 计算机软件服务费入哪个科目,软件服务费计入什么科目?
- 微信线下门店二维码扫码支付和退款
- python爬取饿了么评论_爬虫实例:饿了么爬虫
- Windows Server 无法启用 网络发现
- Apache ShenYu源码阅读系列-基于WebSocket的数据同步
- python实现garch模型_【一点资讯】Python玩转金融时间序列之ARCH与GARCH模型
- 毕业论文格式|自制word模板 |.domt | word格式模版
- mysql卸载报错2503_Win10系统卸载Skype软件报错2503的解决方法