2.2 SLAM 同步定位与建图


2.2 SLAM 同步定位与建图

本节摘要:机器人进到一个陌生房间,它怎么知道自己在哪、房间长什么样?这就是 SLAM(Simultaneous Localization and Mapping,同步定位与建图)解决的“鸡生蛋”问题——要定位得有地图,要建图得知道自己在哪,两者相互依赖。本节讲 SLAM 的基本原理、两大主流方法(基于滤波、基于图优化)、以及激光 SLAM 和视觉 SLAM 的差别。SLAM 是移动机器人自主行动的基础。

核心问题

阅读完本节,你应当能够:

  1. 说清 SLAM 解决的核心问题和它的“鸡生蛋”特性
  2. 区分前端和后端在 SLAM 里的职责
  3. 理解基于滤波和基于图优化两类方法的思路差别
  4. 说清激光 SLAM 和视觉 SLAM 的优缺点
  5. 知道回环检测为什么对 SLAM 重要

一、问题与直觉

把一个机器人扔进一个它从没见过的房间,让它自主移动。第一个问题就卡住了:它怎么知道自己在房间的哪个位置?

人会先环顾四周,记住房间布局(哪里有门、哪里有桌子),然后根据自己的移动估计位置。机器人也想这么干,但有个先有鸡还是先有蛋的难题:要定位(知道自己在哪),得有个房间的地图作参照;要建图(画出房间布局),得知道自己移动到了哪里才能把观测拼起来。定位依赖地图,建图依赖定位,两者相互依赖。

SLAM 就是同时解决这两个问题的方法——在没有先验地图的情况下,机器人一边移动一边估计自己的位置,同时逐步构建环境地图,两者交替迭代,逐渐收敛到准确的定位和地图。这个能力是移动机器人(扫地机、配送机器人、自动驾驶)自主行动的基础——不能定位和建图,机器人就是瞎的,哪儿也去不了。

二、核心原理

2.1 SLAM 的“鸡生蛋”结构

SLAM 的核心难点,可以用一个概率问题来表达:同时估计机器人轨迹(每个时刻在哪)和环境地图(环境里特征点在哪),给定传感器的观测和控制输入。

这个问题的“鸡生蛋”体现在:机器人观测到一个特征点(比如墙角),要把它标到地图上,得知道机器人此刻的位置;而要确定机器人此刻的位置,又得用地图上的特征点作参照。位置和地图都不知道,得同时估计。

SLAM 的解法是迭代:先用上一时刻的位置和控制输入,预测这一时刻的位置(预测);再用这一时刻的观测(看到特征点),修正预测的位置和地图(更新)。随着机器人移动和观测累积,位置估计和地图都越来越准。这本质上是个贝叶斯估计问题——在不确定性下,用新观测不断更新对状态的信念。

2.2 前端与后端

现代 SLAM 系统通常分前端和后端两部分。

前端:负责处理原始传感器数据,提取特征、做数据关联(这一帧看到的特征点对应地图里的哪个点)、做相邻帧间的位姿初步估计。前端是“感知加初步估计”,输出是粗略的位姿和观测。激光 SLAM 的前端是扫描匹配(把当前激光帧和上一帧对齐),视觉 SLAM 的前端是特征提取和匹配。

后端:负责优化,把前端输出的粗略估计,建成一个全局一致的最优解。后端累积所有约束(相邻帧的相对位姿、回环检测的约束),解一个优化问题,得到全局一致的轨迹和地图。后端是“全局优化”,修正累积误差。

前端管“实时处理和初步估计”,后端管“全局优化和误差修正”,两者配合,既保证实时性又保证精度。

2.3 两类主流方法

SLAM 的后端优化有两类主流方法。

基于滤波的方法:以扩展卡尔曼滤波(EKF)为代表。它维护一个对当前状态(位姿加地图)的概率分布,每来一帧新观测,用预测-更新迭代这个分布。特点是只维护当前状态的估计,不保留历史,计算量相对小。短板是非线性系统下 EKF 会发散、处理大规模地图时计算量爆炸。早期 SLAM 多用这类。

基于图优化的方法:把 SLAM 建成一个因子图优化问题。节点是各时刻的位姿(和地图点),边是约束(相邻帧的相对运动、回环检测的对应)。累积一段后,解这个图优化问题,得到全局最优的位姿和地图。特点是能处理大规模、能利用回环消除累积误差,是现代主流。短板是计算量大、需要周期性批量优化。

方法 核心 优点 短板
基于滤波(EKF) 维护概率分布迭代 实时性好 计算小 易发散 大规模难
基于图优化 因子图批量优化 大规模 利用回环 计算大 非实时

2.4 激光 SLAM vs 视觉 SLAM

按用的主传感器,SLAM 分激光和视觉两类。

激光 SLAM:用激光雷达。强项是测距精确、在结构化环境(室内、走廊)效果好、不受光照影响。短板是激光雷达贵、在空旷环境(没特征)或长走廊(特征重复)会迷路。扫地机、室内机器人多用激光 SLAM。

视觉 SLAM:用相机(单目、双目、RGBD)。强项是传感器便宜、信息丰富(能提取丰富特征)、能做语义。短板是对光照变化敏感、单目无绝对尺度、特征少的地方(白墙)会丢。自动驾驶、AR 多用视觉 SLAM。

实际中常融合两者,取长补短。

2.5 回环检测

SLAM 有个关键环节叫回环检测(Loop Closure)。机器人移动中,位姿估计会累积误差——走一圈回到原点,估计的位置和实际可能差很多。回环检测就是识别出“我回到之前来过的地方了”,据此建立一个约束(当前位置和之前那个位置是同一个点),在后端优化里用这个约束消除累积误差。

没有回环检测,SLAM 的误差会无限累积,地图越来越歪。回环检测是保证地图全局一致性的关键。它本质是个“这个地方我见过”的识别问题,常用词袋等方法做场景识别。

三、工程实践要点

3.1 选 SLAM 方案看场景

激光还是视觉、滤波还是图优化,要看应用场景。室内结构化环境、预算够,选激光 SLAM(稳定可靠);户外、预算紧、需要语义,选视觉 SLAM;高要求场景两者融合。别盲目追新,成熟稳定的方案比前沿但没经过验证的方案更适合实际部署。

3.2 注意 SLAM 的失败模式

SLAM 不是万能的,有典型失败模式。特征缺失:白墙、长走廊这种没特征的环境,SLAM 会迷失。动态干扰:环境里有人走动,他们的运动会被误当成机器人运动或地图变化。光照突变:视觉 SLAM 遇到开灯关灯、进出阴影会丢特征。设计时要预想这些失败模式,准备应对(比如特征缺失时靠 IMU 估计位姿、检测动态物体并剔除)。

3.3 定位和建图可以分开做

实际部署中,建图和定位常分两个阶段:先让人操控机器人在环境里走一遍,离线建好地图;之后机器人用这张已有地图做实时定位(这叫纯定位,比 SLAM 简单很多)。这样实时阶段不用同时建图,计算负担小、更稳定。这种“先建图后定位”的范式在固定场所(仓库、商场)的机器人里很常用。

💡 关键直觉:SLAM 的本质是在不确定性下做估计——传感器有噪声、运动有误差,SLAM 用概率和优化的方法,在这么多不确定性里拼出一个尽可能准的定位和地图。理解它是“估计”而不是“测量”,你才能理解为什么 SLAM 会累积误差、需要回环修正、有失败模式。

本章回顾

  • 鸡生蛋问题:定位依赖地图、建图依赖定位,SLAM 同时迭代估计两者。
  • 前端后端:前端做实时处理和初步估计,后端做全局优化和误差修正。
  • 两类方法:基于滤波(实时小规模,易发散)、基于图优化(大规模主流,利用回环)。
  • 激光vs视觉:激光准但贵怕空旷,视觉便宜信息丰富但怕光照。
  • 回环检测:识别重访之地,建约束消除累积误差,是全局一致性关键。
  • 分阶段部署:先离线建图,再用已有地图实时定位,更稳定。
  • 失败模式:特征缺失、动态干扰、光照突变,要预案应对。

下一节讲怎么给建好的地图赋予语义——不光知道有什么,还知道它们什么关系什么含义。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U