测评工具evo的使用

轨迹评估工具使用总结(一) 基操evo

evo是一款用于视觉里程计和slam问题的轨迹评估工具。核心功能是能够绘制相机的轨迹,或评估估计轨迹与真值的误差。支持多种数据集的轨迹格式(TUM、KITTI、EuRoC MAV、ROS的bag),同时支持这些数据格式之间进行相互转换。在此仅对其基本功能做简要介绍。

evo工具github地址:https://github.com/MichaelGrupp/evo/wiki


一、安装

安装方式极其简单,采用pip安装:

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

或者通过github下载源码后(https://github.com/MichaelGrupp/evo),使用源码安装:

pip install --editable . --upgrade --no-binary evo

安装时会自动安装相关依赖项。

安装完毕后,在命令行输入evo,若显示了相关信息,则表明安装成功。若提示"command not found"也不用惊慌,很多人遇到这种问题,重启电脑即可找到evo相应指令。

二、绘制轨迹

1. 基础指令

evo绘制轨迹的指令为:evo_traj,后跟必要参数有:数据的格式(tum/kitti/bag/euroc等)+ 轨迹文件。轨迹文件可以有多个,例如:

evo_traj tum traj1.txt traj2.txt

这个指令只是显示轨迹的基本信息,若要绘制轨迹,则增加可选参数 -p 或 --plot

evo_traj tum traj1.txt –p

轨迹评估工具使用总结(一) 基操evo_第1张图片

2. 轨迹对齐

我们时常需要将估计轨迹与真实轨迹同时绘制,可采用指令:

evo_traj tum realTraj.txt estTraj.txt -p

然而存储时轨迹多为相对位置变化,所以绘制出的轨迹在初始位置上存在一定的位置和角度偏移,出现以下情况。

轨迹评估工具使用总结(一) 基操evo_第2张图片

(如图所示,左图为绘制的两条曲线,通过调整可以发现两个曲线形状大体相同,但没有对齐,从而具有较大的误差)

 

这时我们采用对齐指令将两条轨迹进行对齐。为此我们需要通过--ref参数指定参考轨迹,并增加参数-a(或--align)进行对齐(旋转与平移)

evo_traj tum estTraj.txt --ref realTraj.txt -p -a

3. 轨迹尺度缩放

单目相机会存在尺度的不确定性,evo_traj 支持使用-s(或 --correct_scale)参数进行Sim(3)上的对齐(旋转、平移与尺度缩放)

轨迹评估工具使用总结(一) 基操evo_第3张图片

 

(图片从左到右:两条未对齐曲线、曲线对齐后绘制结果、曲线通过尺度缩放后结果)


三、轨迹评估

evo可以评估两条轨迹的误差,主要有两个命令:

evo_ape:计算绝对位姿误差(absolute pose error),用于整体评估整条轨迹的全局一致性

evo_rpe:计算相对位姿误差(relative pose error),用于评价轨迹局部的准确性

这两个指令也支持evo_traj的可选参数,轨迹对齐-a与尺度缩放-s。完整指令如下:

evo_ape tum realTraj.txt estTraj.txt -a –s

此时将显示轨迹误差相关结果。

轨迹评估工具使用总结(一) 基操evo_第4张图片

 

若增加可选参数-p,可以绘制误差相关曲线

轨迹评估工具使用总结(一) 基操evo_第5张图片

 

注意:在进行评估时,若经过了缩放,在命令行中应将真实轨迹(参考轨迹)放在估计轨迹(计算轨迹)前方,避免在缩放时参考轨迹错误而造成误差被错误缩放。

四、格式互相转换

轨迹评估工具使用总结(一) 基操evo_第6张图片

五、进阶学习

这里只介绍了evo的基本操作,除此之外evo可以进行数据格式转化、曲线颜色配置、轨迹导出等多种功能,详细请参考evo在github上的wiki:

https://github.com/MichaelGrupp/evo/wiki

同时,可以在命令行通过-h参数查看当前evo指令的参数及相关说明。例如:

evo_traj tum –h

注意一定要输入完整的evo指令(evo_traj, evo_ape等),与必选参数,即数据格式(tum/kitti/euroc/bag)

<think>好的,我现在需要帮助用户解决在Ubuntu 20.04上使用evo工具评估RTAB-Map的问题。首先,我要回顾之前的对话历史,确保这次回答的一致性。用户之前询问过RTAB-Map使用evo工具的一般流程,现在他们可能已经尝试过,但遇到了特定于Ubuntu 20.04的问题,或者需要更详细的步骤。 首先,用户的问题是关于在Ubuntu 20.04上使用evo评估RTAB-Map。我需要确保所有步骤都适用于这个特定的Ubuntu版本。已知Ubuntu 20.04使用ROS Noetic,所以需要确认相关的ROS包和依赖是否兼容。例如,RTAB-Map在Noetic中的安装方式可能与其他版本不同,需要检查正确的安装命令。 接下来,安装evo工具。用户可能已经安装了它,但需要确认是否存在版本兼容性问题。例如,某些Python版本问题,因为Ubuntu 20.04默认的Python3是3.8,而evo可能需要特定版本。此外,用户可能遇到pip安装时的依赖问题,比如numpy或matplotlib的版本冲突。因此,在步骤中需要明确建议使用虚拟环境或者处理依赖的方法。 数据准备部分,用户需要知道如何保存RTAB-Map的轨迹。之前的回答提到了实时运行和离线导出两种方式,这里需要再次强调,并确保命令适用于Noetic环境。例如,检查roslaunch的参数是否有变化,或者rtabmap-export工具的位置是否正确。 在评估步骤中,用户可能需要处理不同数据集,比如EuRoC或TUM RGB-D,因此需要给出具体的例子,说明如何转换真值轨迹。例如,使用evo_traj转换EuRoC数据到TUM格式时,可能需要调整参数。同时,需要注意坐标系对齐的问题,特别是RTAB-Map默认的坐标系可能与数据集不同,导致轨迹偏差,这时候需要指导用户如何调整启动参数。 进阶分析部分,用户可能想比较不同配置下的轨迹,或者生成统计报告。需要确保命令正确,比如多轨迹对比时的文件路径,以及生成报告时的输出格式。此外,时间同步问题在真实数据中常见,需要详细说明如何用evo处理时间偏移和最大差异。 注意事项中,需要提到Ubuntu 20.04特有的问题,比如依赖库的安装,或者权限问题。例如,某些情况下可能需要安装python3-tk来支持evo的绘图功能,或者使用--user参数避免权限错误。此外,Python虚拟环境的使用可以避免系统包冲突,这也是一个值得注意的点。 用户可能的痛点包括安装问题、轨迹对齐和坐标系的处理。例如,如果用户在安装时遇到错误,可能需要安装额外的依赖如python3-pip,或者升级setuptools。轨迹评估时的尺度问题也需要强调,特别是单目或RGB-D模式可能需要尺度校正。 最后,典型问题中提到的associate.py错误可能由于时间戳不同步,用户可能需要手动对齐时间戳或调整同步参数。Z轴漂移可能需要调整RTAB-Map的参数,如地面检测或优化策略,这部分需要给出具体的启动参数示例。 总结来说,回答需要详细、逐步指导,并针对Ubuntu 20.04环境进行调整,确保所有命令和步骤在该环境下有效。同时,预测用户可能遇到的问题,并提供解决方案,比如依赖安装、坐标系设置、时间同步等,以提高用户体验。</think>以下是在 **Ubuntu 20.04** 系统中使用 `evo` 工具评估 RTAB-Map 建图与定位精度的详细流程,针对系统特性优化操作步骤: --- ### 一、环境准备 #### 1. 安装依赖 ```bash # ROS Noetic 基础环境(若已安装可跳过) sudo apt install ros-noetic-rtabmap-ros ros-noetic-tf # evo 依赖库 sudo apt install python3-pip python3-tk # 必须安装tkinter支持图形界面 pip3 install numpy --upgrade # 确保numpy>=1.17 ``` #### 2. 安装evo工具 ```bash # 推荐使用虚拟环境(避免权限问题) python3 -m venv ~/evo_venv source ~/evo_venv/bin/activate pip install evo --upgrade --no-binary evo ``` --- ### 二、数据采集与导出 #### 1. 运行RTAB-Map并保存轨迹 ```bash # 启动RTAB-Map并实时保存轨迹(TUM格式) roslaunch rtabmap_ros rgbd_mapping.launch \ args:="-d --save_trajectory tum" \ rgbd_topic:=/camera/rgbd_image \ approx_sync:=false # Ubuntu 20.04需关闭近似同步 ``` #### 2. 导出离线轨迹(若使用.db数据库) ```bash rtabmap-export --poses_tum rtabmap_traj.txt --format tum ~/rtabmap.db ``` --- ### 三、真值轨迹处理(以TUM RGB-D数据集为例) #### 1. 下载真值文件 从数据集官网获取 `groundtruth.txt`,或通过传感器录制真值轨迹。 #### 2. 格式统一化 ```bash # 若真值为ROS bag数据,转换为TUM格式 evo_traj bag groundtruth.bag --save_as_tum --topic /ground_truth/pose ``` --- ### 四、评估操作(Ubuntu 20.04适配版) #### 1. 轨迹对齐与尺度校正 ```bash # 强制3D对齐与尺度校正(针对单目/RGB-D模式) evo_ape tum groundtruth.txt rtabmap_traj.txt -a -s --correct_scale -va --plot ``` #### 2. 轨迹可视化对比 ```bash # 三维轨迹对比(含坐标系箭头) evo_traj tum rtabmap_traj.txt --ref=groundtruth.txt -p --plot_mode=3d --align --arrow_scale=0.5 ``` #### 3. 生成详细报告 ```bash # 同时计算APE和RPE并生成PDF报告 evo_res rtabmap_ape.zip rtabmap_rpe.zip -p --save_report report.pdf ``` --- ### 五、Ubuntu 20.04专属注意事项 1. **Python环境冲突**: - 若出现 `ImportError`,在虚拟环境中运行: ```bash source ~/evo_venv/bin/activate ``` - 若缺少 `tkinter`,执行: ```bash sudo apt install python3-tk ``` 2. **时间戳同步优化**: ```bash # 设置时间戳容忍阈值(避免同步失败) evo_config set time_tolerance 0.002 # 适用于USB摄像头常见抖动 ``` 3. **ROS话题同步**: ```bash # 启动RTAB-Map时添加时间同步参数 roslaunch rtabmap_ros rgbd_mapping.launch approx_sync:=false ``` --- ### 六、典型问题解决 #### 1. 报错 `No module named 'evo'` ```bash # 检查虚拟环境激活状态 source ~/evo_venv/bin/activate # 或全局安装(不推荐) pip3 install evo --user # 添加--user避免权限问题 ``` #### 2. 轨迹Z轴漂移严重 ```bash # 调整RTAB-Map优化参数 roslaunch rtabmap_ros rgbd_mapping.launch \ args:="-d --Optimizer/GravitySigma 0.3 --Reg/Strategy 1" ``` #### 3. 真值轨迹时间戳不连续 ```bash # 使用插值填充缺失数据 evo_traj tum rtabmap_traj.txt --ref groundtruth.txt --fill_time 0.01 ``` --- ### 附:性能优化建议 1. **启用多线程处理**: ```bash evo_ape tum ... --num_workers 4 # 使用4个CPU核心加速计算 ``` 2. **关闭GUI加速批处理**: ```bash evo_ape tum ... --no_plot --save_results results.zip ``` **注**:建议使用 `nvidia-smi` 监控GPU占用率(若使用GPU加速版RTAB-Map),保持负载在80%以下可避免评估过程卡顿。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值