当前位置: 首页 > news >正文

EVO——视觉里程计/SLAM轨迹评估工具

EVO——SLAM轨迹精度评估软件

EVO简介

evo是一款用于视觉里程计VIO和slam轨迹评估 Python 包(Linux / macOS / Windows / ROS)。能够绘制轨迹评估轨迹与真值的误差。支持多种数据集的轨迹格式(TUM、KITTI、EuRoC的Mav、ROSbag),同时支持这些数据格式之间进行相互转换。
Github网址:https://github.com/MichaelGrupp/evo

EVO支持的文件格式:

TUM 的轨迹文件

KITTI 的pose文件

EuRoC 的MAV(.csv groundtruth 和 TUM 轨迹文件)

ROSbag 包文件

集中常用的公开数据集的文件格式后面再写,大家个参考其他的博客!

安装

我用的是Ubuntu16.04系统,系统默认的是python2.7
EVO支持 Python 3.6+。最后一个支持 Python 2.7 的 EVO版本是 1.12.0。如果你想使用 ROS bagfile 接口,首先检查你的 ROS 安装使用的是哪个 Python 版本并进行相应的安装。版本不兼容会导致很大的问题!

EVO主要由两种安装方式

1.pip安装

参考其他博客

1.源码安装

参考其他博客

使用

evo工具主要有如下六个常用命令:

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

-p 表示绘图;
--plot_mode=xyz - 表示绘图模式为xyz三维;
--save_results - 表示保存结果,后面为文件保存路径及文件名。

TUM数据的评估方法

Euroc Bag文件的评估方法

1.评估绝对轨迹误差APE

evo_ape euroc  data.csv b.csv

euroc 是数据类型标识,标识后面的两个文件都是euroc格式的数据;
第一个文件 data.csv 表示地面轨迹真值groundtrue数据;
第二个文件 b.csv 表示某个SLAM代码计算的结果;

不同数据源的绘图方法相同,命令略有差异

KITTI数据的评估方法

0.绘制轨迹

evo_traj tum abc.txt -p

abc.txt 是计算出来的结果;

在这里插入图片描述

1.评估绝对轨迹误差APE

 evo_ape kitti a.txt b.txt

kitti 是数据类型标识,标识后面的两个文件都是kitti格式的数据;
第一个文件 a.txt 表示地面轨迹真值groundtrue数据;
第二个文件 b.txt 表示某个SLAM代码计算的结果;

2.相对轨迹误差RPE

evo_rpe tum vio_GPS_global.txt kitti_10_gt.txt -p --plot_mode=xyz -a -s -v --save_results /home/lee/output/rpe.zip

tum 是数据类型标识,标识后面的两个文件都是kitti格式的数据;
第一个文件 vio_GPS_global.txt 表示SLAM软件计算的结果(此处为VINS);
第二个文件 kitti_10_gt.txt 表示kitti数据集10 的地面真实轨迹数据;

相对轨迹误差
轨迹图

###VINS计算结果转为tum格式
由于VINS输出结果并不能直接使用EVO读取,还需要进行格式转换!可参考博文:

待续!!!

http://www.lryc.cn/news/58742.html

相关文章:

  • TCP为什么要三次握手,而不是两次或四次?
  • git 命令:工作日常使用
  • Http和Https
  • 【计算机网络复习】第三章 传输层 2
  • 你真的会自动化测试?自动化测试技术选型抉择
  • 【id:31】【20分】A. Point(类与构造)
  • ASM字节码处理工具原理及实践(二)
  • Golang每日一练(leetDay0030)
  • QT5.15.2 在线安装下载速度慢的解决办法
  • Cadence Allegro 导出Waived Design Rules Check Report报告详解
  • Java阶段一Day19
  • radmin远程控制软件怎么样,有没有替代品
  • Java反射面试总结(一)
  • 【论文阅读】3D-LaneNet
  • Kafka的概念|架构|搭建|查看命令
  • 大数据项目实战之数据仓库:电商数据仓库系统——第5章 数据仓库设计
  • OpenHarmony社区运营报告(2023年3月)
  • 杰林码图像增强算法——超分辨率、图像放大、轮廓和色彩强化算法(二)
  • 在three.js中废置对象
  • Java中的String类真的不可变吗?
  • 电脑重装了系统开不了机怎么办?
  • SPOJ-NSUBSTR - Substrings(SAM求所有长度子串的最大出现次数)
  • Mariadb10.5基于同服务器多实例主从配置
  • linux 修改主机名称
  • 学校的地下网站(学校的地下网站1080P高清)
  • 勒索病毒是什么?如何防勒索病毒
  • SpringBoot+VUE+Axios 【链接超时】 后端正常返回结果,前端却出现错误无法接收数据
  • 【状态估计】基于增强数值稳定性的无迹卡尔曼滤波多机电力系统动态状态估计(Matlab代码实现)
  • 快速排序的简单理解
  • 短视频多平台发布软件功能详解