关于配置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
相关推荐
ZPC82103 天前
docker 镜像备份
人工智能·算法·fpga开发·机器人
ZPC82103 天前
docker 使用GUI ROS2
人工智能·算法·fpga开发·机器人
2501_946205523 天前
晶圆机器人双臂怎么选型?适配2-12寸晶圆的末端效应器有哪些?
服务器·网络·机器人
xybDIY3 天前
Kiro Workshop - 使用 AI 代理聊天机器人构建电子商务网站
人工智能·机器人
宝贝儿好3 天前
【强化学习】第十章:连续动作空间强化学习:随机高斯策略、DPG算法
人工智能·python·深度学习·算法·机器人
大江东去浪淘尽千古风流人物3 天前
【SLAM】GenRobot / IO-AI / Scale / Appen 能力对比表(机器人数据与闭环视角)
人工智能·机器学习·机器人·大模型·概率论·端侧部署·巨身智能
梦想的旅途23 天前
企业微信API:外部群自动化推送实战指南
大数据·机器人·自动化·企业微信·rpa
鲁邦通物联网3 天前
架构设计:基于边缘网关构建异构电梯协议的统一机器人梯控中间件
机器人·机器人梯控·agv梯控·机器人乘梯·机器人自主乘梯·agv机器人梯控
RobotNow3 天前
优秀的机器人厂商集中平台哪家创新力强
机器人
shuidaoyuxing3 天前
机器人具身智能概念
人工智能·机器人