ORB-SLAM安装演示

一、基本概念

1.ORB-SLAM是什么?

视觉SLAM(即时定位与地图构建)系统, 凭视觉信息就能实时地估计自身位置,并同时构建出环境的地图

2.ORB-SLAM3 是目前最有影响力的视觉/视觉惯性 SLAM 系统之一

3.它解决什么问题:SLAM = Simultaneous Localization and Mapping(同步定位与建图)。机器人在未知环境里跑,一边用相机/IMU 估计自己的位姿轨迹,一边构建环境地图。ORB-SLAM3 就是干这个的,输入是单目/双目/RGB-D 相机 + IMU,输出是相机轨迹 +

稀疏特征点地图。

  1. 核心特性
  • 多传感器支持:单目、双目、RGB-D,以及它们的 视觉惯性(VI) 版本,共 6 种模式。

  • 紧耦合 IMU:IMU 预积分与视觉残差放在同一个 bundle adjustment

里联合优化,比松耦合精度高得多。还首创了基于最大后验估计的 IMU 初始化(不像 VINS 那样需要静止激励)。

  • Atlas 多地图系统:这是最大亮点。跟踪丢失时不直接"死亡",而是开新地图,之后靠**地图合并(map

merging)**把新旧地图接上------在走廊、快速旋转、遮挡等场景下比ORB-SLAM2 健壮很多。

  • 重定位与回环:用 DBoW2 做词袋场景识别,识别到去过的地方就做回环闭合 + 位姿图优化,消除累计漂移。

5.系统架构(四个并行线程)

Tracking 跟踪线程 ------每帧实时定位、决定是否关键帧

Tracking 跟踪线程 ------每帧实时定位、决定是否关键帧

Local Mapping 局部建图 ------三角化新点、局部 BA

Loop & Map Merging 回环检测 ------DBoW2 识别 + 位姿图优化

Full BA 全局优化 ------后台做完整 BA

6.优缺点

优点:公开 benchmark 上精度顶尖(EuRoC 上同精度下速度是 VINS-Mono 的 2--5

倍)、代码开源且工业界大量参考、多地图机制鲁棒。

缺点:

  • 输出的是稀疏特征点地图,不能直接做导航避障,要接 OctoMap(八叉树)或 Voxblox 转成稠密/占据栅格。

  • 依赖 OpenCV、Eigen、Pangolin、DBoW2、g2o、Sophus,编译挺折腾。

  • 只支持 针孔 + 鱼眼 模型,不支持全向/事件相机。

  • 纯几何方法,没有语义,动态场景(走动的人)会引入误差。

7.同类对比上手路径

Linux 环境最好(Ubuntu 18.04/20.04),基本流程:

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

装 Pangolin、OpenCV、Eigen3,然后

chmod +x build.sh && ./build.sh

跑 EuRoC / TUM 公开数据集

上手路径(快速验证)

  1. 环境准备 :使用 Ubuntu 20.04 (兼容性最佳),确保内存 ≥16GB ,CPU ≥4核

  2. 安装依赖 :使用 apt 安装基础编译工具和库。

  3. 编译核心库 :依次编译安装 Pangolin (可视化)、OpenCV (图像处理,推荐 4.x 版本)、Eigen3(线性代数)。

  4. 编译 ORB-SLAM3 :下载源码,修改 CMakeLists.txt 中的 C++ 标准,运行 build.sh 脚本。

  5. 下载数据集 :获取 EuRoC 数据集的 MH_01_easy 序列。

  6. 运行测试:执行单目示例命令,验证安装成功。

8. Eigen3:线性代数与数学计算核心,Eigen3是一个开源的C++模板库,在ORB-SLAM3中,它扮演着数学引擎 的角色,所有底层几何运算都依赖它。显著优点是轻量级,主要由头文件构成,无需复杂的编译链接过程,易于集成。

9.OpenCV:计算机视觉处理库。是一个庞大的开源计算机视觉库 ,包含数百种图像处理和视觉算法。处理一切图像相关任务的基础工具

10.Pangolin:3D可视化与用户界面库Pangolin是一个轻量级的OpenGL开发库,专门用于管理3D可视化和交互,特别适合机器人、计算机视觉等领域。

它是系统的"可视化窗口"。当你运行程序时,Pangolin会打开一个窗口,实时显示:

  • 3D地图点云:系统构建的环境特征点。

  • 相机运动轨迹:相机在空间中的移动路径。

  • 交互界面:一些用于控制或显示系统状态的面板。

11.EuRoC 数据集:视觉惯性SLAM基准测试数据。一套**视觉-惯性数据集。**广泛用于评估SLAM算法性能。提供了SLAM算法所需的全部"原料":

  • 双目灰度图像:分辨率WVGA,帧率20Hz。

  • IMU测量数据:包含角速度和加速度,频率200Hz。

  • 精确的真值(Ground Truth):通过Vicon运动捕捉系统等设备获取的无人机真实位姿,用于精确评估算法精度。

12.WSL2 是什么?WSL 全称 Windows Subsystem for Linux (Windows 下的 Linux 子系统)WSL2 并不是传统的虚拟机,它使用 Windows 的 Hyper-V 虚拟化技术 ,运行一个轻量级的 Linux 内核

13.Docker 是什么?Docker 是一个开源容器化平台 。它把应用程序及其所有依赖(库、配置文件、环境变量等)打包成一个独立的镜像 ,运行时产生容器

  • WSL2 :让你在 Windows 里拥有一个真实的 Ubuntu 终端,适合从头学习、编译和调试 ORB-SLAM3。

  • Docker :把 ORB-SLAM3 和所有依赖打包成集装箱,适合快速验证、避免环境冲突。

14.CMD:老式的"命令提示符",像 DOS 时代的延续,简单但功能有限。

  • 处理脚本 :支持 .bat.cmd 文件,可以写简单的自动化脚本。

  • 常用命令

    • dir:列出目录内容

    • cd:切换目录

    • copydelmove:文件操作

    • ipconfig:查看网络配置

    • ping:测试网络连通性

15.PowerShell:现代化的命令行和脚本语言,功能强大,面向对象,适合自动化管理

  • 面向对象 :命令的输出是 .NET 对象 ,而不是纯文本。你可以直接访问对象的属性,比如 Get-Process 返回进程对象,可以取 .Name.CPU 等。

  • Cmdlet 命令 :采用"动词-名词"命名,如 Get-ChildItemSet-LocationNew-Item,易于理解和发现。

  • 强大的管道| 传递的是对象,可以链式处理

16.CMD 与 PowerShell 对比

特性 CMD PowerShell
推出时间 1980 年代(DOS 延续) 2006 年
设计理念 文本流 对象流
脚本扩展名 .bat / .cmd .ps1
管道传递 文本 .NET 对象
命令风格 dircopy Get-ChildItemCopy-Item
功能强度 基础文件/网络操作 系统管理、自动化、云服务、API 调用
跨平台 仅 Windows PowerShell 7+ 支持 Linux/macOS
适合场景 简单快速命令 复杂自动化、运维、开发

Win + X,选择"Windows PowerShell"或"终端"。也可以在开始菜单搜索"PowerShell"。管理员权限打开方式:右键选择"以管理员身份运行"。

17.概念:这几个是干什么的

▎ - Eigen:C++ 的线性代数库,SLAM 里所有矩阵运算、李群运算都靠它

▎ - OpenCV:读图、特征提取(ORB 特征)、图像金字塔

▎ - Boost:线程和序列化

▎ - xvfb:虚拟显示服务器------让需要"屏幕"的程序在没有屏幕的情况下跑起来,我们靠它跑headless

18.概念:**词袋模型(Bag of Words,

▎ DBoW2)**是回环检测的核心。做法是事先把海量图像特征聚成"视觉单词"建成字典(就是后面那个 100MB+ 的

▎ ORBvoc.txt),每帧图像表示成"我看到了哪些单词"。两帧图像如果单词组合高度相似,就判定"我来过这里"→

▎ 触发回环,把累积漂移一次性抹掉。

19.基本概念

20.说清楚形态:ORB-SLAM2 不是一个"软件",没有菜单按钮。它是一个 Pangolin

可视化窗口(1024×768),只读------你只能看,不能操作。跑起来自动弹出,关闭它程序就退出

22.ROS 本身不参与 ORB-SLAM3 的核心定位与建图计算,它扮演的是 "数据搬运工"和"硬件接口" 的角色。

21.Melodic 通常指的是 ROS Melodic Morenia ,它是机器人操作系统(Robot Operating System, ROS)

二、执行计划

阶段 0:装 OpenCV(唯一的外部依赖)

从 GitHub 下载官方预编译包(自解压 exe,约 180MB),解压到 D 盘:

https://github.com/opencv/opencv/releases → opencv-4.10.0-windows.exe

解压后你会得到 D:\opencv\build\{include, x64\vc16\lib}。

▎ 概念 ------为什么不用自己编 OpenCV:源码编译 OpenCV 要 20--40分钟,占用 10GB+,而官方预编译包直接可用。vc16 是

▎ VS2019/2022 的二进制格式,MSVC v141/v142/v143 之间官方保证 ABI 兼容,能直接链接。这是新手最容易走弯路的地方。

阶段 1:拉取移植仓库到 D 盘

cd /d && git clone --depth 1 https://github.com/Phylliida/orbslam-windows.git

(--depth 1 只拉最新提交,省时间------仓库有99MB)

阶段 2:编译四个库(顺序不能错)

DBoW2 →g2o →Pangolin →ORB_SLAM2

每次都是同一套动作(用 CMake-GUI):

  1. Source = 该库目录,Build = 该库目录下的 build/

  2. Configure →生成器选 Visual Studio 17 2022 + x64

  3. Generate →打开生成的 .sln

  4. 左上角切到 Release(默认是 Debug,切错必挂)

  5. 右键该库项目(不是 ALL_BUILD)→属性:

  • 常规 →配置类型 = 静态库 (.lib)

  • C/C++ →代码生成 →运行库 = 多线程 (/MT)

  1. 编译 ALL_BUILD

视频:

现在给我解答知识点,让我对整个流程框架有清晰的认识。ROB-SLAM2是干什么的?在跑通它的过程中用到的其他东西是什么?以什么 格式存放?实验中是如何使用到的?各个文件之间的联系是什么?以及他们是如何在电脑上运行起来的?还有相关文件夹下面的子文 件是干嘛用的?还有实验过程是跑在什么平台上?代码不是在vs上跑吗?整个项目的环境是如何构成以及如何运行的?请给我这个对 计算机零基础的小白进行详细的解答

> 给我列一个详细的清单,从零开始配置ROB-SLAM2到上手验证的详细步骤。直接列出详细步骤并解释每一步原理或功能。

相关推荐
Dawson Zhu2 天前
基于 OKF 知识图谱的 Text2SQL 领域知识注入实践——半导体晶圆厂数据资产知识库 MVP 剖析
人工智能·语言模型·架构·aigc·agi
Dawson Zhu4 天前
从“会回答“到“能执行“:AI Agent 的系统构成、运行机制与工程实践
人工智能·语言模型·架构·aigc·agi
Dawson Zhu5 天前
GraphRAG 原理、适用场景与工程落地:从关系建模视角做一次客观拆解
人工智能·语言模型·架构·aigc·agi
Dawson Zhu6 天前
AI 辅助调试陷入「反复修改」循环?用证据驱动的四步法破局
人工智能·语言模型·架构·aigc·agi
Sophnet云平台6 天前
Claude Code Agent Teams发布:多Agent协作编码意味着什么
gpt·ai·ai编程·claude·agi·codingplan
Dawson Zhu6 天前
Agent 记忆调用的上下文感知:从“能召回“到“敢开口“的决策框架
人工智能·语言模型·架构·aigc·agi
Dawson Zhu6 天前
工作流与 Agent 的工程选型:从“控制权归属“看 LLM 应用架构
人工智能·语言模型·架构·aigc·agi
外域速览7 天前
AI开始训练AI:黄仁勋喊AGI已到
大数据·人工智能·agi
夏洛克信徒7 天前
当黄仁勋说出“AGI已来“:2026年9月大模型风暴观察
人工智能·gpt·chatgpt·agi