evo测评工具提供可执行文件和一个小库,用于处理、评估和比较里程计和SLAM算法的轨迹输出。本次主要对该包的功能介绍。
1.TUM数据集格式:每行有8个条目,包含时间戳(以秒为单位)、位置和方向(作为四元数),每个值由空格分隔。例如:
timestamp x y z q_x q_y q_z q_w
2.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
3.Euroc MAV数据格式:此格式为无人机的信息格式,包括IMU的零偏等等。evo提供了脚本将该个数转化为TUM数据集格式。
evo_ape
-绝对位姿误差evo_rpe
-相对位姿误差evo_traj
-分析、绘制或导出一个或多个轨迹的工具evo_res
-比较一个或多个结果文件的工具evo_ape
或evo_rpe
evo_fig
-(实验)重新打开序列化地块的工具(保存于--serialize_plot
)evo_config
-全局设置和配置文件操作工具调用命令--help
查看选项,例如:evo_ape --help
。选项卡-完成命令行参数在UNIX类系统上可用。
在这里,使用evo_traj:
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pI0cfQYh-1591271605928)(images/1.png)]
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results/ORB.zip
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ea0WPUOx-1591271605929)(images/2.png)]
evo_res
可用于比较来自度量的多个结果文件,即:
evo_res results/*.zip -p --save_table results/table.csv
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VpsY4H6S-1591271605931)(images/3.png)]
以上是github上的readme,详细信息见wiki百科:
evo_config
是一个小工具,可用于更改全局设置或生成自定义配置文件。并不是很常用。
evo_traj
是使用多种轨迹来做家务的主要工具,例如:
-a :对齐
-s:尺度对齐
-v:输出详细模式
-p:绘图
–plot_mode=xyz:选择绘图平面
如果你给出一个参考轨迹--ref
,您可以将其他轨迹与Umeyama方法的引用对齐:-a 和-s(只有存在ref时才能用-a和-s)
也有可能只对齐第一个n
轨迹的姿态--n_to_align
,例如--n_to_align 100
.
对于漂移/环路闭包评估来说,一个简单的原点对齐是可用的--align_origin
。这不是基于Umeyama算法。
这是通过搜索基准和其他轨迹之间的最佳匹配时间戳来实现的。然后将所有轨迹简化为最佳匹配时间戳。如果没有找到匹配项,则会引发错误。这一步骤的备选方案如下:
--t_offset
*添加一个恒定的时间戳偏移量(不添加–参考轨道)-缺省值:0.0s--t_max_diff
数据关联的最大时间戳差-缺省值:0.01s所有几何对齐方法(--align
, --correct_scale
)自动完成点配准。您还可以只同步轨迹的时间戳,而不需要任何几何对齐。--sync
.
您也可以通过定制的3D转换来转换轨迹的姿态。为此,你需要一个.json
以这种格式使用平移向量和旋转四元数的文件:
{
"x": 0.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
}
若要从全局框架应用这样的转换,请使用--transform_left
。若要从各自的本地框架转换每个姿态,请使用--transform_right
(这会改变轨迹的形状,如果它包含一个翻译!)。
以下组合是可能的:
--save_as_bag |
--save_as_kitti |
--save_as_tum |
|
---|---|---|---|
bag |
是 | 是 | 是 |
euroc |
是 | 是 | 是 |
kitti |
不(没有时间戳) | 是 | 不(没有时间戳)* |
tum |
是 | 是 | 是 |
*…。但你可以用这个剧本连同Kitti数据集的时间戳文件
导出的Ros包文件将包含
geometry_msgs/PoseStamped
讯息
例子:
# 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 .bag with topics traj_1, traj_2 and traj_3)
# and so on...
相对位姿误差不是直接比较绝对姿态,而是比较运动(“姿态三角”)。这个度量给出了关于局部精度的见解,即漂移。例如,可以评估每米的平移或旋转漂移:
evo_rpe tum reference.txt estimate.txt --pose_relation angle_deg --delta 1 --delta_unit m
有几种设置允许您更改情节的外观。
在命令行应用程序中,查看如下参数--plot
, --plot_mode
更一般的,包范围的设置可以通过evo_config set
(见“配置”一节)。看一看evo_config show
若要查看所有可用设置及其当前值,请执行以下操作。
这是一个示例演练,说明如何在理论上更改绘图设置以生成用于打印的高质量情节(论文、纸张.)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vVb4G9F0-1591271605934)(https://github.com/MichaelGrupp/evo/wiki/images/plot_style_default.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o1zomzFX-1591271605938)(https://github.com/MichaelGrupp/evo/wiki/images/plot_style_changed.png)]
默认的情节设置有一个黑暗的背景。这在屏幕上看起来不错,但不适合打印。的样式参数,可以将背景更改为白色背景的网格。海航有:
evo_config set plot_seaborn_style whitegrid
默认字体并不适合我们论文的其余部分,它使用的是衬线字体。图中文本标签的相对大小也可以增加,以获得更好的可读性。我们可以通过调用:
evo_config set plot_fontfamily serif plot_fontscale 1.2
为了匹配较小的字体,我们还减少了线宽:
evo_config set plot_linewidth 1.0
您还可以更改其他一些内容,例如参考轨迹的行样式:
evo_config set plot_reference_linestyle -
您也可以调整默认的绘图图形大小。例如,宽度为5,高度为4.5:
evo_config set plot_figsize 5 4.5
因为我们用胶乳来写论文,所以我们也想用乳胶来渲染情节的字体:
evo_config set plot_usetex
您可能需要更改plot_texsystem
参数,如果在第一次尝试中不工作,请参见evo_config show
.
**高级:**地块也可以出口(--save_plot
)以PGF格式:evo_config set plot_export_format pgf
.
evo_config reset
通过设置坐标轴标记可以激活plot_axis_marker_scale
为非零值,例如:
evo_config set plot_axis_marker_scale 0.1
您可能需要使用这个比例尺值来调整它以适应您的轨迹的大小。把它设置为0
如果你不再需要它的话。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AnwM7WKX-1591271605940)(https://github.com/MichaelGrupp/evo/raw/master/doc/assets/markers.png)]
您可以启用标记,将参考轨道的姿态与其他轨迹中相应的姿态连接起来。此设置适用于evo_ape
和evo_rpe
,但也是evo_traj
如果指定--ref
参考和其他轨迹要么是同步的,要么是对齐的。
激活:
evo_config set plot_pose_correspondences true
使用这个比例尺值来调整它以适应您的轨迹的大小。把它设置为`0`如果你不再需要它的话。
[外链图片转存中...(img-AnwM7WKX-1591271605940)]
### 姿态对应标记
您可以启用标记,将参考轨道的姿态与其他轨迹中相应的姿态连接起来。此设置适用于`evo_ape`和`evo_rpe`,但也是`evo_traj`如果指定`--ref`参考和其他轨迹要么是同步的,要么是对齐的。
激活:
evo_config set plot_pose_correspondences true