关于配置ORB-SLAM3

环境:VMware 17.3Pro Ubuntu22.04

一、配置ORB-SLAM3:

流程记录:

1.更换阿里云 APT 软件源,之后效果快得起飞

  1. 第一阶段,有一条命令优化(某个apt库需要下载)

  2. 编译安装Opencv:优化了命令配置 make -j4

  3. ORB-SLAM3的编译,使用了12GB的分配+make -j2

参考:此博客

二、下载数据集,运行算法

  1. TUM-VI数据集,我是通过WSL2终端命令下载的,之后复制到VMware。运行的时候需要修改源码来可视化,参考:此博客

  2. 完整12GB的Euro数据集已经下载,同样是终端下载。这个数据集的运行效果不佳。

  3. 命令:

    进入项目根目录

    cd ~/Dev/ORB_SLAM3

    确保程序有执行权限

    chmod +x ./Examples/Stereo/stereo_euroc

    Euroc MH01_easy 数据集:

    运行双目(完整运行)

    ./Examples/Stereo/stereo_euroc
    ./Vocabulary/ORBvoc.txt
    ./Examples/Stereo/EuRoC.yaml
    ~/Datasets/EuRoc/MH01
    ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt
    dataset-MH01_stereo

    运行单目(无画面)

    ./Examples/Monocular/mono_euroc
    ./Vocabulary/ORBvoc.txt
    ./Examples/Monocular/EuRoC.yaml
    ~/Datasets/EuRoc/MH01
    ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt
    dataset-MH01_mono

    运行单目+惯性传感器(初始化失败、卡顿)

    ./Examples/Monocular-Inertial/mono_inertial_euroc
    ./Vocabulary/ORBvoc.txt
    ./Examples/Monocular-Inertial/EuRoC.yaml
    ~/Datasets/EuRoc/MH01
    ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt
    dataset-MH01_monoi

    运行双目+惯性传感器(无画面)

    赋予执行权限

    chmod +x ./Examples/Stereo-Inertial/stereo_inertial_euroc

    运行命令

    ./Examples/Stereo-Inertial/stereo_inertial_euroc
    ./Vocabulary/ORBvoc.txt
    ./Examples/Stereo-Inertial/EuRoC.yaml
    ~/Datasets/EuRoc/MH01
    ./Examples/Stereo-Inertial/EuRoC_TimeStamps/MH01.txt
    dataset-MH01_stereoi

    TUM-VI数据集

    1. room1_512数据集

    单目:正常跑通

    chmod +x ./Examples/Monocular/mono_tum_vi

    ./Examples/Monocular/mono_tum_vi
    ./Vocabulary/ORBvoc.txt
    ./Examples/Monocular/TUM-VI.yaml
    ~/Datasets/TUM_VI/dataset-room1_512_16/mav0/cam0/data
    ./Examples/Monocular/TUM_TimeStamps/dataset-room1_512.txt
    dataset-room1_512_mono

    2. corridor1_512数据集

    单目:正常跑通

    ./Examples/Monocular/mono_tum_vi
    Vocabulary/ORBvoc.txt
    Examples/Monocular/TUM-VI.yaml
    ~/Datasets/TUM_VI/dataset-corridor1_512_16/mav0/cam0/data
    Examples/Monocular/TUM_TimeStamps/dataset-corridor1_512.txt
    dataset-corridor1_512_mono

    单目+惯性器:正常跑通

    ./Examples/Monocular-Inertial/mono_inertial_tum_vi
    Vocabulary/ORBvoc.txt
    Examples/Monocular-Inertial/TUM-VI.yaml
    ~/Datasets/TUM_VI/dataset-corridor1_512_16/mav0/cam0/data
    Examples/Monocular-Inertial/TUM_TimeStamps/dataset-corridor1_512.txt
    Examples/Monocular-Inertial/TUM_IMU/dataset-corridor1_512.txt
    dataset-corridor1_512_monoi

    双目+惯性:正常跑通

    ./Examples/Stereo-Inertial/stereo_inertial_tum_vi
    ./Vocabulary/ORBvoc.txt
    ./Examples/Stereo-Inertial/TUM-VI.yaml
    ~/Datasets/TUM_VI/dataset-corridor1_512_16/mav0/cam0/data
    ~/Datasets/TUM_VI/dataset-corridor1_512_16/mav0/cam1/data
    ./Examples/Stereo-Inertial/TUM_TimeStamps/dataset-corridor1_512.txt
    ./Examples/Stereo-Inertial/TUM_IMU/dataset-corridor1_512.txt
    dataset-corridor1_512_stereoi

三、EVO评估算法性能

  1. 安装,参考:此博客

  2. 评估:

(1) 这一部分我主要评估TUM-VI 的corridor1数据集的运行结果。

参考:此博客,也是遇到了同样的问题。

首先是安装缺失的包;

关闭纳秒解析:

复制代码
evo_config set euroc_use_nanoseconds false

然后因为ORB-SLAM3 输出是 TUM 格式 (t, x, y, z, qx, qy, qz, qw),TUM-VI data.csv 是 EuRoC 格式 (t, x, y, z, qw, qx, qy, qz),编写脚本转化数据,转为秒、TUM格式:

复制代码
import numpy as np

def fix_gt():
    with open('corridor_gt_raw.csv', 'r') as f:
        lines = f.readlines()
    with open('gt_final.tum', 'w') as f:
        for line in lines:
            if line.startswith('#'): continue
            p = line.replace(',', ' ').split()
            if len(p) < 8: continue
            # 将纳秒转为秒,保留 9 位小数
            ts = float(p[0]) / 1e9
            f.write(f"{ts:.9f} {p[1]} {p[2]} {p[3]} {p[5]} {p[6]} {p[7]} {p[4]}\n")

def fix_res():
    with open('f_dataset-corridor1_512_stereoi.txt', 'r') as f:
        lines = f.readlines()
    with open('res_final.tum', 'w') as f:
        for line in lines:
            p = line.split()
            if len(p) < 8: continue
            # 将纳秒转为秒,保留 9 位小数
            ts = float(p[0]) / 1e9
            f.write(f"{ts:.9f} {p[1]} {p[2]} {p[3]} {p[4]} {p[5]} {p[6]} {p[7]}\n")

if __name__ == "__main__":
    fix_gt()
    fix_res()
    print("转换完成:时间戳已转为秒(TUM标准格式)")

(2) 运行命令

复制代码
# 绘制轨迹
evo_traj tum res_final.tum --ref=gt_final.tum -p --plot_mode xyz

# 计算APE
evo_ape tum gt_final.tum res_final.tum -va -p --align --t_max_diff 0.1

# 保存轨迹png
evo_traj tum res_final.tum --ref=gt_final.tum --align -p --save_plot ~/Datasets/Output/trajectory_comparison.png

# 保存APE结果图像
evo_ape tum gt_final.tum res_final.tum -va --align --t_max_diff 0.1 --save_plot ~/Datasets/Output/my_ape_result.png

# 保存RPE结果图像
evo_rpe tum gt_final.tum res_final.tum -va -p --align --t_max_diff 0.1 -d 1.0 -u m --save_plot ./rpe_result.png

# 保存APE的评估数据到zip
evo_ape tum gt_final.tum res_final.tum -va --align --t_max_diff 0.1 --save_results ~/Datasets/Output/stereo_inertial.zip

# 评估 RPE 并保存结果到 zip
evo_rpe tum gt_final.tum res_final.tum -va --align --t_max_diff 0.1 -d 1.0 -u m --save_results ~/Datasets/Output/stereo_inertial_rpe.zip
相关推荐
weixin_468466851 小时前
从“看懂”到“做到”:视觉-语言-动作模型如何让机器人真正执行指令
人工智能·ai·机器人·大语言模型·前沿科技
云智慧AIOps社区3 小时前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人
GlobalInfo4 小时前
重磅发布 | 2026年船体清洁机器人行业研究报告:市场规模、发展前景与十五五战略地图
大数据·人工智能·机器人
疯子的梦想@4 小时前
Prometheus 接入 Alertmanager 与钉钉机器人,附中文模板和完整踩坑记录
机器人·钉钉·prometheus
feasibility.10 小时前
世界模型WSM技术解读:SLAM内化为具身智能的状态记忆,纯RGB机器人导航反超RGB-D
人工智能·机器人·aigc·slam·导航·具身智能·世界模型
zhangrelay15 小时前
Arduino-MEGA-ESP单片机理论课笔记-01入门-02硬件-03开发环境-2026
笔记·单片机·嵌入式硬件·学习·机器人
小lo想吃棒棒糖17 小时前
把 启元机器人Q1 的训练搬到昇腾 910B:从 MuJoCo 到 PPO 的一次完整迁移
人工智能·python·机器人·昇腾·具身智能
szxinmai主板定制专家17 小时前
AMR 项目落地:机器人控制器硬件定制化需求复盘
arm开发·单片机·fpga开发·系统架构·机器人·am62x
大江东去浪淘尽千古风流人物17 小时前
【RoboDojo】仿真与真实双轨机器人操纵基准:测试流程与防作弊机制深度解析
机器人·vla·评测基准·机器人操纵·robodojo·sim-to-real
脆性薄片搬运谢工1 天前
移栽电控箱放在机架上还是单独落地,产线布局哪个更合理?
机器人·脆性薄片搬运专机·桁架机械手·桁架机器人·特种桁架搬运专机