首页 > 其他分享 >SLAM 精度评估

SLAM 精度评估

时间:2024-07-06 17:26:58浏览次数:11  
标签:plot 轨迹 evo 命令 SLAM 精度 txt 评估 误差

SLAM 精度的评估有两个最重要的指标,即绝对轨迹误差(ATE)和相对位姿误差(RPE)的 均方根误差(RMSE): 绝对轨迹误差:直接计算相机位姿的真实值与 SLAM 系统的估计值之间的差值,首先将真实 值与估计值的时间戳对齐,然后计算每对位姿之间的差值,适合于评估 SLAM 系统的性能。 相对位姿误差:用于计算两个相同时间戳上相机位姿的真实值与 SLAM 算法的估计值之间每 隔一段时间位姿变化量之间的差值,也可以理解为位姿真实值与与估计值的实时比较。该标 准适合于估计系统的漂移。 端到端误差(回环误差):一段存在回环的轨迹里,SLAM 算法估算的轨迹起点与终点之间 的距离差值。 二 评估工具 evo是一款用于视觉里程计和 slam 问题的轨迹评估工具。核心功能是能够绘制相机的轨迹, 或评估估计轨迹与真值的误差。支持多种数据集的轨迹格式(TUM、KITTI、EuRoC MAV、 ROS 的 bag),同时支持这些数据格式之间进行相互转换。在此仅对其基本功能做简要介绍。 1.evo 安装方法 该工具目前被托管在 github 上了,其项目地址为 https://github.com/MichaelGrupp/evo。 作者提供了两种安装方法。推荐使用 pip 工具进行安装,只需要一行代码即可,将如下代码 复制到你的终端中运行 pip install evo --upgrade --no-binary evo 2.evo 使用方法 evo 工具主要有如下六个命令: evo_ape - 用于评估绝对轨迹误差; evo_rpe- 用于评估相对位姿误差; 46 cvlife.net evo_traj - 这个主要是用来画轨迹、输出轨迹文件、转换数据格式等功能; evo_config - 这个主要用于 evo 工具全局设置和配置文件操作; evo_res- 比较来自 evo_ape 或 evo_rpe 生成的一个或多个结果文件的工具; evo_fig - 用于重新打开序列化图(使用–serialize_plot 保存); 2.1 evo_ape 用法 该命令用于评估两条轨迹的绝对位姿误差,最简单的使用方法为: evo_ape kitti a.txt b.txt 解释:如上命令的意思是,比较 kitti 数据集格式的 a.txt 和 b.txt 文件的绝对误差精度。如果 你要比较的数据集格式为 euroc,那么此时可以使用如下命令: evo_ape euroc a.csv b.csv evo 共支持 kitti、tum、euroc 这三个公开数据集格式。 需要注意两个待比较的数据文件必须格式一致,都为 kitti、tum 或者 euroc 当你使用上面的命令之后,会在你的终端中产生如下类型的结果: 其中: max:表示最大误差; mean:平均误差; median:误差中位数; min:最小误差; rmse:均方根误差; sse:和方差、误差平方和; std:标准差。 evo_ape 命令后面可以添加的参数有很多,使用如下命令查看参数解析: evo_ape kitti -h 同样的是你还可以使用: evo_ape tum -h 下面示范一个常用的用法,当我们获得单目 SLAM 生成的轨迹文件时,此时我们需要和真实 轨迹进行对比,但是我们知道单目 SLAM 是没有尺度的,所以两个轨迹一定不会一样大,所 以我们需要对轨迹进行 sim(3)相似变换,那么 evo 就会自动的对轨迹的位移、旋转、尺度进 行对齐,完成这个任务的代码如下: evo_ape tum data.tum CameraTrajectory.txt -aps 解释:参数-a、-s、-p 即为选择的参数,分别表示进行轨迹的对齐和尺度修正,以及-p 表 示画图误差的图和两个轨迹的图。 2.2 evo_rpe 用法 该命令用于比较两个轨迹之间的相对轨迹误差,也就是两个时间戳相同时刻的轨迹轨迹误 47 cvlife.net 差,更具体来说,两组轨迹持续时间相同,但是采样频率不同,那么之间就会有一些少量的 相同时间戳,那么这些相同的时间戳就可以进行一对一比较误差。同样的这些误差也会有平 均误差、最大、最小误差等等结果。命令使用方法如下: evo_rpe xxx a.txt b.txt evo_rpe 命令依然可以添加一些可选参数项,你同样可以使用如下命令查看可选参数的具体 介绍和用法: evo_rpe xxx -h 解释:其中 xxx 为 tum、kitti、euroc、rosbag 中的一种 2.3 evo_traj 用法 该命令 evo_traj 命令十分有用,它主要用于画轨迹图、表格,转换数据格式等等操作。 下面我们来看一个简单的用法: evo_traj tum a.txt 输出为: 该命令如果不添加任何参数项,那么就输出轨迹的相关信息。 我们只要简单的添加一个参数-p 或者--plot 即可看到轨迹的图形,命令如下: evo_traj tum a.txt -p 效果如下: 进一步当我们想要画两个或者两个以上的轨迹时: 48 cvlife.net evo_traj tum a.txt b.txt c.txt -p 如果我们想要两个轨迹匹配到同一个原点那么可以使用参数如下: evo_traj tum a.txt b.txt c.txt -p --align_origin 又比如下面的命令: evo_traj kitti 0.txt 1.txt --ref=0.txt -p --plot_mode=xz 解释:上面命令中参数--ref 表示设置轨迹为参考,--plot_mode=xz 表示轨迹投影到 xz 轴 显示。 还有一些额外的可选项,它们很有用,你可以通过-h 选项查看参数的介绍和用法。 2.4 evo_config 用法 evo_config 命令比较少用,多数情况下,我们使用默认配置即可。 你可以使用如下命令,查看 evo 默认的一些系统参数设置: evo_config show --brief 运行上面的命令之后,你的终端上就可以输出如下信息: { "console_logging_format": "%(message)s", "euler_angle_sequence": "sxyz", "global_logfile_enabled": false, "plot_axis_marker_scale": 0.0, "plot_backend": "Qt5Agg", "plot_export_format": "pdf", "plot_figsize": [ 6, 6 ], "plot_fontfamily": "sans-serif", "plot_fontscale": 1.0, "plot_invert_xaxis": false, "plot_invert_yaxis": false, "plot_linewidth": 1.5, "plot_multi_cmap": "none", "plot_reference_alpha": 0.5, "plot_reference_color": "black", "plot_reference_linestyle": "--", "plot_seaborn_palette": "deep6", "plot_seaborn_style": "darkgrid", "plot_split": false, "plot_statistics": [ "rmse", "median", "mean", "std", "min", "max" 49 cvlife.net ], "plot_texsystem": "pdflatex", "plot_trajectory_alpha": 0.75, "plot_trajectory_cmap": "jet", "plot_trajectory_linestyle": "-", "plot_usetex": false, "plot_xyz_realistic": true, "ros_map_alpha_value": 1.0, "ros_map_unknown_cell_value": 205, "save_traj_in_zip": false, "table_export_data": "stats", "table_export_format": "csv", "table_export_transpose": true } 如果你想要对某一项参数进行修改,比如你想修改输出的图像格式,你可以使用如下命令: evo_config set plot_export_format png 又比如你想做如下的操作: 1.将画图背景更改成白色网格 evo_config set plot_seaborn_style whitegrid 2.将字体改为衬线型并调为 1.2 倍大小 evo_config set plot_fontfamily serif plot_fontscale 1.2 3.将画图所使用的线型改为 - evo_config set plot_reference_linestyle - 4.将所画图的图像大小调整为 10 9(宽 高) evo_config set plot_figsize 10 9 5.当你想要将配置还原为默认时,只需要使用命令: evo_config reset 当你对 evo 的使用有一个大致的理解之后,我觉得你再摸索和使用就会方便很多,当你看完 本篇博客之后,如果你还想进一步了解它更细致的使用,你可以浏览的 evo 在 github 上的 wiki,网址为:https://github.com/MichaelGrupp/evo/wiki 参考 https://www.guyuehome.com/37988 https://blog.csdn.net/u011341856/article/details/104594392 https://blog.csdn.net/qq_42601453/article/details/121024209

标签:plot,轨迹,evo,命令,SLAM,精度,txt,评估,误差
From: https://blog.csdn.net/weixin_43802726/article/details/139874836

相关文章

  • 代谢组数据分析(十三):评估影响代谢物的重要临床指标
    欢迎大家关注全网生信学习者系列:WX公zhong号:生信学习者Xiaohong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍相关性分析是通过计算两个变量之间的相关系数来评估它们之间线性关系的强度和方向。最常用的是皮尔逊相关系数(Pearsoncorrelationcoefficient),其值范......
  • IIS数字功放MAX98357开发板/评估系统
    前言MAX98357中文介绍请访问下行链接MAX98357、MAX98357A、MAX98357B小巧、低成本、PCMD类IIS放大器,具有AB类性能中文说明规格书一般描述MAX98357开发板(DEV板)是一个完全组装并经过测试的PCB,用于评估MAX98357I2S数字输入D类功率放大器。DEV板采用2.5V至5.5V单直......
  • 井盖液位传感器,实时评估井盖健康危险度
    井盖这个小小的身躯,在城市之中却承载着大大的重担。它们遍布在城市的各个角落,无论是繁华的街道还是僻静的巷弄,都能见到它们默默的身影。它们“出事”的概率和它们的数量却是成正比的,如倾斜、移动、井下水位、健康危险度超过阈值等异常情况。不过现在对于这些问题无需过度担心......
  • 在Ubantu22.04中运行ORB_SLAM3
    在Ubantu22.04中运行ORB_SLAM3一、概述ORB-SLAM3是一个支持视觉、视觉加惯导、混合地图的SLAM系统,可以在单目,双目和RGB-D相机上利用针孔或者鱼眼模型运行。从第一版的单目相机系统,到第二版加入了对stereo以及RGBDcamera的支持,再到目前最新版本的orb-slam整合了visual,以及visual......
  • 振弦采集仪:帮助工程师准确评估结构健康状况的利器
    振弦采集仪:帮助工程师准确评估结构健康状况的利器振弦采集仪是一种用于评估结构健康状况的重要工具。它能够准确地测量结构的振动特性,并通过数据分析和处理,提供有关结构健康状况的可靠信息。在工程领域中,振弦采集仪被广泛应用于桥梁、建筑物、飞机、船舶等结构的健康监测和故障诊......
  • 在Ubantu22.04中运行ORB_SLAM3并进行源码解析
    在Ubantu22.04中运行ORB_SLAM3并进行源码解析1.ORB_slam3简介ORB-SLAM3是一款前沿的即时定位与建图(SLAM)系统,专为大规模环境下的实时定位与三维重建设计。系统兼容多种视觉传感器配置,包括单目、立体双目以及RGB-D相机。ORB-SLAM3采用OrientedFAST和RotatedBRIEF(ORB)算法进......
  • Ubuntu20.04中 ORBSLAM3的安装和测试
    ORBSLAM3安装以及测试教程(Ubuntu20.04)1.前期准备工作1.1安装相关依赖sudoaptinstallgitcmakegccg++mlocate1.2下载ORBSLAM3源码可以直接通过github下载源码:(https://github.com/UZ-SLAMLab/ORB_SLAM3)2.安装一些所需的库2.1安装Eigen3库直接通过命令安装s......
  • 高精度模板
    转载自wkh2008。#include<bits/stdc++.h>usingnamespacestd;namespaceBIGINT{usingcpx=complex<double>;constdoublePI=acos(-1);vector<cpx>roots={{0,0},{1,0}};voidensure_capacity(intmin_capacity){for(intlen=r......
  • GEE案例:Landsat系列影像遥感水覆盖评估的简单填云方法
    简介在很多时候我们进行长时序的水域面积评估的时候,会发现当期影像或者多期影像会无法覆盖所选研究区域,或者因为云层较多,使得影像无法准确获取地表信息。因此我们如何解决这种问题就成为一个值得关注的问题,因此我们参考2021年的一篇文章给大家一个影像修复的方法。摘要水文......
  • ros-slam-microros-发布里程计odom
    获得了里程计数据后,下一步就是将里程计通过MicroROS话题发布到ROS2系统中。一、了解接口在ROS2已有的消息接口中:nav_msgs/msg/Odometry用于表示里程计数据,该接口内容如下:ros2interfaceshownav_msgs/msg/Odometry---#Thisrepresentsanestimateofapositio......