【性能评估工具】—— SLAM性能评估工具evo的安装与常用指令的详细介绍

news2024/9/19 15:12:13

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、evo的安装
    • 1. 直接指令安装
    • 2. 换下载源进行安装
  • 二、evo的使用
    • 1. 常见的数据集格式介绍
    • 3. 数据格式转换
    • 4. evo工具常用命令介绍
    • 5. 指令命令的使用
  • 三、常用指令的使用详解
    • 1. evo_traj的用法
    • 2. evo_ape的用法
    • 3. evo_rpe的用法
    • 4. evo_res的用法
  • 三、修改evo的配置
    • 1. 打印evo原始配置
    • 2. 恢复默认设置
  • 总结


前言

evo是一款用于评估SLAM(Simultaneous Localization and Mapping)算法性能的工具。它提供了一系列评估指标和可视化工具,帮助开发者分析SLAM系统在不同场景下的性能表现。evo支持多种数据格式,包括ROS数据格式,使其可以与ROS中的SLAM算法无缝集成。通过evo,用户可以比较不同SLAM算法的定位精度、地图质量以及鲁棒性等方面的性能,并可视化结果以便更直观地理解和比较不同算法的表现。下面详细介绍evo性能评估工具的安装

一、evo的安装

1. 直接指令安装

终端运行:

pip install evo --upgrade --no-binary evo

注意:如果一直提示下载失败,或者出现下载速度过慢等问题,那是因为pip工具默认的下载地址为国外的服务器,你需要将源地址改为国内,具体操作如下:

2. 换下载源进行安装

常见的国内下载源
清华:

https://pypi.tuna.tsinghua.edu.cn/simple

阿里云:

http://mirrors.aliyun.com/pypi/simple/

中国科技大学:

 https://pypi.mirrors.ustc.edu.cn/simple/

使用方法
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 要安装的包名称
例如

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple evo --upgrade --no-binary evo

输入上述的指令进行安装evo,没有报错,则evo就算安装成功了,此时再打开另一个终端输入evo,然后按Tab键就可以出现如下页面:

在这里插入图片描述

注意:如果还是没有没有出现,重启电脑就行

二、evo的使用

1. 常见的数据集格式介绍

(1) EuRoC数据集

timestamp,px,py,pz,qw,qx,qy,qz,vx,vy,vz,bwx,bwy,bwz,bax,bay,baz

如下图所示:(每行17个元素,逗号隔开,时间以纳秒为单位)
在这里插入图片描述
(2) TUM数据集格式

timestamp tx ty tz qx qy qz qw  

如下图所示:(每行有8个元素,结尾没有空格, 时间以秒为单位)
tx、ty、tz为平移矩阵;qx、qy、qz、qw为四元数记录的旋转矩阵。
在这里插入图片描述(3) KiTTI数据集

r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz

如下图所示:存储变换矩阵的前三行(每行12元素,空格隔开,没有时间戳)
在这里插入图片描述

3. 数据格式转换

(1) euroc数据转换成tum格式

evo_traj euroc data.txt/data.csv --save_as_tum

(2) TUM数据转换成kitti格式

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

(3) 把一些文件的数据格式转化成rosbag

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

(4) 官网的格式转换表
在这里插入图片描述

4. evo工具常用命令介绍

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

5. 指令命令的使用

1. 指令使用的格式

evo的指令 + 轨迹文件的数据格式 + 轨迹文件 + 操作的参数

例如:画出单个轨迹

evo_traj tum a.txt -p

注意:所用到轨迹文件内容的格式(是指文件内容的数据格式,而不是指.txt等这种文件的格式)
如:tum,euroc,kitti等,均要换成自己的数据集的类型。

三、常用指令的使用详解

1. evo_traj的用法

使用evo_traj指令进行绘制轨迹图,后面添加相应添参数-p或者--plot即可看到轨迹的图形
(1) 画出单个轨迹

evo_traj tum a.txt -p

(2) 画两个或者两个以上的轨迹

evo_traj tum MH01_GT.tum CameraTrajectory.txt -p

(3) 两个轨迹匹配到同一个原点

evo_traj tum MH01_GT.tum CameraTrajectory.txt--ref=MH01_GT.tum -p --align_origin    

(4) 进行坐标变换和对齐

evo_traj tum MH01_GT.tum CameraTrajectory.txt --ref=MH01_GT.tum -a -p -s   

(5) 将轨迹投影到二维坐标中

evo_traj tum MH01_GT.tum CameraTrajectory.txt--ref=MH01_GT.tum -a -p -s --plot_mode=xz

(6) 将轨迹在三维坐标中显示

evo_traj tum MH01_GT.tum CameraTrajectory.txt --ref=MH01_GT.tum -a -p -s --plot_mode=xyz

解释:–plot_mode=xz表示轨迹投影到xz轴显示,“xz”根据自己需求也可换成“xy”“yz”
注意:tum为自己的轨迹文件数据格式,通过–ref参数指定参考轨迹,并增加参数-a(或–align)进行对齐(旋转与平移)。此外,单目相机会存在尺度的不确定性,使用-s(或 --correct_scale)参数进行Sim(3)上的对齐(旋转、平移与尺度缩放)

2. evo_ape的用法

作用
评估绝对轨迹误差(ATE):可以反应算法精度和轨迹全局一致性
(1) 查看tum数据集evo_ape命令各种参数

evo_ape tum -h

(2) 评估两条轨迹的绝对位姿误差:

evo_ape tum MH01_GT.tum CameraTrajectory.txt -a -p -s

解释:参数-a、-s、-p即为选择的参数,分别表示进行轨迹的匹配和尺度修正,以及-p表示画图误差的图和两个轨迹的图

3. evo_rpe的用法

作用
评估相对轨迹误差(RPE):用于评估系统的漂移程度。
(1) 查看tum数据集evo_ape命令各种参数的用法

evo_rpe tum -h  

(2) 估两条轨迹的绝对位姿误差

evo_rpe tum MH01_GT.tum CameraTrajectory.txt -a -p -s

解释:tum为自己数据的格式,参数-a、-s、-p即为选择的参数,分别表示进行轨迹的匹配和尺度修正,以及-p表示画图误差的图和两个轨迹的图
注意:在进行评估时,若经过了缩放,在命令行中应将真实轨迹(参考轨迹)放在估计轨迹(计算轨迹)前方,避免在缩放时参考轨迹错误而造成误差被错误缩放.

4. evo_res的用法

evo_res指令作用
用于对比多个ATE,RPE结果,同时绘制多条ATE或RPE曲线
具体操作流程
1 先将单个的ATE或RPE结果保存为zip文件:
保存ape的结果为zip文件:

evo_ape tum data_GT.tum kf_ORB_SLAM2_mono_MH01.txt -a -p -s --save_results filenames.zip

保存ape的结果为zip文件:

evo_rpe tum data_GT.tum kf_ORB_SLAM2_mono_MH01.txt -a -p -s --save_results filenames.zip

其中,tum为自己数据的格式,filenames是要保存的文件名,可任取
2 同时绘制多个ATE或RPE曲线:

evo_res f_ORB_SLAM3_双目.zip f_ORB_SLAM2_双目.zip -p

3 对比并保存结果:
只保存数值:

evo_res f_ORB_SLAM3_双目.zip f_ORB_SLAM2_双目.zip -p --save_table table1.csv

结果以图的形式保存为pdf:

evo_res f_ORB_SLAM3_双目.zip f_ORB_SLAM2_双目.zip -p --save_plot plot1.pdf

其中tum为自己数据的格式table1、plot1为要保存的文件名,可任取

三、修改evo的配置

1. 打印evo原始配置

evo_config show --brief

2. 恢复默认设置

evo_config reset

参考:

总结

以上就是SLAM性能评估工具evo的安装与常用指令的详细介绍,本文先详细介绍了evo的下载安装及遇到的问题,并提供相应的解决方法,最后介绍了evo使用的过程中常用的性能评估指令的用法。如有什么问题,可以评论区留言交流!

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

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

相关文章

科技赋能,智慧粮仓视频综合管理方案助力粮食安全

一、背景需求 随着科技的快速发展,智慧化、智能化管理已成为各行各业的重要发展方向。粮食仓储作为国家粮食安全战略的重要组成部分,其管理的科学性和智能化水平直接关系到粮食的存储安全、品质保障和运营效率。 因此,TSINGSEE青犀提出一套…

Agilent 安捷伦 DSO90804A 高性能示波器

Agilent 安捷伦 DSO90804A 高性能示波器 DSO90804A Infiniium 高性能示波器:8 GHz 8 GHz4个模拟通道高达 1 Gpts 存储器和 40 GSa/s 采样率可以提供更完整的信号迹线捕获50 mV/格时低至 1.15 mVrms 的本底噪声和深入的抖动分析功能可以确保卓越的测量精度硬件加速…

B3636 源代码

快速直达专线 原文 题解没给代码&#xff0c;所以这里给一下 #include<bits/stdc.h> using namespace std; int f[10000007]; int main(){int n;cin>>n;//int cab;f[1]0;for(int i2;i<n5;i){if(i%20)f[i]min(f[i-1]1,f[i/2]1);//是偶数都有可能else f[i]f[i-1…

如何使用简鹿水印助手或 Photoshop 给照片添加文字

在社交媒体中&#xff0c;为照片添加个性化的文字已经成为了一种流行趋势。无论是添加注释、引用名言还是表达情感&#xff0c;文字都能够为图片增添额外的意义和风格。本篇文章将使用“简鹿水印助手”和“Adobe Photoshop”这两种工具给照片添加文字的详细步骤。 使用简鹿水印…

c++信号和槽机制的轻量级实现,sigslot 库介绍及使用

Qt中的信号与槽机制很好用&#xff0c;然而只在Qt环境中。在现代 C 编程中&#xff0c;对象间的通信是一个核心问题。为了解决这个问题&#xff0c;许多库提供了信号和槽&#xff08;Signals and Slots&#xff09;机制。今天推荐分享一个轻量级的实现&#xff1a;sigslot 库。…

bootstrap-datetimepicker设置时分

bootstrap-datetimepicker设置时分 需求背景时分年月日 需求背景 在日常工作中遇到一个业务场景&#xff0c;需要时间控件来选择时分&#xff0c;但是不需要年月日的成分&#xff0c;实现之后的效果如图 那么下面就开始查找相关的时间控件插件&#xff0c;这里示例图中用到的…

9.11和9.9哪个大?

没问题 文心一言 通义千问

make2s2o:自动编译汇编

模板Makefile&#xff0c;编译多个C/C模块成平台相关的汇编码与目标码。

Linux先行一步

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

十、操作符详解

目录 1、操作符分类 2、二进制转换 2.1二进制转十进制 2.1.1、十进制转二进制 2.2、二进制转八进制和十六进制 2.2.1、二进制转八进制 2.2.2、二进制转十六进制 3、原码、反码、补码 4、移位操作符&#xff08;移动的是二进制位&#xff09; 4.1、左移操作符 4.2、右…

vue3中provide 和 inject 用法#Vue3中解决局部刷新问题

vue3中provide 和 inject 用法#Vue3中解决局部刷新问题 在父子组件传递数据时&#xff0c;通常使用的是 props 和 emit&#xff0c;父传子时&#xff0c;使用的是 props&#xff0c;如果是父组件传孙组件时&#xff0c;就需要先传给子组件&#xff0c;子组件再传给孙组件&…

前端如何支持i18n?

何为i18n&#xff1f; 系统支持多语言的功能称之为国际化&#xff0c;英文为 internationalization 一共18个字母&#xff0c;简称i18n。随机近些年国内市场饱和&#xff0c;各厂商纷纷出海&#xff0c;i18n成了必要的能力。 如何做&#xff1f; 简单介绍下思路&#xff0c;就…

C语言两数相除(要求只能使用加法和减法)求商和余数

思路分析&#xff1a;举个例子如 8/3 2余2 8-35 5-32 减了2次 最后一次结果为2 9/33 9-36 6-33 3-30 减了3次 最后一次为0 10/33余1 10-37 7-34 4-31 减了3次 最后一次为1 所以可以得出规律为…

huawei USG6001v1学习---防火墙相关知识(2)

目录 1.安全策略 2.防火墙的状态检测和会话表技术 3.FTP 4.用户认证 5.认证策略 1.安全策略 传统包过滤技术 --- 其本质就是ACL访问控制列表&#xff0c;根据数据包的特征进行过滤&#xff0c;对比规则&#xff0c; 执行对应的动作&#xff1b; 这里数据包的特征 --- …

Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库

什么是 Prisma? Prisma 是一个开源的下一代 ORM。它包含了以下部分&#xff1a; Prisma Client: 自动生成、类型安全的查询构建器&#xff0c;用于 Node.js 和 TypeScriptPrisma Migrate: 数据迁移系统Prisma Studio: 查询和编辑数据库中数据的图形化界面 Prisma 客户端可以…

Java面试(持续更新)

Redis使用场景 缓存穿透 当有该数据的时候&#xff0c;redis中的数据已经是原来数据的null值了&#xff0c;可能会出现不一致的问题。 缓存击穿 跟钱相关的强一致用互斥锁。 用户高体验用逻辑过期。 缓存雪崩 ttl随机值 mysql于redis保持数据同步 Redis持久化问题 RDB AOF R…

复习知识点java

目录 1.题目分析&#xff1a;2.思考题3.题目&#xff1a;4.题目&#xff1a;求X的反码和补码计算反码计算补码 计算2乘以8的结果实现两个整数变量的交换异或运算符&#xff08;^&#xff09;的特点 1.题目 byte b13,b24,b; bb1b2; b34; 哪句是编译失败的呢&#xff1f;为什么呢…

【人工智能】机器学习 -- 决策树(乳腺肿瘤数)

目录 一、使用Python开发工具&#xff0c;运行对iris数据进行分类的例子程序dtree.py&#xff0c;熟悉sklearn机器实习开源库。 二、登录https://archive-beta.ics.uci.edu/ 三、使用sklearn机器学习开源库&#xff0c;使用决策树对breast-cancer-wisconsin.data进行分类。 …

系统架构师考点--统一建模语言UML

大家好。今天我来总结一下面向对象的第二个考点–统一建模语言UML。 UML(统一建模语言)是一种可视化的建模语言&#xff0c;而非程序设计语言&#xff0c;支持从需求分析开始的软件开发的全过程。UML的结构包括构造块、规则和公共机制三个部分。其中考点主要集中在构造块部分&…

【深度学习入门篇 ⑩】Seq2Seq模型:语言翻译

【&#x1f34a;易编橙&#xff1a;一个帮助编程小伙伴少走弯路的终身成长社群&#x1f34a;】 大家好&#xff0c;我是小森( &#xfe61;ˆoˆ&#xfe61; ) &#xff01; 易编橙终身成长社群创始团队嘉宾&#xff0c;橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…