关于配置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
相关推荐
具身智能之心4 小时前
当机器人学会 “模仿” 人类:RynnVLA-001 如何突破操作数据稀缺困境?
机器人·具身智能
赛卓电子Semiment5 小时前
汽车组合开关中霍尔 IC 的应用:核心分类、原理及技术要点
科技·机器人·汽车·霍尔·霍尔芯片·组合开关
福客AI智能客服5 小时前
图像识别落地:AI智能客服系统重塑电瓶车尾箱头盔电商服务
大数据·人工智能·机器人
派大鑫wink7 小时前
硬核解析:英伟达机器人的技术内核与落地场景全攻略硬核解析:英伟达机器人的技术内核与落地场景全攻略
机器人
星期五不见面7 小时前
机器人学习!(二)ROS-基于Gazebo项目-YOLO(3)2026/01/13
人工智能·学习·机器人
小康小小涵8 小时前
WSL2安装移植到F盘并集成ubuntu20的ros-noetic
人工智能·机器人·自动驾驶
热爱专研AI的学妹10 小时前
用n8n搭建新闻推送简报机器人:数眼智能搜索+网页阅读API实战指南
机器人
具身智能之心10 小时前
ImaginationPolicy:迈向通用、精确、可靠的机器人操作端到端策略
机器人·端到端·具身智能
Deepoch10 小时前
从“机械执行”到“意图理解”:Deepoc如何重塑人机交互新范式
人工智能·机器人·开发板·具身模型·deepoc
码农三叔10 小时前
(9-2-01)自动驾驶中基于概率采样的路径规划:基于Gazebo仿真的路径规划系统(1)
人工智能·机器学习·机器人·自动驾驶·路径规划