0. 基本数学:三个小工具
0. 基本数学:看懂 gmapping 只需要三个小工具
📚 本系列导航:1. SLAM是什么:盲人摸象与边走边画 → 2. 机器人眼中的世界:传感器与栅格地图 → 3. 粒子滤波:一千个分身猜位置 → 4. RBPF:把鸡蛋问题拆开 → 5. gmapping的两大改进 → 6. 源码走读:一帧激光的旅程 → 7. 实战:跑起来与调参 → 8. 从理解到实现:迷你gmapping → 9. 局限与进阶: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 | flowchart LR |
一句话总结贝叶斯:新置信度 = 老置信度 × 新证据的打分。
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 | flowchart TD |
(细节在系列第 4 篇展开,这里只需记住:乘法法则把”鸡生蛋”拆成了两个能依次回答的问题。)
五、自测清单
看完这篇,你应该能不假思索地回答:
-
P(A|B)的竖线怎么读?(”已知 B”) - 贝叶斯公式用人话说是?(老置信度 × 新证据打分)
- 为什么链式法则对 SLAM 重要?(把定位+建图拆开依次解决)