目录

1.EVO安装

2.数据格式(data formal):TUM/EuRoC/Kitti数据集

3数据格式转换

3.1"把EuRoc的数据格式转化成TUM数据格式"

3.2"TUM数据转换成kitti格式"

3.3"TUM数据转换成bag格式"

4.evo使用

4.1 Plot multiple trajectories

4.2 Run a metric on trajectories

4.2.1 evo_ape

4.2.2 evo_rpe

4.4.3 Process multiple results from a metric

5. 轨迹对齐

参考:


1.EVO安装

源代码地址:https://github.com/MichaelGrupp/evo

注意:安装好依赖!


sudo apt install python-pippip install evo --upgrade --no-binary evoorpip install evo --upgrade --no-binary evo --userpip install numpy --upgrade --user

2.数据格式(data formal):TUM/EuRoC/Kitti数据集

  • 格式转换

3数据格式转换

3.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_w

3.2"TUM数据转换成kitti格式"

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

3.3"TUM数据转换成bag格式"

  • " 把一些文件的数据格式转化成rosbag"
evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_bag

4.evo使用

 evo_traj euroc v203_truth.csv --plot

4.1 Plot multiple trajectories

  • Here, we plot two KITTI pose files and the ground truth using evo_traj:
cd test/dataevo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz

4.2 Run a metric on trajectories

4.2.1 evo_ape

绝对位姿误差,常被用作绝对轨迹误差,比较估计轨迹和参考轨迹并计算整个轨迹的统计数据,适用于测试轨迹的全局一致性。
命令语法:命令 格式 参考轨迹 估计轨迹 [可选项]
其中格式包括euroc、tum等数据格式,可选项有对齐命令、画图、保存结果等。

For example, here we calculate the absolute pose error for two trajectories from ORB-SLAM and S-PTAM using evo_ape (KITTI_00_gt.txt is the reference (ground truth)) and plot and save the individual results to .zip files for evo_res:

  1. mkdir results

  2. evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -r full

  3. -va --plot --plot_mode xz --save_results results/ORB.zip

命令的含义为:计算考虑平移和旋转部分误差的ape,进行平移和旋转对齐,以详细模式显示,保存画图并保存计算结果。
命令运行后得到结果如下图所示

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

不添加-r/–pose_relation和可选项,则默认为trans_part。

-v表示verbose mode,详细模式,-a表示采用SE(3) Umeyama对齐,其余可选项如下表所示。不加-s表示默认尺度对齐参数为1.0,即不进行尺度对齐。

详情:

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

4.2.2 evo_rpe

相对位姿误差不进行绝对位姿的比较,相对位姿误差比较运动(姿态增量)。相对位姿误差可以给出局部精度,例如slam系统每米的平移或者旋转漂移量。

命令语法:命令 格式 参考轨迹 估计轨迹 [可选项]
其中格式包括euroc、tum等数据格式,可选项有对齐命令、画图、保存结果等。
常用命令示例:

 
  1. evo_rpe euroc data.csv V102.txt -r angle_deg --delta 1 --delta_unit m

  2. -va --plot --plot_mode xyz --save_plot ./VIO --save_results ./VIO.zip

命令的含义为 求每米考虑旋转角的rpe,以详细模式显示并画图。
命令运行后得到结果如下图所示

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

不添加-r/–pose_relation和可选项,则默认为trans_part。
–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。
-v --plot --plot_mode xyz --save_results results/VINS.zip --save_plot等同evo_ape中所讲。
当在命令中加上–all_pairs,则计算rpe时使用位置数据中所有的对而不是仅连续对,此时,可以通过-t/–delta_tol控制–all_pairs模式下的相对增量的容差(relative delta tolerance)。需要注意–all_pairs下不能使用–plot函数。
可通过 evo_rpe +数据格式 + --help查看更多参数的含义以及如何使用。例如
evo_rpe euroc --help

4.4.3 Process multiple results from a metric

evo_res can be used to compare multiple result files from the metrics, i.e

  • print infos and statistics (default)
  • plot the results
  • save the statistics in a table

Here, we use the results from above to generate a plot and a table:

evo_ape/evo_rpe中将结果保存为.zip文件后,可以利用evo_res对不同的结果进行比较。

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

evo_res --help可查看可选参数含义。

evo其他常用命令

结果如下所示:

5. 轨迹对齐

当轨迹使用不同的传感器坐标系,或者轨迹之间有旋转平移等变换时,可以使用 "--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
  • evo安装、evo使用方法详细介绍使用教程
  • SLAM数据集(tum/kitti)轨迹对齐与结果评估

SLAM精度测评(绘制比较相机轨迹)- EVO相关推荐

  1. ORB_SLAM2及其他SLAM精度测评

    ORB_SLAM2及其他SLAM精度测评 测试工具:https://svncvpr.in.tum.de/cvpr-ros-pkg/trunk/rgbd_benchmark/rgbd_benchmark ...

  2. SLAM精度测评——EVO进阶

    1. 基本概念 1.1 Umeyama算法 ATE: evo_ape tum state_groundtruth_estimate0/data.tum orb2/CameraTrajectory.tx ...

  3. SLAM精度测评——EVO

    1.install GitHub - MichaelGrupp/evo: Python package for the evaluation of odometry and SLAM 注意:安装好依赖 ...

  4. SLAM精度测评——rpg_trajectory_evaluatio

    1.  install https://github.com/ccxslam/rpg_trajectory_evaluation#install 下载catkin_simple:https://git ...

  5. SLAM精度评估—从二维到三维

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨lovely_yoshino 来源丨古月居 简介 最近在群里划水时,看到很多初学的SLAMer面 ...

  6. 视觉SLAM笔记(2) 相机

    视觉SLAM笔记(2) 相机 1. 相机分类 2. 单目相机 3. 双目相机 4. 深度相机 1. 相机分类 在 SLAM 中,非常强调未知环境 在理论上,没法限制"小萝卜"的使用 ...

  7. 激光slam坐标系和视觉slam坐标系对齐,两个slam系统之间坐标对齐,轨迹对齐,时间戳对齐

    1. 面临的问题 两个独立的SLAM系统中,常常面临一个问题,那就是一个系统上的某一个pose,对应到另一个系统中是在哪里? 紧耦合的SLAM系统,不存在这个问题,比如激光雷达和相机融合的SLAM系统 ...

  8. 视觉SLAM(二):相机与图像

    目录 1. 三维刚体运动 1.1. 问题阐述 1.2. 变换矩阵 标准正交基法 旋转向量法 2. 相机模型 2.1. 针孔模型 2.2. 畸变模型 2.3. 根据GNSS与IMU求像素坐标 从 世界坐 ...

  9. ORB-SLAM2 特征点法SLAM 单目 双目 rgbd相机SLAM 单应/本质矩阵恢复运动 小图大图地图优化

    ORB-SLAM2 ORB特征点法SLAM 支持单目.双目.rgbd相机 安装测试 本文github链接 orbslam2 + imu ORB-SLAM是一个基于特征点的实时单目SLAM系统,在大规模 ...

  10. 深度循环优化器DRO:从视频流估计深度和相机轨迹

    ©作者|朝言 学校|香港科技大学 (HKUST) 研究方向|计算机视觉 我们提出了一个基于神经网络的端对端深度循环优化器,能够实时从视频中计算出视频流中每张图的深度和对应的相机轨迹,效果超越了之前所有 ...

最新文章

  1. 【武书连】2021 中国一流大学名单(30 所)和中国大学综合实力 700 强出炉!
  2. PostSharp的AOP设计在.NET Remoting中的应用
  3. ASP.NET 配置文件的层次和继承关系
  4. sass 插值语句的使用
  5. ALV动态列Demo
  6. 如何处理班级过多的问题
  7. 敏捷软件开发宣言ndash;Manifesto for Agile Software Development
  8. Android 数据库 SQLite
  9. [ES6系列-01]Class:面向对象的“新仇旧恨”
  10. 《监控》这本书让我爱不释手
  11. 实战CSS:小米商城静态实现
  12. [原创]分期还款的名义利率与真实利率
  13. R语言学习-创建空矩阵
  14. 工程实践 | 在 Flutter 中实现一个精准的滑动埋点
  15. 宿舍管理系统(Java毕业设计)
  16. SQL DML操作之增删改查
  17. git配置代理 代理 socks5带用户名密码
  18. 【5年Android从零复盘系列之二十】Android自定义View(15):Matrix详解(图文)【转载】
  19. MSSQL数据库一对多和多对一查询的转换
  20. 使用python来实现零售行业的数据分析 : EDA+TF-IDF+t-SNE+K-Means+LDA(干货)

热门文章

  1. iOS - 数组字典模型根据模型属性key排序
  2. Jmeter集成Jira提交缺陷
  3. js检查身份证号是否正确
  4. ubuntu配置pip3以及scrapy
  5. 大组合数:Lucas定理
  6. 3.1 栈—栈的存储实现和运算实现
  7. 类数组变量定义与初始化
  8. 使用Java语言借助Quartz jar包实现定时器的方法
  9. SqlServer性能检测之Sql语句排查
  10. C++11 线程池的实现(基于muduo)