关于配置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
相关推荐
一颗小树x37 分钟前
《VLA 系列》五篇 VLA 轻量化与实时化 | 开源
机器人·实时·轻量化·vla
风合星语4 小时前
2026 ROS 2 Lyrical C++ 入门(五):Action 实战——任务反馈、取消与超时处理
c++·机器人·ros2·异步编程·lyrical
别动我齐刘海6 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
微信ipad协议开发9 小时前
教培机构微信自动化:从招生引流到社群运维的完整链路
微信·机器人·自动化·教育电商
PNP Robotics9 小时前
【PNP具身解读】GPT6 Astra:具身智能新范式,大模型 + Franka机器人快速落地验证一、GPT6 Astra 背后的布局、数据与具身方向
人工智能·学习·机器学习·机器人
海盗123410 小时前
微软技术日报 2026-09-19:Azure AI Foundry 曝 CVSS 10 满分漏洞,Copilot Cowork 全球转正
人工智能·机器人·aigc
微信ipad协议开发11 小时前
保险代理人微信赋能:多号管理与客户跟进的自动化方案
微信·机器人
硅谷秋水14 小时前
RoboLab:用于分析机器人任务通才策略的高-保真仿真基准
机器学习·计算机视觉·语言模型·机器人
叶子Talk14 小时前
Figure机器人零样本做家务,Claude已主导Anthropic四分之一研发
机器人·figure·anthropic
高升说1 天前
机器人上岗之后:视觉系统从 demo 到产线的四道坎
机器人·机器视觉·工业自动化