SLAM和里程计评估工具——evo使用方法全解

2023-05-16

前言

        本帖的主要内容是整理evo的使用方法及各种命令,不含安装步骤及过程,还未安装的请移步其他博主。

        evo目前支持的公开数据集格式有:TUM、KITTI、EuRoC以及ROS bagfile。如果使用的数据集格式为这些中的某一种,那么无须额外的数据格式处理,就可以直接使用evo进行精度相关内容评估。

一、evo_traj 轨迹管理

        可以打开任意多个轨迹,查看统计信息,并且可以统计当前文件中所对应的轨迹长度。

evo_traj tum results.txt groundtruth.txt -v -p --full_check

        [-v]:以详细模式显示;[--full_check]:可以对轨迹进行检查。(详见二、evo_ape中的可选项补充)

evo_traj tum results.txt --ref=groundtruth.txt -va -p --save_plot traj_va_results.pdf

        [-a]:位姿对齐;[-s]:尺度对齐;[--plot_mode=xy]:画图模式为xy二维图。(详见二、evo_ape中的可选项补充)

        补充:转换轨迹格式

evo_traj tum data.csv --save_as_kitti
*–save_as_bag–save_as_kitti–save_as_tum
bagyesyesyes
eurocyesyesyes
kittino(no timestamps)yesno(no timestamps)
tumyesyesyes

二、evo_ape 计算绝对轨迹误差

        APE绝对位姿误差,常被称作绝对轨迹误差,比较估计轨迹和参考轨迹并计算整个轨迹的统计数据,适用于测试轨迹的全局精度和全局一致性。

        1、十四讲中的定义:    

                (1)位姿均方根误差:

                 (2)平移均方根误差:

         说明:假设估计位姿和实际位姿时间戳对齐,总帧数都为n;算法估计位姿 P1 , P2 , … , Pn ∈ SE(3) ;真实位姿 Q1 , Q2 , … , Qn ∈ SE(3)。

        2、实际情况:

        估计位姿和groundtruth通常不在同一坐标系中,因此我们需要先将两者对齐。对于双目SLAMRGB-D SLAM,尺度统一,因此我们需要通过最小二乘法计算一个从估计位姿到真实位姿的转换矩阵S ∈ SE(3);对于单目相机,具有尺度不确定性,我们需要计算一个从估计位姿到真实位姿的相似转换矩阵S ∈ Sim(3)。
        进而,实际上每一帧对应的位姿误差为:

         对应的位姿误差和平移误差变为:

         3、命令:

命令语法:命令 数据集格式 参考轨迹 估计轨迹 [可选项]

数据集格式包括euroc、tum等数据格式;

参考和估计轨迹中填入txt或csv格式文件;

可选项有对齐命令、画图、保存结果等。

        可选项补充:

        (1)-r/–pose_relation可选参数:选择平移还是旋转误差

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

-r/–pose_relation可选参数含义
full表示同时考虑旋转和平移误差得到的ape,无单位(unit-less)
trans_part考虑平移部分得到的ape,单位为m
rot_part考虑旋转部分得到的ape,无单位(unit-less)
angle_deg考虑旋转角得到的ape,单位°(deg)
angle_rad考虑旋转角得到的ape,单位弧度(rad)

        (2)  -v、-a、-s可选项:对齐方式选择(可以任意组合,例如:-va、-vas等)

命令含义
-vverbose mode,以详细模式
-a / –align采用SE(3) Umeyama对齐,只处理平移和旋转
-as / –align --correct_scale采用Sim(3) Umeyama对齐,同时处理平移旋转和尺度
-s / –correct_scale仅对齐尺度

        对齐效果(摘自参考文献):

         (3)绘图、保存文件及帮助可选项:

        示例:使用TUM数据集,计算考虑平移部分误差的ape,进行平移和旋转和尺度对齐,以详细模式显示,保存画图结果为PDF文件并保存计算结果为zip文件。

 evo_ape tum groundtruth.txt results_new.txt -r trans_part -vas --plot --save_plot ape_trans_vas.pdf --save_results ape_trans_vas.zip

 三、evo_rpe计算相对轨迹误差

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

 1、十四讲中的定义:    

                (1)相对轨迹误差:

                (2)只取平移部分(△-固定时间差):

         说明:假设估计位姿和实际位姿时间戳对齐,总帧数都为n;算法估计位姿 P1 , P2 , … , Pn ∈ SE(3) ;真实位姿 Q1 , Q2 , … , Qn ∈ SE(3)。

        2、实际情况:

        每一帧对应的相对位姿误差为:

         相当于直接测量里程计的误差。Δ的选取直接影响RMSE的结果,为了能综合衡量算法表现,可以遍历 Δ 的所有取值如下:

        3、命令:

evo_rpe tum groundtruth.txt results.txt -r trans_part -d 1 -u m -va -p --save_plot rpe_trans_va.pdf --save_results rpe_trans_va.zip

        –d/–delta:表示相对位姿之间的增量;–u/–delta_unit:表示增量的单位,可选参数为[f, d, r, m],分别表示[frames, deg, rad, meters];合起来表示每米、每百米等。–d 默认为1,–u默认为f。

四、evo_res 结果比较

evo_res results1.txt results2.txt -v -p --save_plot comparsion.pdf

五、evo_config 全局设置和配置文件操作

evo_config set plot_seaborn_style whitegrid 将画图背景更改成白色网格
evo_config set plot_fontfamily serif plot_fontscale 1.2 将字体改为衬线型并调为1.2倍大小
evo_config set plot_reference_linestyle - 将画图所使用的线型改为 -
evo_config set plot_figsize 10 9 将所画图的图像大小调整为10 9(宽 高)
​
evo_config reset 将参数还原到默认值
参数含义可选项
plot_export_format输出图像时图像存储格式常用png,pdf等
plot_linewidth作图时线的宽度matplotlib支持的宽度,默认1.5
plot_reference_color图像中参考轨迹的颜色black,red,green等
plot_reference_linestyle参考轨迹的线型matplotlib支持的线型,默认–
plot_seaborn_style图像背景和网格whitegrid,darkgrid,white,dark
plot_split是否分开显示/存储图像false/true
plot_figsize画图的图像大小默认宽高均为6,可使用其他值
table_export_format表格数据输出格式常用 csv,excel,latex,json

        

参考链接:

        1、SLAM精度评定工具EVO使用方法详解_evo slam_wongHome的博客-CSDN博客

        2、一种SLAM精度评定工具——EVO使用方法详解_dcq1609931832的博客-CSDN博客

        3、SLAM和里程计评估工具——evo - 灰信网(软件开发博客聚合)

        4、ORBSLAM数据集、evo评估工具介绍_orbslam evo_Z-way的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SLAM和里程计评估工具——evo使用方法全解 的相关文章

随机推荐

  • Jetson Xavier NX 部署Yolov5

    大部分过程非原创 xff0c 写这篇文章主要是因为设备不同出的问题也各不相同 xff0c 需要到处去找解决方法 xff0c 因此我把配置过程中遇到的全部问题以及解决方法记录在此 注 xff1a 该博客原文来自Jetson nano NX 部
  • Yolov5 更改识别窗口大小

    启动yolov5时 xff0c 会因为像素太大导致占据整个桌面 xff0c 这样非常影响使用和操作 xff0c 我们可以通过opencv中的resize函数来修改识别窗口的像素大小 xff0c 这样操作就方便多了 原代码中 通过修改cv2
  • MCS-51系列单片机指令系统分类

    51系列单片机共有111条指令 xff0c 这些指令的集合称为指令系统 常用的分类为以下几种 xff1a 按位寻址方式 xff1a 1 寄存器寻址 2 直接寻址 3 寄存器间接寻址 4 立即寻址 5 变址寻址 6 相对寻址 7 位寻址 按功
  • ubuntu20.04安装ROS【详细】

    Ubuntu20 04安装ROS与Ubuntu18 04大差不差 xff0c 安装过程基本没出现问题 按以下教程操作即可 一 更换源 xff1a 1 备份源文件 sudo cp etc apt sources list etc apt so
  • Ubuntu 16.04设置开机自启动脚本

    1 创建脚本 sh文件 可以在 home user Documents scripts路径下建立名为auto run test sh的文件 xff1b auto run test sh里面写上具体要做的事 xff0c 例如我这里 xff1a
  • ubuntu 修改默认python版本

    1 查看当前默认版本和存放位置 2 安装python3 8 2 删除原软连接 xff0c 生成新版本软连接 python V 输出 xff1a Python 2 7 17 whereis python or which python 输入
  • C语言 strcat方法的使用方式

    strcat char str1 char str2 将字符串str2拼接到str1的尾部 对于新手来说 xff0c 使用这个方法只要将str1的内存大小给够了 xff0c 这个方法就没有问题 xff0c 当然这个方法在C程序看来是不安全的
  • STM32_串口中断接收数据_空闲中断

    STM32 串口中断接收数据 空闲中断 引言 xff1a 1 串口中断接收数据首先要保证完整性 xff08 设置串口中断优先级 xff09 2 串口中断接收数据要保证实时性 xff08 打开串口空闲中断 空闲时间是2个字节的时间 xff09
  • STM32调试方式JTAG&SWD的区别

    在学习STM32时 xff0c 我们经常会遇到JTAG和SWD的调试方法 xff0c 还涉及到Jlink Ulink Stlink等 xff0c JTAG和SWD是ARM板一种调试模式 后面三种都是实现这种模式的一种工具 xff0c 他们之
  • 大端序、小端序和MSB、LSB的区别和举例

    大端序 小端序和MSB LSB的区别和举例 1 字节序序 不同平台上数据存储方式 xff1a 大端字节序 小端字节序 字节序就是一个多字节数据的低位置 一般是低8位 放置在存储单元的高有效位 高地址 还是 低有效位 低地址 的概念 xff1
  • 将word文件中的文本转成字符串

    将word文件中的文本转成字符串 需要用到apache poi 下面的一些jar包 下面是pom文件 xff0c 因为我也是在网上找的 xff0c 所以可能有多余的jar包 xff1a lt dependency gt lt groupId
  • spring boot线程里bean注入失败

    在多线程处理问题时 xff0c 无法通过 64 Autowired注入bean xff0c 报空指针异常 xff0c 在线程中为了线程安全 xff0c 是防注入的 xff0c 如果要用到这个类 xff0c 只能从bean工厂里拿个实例 sp
  • python生成Excel

    import xlwt import random lonlat 61 wb 61 xlwt Workbook ws 61 wb add sheet point for i in range 1000 lon 61 random unifo
  • python爬虫商品信息,并生成Excel

    刚开始学习爬虫 xff0c 记录一下 我爬了一页的数据 xff0c 想要爬取多页的 xff0c 只需要遍历 xff0c 改变url中最后的数字 xff0c 44是一页显示的条数 xff0c 第二页就是2 44 xff0c 以此类推 url中
  • Qt中的类

    一 xff0e 信号与槽 1 QT元对象系统 QT元对象系统提供三件事情 xff1a 1 QObject类 2 Q OBJECT 宏 xff0c 声明在类私有段中 3 moc编译器 xff1a 为每个Qobject子类对象生成实现元对象特性
  • 解析HTTP请求报文(GET、POST)

    目的 xff1a 一个WEB服务器需要解析客户端 xff08 浏览器 xff09 发来的请求 xff0c 两种常见的请求方式是GET和POST GET的请求格式 xff1a GET请求没有请求体只有请求头GET请求的请求参数放在URL后加上
  • 数字电视的格式(BT.601 BT.709 BT.2020)和接口(BT.656 BT.1120 BT.2077)

    规格和格式接口特性 标清数字电视 xff08 SDTV xff09 BT 601BT 656 高清数字电视 xff08 HDTV xff09 BT 709BT 1120 超高清数字电视 xff08 UHDTV xff09 BT 2020BT
  • Linux下TCP协议客户端和服务器之间的通信

    tcp 传输控制协议 1 TCP 是 种可靠的传输服务 xff08 不会出现传输差错 丢失 重复等各种现象 xff09 2 是 向连接的服务 3 个 tcp 连接只有两个端点 xff0c 是 对 通信 4 是可靠传输 拥塞控制 流量控制 超
  • DSO/LDSO 等直接法相关资料整理

    直接法视觉里程计 SLAM的学习门槛较特征法高 xff0c 我将DSO LDSO 等直接法相关资料尽量按作者分类整理如下 xff0c 毕竟沿着一个人的思路学习跨度不会太大 xff1b 此外 xff0c 将一些涉及的其他知识也一并整理 xff
  • SLAM和里程计评估工具——evo使用方法全解

    前言 本帖的主要内容是整理evo的使用方法及各种命令 xff0c 不含安装步骤及过程 xff0c 还未安装的请移步其他博主 evo目前支持的公开数据集格式有 xff1a TUM KITTI EuRoC以及ROS bagfile 如果使用的数