RoSVEP(ros中SLAM的EVO、APE测评——SLAM精度测评(一))
用于处理 、评估和比较里程计和SLAM算法的轨迹输出 。
evo是一款用于视觉里程计和slam问题的轨迹评估工具 。核心功能是能够绘制相机的轨迹 ,或评估估计轨迹与真值的误差 。支持多种数据集的轨迹格式(TUM 、KITTI 、EuRoC MAV 、ROS的bag) ,同时支持这些数据格式之间进行相互转换 。在此仅对其基本功能做简要介绍 。
evo工具github地址:Home · MichaelGrupp/evo Wiki · GitHub
0 安装
安装方式极其简单 ,采用pip安装:
pip install evo --upgrade --no-binary evo或者通过github下载源码后(https://github.com/MichaelGrupp/evo) ,使用源码安装:
pip install --editable . --upgrade --no-binary evo
安装时会自动安装相关依赖项 。
入门
① 基础指令 evo绘制轨迹的指令为:evo_traj ,后跟必要参数有:数据的格式(tum/kitti/bag/euroc等)+ 轨迹文件 。轨迹文件可以有多个 ,例如:
evo_traj tum traj1.txt traj2.txt这个指令只是显示轨迹的基本信息 ,若要绘制轨迹 ,则增加可选参数 -p 或 --plot
evo_traj tum traj1.txt –p② 轨迹对齐
我们时常需要将估计轨迹与真实轨迹同时绘制 ,可采用指令:
evo_traj tum realTraj.txt estTraj.txt -p存储时轨迹多为相对位置变化 ,所以绘制出的轨迹在初始位置上存在一定的位置和角度偏移 。
这时我们采用对齐指令将两条轨迹进行对齐 。为此我们需要通过--ref参数指定参考轨迹 ,并增加参数-a(或--align)进行对齐(旋转与平移)
evo_traj tum estTraj.txt --ref realTraj.txt -p -a③ 轨迹尺度缩放
单目相机会存在尺度的不确定性 ,evo_traj 支持使用-s(或 --correct_scale)参数进行Sim(3)上的对齐(旋转 、平移与尺度缩放)
可以在命令行通过-h参数查看当前evo指令的参数及相关说明 。例如:
evo_traj tum –h
1 精度测评
1.1 ape与rpe
evo_ape 绝对位姿误差(absolute pose error),用于整体评估整条轨迹的全局一致性;
evo_rpe 相对位姿误差(relativeposeerror) ,用于评价轨迹局部的准确性 。
1.2 evo_traj的可选参数
轨迹对齐-a与尺度缩放-s,若增加可选参数-p ,可以绘制误差相关曲线:
evo_ape tum realTraj.txt estTraj.txt -a –s -p注意:在进行评估时,若经过了缩放 ,在命令行中应将真实轨迹(参考轨迹)放在估计轨迹(计算轨迹)前方 ,避免在缩放时参考轨迹错误而造成误差被错误缩放 。
1.3 格式互相转换
example1 EuRoC→TUM ,输出为data.tum
evo_traj euroc data.csv --save_as_tumexample1 EuRoC→kitti ,输出为data.kitti
evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_kitti2 轨迹绘图工具
evo_traj 用于分析 、绘制或导出一个或多个轨迹的工具
evo_res 用于比较来自evo_ape或evo_rpe的一个或多个结果文件的工具
evo_fig (实验性)用于重新打开序列化绘图的工具(与--serialize_plot一起保存)
evo_config 用于全局设置和配置文件操作的工具
使用--help调用命令以查看选项 ,例如evo_ape --help。Tab命令行参数的完成在类UNIX系统上可用 。
3 使用例程
3.1 evo_traj 绘制多条轨迹
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz3.2 evo_ape 在轨迹上运行测评
例如 ,在这里 ,我们使用evo_ape(KITTI_00_gt.txt是参考(地面真相))计算ORB-SLAM和S-PTAM的两条轨迹的绝对姿态误差 ,并绘制并保存单个结果 。evo_res的压缩文件:
First trajectory (ORB Stereo):
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results/ORB.zipSecond trajectory (S-PTAM):
evo_ape kitti KITTI_00_gt.txt KITTI_00_SPTAM.txt -va --plot --plot_mode xz --save_results results/SPTAM.zip3.3 evo_res 从一个度量中处理多个结果
evo_res可用于比较指标中的多个结果文件 ,即:
打印信息和统计信息(默认)打印结果并将统计信息保存在表格中。在这里 ,我们使用上面的结果生成一个图和一个表:
evo_res results/*.zip -p --save_table results/table.csv4 应用
4.1 "把EuRoc的数据格式转化成TUM数据格式"
evo_traj euroc data.csv --save_as_tum将生成的 KeyFrameNavStateTrajectory.txt 文件 ,格式如下 。总共17位 (timestamp;position3;q4;v3;bw3;ba3)
转化成符合TUM 形式的轨迹文件格式:8位
timestamp x y z q_x q_y q_z q_w4.2 "TUM数据转换成kitti格式"
evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_kitti4.3 "TUM数据转换成bag格式"
" 把一些文件的数据格式转化成rosbag" evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_bag4.4. 轨迹对齐
当轨迹使用不同的传感器坐标系 ,或者轨迹之间有旋转平移等变换时,可以使用 "--align" 参数进行轨迹对齐 , 使用 "--correct_scale"进行轨迹放缩 。一个例子 ,如下面的命令所示 。
注意:
这里对比的轨迹,应该具有相同数量的位姿(相同数量的行) ,当然也应该是相同数量的列(位姿的表示方法相同) 同时使用align参数 ,应该指定reference(即指定"--ref"参数) evo_traj tum KeyFrameTrajectory.txt --ref=KITTI_02_gt.txt -p --plot_mode=xz --correct_scale --align参考文献
https://github.com/MichaelGrupp/evo/wiki
GitHub - MichaelGrupp/evo: Python package for the evaluation of odometry and SLAM
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!