《概率机器人》读书笔记——第二章:递归状态估计
让机器人在充满噪声的现实世界里知道自己"在哪、状态如何",是概率机器人要攻克的核心难题。传感器有误差、运动有抖动、环境在变化——传统确定性方法在这种不确定性面前几乎束手无策。《概率机器人》第二章,讲述了如何用贝叶斯滤波这套递归框架,把"运动"和"感知"统一写成概率语言,在每一时刻融合新观测不断修正对状态的判断。是后续所有算法(KF、粒子滤波、定位、SLAM)的钥匙。
1. 本章概述
这一章是整本《概率机器人》的理论基石。它把机器人与环境之间的交互抽象为状态转移与观测两个概率过程,并通过贝叶斯滤波这一递归算法,在每一时刻根据新的控制输入和传感器读数更新对系统状态的后验估计(置信度)。后续所有章节——无论是高斯滤波、粒子滤波、定位还是 SLAM——本质上都是贝叶斯滤波在不同假设下的具体实现。
前置依赖:基本概率论(贝叶斯法则、条件概率、边缘化)。
后继联系:第 3、4 章给出贝叶斯滤波的两大类实现;第 7、8 章将其用于定位。
2. 核心知识点
2.1 概率机器人中的基本概念
- **状态 xₜ**:描述机器人和环境在时刻 t 的完整情况(位姿、地图、目标等)。状态是隐藏的,无法直接观测。
- **控制 uₜ**:机器人主动施加的动作(里程计读数、速度命令等)。
- **观测 zₜ**:传感器返回的测量值。
- 数据流:⋯, uₜ₋₁, zₜ₋₁, uₜ, zₜ, ⋯(控制与观测交替出现)。
这里有个关键区分值得拎出来讲:机器人通过控制 uₜ 主动改变环境(自身位姿、与外界的相互作用),通过观测 zₜ 被动感知环境。这两股信息流交织在一起,共同塑造了机器人的内部"信念"。
2.2 状态转移概率与观测概率
把"机器人—环境"建模为一个耦合的动态系统,由两个概率分布刻画:
p(xₜ | xₜ₋₁, uₜ)
—— 状态转移概率(运动模型 / 控制方程)。刻画在施加控制 uₜ 后,状态从 xₜ₋₁ 演化到 xₜ 的概率。它编码了运动的不确定性。
p(zₜ | xₜ)
—— 观测概率(测量模型 / 观测方程)。刻画在状态 xₜ 下,传感器读到 zₜ 的概率。它编码了感知的不确定性。
一句话理解:这两个分布把"机器人会怎么动"和"传感器能测到什么"统统写成概率,于是噪声和不确定性不再是需要消除的敌人,而是可以被量化、被传播、被融合的一等公民——这正是概率机器人区别于传统确定性方法的根本分水岭。
2.3 置信度(Belief)
置信度 bel(xₜ) 是机器人对当前状态的主观概率估计,定义为给定所有历史观测和控制后的后验:
bel(xₜ) = p(xₜ | z₁:ₜ, u₁:ₜ)
- 它是关于状态变量的后验分布,为每一个可能的状态假设赋予一个概率。
- 因为真实状态隐藏,机器人必须从内部置信度中推断真实位姿。
- 在收到 zₜ 之前、只用 uₜ 预测得到的分布称为预测置信度:
bēl(xₜ) = p(xₜ | z₁:ₜ₋₁, u₁:ₜ)
一句话理解:bēl 是"凭运动模型先猜一步",bel 是"结合新观测再修正一下"。从前者走到后者的这一步,就是大名鼎鼎的测量更新。
2.4 马尔可夫假设
贝叶斯滤波依赖一个核心假设:**当前状态 xₜ 是过去的完整总结**,即
p(xₜ | xₜ₋₁, uₜ, z₁:ₜ₋₁, u₁:ₜ₋₁) = p(xₜ | xₜ₋₁, uₜ)
p(zₜ | xₜ, z₁:ₜ₋₁, u₁:ₜ) = p(zₜ | xₜ)
这意味着下一步状态只依赖当前状态与当前控制,观测只依赖当前状态。
实战提醒:现实世界里马尔可夫假设几乎从不严格成立——未建模的动态障碍、传感器漂移、里程计累积误差都在悄悄破坏它。第 3、4 章的所有滤波器都建立在这个假设之上,所以工程实践中要尽量把状态变量设计得"够用",必要时加入偏置项、速度项来吸收那些被忽略的动态。
3. 关键公式与算法
贝叶斯滤波的推导
由全概率公式和贝叶斯法则,置信度可分解为:
bel(xₜ) = η p(zₜ | xₜ) bēl(xₜ)
其中预测项由对上一时刻状态做边缘化得到:
bēl(xₜ) = ∫ p(xₜ | xₜ₋₁, uₜ) bel(xₜ₋₁) dxₜ₋₁
- 第一式即"测量更新":用观测似然 p(zₜ| xₜ) 加权预测。
- 第二式即"控制/预测更新":把上一时刻置信度通过运动模型向前传播。
- η 为归一化常数,保证 bel(xₜ) 是合法概率分布。
一句话理解:贝叶斯滤波说白了就是两板斧——"先靠运动模型往前推一步,再用新观测修正一下",周而复始、循环往复。后续章节的所有花活,都是在这两板斧上做文章。
贝叶斯滤波算法(伪代码)
算法: Bayes_filter(bel_{t-1}, u_t, z_t)
─────────────────────────────────────────────
输入:
bel_{t-1} : t-1 时刻的置信度 p(x_{t-1} | z_{1:t-1}, u_{1:t-1})
u_t : 当前控制
z_t : 当前观测
输出:
bel_t : t 时刻的置信度
1. 对所有 x_t:
bel_t(x_t) = 0 // 初始化
2. 对所有 x_t:
sum = 0
对所有 x_{t-1}:
sum += p(x_t | x_{t-1}, u_t) * bel_{t-1}(x_{t-1})
bel_t(x_t) = p(z_t | x_t) * sum // 预测 + 测量更新
3. bel_t = bel_t / Σ bel_t // 归一化
4. 返回 bel_t
─────────────────────────────────────────────
性质小结
1. 递归性:只需保留上一时刻的置信度,无需囤积全部历史数据——内存友好,适合在线运行。
2. 通用性:对任意状态空间、任意分布形式都成立;具体怎么实现,全看你怎么给 bel 选参数化形式(高斯?粒子?直方图?),这恰恰是后续章节的分野。
3. 计算瓶颈:那个积分 ∫ p(xₜ|xₜ₋₁,uₜ)bel(xₜ₋₁)dxₜ₋₁ 在连续高维空间里几乎算不动——这正是第 3、4 章不得不引入近似滤波器的根本动因。
4. 章节小结
回顾一下这次分享的脉络:概率机器人把"运动"和"感知"统一写成两个概率分布——p(xₜ|xₜ₋₁,uₜ) 刻画"会怎么动",p(zₜ|xₜ) 刻画"能测到什么"。置信度 bel(xₜ) = p(xₜ|z₁:ₜ,u₁:ₜ) 是对隐藏状态的递归后验估计,而贝叶斯滤波由"预测"(运动模型传播)和"测量更新"(观测似然修正)两步组成,是全书所有算法的母框架。马尔可夫假设是这套机制能跑起来的关键前提,但工程上要时刻警惕它不严格成立带来的误差。
后续联系:第 3 章用高斯分布参数化 bel(KF/EKF/UKF),第 4 章用样本/直方图做非参数化近似(粒子滤波),第 7、8 章把滤波器搬到定位问题上。
5. 思考与延伸
- 马尔可夫破坏的常见来源:未建模的外部动态(行人、门开关)、传感器系统偏差、里程计累积误差。增大状态维度(加入偏置项)可部分缓解。
- 初值敏感性:bel(x₀) 的选择影响收敛速度;机器人绑架(kidnapped robot)问题正是初值与真值差异极大时的典型挑战。
- 计算 vs 精度权衡:精确贝叶斯滤波不可解析,后续章节的各种滤波器本质是在这条权衡曲线上取不同点。
6. 结语
这次分享的核心其实就一句话:把不确定性当一等公民来对待。贝叶斯滤波用"预测 + 测量更新"的两步循环,给出了在噪声世界里递归估计隐藏状态的通用范式。它不只是教科书里的优雅公式——从扫地机的定位、无人车的轨迹跟踪,到 SLAM 与目标跟踪,几乎所有现代机器人系统背后都能看到它的影子。理解了这套母框架,你就握住了打开后续高斯滤波、粒子滤波乃至整个概率机器人大门的钥匙。下一步,我们将看到不同假设如何把它落地成可工程实现的算法。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)