0. 基本数学:看懂 gmapping 只需要三个小工具

📚 本系列导航1. SLAM是什么:盲人摸象与边走边画2. 机器人眼中的世界:传感器与栅格地图3. 粒子滤波:一千个分身猜位置4. RBPF:把鸡蛋问题拆开5. gmapping的两大改进6. 源码走读:一帧激光的旅程7. 实战:跑起来与调参8. 从理解到实现:迷你gmapping9. 局限与进阶:gmapping之外的世界

别怕,这一篇只有三个概念:概率、条件概率、贝叶斯。全程用”出门要不要带伞”讲清楚,看完你就能读懂 gmapping 的所有公式。


一、概率 = 置信度(你有多相信一件事)

机器人不是全知的。它不知道自己在哪,只能”猜”–猜的过程,数学上用概率描述。

$$P(\text{下雨}) = 0.7$$

读法:”下雨这件事,我信七成。”

  • 概率是 0~1 之间的数:0 = 完全不信,1 = 完全确定;
  • 机器人对”我在哪”的答案从来不是一个点,而是一个分布(哪里都有可能,只是可能性不同)。

SLAM 的本质:用一切能拿到的东西(轮子转了多少、激光看到了什么),不断更新”我在哪”的概率分布。


二、条件概率:知道了新消息之后,改主意

$$P(\text{下雨} \mid \text{地面湿了}) = 0.9$$

中间的竖线 | 读作”已知“。整个式子读法:

“在已知地面湿了这个消息之后,我对下雨的置信度是 0.9。”

关键思想:新消息会改变置信度。 出门前你信下雨 0.7;拉开窗帘看到地面湿了,置信度涨到 0.9。

这就是 SLAM 每一帧都在做的事:

SLAM 术语 对应含义
$P(\text{位姿})$ 没有任何信息时,机器人对”我在哪”的猜想
$P(\text{位姿} \mid \text{里程计})$ 知道轮子转了多少之后的猜想
$P(\text{位姿} \mid \text{里程计}, \text{激光})$ 又看到激光数据之后的猜想(更准了!)

三、贝叶斯公式:改主意的数学方法

$$P(\text{下雨} \mid \text{地面湿}) = \frac{P(\text{地面湿} \mid \text{下雨}) \times P(\text{下雨})}{P(\text{地面湿})}$$

别急着背,拆开看它其实在说人话

术语 人话
$P(\text{下雨})$ 先验:还没看地面之前,我本来就信七成(天气预报)
$P(\text{地面湿} \mid \text{下雨})$ 似然:假如真下了雨,地面湿的可能性有多大?(很大,比如 0.95)
$P(\text{下雨} \mid \text{地面湿})$ 后验:看到地面湿之后,我新的置信度
1
2
3
4
flowchart LR
A["先验<br/>(原来的 belief)"] -->|"× 似然<br/>(新证据有多符合)"| B["后验<br/>(更新的 belief)"]
style A fill:#e8f0fe,stroke:#1a73e8
style B fill:#e6f4ea,stroke:#188038

一句话总结贝叶斯:新置信度 = 老置信度 × 新证据的打分。
gmapping 里每个粒子的”权重”,本质上就是给这个粒子的”打分”。


四、链式法则:把一个大难题拆成两个小难题(gmapping 的命根子)

概率里有个恒等式(乘法法则):

$$P(A, B) = P(B \mid A) \times P(A)$$

翻译:“A 和 B 同时发生的概率” = “先有 A,再在 A 的基础上有 B”

听起来是废话?看它怎么拯救 SLAM。SLAM 想要的东西是:

$$P(\text{轨迹}, \text{地图} \mid \text{所有传感器数据})$$

“既定位又建图”–两个未知量搅在一起,直接算算不动。用链式法则拆:

$$P(\text{轨迹}, \text{地图} \mid \text{数据}) = \underbrace{P(\text{轨迹} \mid \text{数据})}{\text{先解决定位}} \times \underbrace{P(\text{地图} \mid \text{轨迹}, \text{数据})}{\text{再解决建图}}$$

这一行拆解就是 gmapping 所属的 RBPF 方法的全部灵魂

1
2
3
4
5
6
flowchart TD
A["难题: 同时算出 轨迹+地图"] -->|链式法则拆解| B["第1步: 先定位<br/>P(轨迹|数据)"]
B --> C["第2步: 已知轨迹后建图<br/>P(地图|轨迹,数据)"]
C --> D["✅ 每一步都比原问题简单得多"]
style A fill:#fce8e6,stroke:#d93025
style D fill:#e6f4ea,stroke:#188038

(细节在系列第 4 篇展开,这里只需记住:乘法法则把”鸡生蛋”拆成了两个能依次回答的问题。)


五、自测清单

看完这篇,你应该能不假思索地回答:

  • P(A|B) 的竖线怎么读?(”已知 B”)
  • 贝叶斯公式用人话说是?(老置信度 × 新证据打分)
  • 为什么链式法则对 SLAM 重要?(把定位+建图拆开依次解决)