序:此博客的主要内容是《Probabilistic Robotics》的第二章节“迭代状态估计”,目的与我上一篇文章一致。读者若没有读过第一篇可以点击下面的链接跳转。由于时间仓促,恐有疏漏,还望各位批评指正。
正文
第二章分为七个部分,其中第三、第四部分内各有四个小部分,如下:
- Introduction
- Basic Concepts in Probability
- Robot Environment Interaction
3.1 State
3.2 Environment Interaction
3.3 Probabilistic Generative Laws
3.4 Belief Distributions - Bayes Filters
4.1 The Bayes Filter Algorithm
4.2 Example
4.3 Mathematical Derivation of the Bayes Filter
4.4 The Markov Assumption - Representation and Computation
- Summary
- Bibliographical Remarks
Introduction
本节介绍了该章的结构。其中,贝叶斯滤波器是重点,是本书大部分算法的基础。
Basic Concepts in Probability
该部分介绍了一些概率论的基础知识。有一定基础的朋友可以跳过该部分。
- 随机变量:设X为一随机变量,x代表X中一可能发生的特定事件,p(x)代表随机变量X的值为x时的概率。一个标准的例子是抛硬币:
p ( X = 正面 ) = p ( X = 背面 ) = 1 (2.1) \displaystyle p(X = 正面) =p(X = 背面)= 1 \tag{2.1} p(X=正面)=p(X=背面)=1(2.1)
推广至多事件,可以表达为:
∑ x p ( X = x ) = 1 (离散情况) (2.2) \displaystyle\sum_{x} p(X = x) = 1 (离散情况)\tag{2.2} x∑p(X=x)=1(离散情况)(2.2)
- 正态分布:分为标量和多维向量两种情况(当多维公式维度为1时与标量等价)
p ( x ) = ( 2 π σ ) − 1 2 e x p { − 1 2 ( x − μ ) 2 σ 2 } (标量) (2.3) \displaystyle p(x) = (2\pi \sigma)^{-\frac{1}{2}} exp\{{-\frac{1}{2} \frac{(x-\mu)^{2}}{\sigma ^{2}}}\}(标量)\tag{2.3} p(x)=(2πσ)−21exp{−21σ2(x−μ)2}(标量)(2.3)
其中,(2.3)可简写为 N ( x ; μ , σ 2 ) N (x;\mu,\sigma^2) N(x;μ,σ2), μ \mu μ和 σ 2 \sigma^2 σ2为随机变量的均值和方差。
p ( x ) = d e t ( 2 π Σ ) − 1 2 e x p { − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) } (多维向量) (2.4) \displaystyle p(x) = det(2\pi \Sigma )^{-\frac{1}{2}} exp\{{-\frac{1}{2} (x-\mu)^T \Sigma ^{-1}(x-\mu)}\}(多维向量)\tag{2.4} p(x)=det(2πΣ)−21exp{−21(x−μ)TΣ−1(x−μ)}(多维向量)(2.4)
其中,(2.4)可简写为 N ( x ; μ , Σ ) N (x;\mu,\Sigma) N(x;μ,Σ), μ \mu μ和 Σ \Sigma Σ为随机变量的均值和协方差矩阵(该矩阵正半定对称)。
- 一些常见公式:
3.1 联合概率分布:
p ( x , y ) = p ( X = x a n d Y = y ) = p ( x ) p ( y ) ( 第一个等号无条件,但是第二个等号要求变量 X , Y 相互独立 ) (2.5) p(x,y)=p(X=x \; and \; Y=y)=p(x) \, p(y) \quad \\ (第一个等号无条件,但是第二个等号要求变量X,Y相互独立) \tag{2.5} p(x,y)=p(X=xandY=y)=p(x)p(y)(第一个等号无条件,但是第二个等号要求变量X,Y相互独立)(2.5)
多变量推广:当 x x x 和 y y y 条件独立时(在 Z = z Z=z Z=z 发生前提下,讨论 X X X和 Y Y Y的情况),
p ( x , y ∣ z ) = p ( x ∣ z ) p ( y ∣ z ) (2.6) p(x,y|z)=p(x|z) \, p(y|z) \tag{2.6} p(x,y∣z)=p(x∣z)p(y∣z)(2.6)
需要注意的是,绝对独立和条件独立没有关系,即(2.6)和(2.5)不能互相推导。只有在巧合的时候才会出现(2.5)(2.6)相等。
3.2 条件概率,当 Y = y Y=y Y=y 时, X = x X=x X=x 的概率:
p ( x ∣ y ) = p ( X = x ∣ Y = y ) = p ( x , y ) p ( y ) (2.7) p(x \, | \, y) = p(X=x \; | \; Y=y) = \frac {p(x,y)}{p(y)} \tag{2.7} p(x∣y)=p(X=x∣Y=y)=p(y)p(x,y)(2.7)
3.3 全概率公式,分为离散和连续两个部分:
p ( x ) = ∑ y p ( x ∣ y ) p ( y ) ( 离散 ) (2.8) p(x) = \displaystyle\sum_{y} p(x \, | \, y) \, p(y) \quad (离散) \tag{2.8} p(x)=y∑p(x∣y)p(y)(离散)(2.8)
p ( x ) = ∫ p ( x ∣ y ) p ( y ) d y ( 连续 ) (2.9) p(x) = \displaystyle\int {} p(x \, | \, y) \, p(y) \, dy \quad (连续) \tag{2.9} p(x)=∫p(x∣y)p(y)dy(连续)(2.9)
3.4 贝叶斯法则 (重点)
p ( x ∣ y ) = p ( y ∣ x ) p ( x ) p ( y ) (2.10) p(x \, | \, y) = \frac {p(y \, | \, x) \, p(x)}{p(y)} \tag{2.10} p(x∣y)=p(y)p(y∣x)p(x)(2.10)
p ( y ) = ∑ x ′ p ( y ∣ x ′ ) p ( x ′ ) ( 离散 ) (2.11) p(y) = \displaystyle\sum_{x'} p(y \, | \, x' ) \, p(x') (离散) \tag{2.11} p(y)=x′∑p(y∣x′)p(x′)(离散)(2.11)
p ( y ) = ∫ p ( y ∣ x ′ ) p ( x ′ ) d x ′ ( 连续 ) (2.12) p(y) = \displaystyle\int_{} p(y \, | \, x' ) \, p(x') d x'(连续) \tag{2.12} p(y)=∫p(y∣x′)p(x′)dx′(连续)(2.12)
个人理解: p ( x ) p(x) p(x) 是先验概率分布,是系统在获得新信息前的随机变量的旧分布。 p ( y ) p(y) p(y) 是新信息,用来更新旧分布,可以视为传感器获得的新信息, p ( x ∣ y ) p(x \, | \, y) p(x∣y) 是后验概率分布,是原来 p ( x ) p(x) p(x)更新后的新分布。
3.5 贝叶斯法则的简化
根据公式(2.10)和(2.11)我们可知, p ( y ) p(y) p(y) 的值不受 x x x 的影响。所以, p ( y ) − 1 p(y)^{-1} p(y)−1 可以视为常数。通常来说,我们把这个常数视作正则化或标准化变量,用 η \eta η 表示,(2.9)化为:
p ( x ∣ y ) = η p ( y ∣ x ) p ( x ) (2.13) p(x \, | \, y) = \eta \, p(y \, | \, x) \, p(x) \tag{2.13} p(x∣y)=ηp(y∣x)p(x)(2.13)
用辅助变量 a u x x ∣ y aux_{x|y} auxx∣y和 a u x y aux_{y} auxy来简化表达贝叶斯法则:
a u x x ∣ y = p ( y ∣ x ) p ( x ) (2.14) aux_{x|y} = p(y \, | \, x) \, p(x) \tag{2.14} auxx∣y=p(y∣x)p(x)(2.14)
a u x y = ∑ x a u x x ∣ y (2.15) aux_{y} = \displaystyle\sum_{x} aux_{x|y} \tag{2.15} auxy=x∑auxx∣y(2.15)
p ( x ∣ y ) = a u x x ∣ y a u x y (2.16) p(x \, | \, y)=\frac {aux_{x|y}}{aux_{y}} \tag{2.16} p(x∣y)=auxyauxx∣y(2.16)
这么做的目的是简洁。 η \eta η 可能在不同式子中的赋值不一样,这样会导致 η ′ \eta' η′, η ′ ′ \eta'' η′′…等符号的使用,为了防止乱套,我们都用 η \eta η 去表示,即使在不同式子中的赋值不一样。这么做是可以的,因为 η \eta η 的作用是归一化,只要最终结果归一化,运算过程中的 η \eta η 值不重要。
3.6 期望与方差, E E E为期望, C o v Cov Cov为方差:
E [ a X + b ] = a E [ X ] + b (2.17) E[aX+b]=aE[X]+b \tag{2.17} E[aX+b]=aE[X]+b(2.17)
C o v [ X ] = E [ X − E [ X ] ] 2 = E [ X 2 ] − E [ X ] 2 (2.18) Cov[X]=E[X-E[X]]^2 = E[X^2] - E[X]^2 \tag{2.18} Cov[X]=E[X−E[X]]2=E[X2]−E[X]2(2.18)
**3.7 熵(略读):
熵是一个来源于信息论的概念。在本书中,熵将用于表示机器人信息收集的程度(即概率),以表达机器人在执行特定动作 x x x 时可能接收到的信息,表达方式如下:
H ( P ) = E [ − l o g 2 p ( x ) ] = − ∑ x p ( x ) l o g 2 p ( x ) (2.19) H(P)=E[-log_{2}p(x)]=-\displaystyle\sum_{x} p(x) \, log_{2}p(x) \tag{2.19} H(P)=E[−log2p(x)]=−x∑p(x)log2p(x)(2.19)
− l o g 2 p ( x ) −log_{2}p(x) −log2p(x) 是使用最佳编码方法对 x x x 进行编码所需的位数, p ( x ) p(x) p(x) 是观测到 x x x 的概率。
Robot Environment Interaction
如图1所示,机器人通过传感器感知环境,通过执行器影响环境。那么,如何用精确的语言描述这种“感知”和“影响”呢?我们从基础概念——状态开始:
1. State
在本书中,我们将状态视作机器人及其环境的所有特征的集合,它的符号是 x x x ,当时间为 t t t 时,状态为 x t x_t xt。其中,状态有动静、内外之分。例如,大街上人的位置是动态的;建筑物的墙是静态的;机器人自身的姿态,位置,速度是内部状态,环境变量为外部的。
此外,如果一个状态包含完整的过去状态、测量或控制信息,而且不具有对未来进行准确预测的信息,我们称这个状态是完整的。反之,如果一个状态不包含完整的信息,我们称之为不完整的状态。
在一个大多数机器人系统中,状态通常是连续的,比如机器人的位姿,速度等;但有时,状态也可以是离散的,例如判断传感器是否损坏,0为损坏,1为良好等。对于既包含连续状态空间,又包含离散状态空间的状态空间,我们称为混合状态空间。
此外,如果在一个过程中, x t − 1 x_{t-1} xt−1 的信息只对 x t x_t xt 产生影响,不对 x t + 1 x_{t+1} xt+1 产生影响时,我们称满足这个条件的过程为马尔可夫链。
2. Environment Interaction
从图1我们易得,机器人与其环境之间的交互有两种基本类型:I. 通过执行器影响环境状态 II. 通过传感器收集状态信息。下面我们分开解释其中的重点部分:
I. 传感器测量:传感器测量值到达时会有一定的延迟,比如相机获得的图像需要时间处理才能使用。
II. 控制器:控制的例子包括机器人自身的运动和对物体的操控。在噪音的影响下,即使机器人本身不执行任何动作,状态通常也会发生变化。
根据两种不同的环境交互方式,机器人可以访问两种不同的数据流:I. 测量数据 II.控制数据
I. 测量数据:时间 t t t 处的测量数据用 z t z_t zt 表示。在本书中,忽略小的时序影响。比如,大多数激光雷达传感器以非常高的速度顺序扫描环境,但我们将简单地假设它只对应于特定的时刻。
II. 控制数据:时间 t t t 处的控制数据用 u t u_t ut 表示。我们假设每个时间步 t t t 恰好有一个控制项 u t u_t ut。控制数据的主要信息与状态的变化有关。举个例子,将机器人的速度设置为每秒 10 厘米并持续 5 秒,表明执行此运动命令后机器人的位姿比命令执行前的位姿提前约 50 厘米。
需要注意的是,理解测量和控制之间的区别至关重要,因为两种类型的数据在根本上发挥着不同的作用。感知提供了有关环境状态的信息,因此它往往会增加机器人的感知信息;另一方面,由于机器人驱动中固有的噪声和机器人环境的随机性,运动往往会导致机器人的感知信息损失。
3. Probabilistic Generative Laws
状态和测量的演化受概率定律影响。在这里,我们假设状态 x t x_t xt 的出现可能以所有过去的状态、测量和控制为条件,表达形式如下所示:
p ( x t ∣ x 0 : t − 1 , z 1 : t − 1 , u 1 : t ) (2.20) p(x_t \, | \, x_{0:t-1},z_{1:t-1},u_{1:t}) \tag{2.20} p(xt∣x0:t−1,z1:t−1,u1:t)(2.20)
假如状态 x x x 是完整的,那么该状态包括了之前步骤中出现的所有信息。以 x t − 1 x_{t-1} xt−1 为例,它包含了 z 1 : t − 1 , u 1 : t − 1 z_{1:t-1},u_{1:t-1} z1:t−1,u1:t−1 的信息。所以,(2.20)可以化简为如下:
p ( x t ∣ x t − 1 , u t ) (2.21) p(x_t \, | \, x_{t-1},u_{t}) \tag{2.21} p(xt∣xt−1,ut)(2.21)
概率式(2.21)是状态转移概率,它表明了状态如何随着时间的推移而演变。因为状态是随机的,所以状态转移是概率的,而不是确定性的。
同理,我们对生成测量值的过程进行建模,假如状态 x t x_t xt 是完整的,则:
p ( z t ∣ x 0 : t , z 1 : t − 1 , u 1 : t ) = p ( z t ∣ x t ) (2.22) p(z_t \, | \, x_{0:t},z_{1:t-1},u_{1:t})=p(z_t \, | \, x_{t}) \tag{2.22} p(zt∣x0:t,z1:t−1,u1:t)=p(zt∣xt)(2.22)
概率式(2.22)是测量概率,它表明了从状态 x x x 生成测量 z z z 的概率定律。而且,(2.22)的等号也说明了如果当前状态是完整的,那么该状态足以测量此时的新信息 z t z_t zt;
我们不难发现,时间 t t t 时的状态随机依赖于时间 t − 1 t - 1 t−1 时的状态和控制 u t u_t ut。 测量值 z t z_t zt 随机取决于时间 t t t 时的状态。这种时间生成模型也称为隐马尔可夫模型(HMM)或动态贝叶斯网络(DBN)。 为了完全指定模型,我们还需要初始状态分布 p ( x 0 ) p(x_0) p(x0)。
4. Belief Distributions
概率机器人学的另一个关键概念是置信度,而且有些状态我们无法直接测量。比如,我们可以通过GPS获得机器人在世界坐标系的位置,但我们无法知道机器人的姿态。所以,我们必须从数据推断其姿态。
置信分布为每个可能的关于真实姿态的假设分配一个概率(或密度值)。 置信分布是基于可用数据的状态变量的后验概率,用 b e l ( x t ) bel(x_t) bel(xt) 来表示对状态变量 x t x_t xt 的置信度:
b e l ( x t ) = p ( x t ∣ z 1 : t , u 1 : t ) (2.23) bel(x_t)=p(x_t \, | \, z_{1:t},u_{1:t}) \tag{2.23} bel(xt)=p(xt∣z1:t,u1:t)(2.23)
该后验是时间 t t t 状态 x t x_t xt 的概率分布,以所有过去的测量 z 1 : t z_{1:t} z1:t 和所有过去的控制 u 1 : t u_{1:t} u1:t 为条件。
有后验概率就有先验概率,在 x t x_t xt 时刻,在机器人接收传感器的数据 z t z_t zt 前,先验概率为:
b e l ‾ ( x t ) = p ( x t ∣ z 1 : t − 1 , u 1 : t ) (2.24) \overline {bel}(x_t)=p(x_t \, | \, z_{1:t-1},u_{1:t}) \tag{2.24} bel(xt)=p(xt∣z1:t−1,u1:t)(2.24)
先验概率反应了在合并时间 t t t 的测量之前,根据先前的状态后验预测时间 t t t 的状态。从 b e l ( x t ) bel(x_t) bel(xt) 计算 b e l ‾ ( x t ) \overline {bel}(x_t) bel(xt) 称为校正或测量更新。
Bayes Filters
The Bayes Filter Algorithm
直接给出贝叶斯滤波器的伪代码形式:
- \quad\quad\quad Algorithm_Bayes_Filter ( b e l ( x t − 1 ) (bel(x_{t-1}) (bel(xt−1), u t u_t ut, z t ) z_t) zt)
- \quad\quad\quad\quad for all x t x_t xt do
- \quad\quad\quad\quad\quad b e l ‾ ( x t ) = ∫ p ( x t ∣ u t , x t − 1 ) b e l ( x t − 1 ) d x \overline{bel} (x_t)=\int p(x_t \, | \, u_t,x_{t-1}) \, bel(x_{t-1}) \, dx bel(xt)=∫p(xt∣ut,xt−1)bel(xt−1)dx
- \quad\quad\quad\quad\quad b e l ( x t ) = η p ( z t ∣ x t ) b e l ‾ ( x t ) bel(x_t)=\eta \, p(z_t \, | \, x_t) \, \overline{bel} (x_t) bel(xt)=ηp(zt∣xt)bel(xt)
- \quad\quad\quad\quad end
- \quad\quad\quad\quad return b e l ( x t ) bel(x_t) bel(xt)
先看结构,该算法很明显是迭代的,通过 b e l ( x t − 1 ) bel(x_{t-1}) bel(xt−1) 计算 b e l ( x t ) bel(x_t) bel(xt)。
再看输入输出,它的输入是时间 t − 1 t−1 t−1 时的置信度 b e l ( x t − 1 ) bel(x_{t-1}) bel(xt−1),以及最近的控制 u t u_t ut 和最近的测量 z t z_t zt;输出是时间 t t t 时的置信度 b e l ( x t ) bel(x_t) bel(xt)。
再看核心,很明显是步骤3和步骤4。
在步骤3中,方程左边是先验置信,那么右边一定含有 x t − 1 x_{t-1} xt−1和 u t u_t ut,而不含有 z t z_t zt。再看右边,实际上是状态转移概率与上个时刻的置信分布的乘积的积分。这个很好理解,已知上一个时刻的后验置信分布了,我想获得这个时刻的置信分布,怎么办呢?状态转移概率可以帮助我们,它的含义就是状态从 t − 1 t-1 t−1 时刻到 t t t 时刻发生改变的概率,和我们的需求一致。
在步骤4中,贝叶斯滤波器将置信度 b e l ( x t ) bel(x_t) bel(xt) 乘以测量 z t z_t zt 在此时状态下可能已被观察到的概率。这一步也被称为测量更新。从信息损益的角度来看,第3步控制量的存在使机器人的状态真实性下降(噪音引入),而为了平衡,第4步观测器数据的加入可以增加机器人的状态的置信度。这样看也是符合常理的。另外,常数 η \eta η 的引入目的是归一化,因为在乘积和积分的过程中, b e l ( x t ) bel(x_t) bel(xt)可能不会积分到 1。
最后看初始值,一共三种情况。I. 已知 x 0 x_0 x0 的值。这样, b e l ( x 0 ) bel(x_0) bel(x0) 的值集中在正确的 x 0 x_0 x0 值上,并在其他任何地方分配零概率。II. 不知道 x 0 x_0 x0 的值。这样, b e l ( x 0 ) bel(x_0) bel(x0) 通常设置为 x 0 x_0 x0 域上的均匀分布。III. 已知 x 0 x_0 x0 的部分信息。这样可以用非均匀分布表达。
Example
该节提供了一个贝叶斯滤波器的简单例子。
我们使用让机器人采用贝叶斯滤波算法,并使用其摄像头估计门的状态。为简化问题,假设门只有打开或关闭两种状态,而且只有机器人可以改变门的状态。我们设初始条件为假设机器人最初并不知道门的状态,则初始置信分布如下:
b e l ( X 0 = o p e n ) = b e l ( X 0 = o p e n ) = 0.5 (2.25) bel(X_0=open)=bel(X_0=open)=0.5 \tag{2.25} bel(X0=open)=bel(X0=open)=0.5(2.25)
传感器有可能获得的信息如下:
p ( Z t = s e n s e _ o p e n ∣ X t = i s _ o p e n ) = 0.6 p ( Z t = s e n s e _ c l o s e ∣ X t = i s _ o p e n ) = 0.4 p ( Z t = s e n s e _ o p e n ∣ X t = i s _ c l o s e ) = 0.2 p ( Z t = s e n s e _ c l o s e ∣ X t = i s _ c l o s e ) = 0.8 (2.26) p(Z_t=sense\_open \, | \, X_t = is\_open)=0.6 \\ p(Z_t=sense\_close \, | \, X_t = is\_open)=0.4 \\ p(Z_t=sense\_open \, | \, X_t = is\_close)=0.2 \\ p(Z_t=sense\_close \, | \, X_t = is\_close)=0.8 \tag{2.26} p(Zt=sense_open∣Xt=is_open)=0.6p(Zt=sense_close∣Xt=is_open)=0.4p(Zt=sense_open∣Xt=is_close)=0.2p(Zt=sense_close∣Xt=is_close)=0.8(2.26)
这些概率表明机器人的传感器在检测关闭的门时相对可靠,因为错误概率为 0.2。
最后我们设定状态转移概率,分为两种情况,什么也不做和开门:
p ( X t = i s _ o p e n ∣ U t = p u s h ∣ X t − 1 = i s _ o p e n ) = 1 p ( X t = i s _ c l o s e d ∣ U t = p u s h ∣ X t − 1 = i s _ o p e n ) = 0 p ( X t = i s _ o p e n ∣ U t = p u s h ∣ X t − 1 = i s _ c l o s e d ) = 0.8 p ( X t = i s _ c l o s e d ∣ U t = p u s h ∣ X t − 1 = i s _ c l o s e d ) = 0.2 (2.27) p(X_t=is\_open \, | \, U_t = push \, | \, X_{t-1}=is\_open)=1 \\ p(X_t=is\_closed \, | \, U_t = push \, | \, X_{t-1}=is\_open)=0 \\ p(X_t=is\_open \, | \, U_t = push \, | \, X_{t-1}=is\_closed)=0.8\\ p(X_t=is\_closed \, | \, U_t = push \, | \, X_{t-1}=is\_closed)=0.2 \tag{2.27} p(Xt=is_open∣Ut=push∣Xt−1=is_open)=1p(Xt=is_closed∣Ut=push∣Xt−1=is_open)=0p(Xt=is_open∣Ut=push∣Xt−1=is_closed)=0.8p(Xt=is_closed∣Ut=push∣Xt−1=is_closed)=0.2(2.27)
p ( X t = i s _ o p e n ∣ U t = d o _ n o t h i n g ∣ X t − 1 = i s _ o p e n ) = 1 p ( X t = i s _ c l o s e d ∣ U t = d o _ n o t h i n g ∣ X t − 1 = i s _ o p e n ) = 0 p ( X t = i s _ o p e n ∣ U t = d o _ n o t h i n g ∣ X t − 1 = i s _ c l o s e d ) = 0 p ( X t = i s _ c l o s e d ∣ U t = d o _ n o t h i n g ∣ X t − 1 = i s _ c l o s e d ) = 1 (2.27) p(X_t=is\_open \, | \, U_t = do\_nothing \, | \, X_{t-1}=is\_open)=1 \\ p(X_t=is\_closed \, | \, U_t = do\_nothing \, | \, X_{t-1}=is\_open)=0 \\ p(X_t=is\_open \, | \, U_t = do\_nothing \, | \, X_{t-1}=is\_closed)=0\\ p(X_t=is\_closed \, | \, U_t = do\_nothing \, | \, X_{t-1}=is\_closed)=1 \tag{2.27} p(Xt=is_open∣Ut=do_nothing∣Xt−1=is_open)=1p(Xt=is_closed∣Ut=do_nothing∣Xt−1=is_open)=0p(Xt=is_open∣Ut=do_nothing∣Xt−1=is_closed)=0p(Xt=is_closed∣Ut=do_nothing∣Xt−1=is_closed)=1(2.27)
下面,我们令输入为
u
1
=
d
o
_
n
o
t
h
i
n
g
u_1 =do\_nothing
u1=do_nothing,测量为
z
1
=
s
e
n
s
e
_
o
p
e
n
z_1=sense\_open
z1=sense_open,按照伪代码第3行计算:
b
e
l
‾
(
x
1
)
=
∫
p
(
x
1
∣
u
1
,
x
0
)
b
e
l
(
x
0
)
d
x
0
=
p
(
x
1
∣
u
1
=
d
o
_
n
o
t
h
i
n
g
,
x
0
=
i
s
_
o
p
e
n
)
b
e
l
(
x
0
=
i
s
_
o
p
e
n
)
+
p
(
x
1
∣
u
1
=
d
o
_
n
o
t
h
i
n
g
,
x
0
=
i
s
_
c
l
o
s
e
d
)
b
e
l
(
x
0
=
i
s
_
c
l
o
s
e
d
)
(2.28)
\begin{aligned} \overline{bel} (x_1) = &\int p(x_1 \, | \, u_1,x_{0}) \, bel(x_{0}) \, dx_0 \\ =& p(x_1 \, | \, u_1 =do\_nothing,x_0=is\_open)bel(x_0=is\_open) \\ &+ p(x_1 \, | \, u_1 =do\_nothing,x_0=is\_closed)bel(x_0=is\_closed) \end{aligned} \tag{2.28}
bel(x1)==∫p(x1∣u1,x0)bel(x0)dx0p(x1∣u1=do_nothing,x0=is_open)bel(x0=is_open)+p(x1∣u1=do_nothing,x0=is_closed)bel(x0=is_closed)(2.28)
分别计算 b e l ‾ ( x 1 = i s _ o p e n ) \overline{bel} (x_1=is\_open) bel(x1=is_open) 和 b e l ‾ ( x 1 = i s _ c l o s e d ) \overline{bel} (x_1=is\_closed) bel(x1=is_closed) :
b e l ‾ ( x 1 = i s _ o p e n ) = p ( x 1 = i s _ o p e n ∣ u 1 = d o _ n o t h i n g , x 0 = i s _ o p e n ) b e l ( x 0 = i s _ o p e n ) + p ( x 1 = i s _ o p e n ∣ u 1 = d o _ n o t h i n g , x 0 = i s _ c l o s e d ) b e l ( x 0 = i s _ c l o s e d ) = 1 ∗ 0.5 + 0 ∗ 0.5 = 0.5 (2.29) \begin{aligned} & \overline{bel} (x_1=is\_open) \\ = \, & p(x_1=is\_open \, | \, u_1 =do\_nothing,x_0=is\_open)bel(x_0=is\_open) + \\ & p(x_1=is\_open \, | \, u_1 =do\_nothing,x_0=is\_closed)bel(x_0=is\_closed) \\ = \, & 1*0.5+0*0.5=0.5 \end{aligned}\tag{2.29} ==bel(x1=is_open)p(x1=is_open∣u1=do_nothing,x0=is_open)bel(x0=is_open)+p(x1=is_open∣u1=do_nothing,x0=is_closed)bel(x0=is_closed)1∗0.5+0∗0.5=0.5(2.29)
b e l ‾ ( x 1 = i s _ c l o s e d ) = p ( x 1 = i s _ c l o s e d ∣ u 1 = d o _ n o t h i n g , x 0 = i s _ o p e n ) b e l ( x 0 = i s _ o p e n ) + p ( x 1 = i s _ c l o s e d ∣ u 1 = d o _ n o t h i n g , x 0 = i s _ c l o s e d ) b e l ( x 0 = i s _ c l o s e d ) = 0 ∗ 0.5 + 1 ∗ 0.5 = 0.5 (2.30) \begin{aligned} & \overline{bel} (x_1=is\_closed) \\ = \, & p(x_1=is\_closed\, | \, u_1 =do\_nothing,x_0=is\_open)bel(x_0=is\_open) + \\ & p(x_1=is\_closed\, | \, u_1 =do\_nothing,x_0=is\_closed)bel(x_0=is\_closed) \\ = \, & 0*0.5+1*0.5 = 0.5 \end{aligned}\tag{2.30} ==bel(x1=is_closed)p(x1=is_closed∣u1=do_nothing,x0=is_open)bel(x0=is_open)+p(x1=is_closed∣u1=do_nothing,x0=is_closed)bel(x0=is_closed)0∗0.5+1∗0.5=0.5(2.30)
然后按照伪代码第4行计算后验分布:
b e l ( x 1 = i s _ o p e n ) = η p ( z 1 = s e n s e _ o p e n ∣ x 1 = i s _ o p e n ) b e l ‾ ( x 0 = i s _ o p e n ) = η 0.6 ∗ 0.5 = 0.3 η (2.31) \begin{aligned} & {bel} (x_1=is\_open) \\ =\, & \eta \, p(z_1=sense\_open\, | \, x_1 =is\_open) \overline{bel}(x_0=is\_open) \\ =& \eta \, 0.6*0.5 = 0.3\eta \end{aligned}\tag{2.31} ==bel(x1=is_open)ηp(z1=sense_open∣x1=is_open)bel(x0=is_open)η0.6∗0.5=0.3η(2.31)
b e l ( x 1 = i s _ c l o s e d ) = η p ( z 1 = s e n s e _ o p e n ∣ x 1 = i s _ c l o s e d ) b e l ‾ ( x 0 = i s _ c l o s e d ) = η 0.2 ∗ 0.5 = 0.1 η (2.32) \begin{aligned} & {bel} (x_1=is\_closed) \\ =\, & \eta \, p(z_1=sense\_open\, | \, x_1 =is\_closed) \overline{bel}(x_0=is\_closed) \\ =& \eta \, 0.2*0.5 = 0.1\eta \end{aligned}\tag{2.32} ==bel(x1=is_closed)ηp(z1=sense_open∣x1=is_closed)bel(x0=is_closed)η0.2∗0.5=0.1η(2.32)
归一化因子 η \eta η 的值为 1 / ( 0.3 + 0.1 ) = 2.5 1/(0.3+0.1)=2.5 1/(0.3+0.1)=2.5。因此,我们获得下式:
b e l ( x 1 = i s _ o p e n ) = 0.75 b e l ( x 1 = i s _ c l o s e d ) = 0.25 (2.33) {bel} (x_1=is\_open)=0.75 \\ {bel} (x_1=is\_closed) =0.25\tag{2.33} bel(x1=is_open)=0.75bel(x1=is_closed)=0.25(2.33)
贝叶斯滤波器第一次迭代结束。按照这种方式,我们可以继续计算下去。
Mathematical Derivation of the Bayes Filter
该节是主要讲述如何使用贝叶斯法则推导贝叶斯滤波器,推导中使用了状态的完整性和马尔科夫链的概念。
根据贝叶斯法则,我们可知:
p ( x t ∣ z 1 : t , u 1 : t ) = p ( z t ∣ x t , z 1 : t − 1 , u 1 : t ) p ( x t ∣ z 1 : t − 1 , u 1 : t ) p ( z t ∣ z 1 : t − 1 , u 1 : t ) = η p ( z t ∣ x t , z 1 : t − 1 , u 1 : t ) p ( x t ∣ z 1 : t − 1 , u 1 : t ) (2.34) \begin{aligned} p(x_t \, | \, z_{1:t},u_{1:t}) & = \frac{p(z_t \, | \, x_t,z_{1:t-1},u_{1:t})p(x_t \, | \,z_{1:t-1},u_{1:t})}{p(z_{t}\,| \, z_{1:t-1},u_{1:t})} \\ & = \eta \, p(z_t \, | \, x_t,z_{1:t-1},u_{1:t}) \, p(x_t \, | \,z_{1:t-1},u_{1:t}) \end{aligned}\tag{2.34} p(xt∣z1:t,u1:t)=p(zt∣z1:t−1,u1:t)p(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)=ηp(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)(2.34)
因为我们假设 t t t 时刻的状态是完整的。即 x t x_t xt 之前没有变量可能影响 x t + 1 x_{t+1} xt+1 的随机演化,(2.34)可以简化为:
p ( x t ∣ z 1 : t , u 1 : t ) = η p ( z t ∣ x t ) p ( x t ∣ z 1 : t − 1 , u 1 : t ) (2.35) p(x_t \, | \, z_{1:t},u_{1:t}) = \eta \, p(z_t \, | \, x_t) \, p(x_t \, | \,z_{1:t-1},u_{1:t}) \tag{2.35} p(xt∣z1:t,u1:t)=ηp(zt∣xt)p(xt∣z1:t−1,u1:t)(2.35)
因此,(2.35)为伪代码第4行。
根据全概率公式展开 p ( x t ∣ z 1 : t − 1 , u 1 : t ) p(x_t \, | \,z_{1:t-1},u_{1:t}) p(xt∣z1:t−1,u1:t) ,即 b e l ‾ ( x t ) \overline{bel}(x_t) bel(xt):
b e l ‾ ( x t ) = p ( x t ∣ z 1 : t − 1 , u 1 : t ) = ∫ p ( x t ∣ x t − 1 , z 1 : t − 1 , u 1 : t ) p ( x t − 1 ∣ z 1 : t − 1 , u 1 : t ) d x t − 1 (2.36) \begin{aligned} \overline{bel}(x_t) & = p(x_t \, | \,z_{1:t-1},u_{1:t}) \\ & = \int p(x_t \, | \,x_{t-1} ,z_{1:t-1},u_{1:t}) \, p(x_{t-1} \, | \, z_{1:t-1},u_{1:t}) \, dx_{t-1} \end{aligned}\tag{2.36} bel(xt)=p(xt∣z1:t−1,u1:t)=∫p(xt∣xt−1,z1:t−1,u1:t)p(xt−1∣z1:t−1,u1:t)dxt−1(2.36)
因为状态是完整的,所以 x t − 1 x_{t-1} xt−1 包含过去的测量和控制信息—— z 1 : t − 1 z_{1:t-1} z1:t−1 和 u 1 : t − 1 u_{1:t-1} u1:t−1,(2.36)简化为:
b e l ‾ ( x t ) = ∫ p ( x t ∣ x t − 1 , u t ) p ( x t − 1 ∣ z 1 : t − 1 , u 1 : t ) d x t − 1 (2.37) \overline{bel}(x_t) = \int p(x_t \, | \,x_{t-1} ,u_{t}) \, p(x_{t-1} \, | \, z_{1:t-1},u_{1:t}) \, dx_{t-1} \tag{2.37} bel(xt)=∫p(xt∣xt−1,ut)p(xt−1∣z1:t−1,u1:t)dxt−1(2.37)
The Markov Assumption
马尔可夫假设假设,如果知道当前状态 x t x_t xt,过去和未来的数据是独立的。但这个假设的要求很高,在一些情况下假设会不成立,例如:
- 建模状态不能包含全部真实状态
- 状态转移概率和测量概率的误差
- 置信函数的近似误差
Representation and Computation
在一般的机器人问题中,置信分布是近似的。为了计算的准确性,近似函数的选择也很重要。通常会考虑以下几个方面:
- 计算效率
- 近似的准确性
- 计算的简易性
Summary
在本节中,我们介绍了机器人技术中贝叶斯过滤器的基本思想,作为估计环境状态(包括机器人本身的状态)的方法。
- 机器人与其环境的交互被建模为耦合动力系统,其中机器人可以通过选择控制来操纵其环境,并且可以通过传感器测量来感知其环境。
- 状态转移概率和测量概率
- 贝叶斯过滤器是递归的; 时间 t 的置信度是根据时间 t − 1 的置信度计算得出的。
- 马尔可夫假设
- 近似函数的评估涉及其准确性、效率和实施的难易程度。
Bibliographical Remarks
略