关于配置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
相关推荐
kyle~20 分钟前
机器人开发团队协作方法论:从传感数据流到运动控制的工程闭环
机器人
迁移科技1 小时前
告别人工分拣!迁移科技 AI+3D 视觉让机器人 “看懂” 无序抓取
人工智能·科技·3d·机器人·自动化·视觉检测
御风而行的蚂蚁4 小时前
Ubuntu 20.04 / 18.04 双版本 ROS1 安装保姆级教程
机器人
武子康4 小时前
调查研究-140 全球机器人产业深度调研报告【02篇】:全球机器人产业格局分析:五个阶段并存与商业化路径 2026
人工智能·ai·机器人·具身智能·智能化
a752066284 小时前
OpenClaw企业微信渠道配置教程|API模式+长连接+全部授权
人工智能·机器人·企业微信·openclaw部署·小龙虾一键安装
传说故事5 小时前
【论文阅读】GEN-0: Embodied Foundation Models That Scale with Physical Interaction
论文阅读·人工智能·机器人·具身智能
工业机器人销售服务6 小时前
在珠宝首饰加工中,遨博协作机器人配合微力控技术,实现宝石的自动化镶嵌
运维·机器人·自动化
研究点啥好呢11 小时前
小鹏汽车 机器人运动规划算法工程师 面试题精选:10道高频考题+答案解析
算法·机器人·汽车
txg66611 小时前
机器人领域简报(2026年5月15日—5月21日)
人工智能·机器人
kyle~11 小时前
机器人链路开发---故障注入(主动破坏式可靠性测试)
机器人