安装

11.pip ,直接安装最新的稳定发行版;

pip install evo –upgrade –no-binary evo

1.2.源码安装

从github上下载evo工具

git clone https://github.com/MichaelGrupp/evo.git

在evo路径下执行以下命令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple evo –upgrade –no-binary evo

evo常用参数设置命令

1) 数据集转换格式

保存/导出为其他格式:euroc、tum、kitti数据集格式之间的互相转换.

****# euroc数据集 -> tum数据集格式文件(data.tum)

evo_traj euroc data.csv –save_as_tum

*****# tum数据集 -> kitti数据集格式文件(*.kitti)

evo_traj tum traj_1.txt traj_2.txt traj_3.txt –save_as_kitti

*******# tum数据集 -> ROS bag文件格式(.bag)

evo_traj tum traj_1.txt traj_2.txt traj_3.txt –save_as_bag

相互转换图解:

2) evo命令格式

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

– command:指令(evo_traj、evo_ape、evo_rpe)

– bag:数据集名称(euroc、kitti、tum)

– bagfile-path:文件所在路径(参考和估计文件在同一文件夹下)

– reference-topic:真实值

– estimated-topic:估计值

– [options]: 其他参数选项(-a、-s、-as)

3 )其他参数选项-[options]’

– 自动对齐 –align 或者 -a

– 尺度校准 –correct_scale 或者 -s

– 自动对齐且尺度校准 –align –correct_scale 或者 -as

4 )显示轨迹evo_traj

轨迹尺度缩放

单目相机会存在尺度的不确定性,evo_traj 支持使用-s(或 –correct_scale)参数进行Sim(3)上的对齐(旋转、平移与尺度缩放)

******显示单轨迹

evo_traj euroc data.csv -p –plot_mode=xy

evo_traj tum data.tum -p –plot_mode=xy

evo_traj tum groundtruth.txt -p –plot_mode=xy

******显示双轨迹(真值和估计值)

evo_traj tum CameraTrajectory.txt –ref=data.tum -p –plot_mode=xy -as

evo_traj euroc CameraTrajectory.txt –ref=data.csv -p –plot_mode=xy -as

等价于:

evo_traj tum CameraTrajectory.txt –ref=data.tum -p –plot_mode=xy –align –correct_scale

evo_traj euroc CameraTrajectory.txt –ref=data.csv -p –plot_mode=xy –align –correct_scale

5 )绝对位姿误差evo_ape

absolute trajectory error 绝对轨迹误差

位置参数:

ref_file 参考轨迹文件

est_file 估计轨迹文件

可选参数:

-h, –help 显示此帮助信息并退出

–t_max_diff T_MAX_DIFF

数据关联的最大时间戳差异

–t_offset T_OFFSET 数据关联的常量时间戳偏移

算法选项:

-r {full,trans_part,rot_part,angle_deg,angle_rad}, –pose_relation {full,trans_part,rot_part,angle_deg,angle_rad}

APE 所基于的姿势关系

-a, –align 与 Umeyama 的方法对齐(无比例尺)

-s, –correct_scale 使用 Umeyama 的方法进行正确缩放

–n_to_align N_TO_ALIGN

用于梅山对齐的姿势数,

从开始计算(默认:全部)

–align_origin 将轨迹原点对齐到原点

参考轨迹

输出选项:

-p, –plot 显示绘图窗口

–plot_mode {xy,xz,yx,yz,zx,zy,xyz}

绘图投影的轴

–plot_colormap_max PLOT_COLORMAP_MAX

用于颜色图的上限(默认值:

最大误差值)

–plot_colormap_min PLOT_COLORMAP_MIN

用于颜色图的下限(默认:

最小误差值)

–plot_colormap_max_percentile PLOT_COLORMAP_MAX_PERCENTILE

要用作误差分布的百分位数

颜色图的上限(以 % 为单位,覆盖

–plot_colormap_max)

–plot_full_ref 绘制完整的、未同步的参考轨迹

–ros_map_yaml ROS_MAP_YAML

ROS 2D 地图图像 (.pgm/.png) 的 yaml 文件,它将

被卷入情节

–save_plot SAVE_PLOT

保存情节的路径

–serialize_plot SERIALIZE_PLOT

序列化图的路径(实验性)

–save_results SAVE_RESULTS

用于存储结果的 .zip 文件路径

–logfile LOGFILE 本地日志文件路径。

可用性选项:

–no_warnings 不需要用户确认的警告

-v, –verbose 详细输出

–silent 不打印任何输出

–debug 详细输出和附加调试信息

-c 配置, –config 配置

带参数的 .json 文件(优先于命令行

参数)

绝对轨迹误差是估计位姿和真实位姿的直接差值,可以非常直观地反应算法精度和轨迹全局一致性。

需要注意的是,估计位姿和groundtruth通常不在同一坐标系中,因此我们需要先将两者对齐。

单目VO解算过程会产生ambiguities,即尺度问题,不同尺度下的轨迹是不同的但是等效的。因此要先通过相似变换矩阵进行轨迹对齐,计算估计值与groundtruth的distance而非difference。

对于双目SLAM和RGB-D SLAM,尺度统一,因此我们需要通过最小二乘法计算一个从估计位姿到真实位姿的转换矩阵 ,对齐的时候只需要使用刚性变换矩阵。

当然,使用平均值、中位数等来反应ATE亦可,现在很多evaluation工具会将RMSE、Mean、Median都给出。旋转误差可以通过相同的方式计算,目前的一些开源评测工具都提供了对应的选项。

evo_ape tum data.tum CameraTrajectory.txt -va -p –plot_mode=xyz

evo_ape euroc data.csv CameraTrajectory.txt -va -p –plot_mode=xyz

若增加可选参数-p,可以绘制误差相关曲线。

其中-r表示ape所基于的姿态关系:

-v表示verbosemode,详细模式​–align/-a表示采用SE(3)Umeyama对齐,其余可选项如下表所示。​–align--correct_scale/-as尺度对齐​–correct_scale/-s仅对齐尺度​不加-s表示默认尺度对齐参数为1.0,即不进行尺度对齐。​–plot表示画图,–plot_mode选择画图模式,二维图或者三维图,可选参数为[xy,xz,yx,yz,zx,zy,xyz],默认为xyz。​

可通过 evo_ape +数据格式 +–help查看更多参数的含义以及如何使用,例如:

evo_ape euroc --help

6)相对位姿误差evo_rpe

相对位姿误差主要描述的是相隔固定时间差

两帧位姿差的精度(相比真实位姿),相当于直接测量里程计的误差。

我们可以用均方根误差RMSE统计这个误差,得到一个总体值。

除了平移误差,RPE也包含旋转误差,但通常使用平移误差进行评价已经足够,如果需要,旋转角的误差也可以使用相同的方法进行统计。

也有人不用RMSE,直接使用平均值、甚至中位数来描述相对误差情况。

evo_rpe tum data.tum CameraTrajectory.txt -va -p –plot_mode=xyz

evo_rpe euroc data.tum CameraTrajectory.txt -va -p –plot_mode=xyz

其中

-r表示rpe所基于的姿态关系,不添加-r/–pose_relation和可选项,则默认为trans_part。

无单位的full和rot_part的误差指标比较特殊,使用了矩阵的二范数。比较而言,用平移误差单位为m,旋转误差单位可以是度或弧度,更容易理解。

–d/–delta表示相对位姿之间的增量;
–u/–delta_unit表示增量的单位,可选参数为[f, d, r, m],分别表示[frames, deg, rad, meters];
–d/–delta -u/–delta_unit合起来表示衡量局部精度的单位,如每米,每弧度,每百米等。
其中–delta_unit为f时,–delta的参数必须为整形,其余情况下可以为浮点型。–delta 默认为1,–delta_unit默认为f。

–delta1--delta_unitm表示的是每一米比较一次相对真实轨迹的轨迹误差–save_results./ours_stereo.zip是将比较结果保存在./ours_stereo.zip中-v表示verbosemode,详细模式

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

需要注意–all_pairs下不能使用–plot函数。

  • max: 表示最大误差;

  • mean:平均误差;

  • median:误差中位数;

  • min: 最小误差;

  • rmse:均方根误差;

  • sse: 和方差、误差平方和;

  • std: 标准差

7)其他常用命令:

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

{7.1}evo_config 用法——常用配置,如设置字体 曲线颜色、粗细 背景有无网格等基本参数

evo_config show –brief

显示如下内容:

{

“console_logging_format”: “%(message)s”,

“euler_angle_sequence”: “sxyz”,

“global_logfile_enabled”: false,

“plot_axis_marker_scale”: 0.0,

“plot_backend”: “Qt5Agg”,

“plot_export_format”: “pdf”,

“plot_figsize”: [

6,

6

],

“plot_fontfamily”: “sans-serif”,

“plot_fontscale”: 1.0,

“plot_invert_xaxis”: false,

“plot_invert_yaxis”: false,

“plot_linewidth”: 1.5,

“plot_multi_cmap”: “none”,

“plot_reference_alpha”: 0.5,

“plot_reference_color”: “black”,

“plot_reference_linestyle”: “–”,

“plot_seaborn_palette”: “deep6”,

“plot_seaborn_style”: “darkgrid”,

“plot_split”: false,

“plot_statistics”: [

“rmse”,

“median”,

“mean”,

“std”,

“min”,

“max”

],

“plot_texsystem”: “pdflatex”,

“plot_trajectory_alpha”: 0.75,

“plot_trajectory_cmap”: “jet”,

“plot_trajectory_linestyle”: “-”,

“plot_usetex”: false,

“plot_xyz_realistic”: true,

“ros_map_alpha_value”: 1.0,

“ros_map_unknown_cell_value”: 205,

“save_traj_in_zip”: false,

“table_export_data”: “stats”,

“table_export_format”: “csv”,

“table_export_transpose”: true

(7.1画图背景调整成白色网格

evo_config set plot_seaborn_style whitegrid

参数还可以选择以下 darkgrid, whitegrid, dark, white, ticks

(7.2将字体改为衬线型并调为1.5倍大小

evo_config set plot_fontfamily serif plot_fontscale 1.5

(7.3将画图所使用的线型改为 实线

evo_config set plot_reference_linestyle –

虚线则是:

evo_config set plot_reference_linestyle —

(7.4将所画图的图像大小调整为10 9(宽 高)

evo_config set plot_figsize 10 9

(7.5修改线条,其中bright可以替换成deep, muted, bright, pastel, dark, colorblind

evo_config set plot_seaborn_palette pastel

evo_traj tum ORB-SLAM2.txt DS-SLAM.txt –ref=groundtruth.txt -va –plot –plot_mode xy

evo_config set plot_seaborn_palette bright

evo_traj tum ORB-SLAM2.txt DS-SLAM.txt –ref=groundtruth.txt -va –plot –plot_mode xy

(7.6参考轨迹ref的透明度 修改

evo_config set plot_reference_alpha 0.75

(7.7恢复初始设置

evo_config reset

{ 7.2}evo_config 用法——常用配置,如设置字体 曲线颜色、粗细 背景有无网格等基本参数2.evo_config set

利用evo_config set可以设置evo中有关参数的值。下面列举一些常用的参数及含义。

1.plot_export_format表示图片的输出格式,常见的格式有pdf,png等。

命令:evo_config set plot_export_format pdf (将输出图像的存储格式设置为pdf格式。)

2.plot_figsize表示图片的尺寸,第一个数字代表横轴方向的尺寸,第二个数字代表纵轴方向的尺寸。

命令:evo_config set plot_figsize 6 6 (将输出图像横轴方向尺寸设置为6,纵轴方向尺寸设置为6。)

3.plot_fontscale表示输出图像中字体的粗细。

命令:evo_config set plot_fontscale 1.8 (将输出图像中的字体粗细设置为1.8。)

4.plot_linewidth代表作图时线的宽度。

命令:evo_config set plot_linewidth 1.8 (将输出图像的线宽设置为1.8。)

5.plot_reference_color表示输出图像中参考轨迹的颜色。

命令:evo_config set plot_reference_color black (将输出图像中参考轨迹的颜色设置为黑色。)

6.plot_reference_linestyle表示输出图像中参考轨迹的线型。

命令:evo_config set plot_reference_linestyle – (将输出图像中参考轨迹的线型设置为 -。)

7.plot_seaborn_style表示输出图像中背景网格颜色

命令:evo_config set plot_seaborn_style darkgrid (将输出图像中背景网格设置为”darkgrid”。)

8.plot_split表示是否分开显示各个生成的图像,因为有的时候一组数据会同时生成多幅图,可以选择在同一个窗口显示也可以选择在不同的窗口显示。

命令:evo_config set plot_split true (将输出图像分不同的窗口显示。)

9.plot_trajectory_linestyle表示输出图像中估计轨迹的线型。

命令:evo_config set plot_trajectory_linestyle – (将输出图像中估计轨迹的线型设置为-。)

10.table_export_format表示表格数据的输出格式,例如csv,excel,latex,json。

命令:evo_config set table_export_format csv (将输出表格数据的格式设置为 csv。)

11.evo_config reset 将参数还原到默认值。

8)绝对位姿个指标对比max min mean rmse…

首先建立一个新的文件夹将某个数据及下的groundtruth.txt放进去,然后将你要进行对比SLAM系统在此数据及下生成的 CameraTrajectory.txt复制进来并进行重命名 这里选取DynaSLAM DS-SLAM ORB-SLAM2三个系统进行对比

并在此文件下建立results文件保存zip结果。

evo_ape tum groundtruth.txt DS-SLAM.txt -va –plot –plot_mode xz –save_results results/DSSLAM.zip

evo_ape tum groundtruth.txt DynaSLAM.txt -va –plot –plot_mode xz –save_results results/DynaSLAM.zip

evo_ape tum groundtruth.txt ORB-SLAM2.txt -va –plot –plot_mode xz –save_results results/ORB-SLAM2.zip

results文件下有三个压缩文件

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

当然随着evo_config set plot_seaborn_palette bright设置不一样,柱状图颜色也在变

evo其他常用命令

命令

含义

evo pkg –version

查看evo版本

evo pkg –info

查看evo的简要介绍和描述

evo pkg –pyversion

查看python版本

evo pkg –license

查看许可证

evo pkg –location

查看evo安装路径

evo pkg –logfile

查看日志文件路径

evo pkg –open_log

打开日志文件

evo pkg –clear_log

清除日志文件