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
bagyesyesyes
eurocyesyesyes
kittino(no timestamps)yesno(no timestamps)
tumyesyesyes

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

#将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安装

#需要先安装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使用

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!

命令可选参数:

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

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

evo_rpe tum a.txt b.txt
#参数基本同上3.1

3.3evo_traj

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

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

3.4evo_config

设置evo的一些配置项

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 ),需要利用时间戳进行尺度修正和对齐变换,不同传感器在时间戳和轨迹起终点进行对齐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用docker部署项目

一、docker私有镜像仓库 1、docker私有镜像仓库 库(Repository)是集中存放镜像的地方,又分为公共镜像和私有仓库。 当我们执行docker pull xxx的时候,它实际上是从registry.docker.com这个地址去查找,这就是Docker公…

城市之旅:使用 LLM 和 Elasticsearch 简化地理空间搜索(二)

我们在之前的文章 “城市之旅:使用 LLM 和 Elasticsearch 简化地理空间搜索(一)”,在今天的练习中,我将使用本地部署来做那里面的 Jupyter notebook。 安装 Elasticsearch 及 Kibana 如果你还没有安装好自己的 Elasti…

EitbaseEX香港业务开展,提升用户友好交易体验

在全球范围内备受瞩目的加密货币交易平台Coinbase,宣布正式入驻香港市场,并命名为EitbaseEX。这一战略性扩展举措,旨在为香港提供先进的加密货币交易技术和服务,同时将香港打造为其在亚太地区的重要枢纽。 作为国际金融中心&#…

Nginx 文件下载 限速设置 限制访问频率 下载速率 并发连接数 简单实用教程

1 没有限速之前 2 nginx配置 #增加如下配置 limit_conn_zone $binary_remote_addr zoneaddr:10m; location / {limit_conn addr 1; #按照来源,限制每个IP 的连接数为1limit_rate_after 1000k;不限速下载的数据量limit_rate 100k; #限制最大传输速率root /data/log…

sudo命令的隐患-要注意安全使用!!严格管理!!严格控制

前言 众所周知,sudo命令非常方便,而且有一定的优点。比如不需要知道root密码就可以执行一些root的命令。相比于su 必须知道root密码来说,减少了root密码泄露的风险。 但是sudo也是一把非常锋利的双刃剑,需要加以限制,…

网络安全等级保护相关标准及发展

目录 等保标准 等保定级 发展 等保标准 《网络安全法》第二十一条提出“国家实行网络安全等级保护制度”。 等级保护标准体系: (1)安全等级类标准 主要包括GB/T 22240-2008《信息安全技术 信息系统安全保护等级保护定级指南》 和 各类…

找出缺失和重复的数字 - (LeetCode)

前言 最近工作太忙了,周一到周五,画了5天的原型设计,看着原型设计我都准备要吐的节奏,新项目很多业务不熟悉,去问同事需求,网上找资料学习业务需求,更重要的是还要构思业务流程和界面展示&…

amis源码 onEvent事件动作 和 Action行为按钮解析

Action行为按钮组件 (仅支持click事件) Action行为按钮是针对click点击事件的一些处理。actionType指定action作用类型:ajax、link、url、drawer、dialog、confirm、cancel、prev、next、copy、close amis配置:{ "type&quo…

翻译《The Old New Thing》- What a drag: Dragging a virtual file (IStream edition)

What a drag: Dragging a virtual file (IStream edition) - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080319-00/?p23073 Raymond Chen 2008年03月19日 拖拽虚拟文件(IStream 版本) 上一次,我们看…

python | 类的实现

和实例有关的,通过对象名,打点调用 实例属性,实例方法 stuStudent("XiaoMing",18) print(stu.name) 类属性、静态方法和类方法都是通过类名直接调用 Student.name 静态方法和类方法都不能调用实例属性和实例方法 动态绑定 如果是函…

稳定性问题ANR-input

专栏简介 接上文【Android ANR简介】内容,深入探索input 类型的ANR问题产生原理,至于解决此类ANR的进阶内容会在下篇【稳定性问题ANR-input进阶】中详细介绍。 input ANR简介 Android app的input事件都是有主线程消费的,假设主线程有耗时函数执行,就会产生ANR问题;但是…

深入分析 Android Service (四)

文章目录 深入分析 Android Service (四)1. 使用 Messenger 进行通信2. 详细示例:使用 Messenger 进行通信2.1 创建 MessengerService2.2 在 Activity 中绑定服务并发送消息 3. 使用 AIDL 进行进程间通信3.1 定义 AIDL 接口3.2 实现 AIDL 接口3.3 在客户端绑定 AIDL…

C语言序列化和反序列化--TPL中的API(三)

tpl_map 创建tpl的唯一方法是调用tpl_map()。第一个参数是格式字符串。后面是格式字符串中特定字符所需的参数列表。例如, tpl_node *tn; int i; tn tpl_map( "A(i)", &i );该函数在格式字符串中的项和给定地址的C程序变量之间创建映射。稍后,C变量…

Apache Doris 基础 -- 数据表设计(分区分桶)

Versions: 2.1 本文档主要介绍了Doris的表创建和数据分区,以及表创建过程中可能遇到的问题和解决方案。 1、基本概念 在Doris中,数据以表的形式被逻辑地描述。 1.1 Row & Column 表由行和列组成: 行:表示用户数据的单行;列:用于描述一行数据中的…

自定义对象池BasePooledObjectFactory的使用

项目中用到了apache的对象池来管理文件导出相关资源连接和回收功能,因此花点时间简单了解下对象池相关使用,做点记录。 一. 连接池 频繁的建立和关闭连接,会极大的降低系统的性能,而连接池会在初始化的时候会创建一定数量的连接…

C++ | Leetcode C++题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();int buy1 -prices[0], sell1 0;int buy2 -prices[0], sell2 0;for (int i 1; i < n; i) {buy1 max(buy1, -prices[i]);sell1 max(…

OceanBase v4.2 特性解析:新增三种临时表功能,更多的Oracle语句兼容

特性说明 在Oracle模式下&#xff0c;OceanBase临时表已经实现了基本的create、select、insert、delete、update等功能。为了满足更多客户的需求&#xff0c;OceanBase正在扩展临时表的功能&#xff0c;例如支持merge into和insert all操作。merge into允许用户将源表中的数据…

FPGA高端项目:FPGA解码MIPI视频+图像缩放+视频拼接,基于MIPI CSI-2 RX Subsystem架构实现,提供4套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案本方案在Xilinx Artix7-35T上解码MIPI视频的应用本方案在Xilinx Artix7-100T上解码MIPI视频的应用本方案在Xilinx Kintex7上解码MIPI视频的应用本方案在Xilinx Zynq7000上解码MIPI视频的应用本方案在…

Linux基础命令目录管理002

之前讲述了目录的创建和删除&#xff0c;现在讲一下目录的移动修改。 操作系统&#xff1a; CentOS Stream 9 操作命令&#xff1a; mv 移动&#xff0c;重命名 选项 -v显示移动过程 [rootlocalhost ~]# mkdir 12 [rootlocalhost ~]# ll 总用量 1220 drwxr-xr-x 2 root…

11.1 排序算法

目录 11.1 排序算法 11.1.1 评价维度 11.1.2 理想排序算法 11.1 排序算法 排序算法&#xff08;sorting algorithm&#xff09;用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用&#xff0c;因为有序数据通常能够被更高效地查找、分析和处理。 如图 1…