SLAM 轨迹评估工具EVO


我使用的环境为ubunut1604+ROS(Kinect)版本,环境是Python2的

1 EVO环境安装

1.1 二进制安装

pip install evo --upgrade --no-binary evo

1.2 源码安装

推荐使用源代码安装方式。,首先安装依赖项:

sudo pip install --upgrade pip
sudo pip install --user --upgrade
 
sudo apt-get install libfreetype6-dev gfortran
pip install matplotlib
pip install scipy

安装evo:

git clone -b python2  https://github.com/MichaelGrupp/evo.git
cd evo
pip install --editable . --upgrade --no-binary evo

出现以下情况则表示安装成功了
在这里插入图片描述

2 使用方法

EVO提供了绝对误差和相对误差评估命令和图形分析工具(暂且这样称呼它):
evo_ape - absolute pose error (绝对误差)
evo_rpe - relative pose error (相对误差)

Tools:
evo_traj - tool for analyzing, plotting or exporting one or more trajectories(用于分析一个或者多个曲线)
evo_res - tool for comparing one or multiple result files from evo_ape or evo_rpe
evo_fig - (experimental) tool for re-opening serialized plots (saved with --serialize_plot)
evo_config - tool for global settings and config file manipulation

这里需要注意一下 EUROC数据、TUM数据集、KITTI数据集使用的四元数顺序是不一样的,因此在使用命令的时候后续需要加参数予以区分,我们在自己保存算法输出的轨迹文件的时候应当注意这一点。
在evo的源码中 evo/test/data 目录下面有用于测试的数据集

2.1 TUM数据集上使用

TUM数据格式为:timestamp tx ty tz qx qy qz qw (每行有8个元素,结尾没有空格, 时间戳以秒为单位,精确到小数点后9位)

2.1.1 计算轨迹的绝对误差(evo_ape)

评估算法输出的曲线和真实值之间的绝对误差(absolute pose error)

mkdir results
evo_ape tum fr2_desk_groundtruth.txt  fr2_desk_ORB.txt -va --plot --plot_mode xz --save_results results/ORB_fr2_desk.zip

执行命令以后,在终端中打印出RMSE等误差值
在这里插入图片描述
若出现错误: [ERROR] evo module evo.main_ape crashed - no logfile written (disabled)
则是由于matplotlib 的问题,需要升级一下 matplotlib

pip install matplotlib --upgrade

2.1.2 绘制多条曲线(evo_traj)

在一张图中绘制两个算法的输出曲线(rgbdslam-v2 和 orb-slam),其中 --ref的参数为指定的真是轨迹值。

evo_traj tum freiburg1_xyz-ORB_kf_mono.txt freiburg1_xyz-rgbdslam.txt  --ref=freiburg1_xyz-groundtruth.txt -va --plot --plot_mode xy

在图片的界面中可以修改曲线的颜色等参数。
在这里插入图片描述
注意:多条曲线对齐的时候需要加上参数 -a

2.1.3 分析多条曲线(evo_res)

假设现在我使用2.1.1中命令生成了在fr1_xyz 和 fr2_desk两个序列上的Zip文件(这两个zip文件都在result目录下面)。此时我们使用 evo_res 命令分析算法在这两个序列上的性能

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

这表示分析 results 目录下面所有的zip文件。
在这里插入图片描述

2.3 KITTI数据集上使用

KITTI数据集格式: r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz 存储变换矩阵的前三行 (每行12元素,空格隔开) 无时间戳
在这里插入图片描述

2.2.1 计算轨迹的绝对误差

这里会生成一个名为xxx.zi压缩文件,这个在绘制多条曲线会用到。

mkdir results
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results/KITTI_00_ORB.zip

在这里插入图片描述

2.2.2 绘制多条曲线

将待绘制的曲线文件放置于同一个文件夹test中,

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

其中,KITTI_00_ORB.txt 表示第1个算法在序列上运行的文件,KITTI_00_SPTAM.txt* 表示第2个算法在序列上运行的文件,***–ref=KITTI_00_gt.txt*** 表示指定真实的groundtruth轨迹文件,***-p --plot_mode=xz*** 则命令参数,在XOZ平面绘制轨迹。
在这里插入图片描述
注意: 多条曲线对齐的时候需要加上参数 -a

2.2.3 分析多条曲线

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

在这里插入图片描述

2.3 EUROC数据集上使用

EUROC数据格式为:timestamp,px,py,pz,qw,qx,qy,qz,vx,vy,vz,bwx,bwy,bwz,bax,bay,baz (每行17个元素,逗号隔开,时间以纳秒为单位,无小数)*
在这里插入图片描述

2.3.1 计算轨迹的绝对误差

评估算法输出的曲线和真实值之间的绝对误差(absolute pose error)

evo_ape euroc V102_groundtruth.csv V102.txt -va --plot --plot_mode xy --save_results results/EUROC.zip

在这里插入图片描述
其余两个命令与前面的操作一样,只需要将命令中的 eurockitti 替换成 tum 即可。

3 修改EVO 绘图配置

这部分参考博客[4]官方教程[5],以及一个翻译的中文教程[6]

1调整字体大小

evo_config set plot_fontfamily serif plot_fontscale 1.5

2 调整图像大小

evo_config set plot_figsize 8 6

3 调整默认线宽度

evo_config set plot_linewidth 3

4 调整ref参考轨迹透明程度
默认在绘制groundtruth轨迹的时候会有点淡,这可以调整一下透明度

evo_config set plot_reference_alpha 0.75

5 修改背景的颜色

evo_config set plot_seaborn_style whitegrid 

这是修改背景,其中whitegrid可以替换成darkgrid, whitegrid, dark, white, ticks,deep6.这里我还是使用的默认的whitegrid

6.修改线条颜色

evo_config set plot_seaborn_palette bright

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

参考资料

[1] 官方教程:https://github.com/MichaelGrupp/evo
[2] https://blog.csdn.net/A_L_A_N/article/details/88708979
[3] https://blog.csdn.net/qq_37568167/article/details/104961523
[4] https://zhuanlan.zhihu.com/p/88223106
[5] http://wiki.ros.org/map_server#Map_format
[6] https://blog.csdn.net/hhaowang/article/details/105226136

如果文章对你有所帮助,请大家帮忙点个赞。O(∩_∩)O

欢迎大家在评论区交流讨论(cenruping@vip.qq.com)

SLAM精度评估中的EVO是指使用EVO工具评估SLAM系统的轨迹误差。EVO是一个开源的工具,用于评估SLAM系统的性能。它提供了一系列命令和功能,可以计算和可视化SLAM系统的轨迹误差。 在EVO中,有几个常用的命令可以用来评估SLAM系统的轨迹误差。其中,evo_traj命令用于评估轨迹误差,可以使用手写的ATE(绝对位姿误差)和RPE(相对位姿误差)来比较SLAM系统的性能。\[1\] 相对位姿误差主要用于比较运动(姿态增量),而不是进行绝对位姿的比较。相对位姿误差可以给出局部精度,例如SLAM系统每米的平移或旋转漂移量。可以使用evo_rpe命令来计算相对位姿误差,并通过设置参数来进行可视化和保存结果。\[2\] 另外,evo_ape命令可以用于计算ATE(绝对位姿误差),并提供了可视化和保存结果的功能。可以使用该命令来评估SLAM系统在KITTI数据集上的性能。\[3\] 总之,EVO是一个用于评估SLAM系统性能的工具,可以通过计算和可视化轨迹误差来评估SLAM系统的精度。可以使用evo_traj、evo_rpe和evo_ape等命令来进行评估和分析。 #### 引用[.reference_title] - *1* *2* [SLAM精度测评——EVO进阶](https://blog.csdn.net/Darlingqiang/article/details/123534388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ros中SLAMEVO、APE测评——SLAM精度测评(一)](https://blog.csdn.net/Yangy_Jiaojiao/article/details/124419966)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值