一、基本概念
1.ORB-SLAM是什么?
视觉SLAM(即时定位与地图构建)系统, 凭视觉信息就能实时地估计自身位置,并同时构建出环境的地图。
2.ORB-SLAM3 是目前最有影响力的视觉/视觉惯性 SLAM 系统之一
3.它解决什么问题:SLAM = Simultaneous Localization and Mapping(同步定位与建图)。机器人在未知环境里跑,一边用相机/IMU 估计自己的位姿轨迹,一边构建环境地图。ORB-SLAM3 就是干这个的,输入是单目/双目/RGB-D 相机 + IMU,输出是相机轨迹 +
稀疏特征点地图。
- 核心特性
-
多传感器支持:单目、双目、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 公开数据集
上手路径(快速验证)
-
环境准备 :使用 Ubuntu 20.04 (兼容性最佳),确保内存 ≥16GB ,CPU ≥4核。
-
安装依赖 :使用
apt安装基础编译工具和库。 -
编译核心库 :依次编译安装 Pangolin (可视化)、OpenCV (图像处理,推荐 4.x 版本)、Eigen3(线性代数)。
-
编译 ORB-SLAM3 :下载源码,修改
CMakeLists.txt中的 C++ 标准,运行build.sh脚本。 -
下载数据集 :获取 EuRoC 数据集的 MH_01_easy 序列。
-
运行测试:执行单目示例命令,验证安装成功。
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:切换目录 -
copy、del、move:文件操作 -
ipconfig:查看网络配置 -
ping:测试网络连通性
-
15.PowerShell:现代化的命令行和脚本语言,功能强大,面向对象,适合自动化管理
-
面向对象 :命令的输出是 .NET 对象 ,而不是纯文本。你可以直接访问对象的属性,比如
Get-Process返回进程对象,可以取.Name、.CPU等。 -
Cmdlet 命令 :采用"动词-名词"命名,如
Get-ChildItem、Set-Location、New-Item,易于理解和发现。 -
强大的管道 :
|传递的是对象,可以链式处理
16.CMD 与 PowerShell 对比
| 特性 | CMD | PowerShell |
|---|---|---|
| 推出时间 | 1980 年代(DOS 延续) | 2006 年 |
| 设计理念 | 文本流 | 对象流 |
| 脚本扩展名 | .bat / .cmd |
.ps1 |
| 管道传递 | 文本 | .NET 对象 |
| 命令风格 | dir、copy |
Get-ChildItem、Copy-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):
-
Source = 该库目录,Build = 该库目录下的 build/
-
Configure →生成器选 Visual Studio 17 2022 + x64
-
Generate →打开生成的 .sln
-
左上角切到 Release(默认是 Debug,切错必挂)
-
右键该库项目(不是 ALL_BUILD)→属性:
-
常规 →配置类型 = 静态库 (.lib)
-
C/C++ →代码生成 →运行库 = 多线程 (/MT)
- 编译 ALL_BUILD






















视频:



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



















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






















