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下载该软件包及其依赖项,并安装或升级它们。 根据您的操作系统,您也许可以使用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 

SLAM 中evo的使用(二) (evaluation of odometry) evo_traj/ape rpe/evo_ape说明与示例_第1张图片

  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 

SLAM 中evo的使用(二) (evaluation of odometry) evo_traj/ape rpe/evo_ape说明与示例_第2张图片

第二轨迹(S-PTAM):

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

SLAM 中evo的使用(二) (evaluation of odometry) evo_traj/ape rpe/evo_ape说明与示例_第3张图片

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

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

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

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

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

SLAM 中evo的使用(二) (evaluation of odometry) evo_traj/ape rpe/evo_ape说明与示例_第4张图片


示例工作流程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格式

SLAM 中evo的使用(二) (evaluation of odometry) evo_traj/ape rpe/evo_ape说明与示例_第5张图片

(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

SLAM 中evo的使用(二) (evaluation of odometry) evo_traj/ape rpe/evo_ape说明与示例_第6张图片

SLAM 中evo的使用(二) (evaluation of odometry) evo_traj/ape rpe/evo_ape说明与示例_第7张图片

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
SLAM 中evo的使用(二) (evaluation of odometry) evo_traj/ape rpe/evo_ape说明与示例_第8张图片

(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_选项使用--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

你可能感兴趣的:(计算机视觉,SLAM)