EVO工具在EUROC数据集TUM数据集,评测ORB-SLAM3和VINS-MONO

题外话,Ubuntu20.04使用该链接安装EVO

一、使用EVO评测ORB-SLAM3的结果

1.1 EUROC公开数据集

evo_ape euroc MH01-GT.csv f_dataset-MH01_monoi2.txt -va --plot --plot_mode xyz --save_results a.zip

命令中的变量含义:

euroc:euroc格式,仅表示后一个的文件是euroc格式的、

MH01-GT.csv:EUROC公开数据集公开的GroundTruth文件,不需要任何更改。

f_dataset-MH01_monoi2.txt:ORB-SLAM3生成的轨迹文件,因为TUM的格式:时间戳(秒)tx ty tz qx qy qz qw 。因为时间戳需要是以秒为单位,所以需要将ORB生成的文件的时间戳(纳秒)改成秒。可以使用以下Python脚本。

注意:使用EVO工具计算的误差结果和ORB-SLAM3提供的evaluate_ate_scale.py的结果是一样的。因为它们使用的都是EUROC提供的GroundTruth。如果使用ORB作者给的Groundtruth结果则不一样,因为ORB作者提供的GrounTruth是相机时间戳的,而EUROC给的是IMU时间戳的。

# 功能: 将位姿txt文件中的第一列时间戳由纳秒单位转成秒单位
import numpy as np
import os, sys

file_path = "./f_dataset-MH03_monoi.txt"
new_path = "./f_dataset-MH03_monoi2.txt"

def main():
    file = open(file_path, "r")
    lines = file.readlines()
    new_line = ""
    for line in lines:
        val = float(line.split(' ')[0])
        val = val / 1e9
        val_str = str(val)
        new_line = line
        new_line = new_line.replace(new_line.split(' ')[0], val_str)
        with open(new_path, 'a') as f:
            f.writelines(new_line)

if __name__ == "__main__":
    main()

1.2 TUM数据集 

二、EVO评测VINS-MONO的结果

参考该网址修改VINS-MONO代码,如果只评价ATE则不用转格式,运行下面命令。

evo_ape euroc groundtruth.csv xr_result.csv -va --plot --plot_mode xyz --save_results a.zip

如果想绘制轨迹,则使用如下命令进行格式转换,生成了groundtruth.tum

#[格式转换]:将ground_truth euro格式转换为tum格式groundtruth.tum 
evo_traj euroc groundtruth.csv --save_as_tum 

然后绘制轨迹

evo_traj tum xr_result.txt --ref=groundtruth.tum -p --plot_mode=xyz --align --correct_scale

<think>好的,用户想知道如何使用evo工具评估ORB-SLAM的结果。首先,我需要回忆evo工具的基本用法相关引用内容。根据提供的引用,用户已经提到了ORB-SLAM2ORB-SLAM3,所以可能需要涵盖不同版本的数据处理步骤。 首先,安装evo工具。用户可能已经安装了,但可能需要检查安装方式,比如通过pip安装。然后,数据准备是关键。ORB-SLAM生成的轨迹文件通常是TUM或KITTI格式,而EuRoC数据集可能有不同的格式。引用中提到的TUMEuRoCKITTI数据集需要对应的轨迹格式转换。比如,ORB-SLAM输出的轨迹需要保存为TUM格式,可能需要使用脚本来转换。例如,ORB-SLAM2生成的CameraTrajectory.txt可能已经是TUM格式,但需要确认是否正确对齐时间戳。 接下来,使用evo命令进行评估。常见的指标是绝对位姿误差(APE)相对位姿误差(RPE)。引用[4]提到使用--ref选项指定参考轨迹,并用--align进行对齐。例如,evo_apeevo_rpe命令的使用方法。此外,用户可能需要可视化结果,用--plot参数生成图表。 还要注意时间戳对齐的问题,尤其是当使用IMU数据时,如引用[1]所述。如果轨迹真值的时间戳不一致,评估结果可能不准确。因此,可能需要使用evo工具中的时间戳对齐功能,或者在运行命令时添加相应的参数。 另外,引用[3]提到使用TUM数据集运行ORB-SLAM2并生成轨迹,然后评估。这可能涉及到不同数据集的特定处理步骤。例如,EuRoC数据集可能需要转换为TUM格式的真值文件,或者使用特定的参数运行ORB-SLAM。 可能还需要处理常见的错误,如引用[4]中的解决方法,明确指定参考轨迹以避免对齐问题。用户可能会遇到轨迹未对齐的情况,这时候需要使用--align参数,并确保参考轨迹正确指定。 最后,生成相关问题需要考虑用户可能的后续疑问,比如安装问题、不同数据集的评估差异、结果解读以及与其他工具的比较。需要确保问题覆盖用户可能遇到的下一步挑战。 总结步骤:安装evo,准备轨迹文件(格式转换,时间戳处理),运行评估命令(APE、RPE),可视化,解决常见问题如轨迹对齐时间戳同步。同时,引用相关文献中的具体命令示例,帮助用户正确执行。</think>### 如何使用 evo 工具评估 ORB-SLAM 的轨迹? #### 1. **安装 evo 工具** - 通过 pip 安装: ```bash pip install evo --upgrade --no-binary evo ``` - 验证安装: ```bash evo_ape -h # 查看绝对位姿误差(APE)帮助文档 ``` #### 2. **准备轨迹文件** - **ORB-SLAM 生成的轨迹文件**:运行 ORB-SLAM 后,保存轨迹为 TUM 格式(例如 `CameraTrajectory.txt`)。 - **真值轨迹文件**:根据数据集类型(TUM/KITTI/EuRoC)下载对应的真值文件(如 `groundtruth.txt`)。 - **格式转换**(如有必要): - 使用 `evo_traj` 转换轨迹格式,例如将 EuRoC 真值转为 TUM 格式: ```bash evo_traj euroc data.csv --save_as_tum ``` #### 3. **运行评估命令** - **绝对位姿误差(APE)**: ```bash evo_ape tum groundtruth.txt CameraTrajectory.txt -a --plot ``` - `-a`:自动对齐轨迹的平移旋转分量。 - `--plot`:生成可视化结果(如图形误差分布)[^4]。 - **相对位姿误差(RPE)**: ```bash evo_rpe tum groundtruth.txt CameraTrajectory.txt --align --plot ``` #### 4. **多轨迹对比与可视化** - 同时比较多个轨迹(例如关键帧轨迹相机轨迹): ```bash evo_traj tum groundtruth.txt CameraTrajectory.txt KeyFrameTrajectory.txt --ref groundtruth.txt --align --plot ``` - 生成轨迹叠加图: ```bash evo_traj tum CameraTrajectory.txt --ref groundtruth.txt --align --plot_mode xz ``` #### 5. **解决常见问题** - **时间戳对齐**:若使用 IMU 数据,需确保轨迹与真值的时间戳同步[^1]。 - **轨迹格式错误**:检查文件是否符合 TUM/KITTI 格式要求(时间戳+位姿参数)。 - **尺度漂移**:单目 SLAM 可能需手动指定尺度对齐参数(如 `-s`)。 --- ### 评估结果解读 - **APE**:反映整体轨迹的全局一致性,数值越小越好。 - **RPE**:衡量局部运动误差,适合分析动态性能。 - 输出包含均方根误差(RMSE)、中值误差等统计量。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值