这个包提供可执行文件和一个小库,用于处理、评估和比较里程计和SLAM算法的轨迹输出。
目录
evo地址与安装
从PyPi
从源码安装
命令行界面
指标:
工具:
使用--help调用命令以查看选项
evo_traj tum -h
evo_res -h
适用于数据集有:
关于数据格式:
示例工作流程1
示例工作流程2
具体用法:
格式(KITTI/TUM)
kitti -KITTI数据集姿势格式
tum -TUM RGB-D数据集轨迹格式
保存/导出为其他格式(格式转换)
evo_res结果zip文件
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版本,然后进行相应安装。 您可能还想使用虚拟环境 。
如果只想使用最新版本的可执行文件,最简单的方法是运行:
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
调用命令以查看选项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 ...]
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算法的轨迹输出。
支持的轨迹格式:
geometry_msgs/PoseStamped
, geometry_msgs/TransformStamped
, geometry_msgs/PoseWithCovarianceStamped
或nav_msgs/Odometry
主题有关格式的更多信息,请参见此处 。
在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
下载源码示例数据 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
/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_
选项使用--save_as_
将轨迹导出为其他格式。
可能有以下组合:
--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 bagfile
evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_bag
# (将另存为 .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