
当前SLAM的开源方案
当前SLAM(Simultaneous Localization and Mapping,即时定位与地图构建)领域的开源方案非常丰富,并且在持续快速发展。这些方案根据其主要使用的传感器、技术路线和应用场景可以分为几大类。
以下是当前主流和有影响力的开源SLAM方案的详细梳理:
一、 视觉SLAM (Visual SLAM)
视觉SLAM是研究最深入、方案最多的方向,仅使用摄像头作为主要传感器。
1. 经典中的经典:ORB-SLAM系列
ORB-SLAM2:
- 简介
: 由西班牙萨拉戈萨大学团队开发,是特征点法V-SLAM的巅峰之作。
- 特点
: 支持单目、双目和RGB-D相机。系统完整,包含跟踪、建图、重定位和闭环检测。精度极高,鲁棒性强,是学术界和工业界评估其他算法的基准(Benchmark)。
- 链接
: https://github.com/raulmur/ORB_SLAM2
- 简介
ORB-SLAM3:
- 多传感器支持
: 首次实现了视觉(单目/双目)与IMU的紧耦合(Visual-Inertial SLAM)。
- 多地图系统
: 能够在跟踪丢失后,无缝地在旧地图中重定位并继续建图,支持长时间、多场景运行。
- 精度和鲁棒性更高
: 尤其在IMU的加持下,对快速运动和纯旋转等挑战性场景处理得更好。
- 简介
: ORB-SLAM2的全面升级版,是目前功能最全、性能最强的开源V-SLAM框架之一。
- 特点
:
- 链接
: https://github.com/UZ-SLAMLab/ORB_SLAM3
- 多传感器支持
2. 直接法代表:DSO系列
- DSO (Direct Sparse Odometry)
:
- 简介
: 由慕尼黑工业大学(TUM)团队开发,是直接法的代表作。
- 特点
: 不提取特征点,而是直接优化像素灰度误差,对模糊、弱纹理场景有更好的表现。计算效率高,但对相机内参和曝光变化比较敏感。它主要是一个VO(视觉里程计),没有闭环。
- 链接
: https://github.com/JakobEngel/dso
- 简介
二、 视觉惯性SLAM (Visual-Inertial SLAM, VINS)
结合摄像头和IMU(惯性测量单元),极大地提升了系统的鲁棒性,是当前移动设备(如无人机、AR/VR)的主流方案。
1. 优化法标杆:VINS系列
VINS-Mono:
- 简介
: 由香港科技大学(HKUST)沈劭劼团队开发,是VIO(视觉惯性里程计)领域的里程碑式作品。
- 特点
: 采用非线性优化方法,实现了视觉与IMU的紧耦合。系统完整,包含初始化、重定位、闭环检测。代码质量高,文档齐全,是学习和研究VIO的首选。
- 链接
: https://github.com/HKUST-Aerial-Robotics/VINS-Mono
- 简介
VINS-Fusion:
- 简介
: VINS-Mono的扩展版,支持多传感器融合。
- 特点
: 支持单目/双目+IMU,甚至可以融合GPS。代码框架更具扩展性。
- 链接
: https://github.com/HKUST-Aerial-Robotics/VINS-Fusion
- 简介
2. 滤波器法代表:OpenVINS
- OpenVINS
:
- 简介
: 基于扩展卡尔曼滤波(EKF)的开源VIO方案,前身是MSCKF。
- 特点
: 计算效率比优化方法更高,延迟更低。代码质量和社区支持都很好,提供了一个与优化方法(如VINS-Mono)并行的技术路线。
- 链接
: https://github.com/rpng/open_vins
- 简介
三、 激光SLAM (LiDAR SLAM)
使用激光雷达(LiDAR)作为主要传感器,精度高、对光照不敏感,广泛应用于机器人导航、自动驾驶和高精地图测绘。
1. 2D激光SLAM经典:Cartographer
- 简介
: Google开源的2D和3D SLAM库。
- 特点
:
基于图优化,通过“子图(Submap)”的概念来构建全局地图,实时性与精度俱佳。
闭环检测能力强大,特别适合构建大规模、精确的室内地图。
与ROS(机器人操作系统)深度集成,是ROS社区中最主流的2D SLAM方案。
- 链接
: https://github.com/cartographer-project/cartographer
2. 3D激光SLAM里程碑:LOAM系列
LOAM (Lidar Odometry and Mapping):
- 简介
: 原始论文提出的方法,奠定了3D激光SLAM的基础。
- 特点
: 将点云按曲率分为“边缘点”和“平面点”,并分别进行匹配。实现了高精度、低漂移的激光里程计。但原始代码并未开源。
- 简介
A-LOAM (Advanced LOAM):
- 简介
: 对LOAM的C++实现,代码结构清晰,易于理解和使用,是学习LOAM思想最常用的版本。
- 链接
: https://github.com/HKUST-Aerial-Robotics/A-LOAM
- 简介
LeGO-LOAM (Lightweight and Ground-Optimized LOAM):
- 简介
: A-LOAM的轻量级优化版本,特别适合地面机器人。
- 特点
: 增加了地面点分割和点云聚类,有效减少了计算量。在保持精度的同时,可以在低功耗嵌入式设备上运行。
- 链接
: https://github.com/RobustFieldAutonomyLab/LeGO-LOAM
- 简介
3. 现代激光惯性紧耦合方案:LIO-SAM
- 简介
: 融合了LeGO-LOAM和IMU的紧耦合激光SLAM方案。
- 特点
:
基于因子图优化,将LiDAR、IMU甚至GPS数据紧密融合在一起。
鲁棒性极强,即使在LiDAR退化(如长廊)或快速运动场景下也能稳定工作。
是目前无人机、无人车等移动机器人领域非常火热的SOTA(State-of-the-art)方案。
- 链接
: https://github.com/TixiaoShan/LIO-SAM
四、 基于深度学习的SLAM (Deep Learning-based SLAM)
这是最新的发展趋势,利用神经网络来替代或增强传统SLAM管线中的模块(如深度估计、姿态估计)。
DROID-SLAM:
- 简介
: 一个端到端的深度学习SLAM框架,引起了巨大反响。
- 特点
: 使用循环神经网络(RNN)对视频帧序列进行迭代优化,同时估计相机姿态和稠密深度图。精度在多个数据集上超越了ORB-SLAM3等传统方法。
- 缺点
: 计算量巨大,需要高性能GPU,实时性是挑战。
- 链接
: https://github.com/princeton-vl/DROID-SLAM
- 简介
NICE-SLAM / iMAP (Implicit representation SLAM):
- 简介
: 这类方案不再使用点云或体素来建图,而是用一个神经网络(如NeRF)来隐式地表示整个三维场景。
- 特点
: 可以重建出非常高质量、带纹理的稠密地图,是三维重建的未来方向。
- 缺点
: 通常是离线处理,计算量极大。
- 链接
: https://github.com/cvg/nice-slam
- 最新进展
: Gaussian Splatting技术正在快速取代NeRF,因为它能实现高质量的实时渲染和重建,相关SLAM方案(如Gaussian-SLAM)也已出现。
- 简介
总结与选择建议
方案名称 | 主要传感器 | 核心特点 | 主要应用领域 |
|---|---|---|---|
| ORB-SLAM3 | 视觉(单/双目), IMU | 特征点法,精度高,多地图系统,鲁棒性强 | 学术研究,AR/VR,机器人定位基准 |
| VINS-Fusion | 视觉(单/双目), IMU | 优化法紧耦合,代码质量高,框架灵活 | 无人机,移动机器人,手持设备 |
| Cartographer | 2D/3D LiDAR | 图优化,子图构建,闭环强大,ROS友好 | 室内机器人导航,仓库机器人,服务机器人 |
| LIO-SAM | 3D LiDAR, IMU, GPS | 因子图紧耦合,鲁棒性极强,适合动态环境 | 自动驾驶,无人机测绘,户外机器人 |
| DROID-SLAM | 视觉(单目) | 端到端深度学习,精度高,稠密重建 | 前沿研究,未来可能用于高精度重建 |
如何选择?
- 根据你的硬件
:
只有普通摄像头:ORB-SLAM2/3。
有摄像头和IMU:VINS-Fusion (推荐) 或 ORB-SLAM3 (推荐)。
只有2D激光雷达:Cartographer (首选)。
有3D激光雷达和IMU:LIO-SAM (SOTA选择) 或 LeGO-LOAM (轻量级选择)。
- 根据你的应用场景
:
- 室内机器人
: Cartographer (2D) 或 ORB-SLAM3/VINS-Fusion (视觉)。
- 无人机/快速移动平台
: 必须用带IMU的方案,VINS-Fusion 或 LIO-SAM。
- 自动驾驶/户外大场景
: LIO-SAM 或其他更专业的激光方案。
- AR/VR
: ORB-SLAM3 或 VINS-Fusion。
- 室内机器人
- 根据你的目标
:
- 学习SLAM原理
: 从 ORB-SLAM2、VINS-Mono、A-LOAM 入手。
- 追求最高性能
: 关注 ORB-SLAM3、LIO-SAM。
- 探索前沿技术
: 研究 DROID-SLAM 和基于 Gaussian Splatting 的新方案。
介绍 MonoSLAM
我们来详细介绍一下 MonoSLAM。
如果说ORB-SLAM是当今视觉SLAM的“王者”,那么MonoSLAM就是开创这个王朝的“鼻祖”。它在SLAM发展史上具有里程碑式的意义。
一、 MonoSLAM概览
- 全称
: Monocular SLAM (单目即时定位与地图构建)
- 提出者
: Andrew Davison 教授及其团队 (帝国理工学院)
- 时间
: 2003年首次提出概念,2007年发表了完整的论文,成为该领域的开山之作。
- 核心贡献
: 首次实现了基于单个普通摄像头(单目相机)的实时SLAM系统。
在MonoSLAM出现之前,人们普遍认为仅用单个摄像头实时地、鲁棒地追踪相机位姿并构建环境地图是极其困难甚至不可能的。Davison的工作证明了这一点是可行的,从而开辟了视觉SLAM这一全新的研究领域。
二、 核心思想与技术路线
MonoSLAM的本质是一个基于滤波理论(特别是扩展卡尔曼滤波 - EKF)的SLAM系统。它的核心思想可以概括为:
在一个统一的概率框架下,同时估计相机位姿和所有空间特征点(地图点)的位置。
这个“统一的概率框架”就是EKF。让我们分解一下它的工作流程:
1. 状态表示 (State Representation)
系统的状态由一个巨大的状态向量 (State Vector)
x和一个协方差矩阵 (Covariance Matrix)P来描述。- 状态向量
x: 包含了当前相机的所有状态(位置、方向、速度、角速度)以及地图中每一个已观测到的特征点的三维坐标。
x = [ x_v, y_1, y_2, ..., y_n ] x_v: 相机的状态 (13维: 位置、方向四元数、线速度、角速度)。
y_i: 第
i个特征点的三维坐标 (x, y, z)。
- 协方差矩阵
P: 这是一个巨大的方阵,描述了状态向量中所有变量的不确定性以及它们之间的相关性。
P_ij表示状态i和状态j之间的协方差。这是EKF-SLAM的关键,一个点的观测会影响所有其他点和相机位姿的估计,因为它们在这个矩阵中是相关的。
2. 工作流程 (EKF-SLAM Pipeline)
MonoSLAM遵循经典的EKF预测-更新循环:
a. 预测 (Prediction)
- 做什么
: 当相机移动时,根据一个运动模型(例如,假设相机匀速或匀加速运动)来预测相机在下一时刻的位姿。
- 结果
: 状态向量
x中的相机部分x_v被更新。同时,由于预测是不完美的,协方差矩阵P会被更新,表示系统的不确定性增大了。
- 做什么
b. 观测 (Observation) & 数据关联 (Data Association)
- 做什么
: 获取新的一帧图像。系统需要在新图像中找到之前已经加入地图的那些特征点。
- 怎么做
: 它利用预测的相机位姿和特征点的三维位置,将地图点投影回当前的二维图像平面上。由于存在不确定性(由协方差矩阵
P描述),这个投影不是一个点,而是一个椭圆形的搜索区域。系统就在这个椭圆区域内搜索匹配的特征点。这一步被称为“数据关联”。
- 做什么
c. 更新 (Update)
不仅相机的位姿估计会变得更准确。
被观测到的那个特征点的三维位置估计也会更准。
由于协方差矩阵
P的存在,所有其他未被直接观测到的特征点的位置估计也会被间接修正和优化。
- 做什么
: 一旦找到了匹配的特征点(即观测到了),系统就计算观测值(图像中特征点的实际位置)和预测值(投影到图像上的位置)之间的误差。
- 结果
: 利用这个误差,卡尔曼增益会被计算出来,并用于修正整个状态向量
x。这是一个非常关键的步骤: 同时,协方差矩阵
P也会被更新,表示系统在观测之后整体的不确定性减小了。
d. 特征初始化 (Feature Initialization)
当在图像中检测到一个新的、稳定的角点时,它不能立即被加入到状态向量中,因为单目相机无法仅凭一帧图像确定其深度。
系统会持续追踪这个新的候选点,直到它从多个不同的视角被观测到。然后通过三角化来估计其初始的三维位置和不确定性,之后才能正式将其加入到状态向量和协方差矩阵中。
三、 MonoSLAM的局限性
尽管MonoSLAM是开创性的,但它的EKF框架也带来了几个致命的缺点,这些缺点促使了后续SLAM技术的发展:
计算复杂性与可扩展性差 (Poor Scalability)
这是最主要的问题。协方差矩阵
P的大小是(13 + 3N) x (13 + 3N),其中N是特征点的数量。每次更新的计算复杂度约为 O(N²)。
这意味着当地图中的特征点数量增加时(例如超过几百个点),计算量会急剧上升,系统很快就无法再保持实时性。因此,MonoSLAM只能用于构建小范围的地图。
- 学习SLAM原理
脆弱的数据关联 (Fragile Data Association)
EKF框架对数据关联的正确性要求极高。如果一个特征点匹配错误,错误的观测信息会通过协方差矩阵污染整个系统状态,可能导致地图和定位的快速发散,且难以恢复。
高斯假设的限制 (Gaussian Assumption)
EKF假设所有的不确定性都服从高斯分布。但在SLAM问题中,尤其是在数据关联不明确时,不确定性可能是多峰的(即一个点可能匹配到多个位置)。高斯假设是一种近似,有时会导致不一致的估计。
四、 历史地位与影响
MonoSLAM的地位不在于它现在是否实用,而在于它的历史贡献:
- 证明了可行性
: 它向世界证明了单目实时SLAM是可能的,激发了后续大量的研究。
- 奠定了基础
: 它建立了一套完整的“跟踪+建图”的在线处理框架,后续很多SLAM系统都沿用了这个思路。
- 催生了新技术
: 为了克服MonoSLAM的
O(N^2)复杂性等缺点,研究者们转向了新的数学工具,最终导致了基于图优化(Graph-based)和关键帧(Keyframe-based)的现代SLAM方法的诞生,如PTAM(第一个引入关键帧思想的V-SLAM)和后来的ORB-SLAM系列。这些新方法将计算复杂度控制在与地图大小无关的常数时间内,从而实现了大规模环境的建图。
总结一下:
特性
MonoSLAM
核心算法 扩展卡尔曼滤波 (EKF) 主要贡献 第一个实时单目视觉SLAM系统
工作方式 在线滤波,每一帧都更新所有状态
优点 概念清晰,提供了一套完整的概率理论框架
致命缺点 O(N²) 计算复杂度 ,无法构建大地图
历史地位 开山鼻祖 ,为后续所有V-SLAM研究铺平了道路
可以说,没有MonoSLAM的探索,就没有今天百花齐放的视觉SLAM方案。学习SLAM,理解MonoSLAM是理解其发展脉络和背后思想演变的关键一步。
介绍 PTAM
我们来详细介绍 PTAM (Parallel Tracking and Mapping)。
如果说MonoSLAM是开创单目视觉SLAM的“创世者”,那么PTAM就是进行革命性架构重组的“颠覆者”。它所奠定的框架至今仍是现代主流视觉SLAM系统的基石。
一、 PTAM概览
- 全称
: Parallel Tracking and Mapping (并行跟踪与建图)
- 提出者
: Georg Klein 和 David Murray 教授 (牛津大学)
- 时间
: 2007年
- 核心贡献
: 首次将SLAM问题拆分为两个并行的线程:一个用于实时相机跟踪,另一个用于后端地图构建。
这个看似简单的“拆分”思想,彻底解决了MonoSLAM面临的核心瓶颈,使得视觉SLAM的性能和鲁棒性都得到了质的飞跃。PTAM最初是为PC上的增强现实(AR)应用而设计的。
视频演示: 观看原始视频能最好地理解其并行思想。视频中通常会同时显示:
相机视角和AR效果(证明跟踪线程的实时性)。
一个独立的窗口显示地图点和关键帧的构建过程(展示建图线程的工作)。
https://www.youtube.com/watch?v=Y6_qM8_T1B8
二、 核心思想:跟踪与建图的分离
在PTAM之前,像MonoSLAM这样的系统是“一体化”的。每一帧图像的到来,都会触发对相机位姿和整个地图的更新(EKF更新)。当地图变大时,这个更新过程的计算量会变得无法承受,系统也就失去了实时性。
PTAM的革命性在于,它认为**“跟踪”和“建图”**这两个任务对实时性的要求是完全不同的:
跟踪线程 (Tracking Thread): 速度至上
- 目标
: 快速、精确地计算出当前帧的相机位姿。这是AR等应用流畅体验的关键。
- 做法
: 它不关心构建一个完美的全局地图。它只将当前帧的特征点与一个小范围的局部地图进行匹配。这个局部地图通常只包含离当前相机最近的一些关键帧和地图点。因为处理的数据量很小,所以速度极快。
- 运行频率
: 与相机帧率同步,例如30Hz或60Hz。
- 比喻
: 它像一个短跑运动员,只专注于眼前的下一步,追求极致的速度。
建图线程 (Mapping Thread): 精度至上
- 目标
: 构建一个全局一致且精确的3D地图。
- 做法
: 它不处理每一帧图像,这会造成巨大的计算冗余。相反,它只处理被跟踪线程认为是“有价值”的帧,这些帧被称为关键帧 (Keyframes)。
它会对这些关键帧以及它们所观测到的所有地图点执行一个计算量巨大但精度极高的优化算法——捆绑调整 (Bundle Adjustment, BA)。
- 运行频率
: 在后台以较低的频率运行,不影响跟踪线程的实时性。
- 比喻
: 它像一个马拉松运动员,不计较一时的快慢,目标是保证整个赛程的路径最优化。
通过这种并行化设计,PTAM成功地解耦了实时性和精度的矛盾。
三、 关键创新点详解
跟踪与建图并行化 (Parallelization)
这是最核心的贡献。它使得SLAM系统可以同时拥有低延迟的前端(跟踪)和高精度的后端(建图)。这个“前端-后端”的架构被后来的所有主流V-SLAM系统(如ORB-SLAM)所继承。
- 目标
关键帧 (Keyframes)
- 减少冗余
: 避免了在相机静止或小范围移动时加入大量相似的帧。
- 控制计算量
: 使得后端的优化(BA)只在一系列稀疏但重要的关键帧上进行,计算量大大降低。
这是另一个天才般的想法。系统不再需要处理每一帧,只在相机移动了足够远的距离或视角发生显著变化时,才将当前帧作为一个关键帧插入到地图中。
- 好处
:
- 减少冗余
使用捆绑调整 (Bundle Adjustment, BA) 代替EKF
PTAM放弃了EKF,转而使用在计算机视觉领域更为成熟和精确的BA算法进行后端优化。
- BA是什么
: 它是一个非线性优化过程,可以同时调整所有关键帧的位姿和所有地图点的三维坐标,以最小化重投影误差(即3D地图点投影回2D图像的位置与实际观测到的特征点位置之间的误差)。
- 优点
: BA被认为是解决SfM(Structure from Motion)和SLAM问题的“黄金标准”方法,其精度远高于EKF。
小地图模型 (Small Map Model) 用于跟踪
为了让跟踪线程更快,PTAM的跟踪器只在一个由少数几个关键帧组成的“小地图”或“活动区域”中进行匹配,而不是在整个全局地图中搜索。这保证了无论全局地图有多大,前端跟踪的速度基本保持不变。
四、 PTAM的局限性
尽管PTAM是革命性的,但它依然是一个早期的研究原型,存在一些明显的不足:
缺乏闭环检测与重定位 (No Loop Closure / Relocalization)
这是其最大的缺陷。当相机运动形成一个环路回到起点时,PTAM无法识别出“我曾经来过这里”,因此无法修正长时间累积的漂移。
如果跟踪丢失(例如相机被遮挡或移动过快),它也无法在已建地图的区域内重新找回自己的位置。
地图规模有限 (Limited Map Scale)
虽然比MonoSLAM好得多,但它的全局BA仍然需要优化所有的关键帧。当关键帧数量达到几百个时,全局BA的耗时依然会变得很长。它主要适用于桌面或房间级别的小场景。
特征点不够鲁棒 (Less Robust Features)
PTAM使用FAST角点和简单的patch(图像块)描述子,这些特征对旋转和尺度变化的鲁棒性不强,限制了其在更复杂场景下的应用。
五、 历史地位与影响
PTAM的地位是承上启下,开创V-SLAM新纪元。
- 承上
: 它解决了MonoSLAM(EKF时代)的核心痛点——可扩展性问题。
- 启下
: 它所建立的**“并行跟踪与建图”、“关键帧”和“后端BA优化”**三大核心思想,构成了现代视觉SLAM系统的标准框架。
可以毫不夸张地说,后来的ORB-SLAM、VINS-Mono等所有顶级的开源V-SLAM方案,其系统架构的灵魂都源自于PTAM。它们在PTAM的基础上,增加了更鲁棒的特征点(如ORB)、强大的闭环检测模块和高效的重定位功能,从而构建出了更完整、更强大的SLAM系统。
总结对比
特性
MonoSLAM (2007)
PTAM (2007)
ORB-SLAM (现代代表)
核心算法 扩展卡尔曼滤波 (EKF)
非线性优化 (BA) 非线性优化 (BA)
系统架构 单线程,跟踪与建图耦合
双线程,跟踪与建图并行 三线程 (跟踪, 建图, 闭环) 地图优化 每帧更新整个状态
仅在关键帧上做BA 在关键帧上做BA,有闭环优化
关键概念 状态向量、协方差矩阵
关键帧、并行化 关键帧、词袋模型、闭环
主要缺点 O(N²)复杂度, 无法扩展
无闭环、无重定位 -
学习PTAM,就是理解现代视觉SLAM系统设计的“第一性原理”。
介绍 ORB-SLAM
我们来深入介绍 ORB-SLAM。这是一个在SLAM发展史上无法绕过的名字,它代表了传统特征点法视觉SLAM的巅峰之作。
如果说MonoSLAM是“创世者”,PTAM是“革命者”,那么ORB-SLAM就是集大成者和“统一者”。它吸收了前辈们的精华,并补上了所有关键的短板,构建了一个功能极其完整、性能极为强大的SLAM系统。
一、 ORB-SLAM 概览
- 全称
: ORB-SLAM (SLAM system based on ORB features)
- 提出者
: Raúl Mur-Artal, J. M. M. Montiel, 和 Juan D. Tardós (西班牙萨拉戈萨大学)
- 时间
:
- ORB-SLAM
: 2015年 (单目)
- ORB-SLAM2
: 2017年 (增加了双目和RGB-D)
- ORB-SLAM3
: 2020年 (增加了视觉-惯性融合和多地图系统)
- ORB-SLAM
- 核心贡献
: 在PTAM的框架基础上,构建了第一个功能完整的、包含跟踪、建图、重定位和闭环检测的单目SLAM系统,并在各种场景下都表现出极高的精度和鲁棒性。
ORB-SLAM是当今学术界和工业界评估其他新算法性能的黄金基准(Benchmark)。如果一个新算法声称自己很优秀,通常第一个要比较的对象就是ORB-SLAM。
二、 核心思想与关键创新
ORB-SLAM的整体架构继承自PTAM的“并行跟踪与建图”思想,但它通过引入几项关键技术,将这个框架的潜力发挥到了极致。
1. 核心特征:ORB (Oriented FAST and Rotated BRIEF)
SLAM系统的第一步是特征提取。ORB-SLAM没有选择计算量大的SIFT,而是选择了性能和速度兼备的ORB特征。
- Oriented FAST
: 一种非常快速的角点检测算法,ORB为其增加了方向信息,使其具有旋转不变性。
- Rotated BRIEF
: 一种二进制描述子,计算和匹配速度极快。原始的BRIEF不具备旋转不变性,ORB通过使用FAST计算出的主方向来旋转BRIEF的采样模式,解决了这个问题。
- 优点
: 速度快、对旋转和一定程度的尺度变化具有鲁棒性,非常适合实时SLAM应用。
2. 完整的系统架构:三大并行线程
PTAM是双线程,ORB-SLAM在此基础上增加了一个专门用于闭环的线程,形成了经典的三线程架构。
① 跟踪线程 (Tracking):
- 职责
: 实时定位每一帧相机。这是系统的前端。
- 工作流程
:
- 职责
从当前帧提取ORB特征。
使用上一帧的位姿作为初始估计,在局部地图中寻找匹配点,快速优化得到当前帧的精确位姿。
如果跟踪丢失(比如移动过快或被遮挡),该线程会启动全局重定位 (Relocalization) 模式。
判断当前帧是否可以成为一个新的关键帧,并将其送入后续线程。
② 局部建图线程 (Local Mapping):
- 职责
: 管理和优化局部地图,保证地图的局部一致性。
- 工作流程
:
处理跟踪线程送来的新关键帧。
通过三角化生成新的3D地图点。
执行一次局部捆绑调整 (Local Bundle Adjustment),优化一小片区域内(当前关键帧及其共视邻居)的关键帧位姿和地图点。
剔除冗余的关键帧和不稳定的地图点,保持地图的精简。
- 职责
③ 闭环检测线程 (Loop Closing):
- 职责
: 修正长时间的累积漂移。这是ORB-SLAM相对于PTAM最大的改进。
- 工作流程
:
当一个新的关键帧被创建时,该线程计算它的**词袋(Bag-of-Words)**表示。
在历史关键帧数据库中,利用词袋模型快速识别出相似的场景,找到闭环候选帧。
通过几何验证(Sim3变换求解)来确认闭环。
一旦确认闭环,执行**位姿图优化 (Pose Graph Optimization)**来快速修正所有关键帧的累积误差。
最后,启动一次全局捆绑调整 (Global Bundle Adjustment),在后台对整个地图进行终极优化,得到一个全局一致的地图。
3. 核心技术:词袋模型 (Bag-of-Words, BoW)
这是ORB-SLAM实现高效重定位和闭环检测的秘密武器。
- 原理
: 将图像看作一篇“文档”,将ORB特征看作“单词”。通过一个预先训练好的、巨大的“视觉词典”(通常是K-Means树),可以将一张图片快速转换成一个稀疏的数值向量。
- 应用
:
- 快速场景识别
: 比较两张图片的词袋向量,可以极快地判断它们的相似度。这使得在成千上万的历史关键帧中寻找闭环候选帧成为可能。
- 数据关联加速
: 在跟踪时,可以只在与当前帧词袋向量相似的地图点中进行匹配,缩小搜索范围。
- 快速场景识别
4. 数据结构:共视图 (Covisibility Graph)
- 定义
: 一个连接关键帧的图。如果两个关键帧观测到了大量相同的地图点,它们之间就有一条边。
- 作用
:
- 定义局部地图
: 跟踪和局部建图线程只在当前关键帧及其在共视图中的近邻上进行操作,极大地控制了计算量。
- 局部闭环
: 在位姿图优化时,共视图提供了关键帧之间的连接关系。
- 定义局部地图
三、 进化之路:ORB-SLAM2 与 ORB-SLAM3
ORB-SLAM2 (2017):
- 解决了尺度不确定性
: 单目SLAM无法确定场景的真实大小,而双目和RGB-D相机可以直接获得深度信息,从一开始就构建具有真实尺度的地图。
- 精度和鲁棒性更高
: 深度信息使得三角化更准确,系统也更不容易跟丢。
- 核心升级
: 支持双目相机 (Stereo) 和 RGB-D 相机。
- 优势
:
它与ORB-SLAM共享绝大部分后端代码,是业界应用最广泛的版本之一。
- 解决了尺度不确定性
ORB-SLAM3 (2020):
- 核心升级
:
- 地位
: 目前功能最全面、性能最顶尖的开源视觉SLAM框架之一。
- 核心升级
- 紧耦合的视觉-惯性SLAM (Visual-Inertial SLAM)
: 将IMU数据与视觉信息紧密融合。IMU提供了高频的运动信息,极大地增强了系统在快速运动、旋转和弱纹理场景下的鲁棒性。
- 多地图系统 (Multi-Map System)
: 这是其最大的突破。如果跟踪丢失,系统不再像以前一样完全失败,而是会自动创建一个新的子地图。当相机回到已建区域并成功重定位时,系统可以将新旧地图无缝地合并起来。这使得ORB-SLAM3能够支持长时间、大规模的运行。
四、 总结与地位
特性
PTAM (2007)
ORB-SLAM(2) (2015/17)
系统架构 双线程 (跟踪 + 建图)
三线程 (跟踪 + 局部建图 + 闭环) 核心特征 FAST + Patch
ORB (旋转不变性,速度快) 后端优化 全局BA (计算昂贵)
局部BA + 位姿图优化 + 全局BA 闭环检测 无 有 (基于DBoW2词袋模型) 重定位 无 有 (基于DBoW2词袋模型) 传感器支持 单目
单目, 双目, RGB-D 鲁棒性 一般,易跟丢
非常高,是行业基准 历史地位:
ORB-SLAM是现代视觉SLAM技术的一个里程碑和集大成者。它不仅在学术上定义了一个完整的SLAM系统应该包含哪些模块,并且其高质量的开源代码也极大地推动了整个社区的发展,是无数SLAM研究者和工程师入门与进阶的必学项目。LSD-SLAM
我们来详细介绍 LSD-SLAM。
在视觉SLAM的发展史上,如果说ORB-SLAM代表了**特征点法(Indirect Method)的巅峰,那么LSD-SLAM就是直接法(Direct Method)**的开创性代表作。它提出了一条与特征点法完全不同的技术路线,对后来的SLAM研究产生了深远的影响。
一、 LSD-SLAM 概览
- 全称
: Large-Scale Direct Monocular SLAM (大规模直接法单目SLAM)
- 提出者
: Jakob Engel, Jörg Stückler, Daniel Cremers (慕尼黑工业大学TUM)
- 时间
: 2014年
- 核心贡献
: 首次实现了一个能够构建大规模、半稠密地图的实时单目直接法SLAM系统。
它的名字揭示了其三大核心特点:
- Large-Scale (大规模)
: 它通过位姿图优化(Pose Graph Optimization)来处理闭环和修正累积漂移,使其能构建比早期SLAM系统更大的地图。
- Direct (直接法)
: 这是它最根本的特性。它不提取ORB、SIFT等特征点,而是直接操作图像的像素灰度值来进行跟踪和建图。
- Monocular (单目)
: 它仅使用单个普通摄像头。
视频演示: 观看视频可以直观地看到它生成的“半稠密”地图是什么样子,以及它如何在纹理较少的区域工作。
https://www.youtube.com/watch?v=GnuQzP3gty4二、 核心思想:直接法与半稠密建图
LSD-SLAM的哲学与ORB-SLAM截然不同。
- 特征点法 (ORB-SLAM)
: 图像 → 提取关键点(特征) → 匹配特征 → 优化位姿和地图点。它处理的是高度抽象后的信息。
- 直接法 (LSD-SLAM)
: 图像 → 直接使用像素灰度 → 优化位姿和像素深度。它处理的是最原始的像素信息。
1. 核心原理:光度一致性假设 (Photometric Consistency)
直接法的基本假设是:一个空间点在不同视角下的相机图像中,其像素亮度(灰度值)是不变的。
基于这个假设,LSD-SLAM的工作方式是:
假设我们已经知道了一个关键帧的位姿和其中一些像素点的深度,当新的一帧图像进来时,我们可以根据一个待优化的相机位姿,将那个关键帧中的像素点投影到新的图像上。如果位姿是正确的,那么投影点位置的灰度值应该和原始灰度值非常接近。
LSD-SLAM的目标就是调整相机位姿,使得这个光度误差(Photometric Error)最小化。2. “半稠密” (Semi-Dense) 的选择
当时SLAM地图的密度主要有三种:
- 稀疏 (Sparse)
: 像ORB-SLAM,只重建几百到几千个特征点。优点是速度快,缺点是地图信息太少。
- 稠密 (Dense)
: 像DTAM,重建图像中的每一个像素点。优点是地图细节丰富,缺点是计算量巨大,难以实时。
LSD-SLAM选择了一个巧妙的折中方案——半稠密。它只选择图像中梯度(灰度变化)比较明显的像素点进行重建。
- 为什么是梯度?
因为在梯度平坦的区域(如白墙),像素灰度几乎没有变化,微小的位姿移动不会引起光度误差的变化,也就无法进行优化。只有在梯度明显的区域,优化才有意义。
- 好处
: 既获得了比稀疏地图多得多的几何信息(地图看起来更“密”),又避免了稠密建图的巨大计算开销,实现了实时性。
3. 系统工作流程
LSD-SLAM的流程大致可以分为三个主要部分:
a. 跟踪 (Tracking)
- 目标
: 实时计算当前帧相对于最新关键帧的位姿。
- 方法
: 它直接将当前帧与最新的关键帧进行配准,通过最小化光度误差来优化一个 Sim(3) 变换(包含旋转、平移和尺度)。这是一个非常快速的过程,保证了前端的实时性。
- 目标
b. 深度图估计 (Depth Map Estimation)
- 目标
: 为新创建的关键帧生成一个半稠密的深度图。
- 方法
: 当系统决定创建一个新的关键帧时,这个关键帧的深度信息是未知的。LSD-SLAM会在后续接收到的帧中,利用这些帧与新关键帧之间的小基线立体视觉,来不断地估计和优化新关键帧中那些高梯度像素的深度值。这是一个持续的、概率性的滤波过程,直到深度估计收敛。
- 目标
c. 地图优化 (Map Optimization)
- 目标
: 处理闭环,修正大尺度下的累积漂移。
- 方法
: 系统维护一个由关键帧组成的位姿图 (Pose Graph)。当它检测到当前帧与历史某个关键帧形成了闭环时,它会计算这两个关键帧之间的Sim(3)约束,并将其添加到位姿图中。然后,通过图优化来调整所有关键帧的位姿,以消除全局的累积误差。
- 目标
三、 LSD-SLAM的优势与劣势
优势:
- 在弱纹理区域表现更好
: 像白墙、走廊等特征点稀少的场景,是特征点法的噩梦。但只要这些区域存在一些微弱的梯度(如光照阴影),LSD-SLAM依然可以稳定工作。
- 更稠密的地图重建
: 生成的半稠密地图包含了比稀疏点云更多的场景几何信息,更适合导航和避障。
- 无特征提取开销
: 省去了特征提取和匹配这一计算步骤。
- 对运动模糊不敏感
: 因为它优化的是整片像素区域的光度,而不是单个像素点,所以对轻微的运动模糊有一定的抵抗能力。
劣势:
- 对光度变化极其敏感
: 这是直接法的“阿喀琉斯之踵”。光照的突然变化、相机的自动曝光/自动白平衡都会严重违反“光度一致性”假设,导致跟踪失败。
- 需要精确的相机内参
: 对相机的焦距、畸变等参数非常敏感,不准确的内参会导致地图变形。
- 对快速旋转处理不佳
: 大角度的旋转会使得前后两帧的图像差异过大,导致直接法优化陷入局部最优而失败。
- 初始化要求高
: 需要一段较为平缓的平移运动来有效地初始化第一张深度图。
四、 历史地位与影响
LSD-SLAM是与ORB-SLAM同时代的伟大作品,它成功地将直接法从理论和离线应用带入了实时SLAM领域,向世人展示了另一条完全可行的技术道路。
特性
LSD-SLAM (直接法代表)
ORB-SLAM (特征点法代表)
核心原理 光度一致性误差最小化 几何重投影误差最小化 处理对象 原始像素灰度值
抽象的ORB特征点
地图密度 半稠密 (Semi-Dense) 稀疏 (Sparse)
鲁棒性 对弱纹理鲁棒
对光照变化、大视角变化鲁棒
主要弱点 对光照、相机曝光敏感
在弱纹理、重复纹理区域易失败
后续发展 催生了更极致的DSO (Direct Sparse Odometry)
发展为功能更全的ORB-SLAM2/3
总结来说,LSD-SLAM的贡献在于:
- 验证了直接法的实时可行性
,并将其推广到大规模场景。
提出了半稠密这一创新的折中方案,平衡了地图细节和计算效率。
它和它的后续者(如DSO)一起,构成了视觉SLAM领域与特征点法分庭抗礼的直接法阵营,极大地丰富了SLAM的技术生态。
SVO
我们来介绍 SVO (Semi-direct Visual Odometry)。这个方案非常独特和重要,因为它巧妙地融合了特征点法和直接法的优点,开创了一种全新的技术路线,对性能要求极高的应用(如无人机)产生了巨大影响。
一、 SVO 概览
- 全称
: Semi-direct Visual Odometry (半直接视觉里程计)
- 提出者
: Christian Forster, Matia Pizzoli, Davide Scaramuzza (苏黎世大学和ETH Zurich,Scaramuzza教授的实验室)
- 时间
:
- SVO 1.0
: 2014年
- SVO 2.0
: 2017年 (增加了对多相机系统、鱼眼相机和IMU的支持)
- SVO 1.0
- 核心贡献
: 提出了一种结合直接法进行快速跟踪,并结合特征点法进行建图和优化的混合式视觉里程计方法,实现了前所未有的处理速度。
SVO的设计目标非常明确:极致的速度。它能够在单个CPU核心上以数百Hz的频率运行,这对于需要极低延迟控制的无人机等高速运动平台至关重要。
注意: SVO的原始定义是一个VO (Visual Odometry),而不是一个完整的SLAM系统。它专注于前端的高速位姿估计,本身不包含闭环检测和全局优化。
视频演示: SVO的视频通常会展示无人机在复杂环境中高速飞行的场景,突显其惊人的速度和鲁-
https://www.youtube.com/watch?v=2YnIMfw6bJY二、 核心思想:“半直接法” (Semi-direct)
SVO的精髓在于其“半直接”的混合思想。它没有完全依赖直接法,也没有完全依赖特征点法,而是取二者之长,补二者之短。
1. 工作流程分解
SVO的运行可以分解为两个主要线程,但其内部逻辑与PTAM或ORB-SLAM有很大不同:
① 运动估计线程 (Motion Estimation Thread) - 直接法主导,追求速度
在上一步快速得到位姿初值后,SVO会进一步提炼位姿。它在当前帧中寻找与上一帧特征点对应的特征角点,然后最小化这些2D特征点之间的几何距离。
这一步像特征点法,但它不是通过描述子匹配,而是在一个极小的搜索范围内寻找,所以速度非常快。
SVO不直接对齐两幅稠密或半稠密的图像(像LSD-SLAM那样)。相反,它将当前帧与上一个关键帧中的稀疏特征点进行对齐。
具体来说,它将上一个关键帧中已有的3D地图点投影到当前帧,然后直接优化这些投影点周围一小块图像(patch)的光度误差,从而快速计算出当前帧的位姿。
- 这就是“半直接”的第一个含义
: 它用的是直接法(优化光度误差),但作用的对象是稀疏的特征点(而不是像LSD-SLAM那样的高梯度像素)。
稀疏模型-帧对齐 (Sparse Model-based Image Alignment):
特征对齐 (Feature Alignment):
- 职责
② 建图线程 (Mapping Thread) - 特征点法主导,保证精度
这是SVO的另一个创新。当在新的关键帧中提取出新的FAST角点时,它们的深度是未知的。
SVO会为每个新的候选特征点启动一个深度滤波器。在后续的帧中,系统会持续追踪这个特征点,并利用多视角的几何关系,不断地更新这个点深度的概率分布(通常是高斯分布)。
当一个点的深度估计收敛到足够高的确定性时,它才会被正式作为一个3D地图点加入到地图中。
- 这就是“半直接”的第二个含义
: 它用特征点(FAST角点)来建图,但深度初始化过程是一个基于概率的滤波,而不是传统的三角化。
当系统决定插入一个新的关键帧时,建图线程会对这个新的关键帧以及它所能观测到的地图点进行一次局部的BA优化(Bundle Adjustment)。这完全是特征点法的思路,用于保证地图的局部精度。
位姿和结构优化 (Pose and Structure Refinement):
深度滤波 (Depth Filter):
三、 SVO的优势与劣势
优势:
- 极高的速度
: 这是SVO最显著的优点。通过直接法进行帧间跟踪,避免了耗时的特征描述子计算和匹配,使其处理速度远超ORB-SLAM等纯特征点法系统。
- 高效率
: 它只处理稀疏的特征点,计算量比LSD-SLAM等半稠密直接法小得多。
- 精度良好
: 虽然是VO,但由于后端有BA优化,其轨迹精度在很多场景下都非常高。
- 低延迟
: 极快的处理速度意味着极低的延迟,这对需要快速反馈的机器人控制系统至关重要。
劣势:
- 不是完整的SLAM系统
: 原始的SVO没有闭环和重定位功能。这意味着它会不可避免地产生累积漂移,并且跟踪丢失后无法恢复。很多用户会将其作为前端,然后自己添加位姿图后端来实现完整的SLAM。
- 对光照变化敏感
: 因为其核心跟踪步骤依赖于光度一致性,所以它和所有直接法一样,对光照变化和相机自动曝光比较敏感。
- 初始化要求高
: 需要用户提供良好的初始运动来让深度滤波器收敛。
- 对快速旋转不够鲁棒
: 和直接法类似,剧烈的旋转会破坏光度一致性假设,导致跟踪失败。
四、 历史地位与影响
SVO的地位在于它开创了混合式SLAM/VO的先河,完美地展示了如何将直接法和特征点法的优点结合起来。
特性
LSD-SLAM (纯直接法)
ORB-SLAM (纯特征点法)
SVO (半直接法)
跟踪方法 直接法 (像素对齐)
特征点法 (描述子匹配)
直接法 (Patch对齐) 建图方法 深度图滤波
三角化 + BA
深度滤波 + BA 核心数据 高梯度像素
ORB特征点
FAST角点 处理速度 中等
较慢 (30Hz级)
极快 (>100Hz级) 系统完整性 完整SLAM
完整SLAM
视觉里程计(VO) 影响:
SVO证明了“速度与精度”并非完全不可兼得,其混合思想为后续的SLAM研究提供了宝贵的思路。
它成为了高速无人机领域的事实标准前端。许多先进的无人机视觉导航系统(如VINS-Mono)在设计时都受到了SVO的启发,或者直接将其思想融入自己的前端。
- SVO 2.0
进一步扩展了其能力,支持多相机和IMU,使其成为一个更加强大和鲁棒的VIO(视觉惯性里程计)框架,在机器人领域有着广泛的应用。
总而言之,SVO是一个专注于速度和效率的“偏科生”,它虽然不是一个功能全面的SLAM系统,但其创新的“半直接”思想和卓越的性能,使其在视觉里程计领域占据了不可动摇的地位。
RTAB-MAP
好的,我们来详细介绍 RTAB-Map (Real-Time Appearance-Based Mapping)。这是一个非常独特且功能强大的开源SLAM方案,尤其以其强大的闭环检测能力和对多种传感器(视觉、激光、RGB-D)的普适性而闻名。
如果你需要一个能够构建外观和拓扑一致的大规模地图,并且支持各种传感器的“瑞士军刀”式SLAM系统,RTAB-Map绝对是首选之一。
一、 RTAB-Map 概览
- 全称
: Real-Time Appearance-Based Mapping (基于外观的实时建图)
- 提出者
: Mathieu Labbé 和 François Michaud (加拿大舍布鲁克大学)
- 时间
: 2013年首次提出,并持续活跃更新至今。
- 核心贡献
: 提出了一种基于外观的在线闭环检测方法,并将其与图优化(Graph-Based SLAM)相结合,构建了一个能够处理长时间、大规模场景的SLAM系统。
它的名字揭示了其核心思想:
- Real-Time (实时)
: 整个系统被设计为在线运行。
- Appearance-Based (基于外观)
: 它的闭环检测不依赖于精确的几何匹配,而是依赖于对场景“外观”的记忆和识别。
RTAB-Map不仅仅是一个算法,更是一个框架。它与ROS(机器人操作系统)深度集成,提供了大量的工具、可视化界面和传感器驱动,使其非常易于使用和扩展。
二、 核心思想:外观闭环与图优化
RTAB-Map的架构可以理解为一个图优化SLAM系统,其灵魂在于它独特的闭环检测和内存管理机制。
1. 图的构建
RTAB-Map将世界表示为一个位姿图(Pose Graph):
- 节点 (Node)
: 代表机器人在某个时间点的位置。每个节点都存储了丰富的信息,包括:
- 位姿 (Pose)
: 机器人当时的坐标和方向。
- 传感器数据
: 如RGB图像、深度图、2D/3D激光扫描数据。
- 外观描述子
: 通常是SURF、SIFT或ORB等特征点,以及一个词袋(BoW)向量,用于代表该位置的“外观”。
- 位姿 (Pose)
- 边 (Edge)
: 连接两个节点,表示它们之间的空间关系。主要有两种边:
- 顺序边 (Sequential Edge)
: 连接时间上连续的两个节点,由**视觉里程计(Visual Odometry, VO)或激光里程计(Lidar Odometry)**提供。这条边表示“我从上一个位置移动了这么多”。
- 闭环边 (Loop Closure Edge)
: 连接时间上不连续但空间上很近的两个节点。这条边表示“我发现我现在的位置就是我以前来过的某个地方”。
- 顺序边 (Sequential Edge)
2. 核心模块:闭环检测与内存管理
这是RTAB-Map最精妙的部分,它模仿了人类的记忆机制。
a. 工作内存 (Working Memory, WM)
- 比较方式
: 使用词袋模型快速计算新节点与WM中旧节点的外观相似度。
- 几何验证
: 如果找到一个外观相似的候选节点,系统会使用传感器数据(如点云配准)来精确计算它们之间的相对位姿,从而确认闭环。
- 概念
: 类似于人类的“短期记忆”。系统会将最近的一些节点保留在工作内存中。
- 闭环检测
: 当一个新的节点被创建时,系统首先将其与工作内存中的所有节点进行比较。
这保证了对近期经过区域的快速闭环。
- 比较方式
b. 长期内存 (Long-Term Memory, LTM)
- 概念
: 类似于人类的“长期记忆”。当工作内存满了或者一个节点在WM中停留太久而没有被用于闭环时,它就会被转移到长期内存中。
- 内存压缩
: 在转移到LTM时,节点所携带的原始传感器数据(如点云)可能会被丢弃,只保留其位姿、外观描述子(BoW向量)和一些统计信息。这极大地节省了内存,使得系统可以存储成千上万个历史位置。
- 闭环检测
: 新节点不仅与WM比较,还会与LTM中的所有节点进行外观相似度比较。如果在一个遥远的历史位置找到了闭环,系统会从硬盘中**取回(Retrieve)**这个旧节点的邻近节点信息,重新进行几何验证,并添加闭环边。
- 概念
c. 图优化
每当一条新的闭环边被成功添加后,它就为整个位姿图提供了一个强大的约束。
RTAB-Map会立即运行一个图优化算法(如g2o或GTSAM),调整图中所有节点的位姿,使得整个图的误差最小化。这会瞬间修正累积的漂移,使地图全局一致。
三、 RTAB-Map的优势与特点
- 强大的闭环检测和大规模建图能力
: 其独特的内存管理机制使其能够高效地处理长时间、大范围的SLAM任务,而不会因为地图增大而崩溃。
- 传感器普适性 (Sensor Agnostic)
:
它可以接受任何提供位姿和传感器数据的里程计前端。你可以用ORB-SLAM2、VINS-Mono作为它的视觉里程计,也可以用任何一种激光雷达里程计。
它原生支持RGB-D相机(如Kinect, RealSense)、双目相机和2D/3D激光雷达。这使其应用范围极广。
- 与ROS深度集成,易于使用
: RTAB-Map提供了非常完善的ROS包,用户几乎可以通过配置文件和启动文件来搭建一个完整的SLAM系统,而无需编写太多代码。它还附带了一个强大的3D可视化工具
rtabmap-viz。 - 同时生成多种地图
:
- 点云地图/栅格地图
: 用于导航和可视化。
- 拓扑地图
: 描述环境的连通性,可用于高级路径规划。
- 点云地图/栅格地图
- 持续活跃的社区和维护
: 开发者Mathieu Labbé非常活跃,项目一直在更新,修复bug并增加新功能。
四、 局限性
- 依赖于前端里程计
: RTAB-Map本身主要是一个后端(闭环和图优化)。它的整体性能在很大程度上取决于你为它提供的前端里程计(Odometry)的质量。如果前端漂移太大或频繁丢失,RTAB-Map也无能为力。
- 配置复杂
: 由于其高度的灵活性和支持多种传感器,其参数配置也相对复杂。对于新手来说,要针对特定硬件和场景调优出最佳性能可能需要一些时间。
- 外观依赖
: 它的闭环严重依赖于场景的外观。在外观高度重复(如长长的、一模一样的走廊)或剧烈变化的场景(如季节变化、昼夜交替),闭环可能会失败或出错。
五、 总结与应用场景
特性
RTAB-Map
ORB-SLAM3
LIO-SAM
定位 SLAM后端 (闭环+图优化)
完整的V-SLAM/VIO系统 完整的Lidar-Inertial SLAM系统 核心优势 大规模闭环、多传感器 精度高、多地图、鲁棒VIO
紧耦合、高鲁棒性、适合动态环境
传感器 RGB-D, Stereo, Lidar(2D/3D) 视觉(单/双目), IMU
3D Lidar, IMU, GPS
灵活性 极高 ,可插拔前端
较低,是一个集成系统
较低,是一个集成系统
适用场景 需要构建全局一致大地图的场景
AR/VR, 无人机 , 需要高精度位姿
自动驾驶, 无人机测绘 , 户外机器人
什么时候选择RTAB-Map?
当你的目标是构建一个大型环境(如整个办公楼、商场或户外区域)的全局一致地图时。
当你的机器人平台同时拥有多种传感器(例如,一个既有RGB-D相机又有2D激光雷达的机器人),并希望将它们的信息都利用起来时。
当你已经有了一个不错的里程计(Odometry)来源,但需要一个强大的闭环检测后端来消除长期漂移时。
当你希望在ROS框架下快速搭建和测试一个SLAM应用时。
总而言之,RTAB-Map是一个功能强大、灵活且成熟的SLAM框架,特别擅长处理大规模的建图任务和多传感器融合。
其他 openslam.org : DVO-SLAM RGBD-SLAM-V2 DSO 等
SLAM 未来发展趋势
这是一个非常好的问题。SLAM技术在经历了经典几何方法的成熟期后,正处在一个由人工智能(AI)和多传感器融合驱动的深刻变革时期。它不再仅仅满足于“我在哪里,地图什么样?”这个基本问题,而是向着更高级的感知、理解和交互迈进。
未来的发展趋势可以概括为以下几个核心方向:
趋势一:与深度学习的深度融合 (The Deep Learning Revolution)
这是目前最重要、最活跃的趋势。AI正在从“辅助”角色转变为“主导”角色,重塑SLAM的各个模块。
1. 端到端SLAM (End-to-End SLAM)
- 现状
: 以DROID-SLAM为代表,试图用一个巨大的神经网络,将视频像素作为输入,直接输出相机位姿和稠密地图。
- 优势
: 精度惊人,在很多数据集上超越了传统方法。
- 挑战与未来
: 计算量极大,依赖昂贵的GPU,实时性差,且网络像一个“黑箱”,缺乏传统几何方法的可解释性和鲁棒性保证。未来的研究方向是在保证精度的同时,追求轻量化、高效率和更好的泛化能力。
2. AI增强的混合式SLAM (AI-Enhanced Hybrid SLAM)
这是目前最实际、落地最快的路线。即用AI模块替代或增强传统SLAM管线中最困难的部分。
- AI前端
: 使用SuperPoint/SuperGlue等深度学习特征点,替代ORB等传统特征,获得对光照、视角变化更鲁棒的特征匹配。
- AI后端/闭环
: 使用AI进行视觉位置识别 (Visual Place Recognition, VPR)。传统词袋模型在环境变化(如季节、昼夜)时容易失效,而AI模型可以学习到更抽象、更本质的场景特征,实现“终身SLAM (Life-Long SLAM)”。
- AI语义分割
: 在建图前,先用YOLO、SegNet等网络对图像进行语义分割,识别出动态物体(如行人、车辆)。将这些动态物体从SLAM处理中剔除,可以极大地提升在复杂动态环境下的鲁棒性,只建立一个干净的静态背景地图。
3. 神经辐射场 (NeRF) 与高斯溅射 (Gaussian Splatting)
这是地图构建方式的革命,目标是建立可渲染的高保真数字孪生。
- NeRF-SLAM
: 用一个小型神经网络本身来作为地图。这个网络可以渲染出任意视角下的照片级真实感图像。但它非常缓慢,主要用于离线重建。
- 高斯溅射SLAM (Gaussian-Splatting SLAM)
: 这是2023年以来最火爆的方向。它用成千上万个带颜色的三维高斯椭球来表示场景,既能实现比NeRF更快的实时渲染,又能保持微分性质,使其可以作为SLAM后端进行优化。它被认为是未来AR/VR和数字孪生应用中最有前途的建图技术。
趋势二:追求极致的鲁棒性与长期自主性
让SLAM走出实验室,在真实、复杂、变化的世界里7x24小时不间断地稳定工作。
1. 动态与复杂环境适应性
未来的SLAM不仅要能滤除动态物体,还要能理解和预测这些物体的行为,甚至将动态物体也作为地图的一部分进行跟踪,这对于自动驾驶和人机协作至关重要。
2. 终身SLAM (Life-Long SLAM)
系统需要具备在同一环境中长期运行的能力,能够适应环境的渐进或剧烈变化(如装修、季节更替、光照变化),并能持续更新和维护地图,而不是每次都从头开始。这高度依赖于AI增强的位置识别能力。
3. 多地图与多智能体协作
- 多地图管理
: 类似于ORB-SLAM3的多地图系统会成为标配,允许机器人在不同区域(如建筑物的不同楼层)创建独立的子地图,并在识别出连接时自动合并它们。
- 协作SLAM (Collaborative SLAM)
: 多个机器人或设备(如一个车队的自动驾驶汽车,或一个仓库里的机器人集群)共享信息,实时地共同构建和维护同一份地图。这可以极大地提高建图效率和精度,并通过云端进行大规模协同。
趋势三:更深入的多传感器融合
单一传感器总有其极限,融合是提升性能的必然选择。
1. 异构传感器的紧耦合
- 视觉+IMU+LiDAR
: 将这三者在一个统一的因子图优化框架下进行紧耦合(如LIO-SAM的思想)将成为高性能移动机器人的标配。
- 目标
: 充分利用每种传感器的优点:IMU提供高频运动和重力方向,视觉提供丰富的纹理信息,LiDAR提供精确的几何结构。
2. 新型传感器的引入
- 事件相机 (Event Camera)
: 没有传统的快门和帧率,只在像素亮度变化时才产生信号。
- 优势
: 极高的动态范围(不怕亮暗剧变)、极低的延迟、没有运动模糊。
- 应用
: 非常适合高速运动(无人机、赛车)和光照条件极端恶劣的场景。事件相机SLAM是一个非常活跃的研究领域。
- 优势
- 热成像相机
: 能够在黑夜、烟雾、恶劣天气中工作。
- 雷达 (Radar)
: 具有强大的穿透性,不受天气影响,可以与视觉、激光雷达形成互补。
趋势四:面向应用的语义化与交互
SLAM的最终目的是服务于上层应用,因此地图需要变得“可理解”。
- 语义SLAM
: 地图不再仅仅是点、线、面,而是包含了语义标签。地图会告诉你“这是一把椅子”、“这是一扇门”、“这是一条可通行的走廊”。
- 交互式SLAM
: 人可以通过指令与SLAM系统交互(“记住这个房间叫‘我的办公室’”),或者系统可以主动请求帮助(“我不确定这里是否是闭环,请帮我确认”)。
- 可供性建图 (Affordance Mapping)
: 地图不仅描述物体是什么,还描述物体能用来做什么。例如,地图会标注出“平面(可以放置物品)”、“把手(可以抓取)”、“路径(可以行走)”。这是实现通用服务机器人的关键一步。
总结:未来SLAM的画像
发展趋势
核心技术
解决的问题
未来形态
深度学习融合 AI混合模型, Gaussian Splatting
精度、鲁棒性、地图保真度
高保真、可渲染 的数字孪生地图
极致鲁棒性 动态物体处理, 终身VPR
环境变化、长时间运行
7x24小时稳定运行 的“永不迷路”系统
多传感器融合 紧耦合, 事件相机, 雷达
极端运动、恶劣环境
全天候、全场景 适应的感知系统
语义与交互 语义分割, 可供性理论
地图的“可理解性”和“可用性”
能与机器人进行高级交互的智能地图
总而言之,未来的SLAM将是一个AI驱动、多传感器深度融合、能够理解环境并支持长期自主运行的智能感知系统,其构建的地图也将从纯粹的几何模型,演变为一个丰富、鲜活、可交互的虚拟世界。
视觉+惯性导航SLAM
我们来系统地讲解视觉惯性导航SLAM (Visual-Inertial SLAM, VINS),也常被称为视觉惯性里程计 (Visual-Inertial Odometry, VIO)。这是当前移动机器人(尤其是无人机、AR/VR设备)领域最核心、最主流的定位技术。
可以这样理解:如果说人类的定位系统是靠**眼睛(视觉)和内耳前庭(惯性感知)**协同工作的,那么VINS就是机器人的这套系统。
一、 为什么需要融合视觉和IMU?
答案是:它们是天作之合,能够完美互补对方的缺点。
1. 单独使用视觉 (Vision-only) 的缺陷:
- 尺度不确定性 (Scale Ambiguity)
: 单目相机无法确定世界的真实大小。向前移动1米看到汽车,和向前移动10厘米看到一个汽车模型,在图像上可能是一样的。
- 需要纹理
: 在白墙、纯色地面等弱纹理或无纹理区域,视觉SLAM会因为找不到特征点而立刻失效。
- 对快速运动和模糊敏感
: 当相机移动过快或旋转过快时,图像会产生严重模糊,导致特征点提取和匹配失败,跟踪丢失。
- 对光照敏感
: 光照剧烈变化会影响特征点的外观,导致匹配困难。
2. 单独使用惯性导航 (IMU-only) 的缺陷:
- IMU是什么
: 惯性测量单元 (Inertial Measurement Unit),通常包含一个加速度计和一个陀螺仪。
- 加速度计
: 测量三个轴向的加速度(包含重力)。
- 陀螺仪
: 测量三个轴向的角速度。
- 加速度计
- 致命缺陷:快速漂移 (Rapid Drift)
IMU输出的是瞬时运动信息。要获得位置和姿态,需要对加速度进行二次积分,对角速度进行一次积分。
积分过程会不断累积微小的测量误差。这个误差会随着时间二次方甚至三次方增长,导致计算出的位置和姿态在几秒钟内就与真实情况产生巨大偏差,完全不可用。
- 比喻
: 就像一个被蒙住眼睛的人,只靠感觉走路,一开始可能走得直,但很快就会偏离方向而不自知。
3. 融合后的奇迹:“1 + 1 > 2”
- IMU帮助视觉
:
在视觉失效时(如进入纯白房间、相机被遮挡),IMU可以提供短时间、高频率的位姿估计,让系统**“盲飞”**一小段,大大增强了鲁棒性。
为视觉跟踪提供非常好的运动初值,缩小特征匹配的搜索范围,加快处理速度。
帮助解决单目的尺度不确定性问题。因为IMU的加速度计能感受到重力,它对世界的尺度是可知的。
- 视觉帮助IMU
:
视觉能够观测到全局的、稳定的环境特征,相当于给IMU提供了一个绝对的参考。
视觉观测可以反过来精确地估计出IMU的零偏(Bias),这是IMU误差的主要来源之一。通过在线标定和校正零偏,可以极大地抑制IMU的长期漂移。
二、 如何进行融合?(核心技术路线)
融合方法主要分为两大类:松耦合 (Loosely Coupled) 和 紧耦合 (Tightly Coupled)。
1. 松耦合 (Loosely Coupled)
- 思路
: 将视觉SLAM和IMU积分看作两个独立的模块。
视觉SLAM独立运行,输出一个低频(如10Hz)但比较准的位姿。
IMU独立进行积分,输出一个高频(如200Hz)但不准的位姿。
最后用一个滤波器(通常是扩展卡尔曼滤波 EKF),将这两个模块输出的位姿结果进行融合。
- 依赖于前端里程计
- 优点
: 实现简单,模块化,两个系统互不干扰。
- 缺点
: 信息损失严重。视觉SLAM内部的丰富信息(如特征点、地图等)没有被IMU直接利用。IMU的信息也没有直接帮助视觉进行优化。这种方法精度和鲁棒性都较差,现在已非主流。
2. 紧耦合 (Tightly Coupled)
- 思路
: 这是当前的主流和标杆。它不再融合“结果”,而是将视觉和IMU的原始测量值放在一个统一的优化框架中进行联合优化。
- 核心
: 在一个大的优化问题中,同时包含两类误差项:
- 视觉误差项 (重投影误差)
: 3D地图点投影回图像的位置与实际观测到的特征点位置之间的误差。这是所有视觉SLAM的核心。
- IMU误差项 (IMU预积分误差)
: 两个关键帧之间的IMU积分结果,与这两个关键帧位姿所代表的相对运动之间的误差。
- 视觉误差项 (重投影误差)
- 优化目标
: 同时调整相机位姿、IMU零偏、地图点位置等所有状态变量,使得视觉误差和IMU误差的总和最小。
- 优点
: 传感器信息利用最充分,能够实现最高的精度和鲁棒性。
- 缺点
: 系统状态变量多,公式推导复杂,计算量大。
三、 主流的紧耦合VINS方案
紧耦合方法又可以根据其后端优化器的不同,分为基于滤波和基于优化两派。
1. 基于优化的方法 (Optimization-based)
- 原理
: 维护一个包含过去一段时间内关键帧和地图点的滑动窗口,在窗口内进行捆绑调整 (Bundle Adjustment, BA) 或 图优化。
- 代表方案
:
- VINS-Mono / VINS-Fusion
: 由香港科技大学沈劭劼团队开发,是优化法VIO的里程碑式作品。代码质量极高,包含初始化、闭环等完整模块,是学术界和工业界最常用的VIO框架之一。
- ORB-SLAM3
: 在ORB-SLAM2的基础上,加入了紧耦合的IMU,并设计了多地图管理系统,是目前功能最全、性能最强的开源VINS之一。
- VINS-Mono / VINS-Fusion
- 优点
: 精度高,因为它能同时优化窗口内的多个历史状态。
2. 基于滤波的方法 (Filter-based)
- 原理
: 使用扩展卡尔曼滤波 (EKF) 来维护系统状态。每一帧新的观测到来,都用于更新当前的状态和协方差。
- 代表方案
:
- OpenVINS (前身为 MSCKF)
: 最著名的开源滤波法VIO。它不是将特征点加入到状态向量中(这会导致维度爆炸),而是巧妙地利用多个历史相机位姿之间的几何约束来更新滤波器。
- OpenVINS (前身为 MSCKF)
- 优点
: 计算效率高,延迟低,因为不需要存储和优化一个大的滑动窗口。
四、 经典开源方案对比
方案名称
核心方法
主要特点
优势与应用场景
VINS-Mono / Fusion 优化法 代码经典,文档齐全,支持单/双目/GPS融合
学术研究基准,无人机,移动机器人
ORB-SLAM3 优化法 功能最全,有强大的闭环和多地图管理
AR/VR,需要长时间、大范围、高鲁棒性运行的场景
OpenVINS 滤波法 (EKF) 效率高,延迟低,代码质量好
对计算资源和延迟有苛刻要求的嵌入式平台
总结
视觉惯性SLAM(VINS)通过紧密融合视觉传感器和IMU,极大地提升了定位系统的精度、鲁棒性和对动态环境的适应能力,解决了各自单独使用时的致命缺陷。它已经成为现代移动智能设备(尤其是那些需要快速、灵活运动的设备)进行自我定位和环境感知的黄金标准技术。
语义SLAM
我们来深入探讨语义SLAM (Semantic SLAM)。这是SLAM领域一个非常前沿和重要的发展方向,它标志着SLAM正从单纯的“几何感知”迈向更高层次的“认知与理解”。
一、 什么是语义SLAM?
简单来说,传统SLAM回答了两个问题:
- 我在哪里?
(定位, Localization)
- 周围环境长什么样?
(建图, Mapping)
它构建的地图是几何地图,通常是点云、栅格或网格。这个地图告诉我们空间中哪个位置有障碍物,但它不知道这个障碍物是什么。
而语义SLAM在传统SLAM的基础上,增加了一个更深层次的问题:
3. 地图中的这些东西分别是什么? (理解, Understanding)它构建的是语义地图。在这个地图里,每一个点、每一个面、每一个物体都拥有一个语义标签(例如:“墙壁”、“地板”、“桌子”、“椅子”)。
一个直观的类比:
- 传统SLAM地图
: 就像一张只有黑白轮廓的建筑平面图,你知道哪里是墙,哪里是空地,但不知道哪个房间是卧室,哪个是厨房。
- 语义SLAM地图
: 就像一张精装修的彩色平面图,不仅有墙和空地,还明确标注了“卧室”、“厨房”、“沙发”、“餐桌”等信息。
二、 为什么需要语义SLAM?(动机与优势)
语义信息为机器人和AR/VR等应用带来了革命性的能力提升,使其能够像人一样理解和交互。
高级人机交互:
- 传统指令
: “向前走3米,左转90度,再走2米。”
- 语义指令
: “去厨房,把桌子上的杯子拿给我。”
这个简单的指令背后,机器人需要知道哪里是“厨房”,什么是“桌子”,哪个是“杯子”。
- 思路
提升SLAM自身性能 (语义反哺几何):
- 更鲁棒的跟踪
: 物体具有刚性约束和持久性。例如,一张桌子不会突然移动或变形。通过识别和持续跟踪像桌子这样的物体,即使相机的部分视野被遮挡或纹理缺失,系统也能保持稳定的定位。
- 更智能的数据关联
: 传统SLAM可能会把两把外观相似但不同的椅子错误地关联起来。而语义SLAM知道“这是A椅子”,“那是B椅子”,从而避免错误的闭环。
- 滤除动态物体
: 通过深度学习模型识别出“人”、“车”等动态物体,并在建图时将其忽略,可以构建一个更干净、更准确的静态环境地图,这在动态繁忙的环境中至关重要。
- 更鲁棒的跟踪
高级导航与任务规划:
机器人可以根据语义信息进行更智能的路径规划。例如,“沿着走廊走,穿过那扇开着的门。”
服务机器人可以在语义地图中寻找特定物品或执行特定任务(如在办公室里找到所有垃圾桶并清空)。
增强现实 (AR) 的真实感:
AR应用需要让虚拟物体与真实世界无缝交互。语义SLAM可以告诉AR系统哪里是“地面”(虚拟角色可以在上面行走),哪里是“墙壁”(可以挂虚拟画作),哪里是“沙发”(虚拟的猫可以躺在上面)。
三、 语义SLAM是如何工作的?(核心架构)
语义SLAM不是一个单一的算法,而是一个将传统SLAM框架与深度学习语义分割模型相结合的系统。其典型的架构通常包含并行的两个主要流程:
几何流 (Geometry Stream):
这就是一个标准的SLAM系统,如ORB-SLAM2/3。
它负责处理相机的几何信息,进行定位和构建基础的几何地图(点云)。
语义流 (Semantic Stream):
这是一个深度学习模型(通常是卷积神经网络CNN),负责图像的语义分割。
对于输入的每一帧图像,它会输出一张语义分割图,图中每个像素都被赋予一个类别标签(如
person,car,building,road)。常用的模型包括 YOLO (用于物体检测), Mask R-CNN, SegNet, DeepLab等。
融合步骤:
这两个流程并行运行,最关键的一步是将语义信息**“贴”到几何地图上,这个过程被称为数据融合或投影**。
2D到3D的投影: 系统利用SLAM计算出的相机位姿和几何地图中的3D点,将语义流输出的2D图像语义标签,投影到3D空间中,为每个3D地图点赋予一个语义标签。
概率性融合与一致性检查:
一个3D点可能会在不同视角、不同时间被多次观测到,并且语义分割模型可能会给出不一致的预测(例如,这次识别为“椅子”,下次识别为“凳子”)。
因此,系统通常会为每个3D点维护一个概率分布,记录它被识别为各类物体的概率,并随观测次数的增加而更新,最终选择概率最高的标签。
后端优化:
在后端,语义信息可以作为新的约束加入到图优化中。例如,识别出的多个属于同一物体的地图点,可以被约束为一个刚体,共同运动,从而优化地图和轨迹。
四、 主流语义SLAM方案与代表作
目前还没有像ORB-SLAM那样具有绝对统治地位的开源语义SLAM框架,但有很多优秀的研究工作:
- SemanticFusion / ElasticFusion
: 较早的基于RGB-D相机的实时稠密语义建图系统,它将语义分割与一个高质量的稠密SLAM系统结合。
- SLAM++
: 早期探索基于物体的SLAM思想的代表作。它的地图由一系列物体(如桌子、椅子)组成,而不是点云。
- VSO (Visual-Semantic Odometry)
: 将语义信息(特别是物体检测)用于提升视觉里程计的鲁棒性。
- Kimera
: 一个来自MIT的开源库,非常全面,它能够同时构建度量-语义地图(Metric-Semantic Map),并支持多智能体协作。
五、 挑战与未来
- 计算开销
: 实时运行一个高质量的SLAM系统同时还要运行一个庞大的深度学习模型,对计算资源(尤其是嵌入式设备)是巨大的挑战。
- 数据关联的一致性
: 如何处理语义预测的不一致性和不确定性,是保证地图质量的关键。
- 模型的泛化能力
: 在一个数据集上训练的语义模型,在另一个全新的环境中可能表现不佳。
- 更高级的场景理解
: 未来的语义SLAM将不仅仅是给物体贴标签,而是构建一个包含物体、房间及其之间相互关系的场景图 (Scene Graph),真正实现机器人的认知智能。
总结
特性
传统SLAM
语义SLAM
目标 定位与几何建图
定位、建图与场景理解 地图类型 几何地图 (点云/栅格)
语义地图 (带标签的点云/物体图) 核心技术 射影几何、图优化、滤波
传统SLAM + 深度学习语义分割 机器人能力 导航、避障
高级交互、智能任务规划、场景感知 主要挑战 动态环境、弱纹理、累积漂移
计算开销、语义一致性、模型泛化 语义SLAM是连接虚拟世界和物理世界的桥梁,是实现真正智能机器人和沉浸式AR体验的关键使能技术。它代表了SLAM从“看见”到“看懂”的飞跃。
5466

被折叠的 条评论
为什么被折叠?



