EVO轨迹评估工具基本使用教程(学习记录)

参考文章链接:

slam轨迹评估性能指标汇总

EVO安装使用教程

各类数据格式

slam精度评定工具

轨迹评估工具使用:evo安装以及学习

EVO学习记录

评估slam输出轨迹精度的工具,自动生成均值、方差、轨迹等信息的图或表。

支持数据集:TUM、KITTI、EuRoC以及ROS bagfile

  • TUM数据集格式:时间、位置、姿态四元数(time,t_x,t_y,t_z,q_x,q_y,q_z,q_w ),每行8个元素,以空格隔开,结尾没有空格,时间戳以秒为单位
  • EuRoC数据集格式:时间、位置、姿态四元数、速度、角速度偏差、加速度偏差(timestamp,p_x,p_y,p_z,q_w,q_x,q_y,q_z,v_x,v_y,v_z,bw_x,bw_y,bw_z,ba_x,ba_y,ba_z),每行17个元素,以逗号隔开,时间戳以纳秒为单位
--save_as_bag --save_as_kitti --save_as_tum
bag yes yes yes
euroc yes yes yes
kitti no(no timestamps) yes no(no timestamps)
tum yes yes yes

上表来自轨迹评估工具使用:evo安装以及学习

bash 复制代码
#将euroc数据集转为tum数据集
evo_traj  euroc   data.csv  --save_as_tum

1.常见性能指标

  • 相对平移误差Relative Translational Error(RTE)
  • 相对旋转误差Relative Rotational Error (RRE)
  • 均方根误差Root-mean-square error(RMSE)
  • 平均绝对误差Mean Absolute Error(MAE)
  • 标准差Standard Deviation(SD),与平均值对比,表现离散程度
  • 绝对轨迹误差Absolute Trajectory Error(ATE),求每个位姿李代数的均方根
  • 相对轨迹误差Relative Pose Error(RPE),计算相确定时间间隔的两帧之间位姿之差

2.EVO安装

bash 复制代码
#需要先安装pip,并更改下载源
sudo apt-get update
sudo apt-get upgrade
sudo apt install python3-pip
sudo gedit ~/.pip/pip.conf
#添加下文内容到pip.conf文件中
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
#安装EVO工具
pip install evo --upgrade --no-binary evo

3.EVO使用

bash 复制代码
evo_ape #用于评估绝对位姿误差
evo_rpe #用于评估相对位姿误差
evo_traj #用来画轨迹、输出轨迹文件、转换数据格式
evo_res #生成比较来自evo_ape或evo_rpe的一个或多个结果文件的工具
evo_fig #实验工具,用于重新打开序列化图(使用-serialize_plot保存)
evo_config #用于evo工具全局设置和配置文件操作

输出结果(指标):

  1. max:最大误差
  2. mean:平均误差
  3. median:误差中位数
  4. min:最小误差
  5. rmse:均方根误差
  6. sse:和方差,即误差平方和
  7. std:标准差

3.1evo_ape

用于评估两条时间戳完全相同下轨迹的绝对位姿误差

evo_ape kitti a.txt b.txt比较KITTI数据集格式的a.txt和b.txt文件中轨迹的绝对误差精度

evo_ape euroc a.csv b.csv比较EuRoC数据集格式的a.csv和b.csv文件中轨迹的绝对误差精度

evo_ape tum a.txt b.txt比较TUM数据集格式的a.txt和b.txt文件中轨迹的绝对误差精度

需要注意两个待比较的数据文件必须格式一致,都为kitti、tum或者euroc!

命令可选参数:

bash 复制代码
evo_ape tum -h #参数介绍,tum可更换未kitti、euroc(下同)

-r 后可选参数;不添加-r --pose_relation和可选项,则默认为trans_part
full 同时考虑旋转和平移误差得到的ape,无单位
trans_part 考虑平移部分得到的ape,单位为m
rot_part 考虑旋转部分得到的ape,无单位(unit-less)
angle_deg 考虑旋转角得到的ape,单位°(deg)
angle_rad 考虑旋转角得到的ape,单位弧度(rad)

--align / -a #采用SE(3) Umeyama对齐,只处理平移和旋转
--align --correct_scale/-as #采用Sim(3) Umeyama对齐,同时处理平移旋转和尺度
--correct_scale/-s #仅对齐尺度

-plot #表示绘图
-plot_mode #绘图模式,二维图或三维图,可选参数为[xy, xz, yx, yz, zx, zy, xyz],默认为xyz
--save_plot #存储绘图,后可加目录
--save_results #存储结果,后可加目录

--delta 100 #每隔100米统计一次误差
--delta_unit m #增量的单位,可选参数为[f, d, r, m],分别表示[frames, deg, rad, meters]

evo_ape tum a.txt b.txt -a -p -s #-a -s 轨迹匹配与尺度修正 -p 绘图

3.2evo_rpe

比较两段相同时间戳下轨迹的相对轨迹误差。实际中两段轨迹在同一时间段下录制,但存在采样频率不同的问题,该工具可针对相同时间戳的数据进行误差计算

bash 复制代码
evo_rpe tum a.txt b.txt
#参数基本同上3.1

3.3evo_traj

用于画轨迹图、表格、转换数据格式等

bash 复制代码
evo_traj tum a.txt -p # -p参数会有绘制结果,否则没有
evo_traj tum --ref=groundtruth.txt CameraTrajectory.txt -p -a #--ref参数指定参考轨迹 -p 绘制结果 -a 轨迹匹配

3.4evo_config

设置evo的一些配置项

bash 复制代码
evo_config show --brief #查看当前配置项
evo_config set A b #设置A参数值为b
evo_config reset #配置项恢复初始化

4.评估自身数据集不同传感器轨迹精度

将不同传感器轨迹数据统一保存为tum数据格式(time,t_x,t_y,t_z,q_x,q_y,q_z,q_w ),需要利用时间戳 进行尺度修正和对齐变换,不同传感器在时间戳和轨迹起终点进行对齐

相关推荐
暂未成功人士!11 小时前
简单了解李群和李代数的相关概念以及典型应用
人工智能·机器人·slam·姿态·李群李代数
MIXLLRED3 天前
Ubuntu 22.04 + ROS2 Humble 上部署 ScaRF‑SLAM指南
ubuntu·slam·ros2·离线建图
大江东去浪淘尽千古风流人物4 天前
【VGGT-Ω】前馈式3D重建的规模化之路:Register Attention、自监督训练与10B参数Scaling Law深度解析
深度学习·计算机视觉·transformer·slam·vio·3d重建
大江东去浪淘尽千古风流人物4 天前
【VGGT】统一3D重建:单网络同时预测相机位姿、深度图、点云与3D轨迹的前馈Transformer架构深度解析
网络·数码相机·3d·transformer·slam·3d重建·cvpr2025
kobesdu7 天前
【ROS2实战笔记-24】ROS2 Launch 实用技巧:条件逻辑与节点动态生成
笔记·ros·slam
大江东去浪淘尽千古风流人物8 天前
【RADIO-ViPE】动态环境下的在线开放词汇语义SLAM:视觉-语言-几何紧耦合BA与自适应鲁棒核深度解析
slam·语义slam·vio·开放词汇·动态场景
大江东去浪淘尽千古风流人物9 天前
【KV-Tracker】Transformer 实时位姿跟踪:KV-Cache 加速多视图几何网络达 27FPS
网络·深度学习·transformer·slam·位姿估计·kv-cache
大江东去浪淘尽千古风流人物9 天前
【ACE-SLAM】场景坐标回归实时神经 SLAM:TriMLP 架构与隐式回环闭合
人工智能·神经网络·数据挖掘·回归·实时·slam·场景坐标回归
元让_vincent9 天前
论文 Review SLAM LiLoc | Lifelong Localization
slam·性能提升·激光slam·multi-session·先验地图
大江东去浪淘尽千古风流人物10 天前
【SharpSLAM】无人机高速飞行下的物体级视觉 SLAM:GAN 去模糊与 3D 重建联合优化
生成对抗网络·3d·无人机·slam·3d重建·deepsdf·去模糊