基础知识

同时定位与地图构建(SLAM)

同时定位与地图构建(SLAM)让移动机器人能够在从未见过的空间中构建地图,同时利用这份尚未完成的地图判断自己在其中的位置。
这两个问题无法先后依次解决——对位置的错误估计会污染地图,而被污染的地图又会导致下一次位置估计出错——因此 SLAM 必须将两者同时求解。
发布于2026-07-18更新于2026-07-22阅读约 12 分钟

实际效果如下:

Google 官方的 Cartographer 演示视频,展示传感器在空间中移动时,如何实时根据 LiDAR 数据构建 3D 点云地图。

01定义:一个先有鸡还是先有蛋的问题

为什么建图与定位必须同时求解

机器人学研究者 Hugh Durrant-Whyte 与 Tim Bailey 在其 2006 年发表的奠基性教程论文中提出了这一核心问题:将一台移动机器人放置在一个未知环境中的未知位置,它能否在逐步构建该环境一致地图的同时,确定自己在其中的位置?他们将解决这一问题称为让机器人真正实现自主的“圣杯”。

之所以无法拆分成两个独立步骤,常被形容为一个先有鸡还是先有蛋的问题:构建精确地图需要知道机器人每一时刻所处的位置,而判断机器人的位置又需要先有一份地图来比对传感器读数。Durrant-Whyte 与 Bailey 自己的解释更进一步——机器人观测到的每一个地标,都是相对于自身存在不确定性的位置测得的,因此由此得到的地图估计在统计上都与同一个位置误差相关联。

地图与位置必须联合估计——两者都无法先行求解。

位置估计利用当前地图,求出机器人所处的位置
地图利用当前位置,将新的观测结果放入地图

从里程计漂移到 SLAM 的诞生

SLAM 之所以存在,是因为替代方案——航位推算——很快就会失效。一篇 1997 年关于里程计误差建模的论文说得很直白:由于车轮打滑、地面不平以及车轮增量离散采样带来的微小误差,里程计的位置误差会随着机器人运动时间的延长“无限制地累积”。

这一领域可以追溯到 1986 年在旧金山举行的 IEEE 机器人与自动化会议,Peter Cheeseman、Jim Crowley 与 Hugh Durrant-Whyte 等研究者开始将统计估计方法应用于地图构建与定位。而“SLAM”这一缩写本身,直到近十年后的 1995 年一篇关于自动导引车定位的论文中才被正式提出。

与 GPS 的区别

卫星定位(GPS)是机器人确定自身位置的另一种方式。

SATELLITE-BASED

GPS

依赖外部卫星信号。

  • 需要开阔的天空视野
  • 在室内、地下和高楼之间可能不可靠,甚至完全无法使用
ONBOARD SENSORS

SLAM

机器人移动时,靠机载传感器自行建立参考坐标系。

  • 不依赖任何外部信号——正是在 GPS 信号薄弱之处最有用
  • 室内定位的一种选择;依靠地面标记等固定基础设施的方案详见下文

02三大算法家族与回环检测

在 GPS 无法覆盖、也没有部署地面标记等固定基础设施的地方,机器人只能依靠自身的机载传感器来求解这一联合估计问题。SLAM 算法大致可分为三大家族:EKF-SLAM、FastSLAM 与基于图优化的 SLAM。

1987 〜

EKF-SLAM

这是经典的基于滤波器的方法:机器人位姿与地标位置通过扩展卡尔曼滤波器(Extended Kalman Filter)被追踪在同一个状态向量中。

  • 根源可追溯到 1980 年代末 Peter Cheeseman、Randall Smith 与 Hugh Durrant-Whyte 的统计学研究
  • 随着地标数量增加,计算量会急剧上升
2002

FastSLAM

粒子滤波器同时保存多条候选机器人轨迹,每条轨迹各自配有一个针对每个地标的小型 EKF。

  • 由 Michael Montemerlo、Sebastian Thrun、Daphne Koller 与 Ben Wegbreit 在 AAAI 2002 上提出
  • 作为比纯 EKF-SLAM 更具可扩展性的替代方案而提出

来源Montemerlo et al., AAAI 2002

1997 〜

基于图优化的 SLAM

机器人位姿成为图中的节点,传感器测量结果成为边,整张图通过全局最小二乘优化求解。

  • 下文提到的 Cartographer 与 ORB-SLAM 所使用的后端

处理流程是如何运作的

在这三者中,基于图优化的 SLAM 如今是应用最广泛的一种——下面来看它的处理流程,从原始传感器数据到地图的更新。

1传感器数据

来自 LiDAR、相机等传感器的原始读数——每个处理周期都会有新的一帧数据到来。

2前端(依赖传感器)

从该传感器的数据中提取运动估计和地标位置——具体方法因传感器类型而异。

3后端(不依赖传感器)

将估计结果注册进位姿图并重新优化——无论输入来自哪种传感器,这一处理过程都相同。

4位姿图与地图

机器人轨迹与地图当前的最优估计,将被带入下一个周期。

MathWorks 官方的“Autonomous Navigation”系列,对位姿图优化——也就是上文流程中的后端步骤——做了更深入的讲解。

基于图优化的 SLAM 核心在于回环检测:通过传感器数据识别出机器人回到了此前到访过的位置,再利用这一匹配结果一次性修正整张图中累积的漂移误差。

1机器人回到已建图区域
2传感器数据与此前的观测相匹配
3匹配结果修正整张地图的漂移误差

正是这种修正,让机器人的地图不会随着探索时间的增加而越来越失真。

回环检测并非总能正确工作。当不同地点看起来相似——也就是感知混淆——系统可能会把一个位置误认成另一个位置,并插入错误的约束,导致地图不但没有改善,反而变得更差。2026 年的一篇基准测试论文(预印本,尚未经过同行评审)在公里级合成户外序列上测试了 ORB-SLAM3,结果显示:在地貌重复的沙漠环境中,由于系统接受了一次错误匹配,开启回环检测使某次运行的位置误差从 4.12 米升至 37.85 米。

从 ORB-SLAM 到基础模型 SLAM

基于图优化的这一支系统,在 1990 年代的起源之后仍在持续演进——先是吸收了计算机视觉研究中照片级真实感 3D 渲染的技术,最近更进一步,转向以通用的 3D 重建基础模型为基础,而不再依赖专为 SLAM 从零训练的网络。

  1. 2015

    ORB-SLAM

    实时单目视觉 SLAM

  2. 2021

    ORB-SLAM3

    新增视觉-惯性融合与多地图支持

  3. 2024

    Gaussian Splatting SLAM

    以 3D 高斯为地图表示,实时生成照片级真实感渲染

  4. 2025

    MASt3R-SLAM

    以 3D 重建基础模型作为 SLAM 的先验知识,而非专用的 SLAM 网络

MASt3R-SLAM 作者自己发布的演示视频(Murai et al., CVPR 2025),展示了实时构建出的高密度 3D 重建结果。

03LiDAR SLAM 与视觉 SLAM

算法家族只是划分维度之一;SLAM 同样可以按感知所依赖的传感器类型来划分。

SENSOR: LASER

LiDAR SLAM

通过激光测距直接测量周围几何形状,因此无需环境光也能工作。

  • Google 于 2016 年 10 月 5 日开源的 Cartographer 库,支持实时 2D 和 3D 建图以及 ROS 集成
  • 代价是需要承担专用传感硬件的成本,旋转式设备还会增加机械结构的复杂性

来源Google Open Source Blog, Oct 2016

SENSOR: CAMERA

视觉 SLAM(VSLAM)

使用普通摄像头,可将专用传感器成本控制在较低水平。

  • 萨拉戈萨大学的 Raúl Mur-Artal、J.M.M. Montiel 和 Juan D. Tardós 于 2015 年提出的 ORB-SLAM(获 IEEE Transactions on Robotics 最佳论文奖,也是第 02 节时间线的开篇)是广泛使用的开源实现之一
  • 提取和跟踪视觉特征需要更多算力,在黑暗或纹理稀疏的场景中性能可能下降

来源Mur-Artal et al., IEEE T-RO 2015

关于 LiDAR 传感器成本,以及供应机器人客户市场的竞争格局,可参阅我们的传感器与感知市场文章。

两者结合:混合系统

有些系统会把两种感知方式结合起来。RGB-D 相机把普通彩色相机与深度传感器整合在同一个装置中,让视觉 SLAM 更低的硬件成本,也能兼具 LiDAR 直接测量几何形状的能力,无需额外配备激光扫描仪。

基于微软 Kinect 深度相机打造的早期系统 KinectFusion,早在 2011 年就证明了:正是这样一种低成本的复合传感器,也能实现完整的实时 3D 表面重建。

04从扫地机器人到仓库机器人

家用机器人:激光与摄像头建图

SLAM 实现的规模与成本,会因所搭载的机器人类型而产生巨大差异——第 03 节提到的激光与摄像头之分,也直接体现在消费级产品中。

在家用机器人领域,Neato Robotics 的 XV-11(2010 年 6 月开始出货)是消费级机器人使用旋转式激光传感器绘制房间地图的早期案例。iRobot 的 Roomba 980(2015 年 9 月发布)则是首款采用 iRobot 自研摄像头 SLAM 的 Roomba,该公司将这项技术称为 vSLAM。

停靠在充电兼集尘底座上的 iRobot Roomba i7+ 扫地机器人

iRobot 的 Roomba 系列自 2015 年发布的 980 起便采用基于摄像头的 SLAM(vSLAM);图中的 i7+ 是同一系列中的后续机型。

照片:Auledas,CC BY-SA 4.0,来自 Wikimedia Commons

可配置的开源 SLAM 技术栈

一些工业和科研机器人允许用户根据任务选择 SLAM 方案。AgileX Robotics 的 LIMO 官方手册介绍了两套 LiDAR SLAM 工作流程:用于较小空间的 Gmapping,以及 Google 推出的、基于图优化且可实时执行回环检测的 Cartographer。

Nav2 是 ROS 2 机器人框架的标准导航栈,它将 Steve Macenski 开发的 SLAM Toolbox 作为默认 SLAM 实现。Nav2 的官方 SLAM 教程在常见科研平台 TurtleBot3 上演示了这套技术栈。

TurtleBot3 Burger,可见其轮式底盘与传感器组件

TurtleBot3——Nav2 官方 SLAM 教程用来演示 SLAM Toolbox 的平台。

照片:Kuscu0,CC BY-SA 4.0,来自 Wikimedia Commons

作为 SLAM 替代方案的固定基础设施

并非每一台自主移动机器人(AMR)都实际使用 SLAM。

Amazon 表示,其仓库驱动单元之一的 Hercules 通过读取编码地面标记组成的网格来定位,Pegasus 也在同类结构化场地中运行。这些系统说明,AMR(自主移动机器人)可以借助固定基础设施实现自主导航;当机器人必须在未铺设这些标记的空间内定位时,SLAM 则是另一种选择。

移动机器人市场增长

ABI Research 将 SLAM 列为支持移动机器人的关键技术之一,帮助它们从仓储与物流这一传统主战场,拓展到更多样、结构化程度更低的环境中。该机构 2024 年 12 月的预测显示,增长最快的恰恰是这类对灵活性要求最高的新兴细分市场:农业机器人出货量预计将从 2023 年的 7,000 台增长到 2030 年的 129,000 台(年复合增长率 45%),配送机器人从 14,000 台增至 147,000 台(37%),餐饮机器人从 6,000 台增至 78,000 台(43%)。正如 ABI Research 机器人分析师 George Chowdhury 所说,移动机器人正在“把自动化拓展到此前自动化程度不足的领域”——而这类部署,都依赖机器人能够在一个从未有人预先绘制过地图的空间中确定自己的位置。

移动机器人出货量,ABI Research 预测(2024 年 12 月)

547K → 2.79M
移动机器人出货量,2023 → 2030 年(预测)
24.1%
出货量复合年增长率,2023–2030 年
$18B → $124B
移动机器人市场营收,2023 → 2030 年(预测)
23.6%
营收复合年增长率,2023–2030 年

05尚待解决的技术挑战

随着这类部署不断铺开,SLAM 尚存的局限也变得愈发重要。第 02 节提到的感知混淆失效案例并非唯一的问题——以下两个领域,尤其限制着当今 SLAM 能够可靠完成的工作范围。

REAL-WORLD SITES

真实环境下的鲁棒性

研究用的基准测试环境,远比 SLAM 实际要面对的杂乱工地和仓库整洁得多。

  • Hilti x Trimble x Oxford SLAM Challenge 2026 在 30 段来自在建工地的实拍序列上测试各系统
  • 这些现场是动态的、GPS 信号缺失的,且布局每天都在变化
  • 整洁的基准测试与真实环境之间的差距依然很大

来源Hilti x Trimble x Oxford SLAM Challenge, 2026

SEMANTIC SLAM

理解场景本身,而不只是它的形状

语义 SLAM 试图让机器人识别出地图中每个物体实际是什么,而不只是它在哪里。一篇 2025 年的综述指出了两个尚未解决的问题:

  • 此前从未见过的物体类别——随着场景变化,识别结果可能出现漂移(“语义漂移”)
  • 在移动机器人实际能够搭载的硬件上,实时运行大型识别模型所需的高昂计算成本

来源Miao et al., Sensors, 2025

针对上述语义理解与泛化能力的局限,已经出现的一种积极应对,正是第 02 节算法年表中提到的基础模型 SLAM——它复用通用的 3D 重建模型,而不是从零训练专门的 SLAM 网络。

06更轻松用上 SLAM 的几种方式

这些开放问题留待研究者逐步攻克——大多数团队需要的只是当下就能用的 SLAM。从零构建一套 SLAM 技术栈,或是配置第 04 节提到的 ROS 系开源方案,已经不再是唯一的路径。如今有三类现成方案能代为处理 SLAM 本身,开发者不必再亲自动手。

FOR ROBOT BUILDERS

可授权使用的 SLAM 模块

SLAMTEC 的 SLAMKit 把 SLAM 打包成机器人厂商可以直接授权并嵌入使用的软件,而不是需要团队从零开始集成的研究代码库:

  • 提供 C++、Java、ROS 和 RESTful API 接口
  • 该公司表示,与其对标测试过的其他软件相比,可将算力需求降低约一半
  • 可在普通的 Intel 或 ARM 硬件上运行

来源SLAMTEC, SLAMKit product page

FOR APP DEVELOPERS

内置在手机里的 SLAM

在机器人领域之外,Apple 的 ARKit 与 Google 的 ARCore 把同样的核心思路直接内置进了 iOS 和 Android:视觉-惯性里程计,将相机图像与运动传感器数据融合——这与前文提到的轮式机器人漂移修正是同一原理。

  • 基于这些框架开发应用的任何开发者,都能获得实时的 6 自由度追踪能力
  • 无需自己编写任何 SLAM 代码

来源Apple Developer Documentation, ARKit world tracking

FOR ENGINEERS & RESEARCHERS

面向研究与原型开发的工具箱

MathWorks 把 SLAM 打包进 MATLAB 和 Simulink 的工具箱中,而不是做成单一的一体化产品:

  • Navigation Toolbox 内置的 SLAM Map Builder 应用,可通过图形界面把录制的 LiDAR 数据转换成占据栅格地图
  • Computer Vision Toolbox 涵盖 ORB-SLAM 等视觉 SLAM 方法
  • 预置函数可处理位姿图、光束法平差等模块——并非完全免代码的黑盒工具,但省去了从零编写这些数学运算的工夫

来源MathWorks, What Is SLAM?

07参考来源

分享本文发布到 X
03

机器人基础模型

05

运动与感知基础知识

  • ›同时定位与地图构建(SLAM)(本文)