evo工具的安装与使用

本文最后更新于 2024年10月15日 上午

本文主要分享了用于评估里程计和SLAM的Python工具包evo的安装与使用。

概述

GitHub存储库

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

支持的轨迹格式:

  • TUM轨迹文件
  • KITTI位姿文件
  • EuRoC MAV(*.csv真值和TUM轨迹文件)
  • 带有 geometry_msgs/PoseStampedgeometry_msgs/TransformStampedgeometry_msgs/PoseWithCovarianceStampedgeometry_msgs/PointStampednav_msgs/Odometry 主题或 TF 消息的 ROS 和 ROS2 bag文件

安装/升级/卸载

安装/升级

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

    1
    2
    sudo apt install python-pip  # python3-pip
    pip install evo --upgrade --no-binary evo # 或pip3,需要注意ros只支持python2
  2. 源码安装,可其中提供的一些工具比如格式转换:

    1
    2
    3
    4
    sudo apt install python-pip  # python3-pip
    git clone https://github.com/MichaelGrupp/evo.git
    cd evo
    pip install --editable . --upgrade --no-binary evo # 或pip3,需要注意ros只支持python2

报错处理:

  1. 报错信息:evo module evo.main_traj crashed - no logfile written (disabled)

    解决方法:

    1
    pip install matplotlib --upgrade
  2. 问题:加载matplotlib包时出现加载的问题

    1
    import matplotlib.pyplot as plt

    报错信息:ImportError: No module named '_tkinter', please install the python3-tk package

    解决方法:

    1
    2
    sudo apt-get update
    sudo apt-get install python3-tk

    如果不想更新的话,stackoverflow上有更好的解决方法:

    1
    2
    3
    import matplotlib
    matplotlib.use("agg")
    import matplotlib.pyplot as plt

测试

本地安装路径

  • /home/lll25655/.local/lib/python2.7/site-packages/evo
  • /home/lll25655/.local/bin/evo(存放可执行文件)

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

  • evo pkg --version 查看evo版本
  • evo pkg --info 查看evo的简要介绍和描述
  • evo pkg --pyversion 查看evo使用的python版本
  • evo pkg --license 查看许可证
  • evo pkg --location 查看evo安装路径
  • evo pkg --logfile 查看日志文件路径
  • evo pkg --open_log 打开日志文件
  • evo pkg --clear_log 清除日志文件

卸载

简单安装evo,虽然下载了源码但并不是通过源码,卸载pip install的文件步骤如下:

1
2
pip list  # 列出pip安装的软件包
pip uninstall evo # 卸载

命令行界面

概述

安装后,可以从命令行全局调用以下可执行文件:

指标:

  • evo_ape - 绝对位姿误差
  • evo_rpe - 相对位姿误差

工具:

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

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

更多文档请查看 GitHub 上的 Wiki

存储库中还提供了非常简单的命令行应用程序的 Bash 脚本演示,其中显示了不同用例的示例,请参阅此处

示例工作流程

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

绘制多条轨迹

在这里,我们使用 evo_traj 绘制两个 KITTI 位姿文件和真值:

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

对轨迹运行度量

例如,这里我们使用 evo_apeKITTI_00_gt.txt 是参考(真值))计算 ORB-SLAM 和 S-PTAM 的两个轨迹的绝对位姿误差,并绘制和保存 evo_res 的各个结果到 *.zip 文件:

1
2
3
4
5
# 第一条轨迹(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
# 第二条轨迹(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 可用于比较指标中的多个结果文件,即:

  • 打印信息和统计数据(默认)
  • 将统计数据保存在表中

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

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

文件格式

加载轨迹的可执行文件支持不同的格式。您可以指定要与模式开关(第二个参数)一起使用的格式,例如: evo_traj tum ...evo_traj kitti ... 。本文档提供有关这些文件格式的信息。

bag & bag2

ROS1/ROS2 bag文件。

目前,支持主题包含 geometry_msgs/PoseStampedgeometry_msgs/TransformStampedgeometry_msgs/PoseWithCovarianceStampedgeometry_msgs/PointStampednav_msgs/Odometry 消息的包文件。 evo 仅读取轨迹,因此不使用协方差或扭曲。

1
evo_traj bag my_data.bag /odom /pose

v1.9 以来的新功能:现在也支持 TF 主题。您可以使用说明符 <topic>:<parent_frame>.<child_frame> 在命令行应用程序中加载 TF 变换的轨迹。例如:

1
evo_traj bag my_data.bag /tf:map.base_link /tf:odom.base_link

更多信息:http://wiki.ros.org/Bags

euroc

EuRoC MAV 数据集格式(也用于 TUM VI 数据集)。

1
2
timestamp,px,py,pz,qw,qx,qy,qz,vx,vy,vz,bwx,bwy,bwz,bax,bay,baz
(每行17个元素,逗号隔开,时间以纳秒为单位)

EuRoC MAV 数据集的每个序列都有包含各种地面实况信息的 .csv 文件。对于我们来说,只有具有真实轨迹的第一列才重要(时间戳、位置和方向)。

您可以在序列文件夹中找到这些文件: <sequence>/mav0/state_groundtruth_estimate0/data.csv

这种格式仅对这些真实文件有意义,因为它们具有附加数据(我们不需要)。如果您使用EuRoC数据集,您通常需要将轨迹保存为另一种格式,例如TUM格式(例如ORB-SLAM就是这样做的)。

euroc 模式下,evo的指标要求您提供EuRoC格式的参考和TUM格式的估计轨迹。

更多信息:http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#the_euroc_mav_dataset

要小心 EuRoC 数据集坐标系(地面实况、IMU、相机...),因为它们具有不同的轴约定。

kitti

1
2
r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz
(存储变换矩阵的前三行(每行12元素,空格隔开)没有时间)

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

文件的每一行都包含 4x4 齐次位姿矩阵(SE(3) 矩阵)的前 3 行,该矩阵被展平为一行,每个值由空格分隔。例如,这个位姿矩阵:

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

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

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 个条目,其中包含时间戳(以秒为单位)、位置和方向(作为四元数),每个值之间用空格分隔:

1
timestamp x y z q_x q_y q_z q_w

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

注意:TUM 视觉惯性数据集以与 EuRoC MAV 数据集类似的格式提供真实数据。它没有使用 TUM RGB-D 轨迹格式作为基本事实。对于 evo 1.13.4 或更高版本,您也可以对此数据集使用 euroc 模式。

evo_traj

evo_traj 是处理多个轨迹的主要工具,例如:

  • 显示一些信息
  • 绘图
  • 验证数据是否有效
  • 导出为其他格式
  • 应用变换等

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

1
evo_traj tum –h

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

基础

evo_traj 可以打开任意数量的轨迹。如果是基于文本的轨迹格式( tumeurockitti - 另请参阅文件格式),您可以将轨迹文件作为参数提供,例如:

1
evo_traj tum traj_1.txt traj_2.txt traj_3.txt

(在这里,您还可以在类 UNIX 系统上使用 glob 表示法: evo_traj tum traj_*

如果是 ROS bagfile,您可以提供文件路径,后跟要使用的主题的名称:

1
evo_traj bag data.bag /groundtruth /odom /tf:map.base_link

或者,使用 ROS2 包:

1
evo_traj bag2 data /groundtruth /odom /tf:map.base_link

您还可以使用 --all_topics 选项加载 bagfile 内的所有轨迹。 TF 主题可以与[此处](#bag & bag2)描述的特殊语法一起使用。

参考轨迹可以用 --ref 标记:

1
evo_traj bag data.bag /odom /tf:map.base_link --ref /groundtruth

您还可以将对齐功能( -a / --align-s / --correct_scale--n_to_align 参数)与 evo_traj 一起使用。

检查轨迹数据

默认情况下, evo_traj 仅打印有关您以这种格式输入的轨迹的一些重要信息:

1
2
name:	groundtruth
infos: 12765 poses, 304.207m path length, 889.019s duration

在详细模式( -v / --verbose )下,输出更改为以下格式:

1
2
3
4
5
6
7
8
9
name:   groundtruth
infos
duration (s) 889.01894474
nr. of poses 12765
path length (m) 304.206897009
pos_end (m) [ -3.32159757 -4.64051651 32.7839329 ]
pos_start (m) [-0.00489994 -0.01775981 -0.01375532]
t_end (s) 1502793459.3
t_start (s) 1502792570.28

您可以使用 --full_check 标志获得最详细的输出。这会执行一些数学和逻辑检查 - 例如四元数是否具有单位范数或者时间戳是否升序。还显示了一些速度值( kitti 除外,我们没有时间戳)。

绘图

-p--plot 附加到您的命令以绘制轨迹。您可以使用 --plot_mode 指定视图 - 例如 --plot_mode xz 用于 x 和 z 轴的 2D 视图,或 --plot_mode xyz 用于 3D 视图。无论如何,绘图窗口中还有第二个选项卡,其中单独绘制了 x、y 和 z 值,第三个选项卡则显示了横滚角、俯仰角和偏航角(xyz 约定)。

另请参阅此处了解更多信息:定制绘图

导出

这里

对齐与转换

几何对齐

如果使用 --ref 给出参考轨迹,则可以使用 Umeyama 的方法将其他轨迹与参考对齐:

  • --align-a = SE(3) Umeyama 对齐(旋转、平移)
  • --align --correct_scale-as = Sim(3) Umeyama 对齐(旋转、平移、缩放)
  • --correct_scale-s = 仅比例校正。不加-s表示默认尺度对齐参数为1.0,即不进行尺度对齐。
  • --n_to_align N_TO_ALIGN: the number of poses to use for Umeyama alignment, counted from the start (default: all)

v1.5.0 以来的新功能: --align_origin 提供了可用于漂移/闭环评估的简单原点对齐。这不是基于 Umeyama 算法。

时间对齐

这是通过搜索参考轨迹和其他轨迹之间的最佳匹配时间戳来完成的。然后,所有轨迹都会缩减为最佳匹配时间戳。如果未找到匹配项,则会引发错误。此步骤的选项有:

  • --t_offset :添加一个恒定的时间戳偏移量(不添加到 --ref 轨迹) - 默认值:0.0s
  • --t_max_diff :数据关联的最大时间戳差异 - 默认:0.01s

所有几何对齐方法( --align--correct_scale )都会自动执行此操作以进行点配准。您还可以仅同步轨迹的时间戳,而无需与 --sync 进行任何几何对齐。

投影变换

您可以将位姿投影到具有 --project_to_plane 和所需平面(xy、xz 或 yz)的平面中。例如, --project_to_plane xy

注意:投影是在任何潜在的几何对齐之前完成的。

下采样/过滤

轨迹可以被下采样到固定的最大数量的姿势。例如,如果您有非常大的数据并且想要提高绘图性能,这可能很有用。

1
evo_traj tum data.txt -v --downsample 1000

一种更智能的过滤类型是运动过滤器。这会过滤掉与之前的姿势相比移动不够的姿势。例如,这可以用于删除没有发生任何有趣的数据的部分,仅保留高于平移或角度阈值的运动。使用 0.5m 和 5 度的阈值进行过滤的示例:

1
evo_traj tum data.txt -v --motion_filter 0.5 5

转换

您还可以使用自定义 3D 变换来变换轨迹的姿势。为此,您需要一个 .json 文件,其中包含以下格式的平移向量和旋转四元数:

1
2
3
4
5
6
7
8
9
{
"x": 0.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
}

您也可以使用 numpy 以文本 ( np.savetxt ) 或二进制格式 ( np.save ) 保存 4x4 SE(3) 矩阵,并使用与 JSON 相同的命令行参数加载它们格式。

要从全局框架应用此类转换,请使用 --transform_left <json file> 。要从其自己的本地框架转换每个姿势,请使用 --transform_right <json file> (如果包含平移,这会更改轨迹的形状!)。

指标

概述

这些内置命令行应用程序可让您根据参考(地面实况)评估估计轨迹:

  • evo_ape
  • evo_rpe

从概念上讲,命令语法如下:

1
command format reference-trajectory estimated-trajectory [options] 

其中 format 表示支持的轨迹格式之一 - 有关不同格式的更多信息,请参阅此处

对于 ROS bagfile,语法略有不同:

1
command bag bagfile-path reference-topic estimated-topic [options] 

还支持 TF 主题,请参阅[此处](#bag&bag2)。

有关命令行界面的更多详细信息,请使用 --help 标志 - 例如 evo_rpe euroc --help

大多数中论文的指标为测量绝对误差, 在进行评估时,若经过了缩放,在命令行中应将真实轨迹(参考轨迹)放在估计轨迹(计算轨迹)前方,避免在缩放时参考轨迹错误而造成误差被错误缩放。

1
evo_ape tum groundtruth.txt CameraTrajectory_TUM.txt -p --plot_mode=xy -as

输出指标;

  • max:表示最大误差
  • mean:平均误差
  • median:误差中位数
  • min:最小误差
  • rmse:均方根误差
  • sse:和方差、误差平方和
  • std:标准差

evo_ape

绝对位姿误差,常被用作绝对轨迹误差。给定位姿关系,直接比较估计和参考之间的相应位姿。然后,计算整个轨迹的统计数据。这对于测试轨迹的全局一致性很有用。该标准非常适合于评估视觉 SLAM 系统的性能。

1
evo_ape tum reference.txt estimate.txt --align

--help 附加到命令以查看所有可用选项。

  • -r(--pose_relation) full表示同时考虑旋转和平移误差得到的ape,无单位(unit-less)
  • (默认)-r trans_part表示考虑平移部分得到的ape,单位为m
  • -r rot_part表示考虑旋转部分得到的ape,衡量旋转精度,无单位(unit-less)
  • -r angle_deg表示考虑旋转角得到的ape,单位°(deg)
  • -r angle_rad表示考虑旋转角得到的ape,单位弧度(rad)
1
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -r full -va --plot --plot_mode xz --save_results results/ORB.zip  # 命令的含义为:计算考虑平移和旋转部分误差的ape,进行平移和旋转对齐,以详细模式显示,保存画图并保存计算结果。

evo_rpe

相对位姿误差不是直接比较绝对位姿,而是比较运动(“位姿增量”)。该指标提供了有关局部精度(即漂移)的见解。例如,可以评估每米的平移或旋转漂移:

1
evo_rpe tum reference.txt estimate.txt -r angle_deg --delta 1 --delta_unit m

除非指定 --all_pairs ,否则相对姿势对是连续的。然后,使用重叠的相对姿势对。

当在命令中加上--all_pairs,则计算rpe时使用位置数据中所有的对而不是仅连续对,此时,可以通过-t/--delta_tol控制–-all_pairs模式下的相对增量的容差(relative delta tolerance)。需要注意--all_pairs下不能使用–-plot函数。

--help 附加到命令以查看所有可用选项。

  • –d/-–delta表示相对位姿之间的增量,–u/-–delta_unit表示增量的单位,可选参数为[f, d, r, m],分别表示[frames, deg, rad, meters]。–d/-–delta-u/-–delta_unit合起来表示衡量局部精度的单位,如每米,每弧度,每百米等。其中-–delta_unitf时,–-delta的参数必须为整形,其余情况下可以为浮点型。–-delta 默认为1–-delta_unit默认为f
1
evo_rpe euroc data.csv V102.txt -r angle_deg --delta 1 --delta_unit m -va --plot --plot_mode xyz --save_plot ./VIO --save_results ./VIO.zip  # 命令的含义为 求每米考虑旋转角的rpe,以详细模式显示并画图。

对齐

evo_traj相同,您可以使用 Umeyama 对齐作为预处理步骤。单目 SLAM 通常需要比例或 Sim(3) 对齐,其中通常具有随机比例。如果您想尽可能最好地测量轨迹的形状相似度,SE(3) 对齐对于绝对位姿误差 ( evo_ape ) 很有用。

投影

在计算误差之前,可以将 3D 轨迹投影到 2D。这与通过 --project_to_plane {xy, xz, yz}evo_traj 中的工作方式相同,有关详细信息,请参阅那里的部分。

下采样和过滤

数据可以被下采样和运动过滤。这与 evo_traj 中的工作方式相同,有关详细信息,请参阅那里的部分。

结果比较

evo_apeevo_rpe旨在将一条轨迹与参考进行比较。虽然这简化了使用,但不同结果的比较通常也很有趣。

对于 evo,结果比较是一个单独的步骤。这样做的优点是,您可以将 SLAM 算法 X 的结果与另一个算法 Y 的结果进行比较,而无需重新运行指标。并且比较与原始轨迹文件格式无关。

--save_results

工作流程是,您为每个轨迹运行指标,并通过在指标应用程序中指定 --save_results 参数将结果单独保存在文件中。查看 README.md示例

1
evo_ape kitti 03.txt allTra03.kitti -va --plot --correct_scale --align --save_plot ./03ape_plot --save_results ./03ape_result.zip

“结果文件”是以 zip 格式存储的序列化 Result 对象,可以由 evo_res 读取。

这些由带有 --save_results 选项的指标生成的文件包含将不同结果与 evo_res 进行比较所需的数据。它们只是包含一些 .json 文件和用于存储更大的 numpy 数组的 .npy 文件的 .zip 文件。

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

1
evo_config set save_traj_in_zip true

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

evo_res

您可以使用 evo_res 加载多个结果文件来比较不同的结果。为了避免错误的比较,如果它认为您比较由不同指标生成的文件(除非指定了 --no_warnings ),它会向您发出警告。

在使用evo_apeevo_rpe将结果保存为*.zip文件后,可以利用evo_res对不同的结果进行比较:

1
2
evo_res ape_result/.zip -p --save_table ape_result.csv
evo_res ape_result/.zip -p --save_plot ape_result.pdf
  • --save_table ape_result.csv表示将统计指标保存在csv文件中
  • –-save_plot ape_result.pdf表示将误差分析图保存在pdf文件中

综合使用

1
2
3
4
evo_ape euroc data.csv vins_result_no_loop.csv -va --plot --plot_mode xyz --save_results a.zip
evo_ape euroc data.csv vins_result_loop.txt -va --plot --plot_mode xyz --save_results b.zip
evo_res a.zip b.zip -p --save_table table.csv
# 通过对比图可看出,回环后各项精度指标大大增加,不回环平均位姿精度为14.4cm,回环平均位姿精度为5.5cm,精度大大提高,并且根据std,rmse等指标,数据稳定性鲁棒性更好。

定制绘图

有多种设置可让您更改绘图的外观。

在命令行应用程序中,查看 --plot--plot_mode 等参数。

  • –-plot_mode xz表示图像投影在xoz平面上,其余可选参数为:xy,yx,yz,zx,zy,xyz

更一般的,可以通过 evo_config set 设置包范围的设置(请参阅“配置”部分)。查看 evo_config show 以查看所有可用设置及其当前值。

打印质量图的配置示例

这是一个示例演练,说明如何从理论上更改绘图设置以生成用于打印(论文)的高质量绘图。

  1. 设置绘图网格和背景。默认绘图设置具有深色背景。这在屏幕上看起来不错,但不适合打印。我们可以通过更改 Seaborn 的 style 参数来将背景更改为白色背景的网格:

    1
    evo_config set plot_seaborn_style whitegrid
  2. 设置字体类型和比例。默认字体并不真正适合我们论文的其余部分,它使用衬线字体。图中文本标签的相对大小也可以增加,以获得更好的可读性。我们可以通过调用以下命令切换到更大尺寸的衬线字体:

    1
    evo_config set plot_fontfamily serif plot_fontscale 1.2

    为了匹配较小的字体,我们还减小了线宽:

    1
    evo_config set plot_linewidth 1.0

    您还可以更改其他一些内容,例如参考轨迹的线条样式:

    1
    evo_config set plot_reference_linestyle -
  3. 设置默认图形尺寸。您也可以调整默认绘图尺寸。例如,宽度为 5,高度为 4.5:

    1
    evo_config set plot_figsize 5 4.5
  4. 使用LaTeX渲染器。因为我们使用 LaTeX 来写论文,所以我们也想用 LaTeX 渲染绘图的字体:

    1
    evo_config set plot_usetex

    如果第一次尝试不起作用,您可能需要将 plot_texsystem 参数更改为计算机上安装的 LaTeX 系统,请参阅 evo_config show

    高级:绘图也可以以 pgf 格式导出 ( --save_plot plot.pgf )。

  5. (可选)恢复默认设置

    1
    evo_config reset

坐标轴标记

可以通过将 plot_axis_marker_scale 设置为非零值来激活坐标轴标记,例如:

1
evo_config set plot_axis_marker_scale 0.1

参考轨迹有一个单独的参数 plot_reference_axis_marker_scale

1
evo_config set plot_reference_axis_marker_scale 0.1

您可能需要调整此比例值以将其调整为轨迹的大小。如果不再需要,请再次将其设置为 0

开始和结束标记

起点用圆圈标记,终点用十字标记:

1
evo_config set plot_start_end_markers true

位姿对应标记

您可以启用将参考轨迹的位姿与其他轨迹中的相应位姿连接起来的标记。此设置适用于 evo_apeevo_rpe ,如果您指定 --ref 引用并且其他轨迹已同步或已同步,则也适用于 evo_traj 对齐。

1
evo_config set plot_pose_correspondences true

更改长度单位

您可以将轨迹图的轴刻度缩放为不同的长度单位。如果您的数据规模非常小( cmmm ;例如来自手机)或规模非常大( km ;例如来自汽车),这会很有用)。请注意,这不会改变数据,只会改变绘图外观。

1
evo_config set plot_trajectory_length_unit km

2D ROS 地图

略。详情

自定义配置文件

有时,将实验参数存储在专用文件中而不是每次都手动将它们作为命令行参数键入是有用的。 evo 的大多数命令行工具都可以使用 -c--config 参数加载 .json 配置文件。

假设您针对相对位姿误差运行此命令:

1
evo_rpe tum groundtruth.txt estimate.txt -r angle_deg --delta 1 --delta_unit m --verbose --plot

evo_config generate 可以将任意命令行参数转换为 --out 指定的 .json 文件:

1
evo_config generate -r angle_deg --delta 1 --delta_unit m --verbose --plot --out rpe_config.json

这将输出一个包含以下内容的文件 rpe_config.json

1
2
3
4
5
6
7
{
"delta": 1.0,
"delta_unit": "m",
"plot": true,
"pose_relation": "angle_deg",
"verbose": true
}

下次您想使用这些参数运行 evo_rpe 时,您只需调用:

1
evo_rpe groundtruth.txt estimate2.txt -c rpe_config.json

出于技术原因,您需要将 evo_config generate 与“长”选项(如果可用)一起使用 - 例如: --plot 而不是 -p

配置文件中的参数具有优先级(您不能通过等效的命令行选项覆盖它们)

保存/导出为其他格式

保存当前结果

  • -–save_plot pngname:表示保存生成的图片名
  • --save_results results/ORB.zip:表示保存计算结果

导出为其他格式

一般来说,您可以使用 evo_traj 使用 --save_as_<other_format> 选项将轨迹导出为其他格式。

可能有以下组合:

--save_as_bag --save_as_kitti --save_as_tum --save_as_bag2
bag yes yes yes yes
euroc yes yes yes yes
kitti no (no timestamps) yes no (no timestamps)* no (no timestamps)
tum yes yes yes yes
bag2 yes yes yes yes

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
# export a EuRoC groundtruth file to a TUM trajectory
evo_traj euroc data.csv --save_as_tum
# (will be saved as data.tum)

# export TUM trajectories to KITTI format
evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_kitti
# (will be saved as *.kitti)

# export TUM trajectories to ROS bagfile
evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_bag
# (will be saved as <timestamp>.bag with topics traj_1, traj_2 and traj_3)

# and so on...

License

如果您使用此包进行研究,则可以使用带有此存储库链接的脚注: github.com/MichaelGrupp/evo

或者,用 BibTeX 引用:

1
2
3
4
5
6
@misc{grupp2017evo,
title={evo: Python package for the evaluation of odometry and SLAM.},
author={Grupp, Michael},
howpublished={\url{https://github.com/MichaelGrupp/evo}},
year={2017}
}

参考链接


evo工具的安装与使用
http://zeyulong.com/posts/35f6a63b/
作者
龙泽雨
发布于
2024年4月29日
许可协议