【Probabilistic Robotics】【概率机器人】【SLAM】Chapter 2 “Recursive State Estimation“ ---- 总结、心得与扩展阅读

本文介绍了概率机器人学中的核心概念——贝叶斯滤波,详细阐述了状态估计的基本过程,包括状态、环境交互、概率生成定律和信念分布。通过一个简单的例子展示了贝叶斯滤波器如何在获取传感器数据和执行控制后更新状态估计。同时,文章讨论了马尔可夫假设在状态转移中的作用,以及近似函数在实际计算中的重要性。
摘要由CSDN通过智能技术生成

序:此博客的主要内容是《Probabilistic Robotics》的第二章节“迭代状态估计”,目的与我上一篇文章一致。读者若没有读过第一篇可以点击下面的链接跳转。由于时间仓促,恐有疏漏,还望各位批评指正。

点击我进行跳转

正文

第二章分为七个部分,其中第三、第四部分内各有四个小部分,如下:

  1. Introduction
  2. Basic Concepts in Probability
  3. Robot Environment Interaction
    3.1 State
    3.2 Environment Interaction
    3.3 Probabilistic Generative Laws
    3.4 Belief Distributions
  4. Bayes Filters
    4.1 The Bayes Filter Algorithm
    4.2 Example
    4.3 Mathematical Derivation of the Bayes Filter
    4.4 The Markov Assumption
  5. Representation and Computation
  6. Summary
  7. Bibliographical Remarks

Introduction

   本节介绍了该章的结构。其中,贝叶斯滤波器是重点,是本书大部分算法的基础。

Basic Concepts in Probability

   该部分介绍了一些概率论的基础知识。有一定基础的朋友可以跳过该部分。

  1. 随机变量:设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} xp(X=x)=1(离散情况)(2.2)

  1. 正态分布:分为标量和多维向量两种情况(当多维公式维度为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 Σ为随机变量的均值和协方差矩阵(该矩阵正半定对称)。

  1. 一些常见公式:

   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,yz)=p(xz)p(yz)(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(xy)=p(X=xY=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)=yp(xy)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(xy)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(xy)=p(y)p(yx)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)=xp(yx)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(yx)p(x)dx(连续)(2.12)

   个人理解: p ( x ) p(x) p(x) 是先验概率分布,是系统在获得新信息前的随机变量的旧分布。 p ( y ) p(y) p(y) 是新信息,用来更新旧分布,可以视为传感器获得的新信息, p ( x   ∣   y ) p(x \, | \, y) p(xy) 是后验概率分布,是原来 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(xy)=ηp(yx)p(x)(2.13)

   用辅助变量 a u x x ∣ y aux_{x|y} auxxy 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} auxxy=p(yx)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=xauxxy(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(xy)=auxyauxxy(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[XE[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)]=xp(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

图1 机器人与环境的互动

1. State

  在本书中,我们将状态视作机器人及其环境的所有特征的集合,它的符号是 x x x ,当时间为 t t t 时,状态为 x t x_t xt。其中,状态有动静、内外之分。例如,大街上人的位置是动态的;建筑物的墙是静态的;机器人自身的姿态,位置,速度是内部状态,环境变量为外部的。

  此外,如果一个状态包含完整的过去状态、测量或控制信息,而且不具有对未来进行准确预测的信息,我们称这个状态是完整的。反之,如果一个状态不包含完整的信息,我们称之为不完整的状态。

  在一个大多数机器人系统中,状态通常是连续的,比如机器人的位姿,速度等;但有时,状态也可以是离散的,例如判断传感器是否损坏,0为损坏,1为良好等。对于既包含连续状态空间,又包含离散状态空间的状态空间,我们称为混合状态空间

  此外,如果在一个过程中, x t − 1 x_{t-1} xt1 的信息只对 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(xtx0:t1,z1:t1,u1:t)(2.20)

  假如状态 x x x 是完整的,那么该状态包括了之前步骤中出现的所有信息。以 x t − 1 x_{t-1} xt1 为例,它包含了 z 1 : t − 1 , u 1 : t − 1 z_{1:t-1},u_{1:t-1} z1:t1,u1:t1 的信息。所以,(2.20)可以化简为如下:

p ( x t   ∣   x t − 1 , u t ) (2.21) p(x_t \, | \, x_{t-1},u_{t}) \tag{2.21} p(xtxt1,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(ztx0:t,z1:t1,u1:t)=p(ztxt)(2.22)

  概率式(2.22)是测量概率,它表明了从状态 x x x 生成测量 z z z 的概率定律。而且,(2.22)的等号也说明了如果当前状态是完整的,那么该状态足以测量此时的新信息 z t z_t zt

  我们不难发现,时间 t t t 时的状态随机依赖于时间 t − 1 t - 1 t1 时的状态和控制 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(xtz1: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(xtz1:t1,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

  直接给出贝叶斯滤波器的伪代码形式:

  1. \quad\quad\quad Algorithm_Bayes_Filter ( b e l ( x t − 1 ) (bel(x_{t-1}) (bel(xt1), u t u_t ut, z t ) z_t) zt)
  2. \quad\quad\quad\quad for all x t x_t xt do
  3. \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(xtut,xt1)bel(xt1)dx
  4. \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(ztxt)bel(xt)
  5. \quad\quad\quad\quad end
  6. \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(xt1) 计算 b e l ( x t ) bel(x_t) bel(xt)

  再看输入输出,它的输入是时间 t − 1 t−1 t1 时的置信度 b e l ( x t − 1 ) bel(x_{t-1}) bel(xt1),以及最近的控制 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} xt1 u t u_t ut,而不含有 z t z_t zt。再看右边,实际上是状态转移概率与上个时刻的置信分布的乘积的积分。这个很好理解,已知上一个时刻的后验置信分布了,我想获得这个时刻的置信分布,怎么办呢?状态转移概率可以帮助我们,它的含义就是状态从 t − 1 t-1 t1 时刻到 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_openXt=is_open)=0.6p(Zt=sense_closeXt=is_open)=0.4p(Zt=sense_openXt=is_close)=0.2p(Zt=sense_closeXt=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_openUt=pushXt1=is_open)=1p(Xt=is_closedUt=pushXt1=is_open)=0p(Xt=is_openUt=pushXt1=is_closed)=0.8p(Xt=is_closedUt=pushXt1=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_openUt=do_nothingXt1=is_open)=1p(Xt=is_closedUt=do_nothingXt1=is_open)=0p(Xt=is_openUt=do_nothingXt1=is_closed)=0p(Xt=is_closedUt=do_nothingXt1=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(x1u1,x0)bel(x0)dx0p(x1u1=do_nothing,x0=is_open)bel(x0=is_open)+p(x1u1=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_openu1=do_nothing,x0=is_open)bel(x0=is_open)+p(x1=is_openu1=do_nothing,x0=is_closed)bel(x0=is_closed)10.5+00.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_closedu1=do_nothing,x0=is_open)bel(x0=is_open)+p(x1=is_closedu1=do_nothing,x0=is_closed)bel(x0=is_closed)00.5+10.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_openx1=is_open)bel(x0=is_open)η0.60.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_openx1=is_closed)bel(x0=is_closed)η0.20.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(xtz1:t,u1:t)=p(ztz1:t1,u1:t)p(ztxt,z1:t1,u1:t)p(xtz1:t1,u1:t)=ηp(ztxt,z1:t1,u1:t)p(xtz1:t1,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(xtz1:t,u1:t)=ηp(ztxt)p(xtz1:t1,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(xtz1:t1,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(xtz1:t1,u1:t)=p(xtxt1,z1:t1,u1:t)p(xt1z1:t1,u1:t)dxt1(2.36)

  因为状态是完整的,所以 x t − 1 x_{t-1} xt1 包含过去的测量和控制信息—— z 1 : t − 1 z_{1:t-1} z1:t1 u 1 : t − 1 u_{1:t-1} u1:t1,(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(xtxt1,ut)p(xt1z1:t1,u1:t)dxt1(2.37)

The Markov Assumption

  马尔可夫假设假设,如果知道当前状态 x t x_t xt,过去和未来的数据是独立的。但这个假设的要求很高,在一些情况下假设会不成立,例如:

  1. 建模状态不能包含全部真实状态
  2. 状态转移概率和测量概率的误差
  3. 置信函数的近似误差

Representation and Computation

  在一般的机器人问题中,置信分布是近似的。为了计算的准确性,近似函数的选择也很重要。通常会考虑以下几个方面:

  1. 计算效率
  2. 近似的准确性
  3. 计算的简易性

Summary

  在本节中,我们介绍了机器人技术中贝叶斯过滤器的基本思想,作为估计环境状态(包括机器人本身的状态)的方法。

  1. 机器人与其环境的交互被建模为耦合动力系统,其中机器人可以通过选择控制来操纵其环境,并且可以通过传感器测量来感知其环境。
  2. 状态转移概率和测量概率
  3. 贝叶斯过滤器是递归的; 时间 t 的置信度是根据时间 t − 1 的置信度计算得出的。
  4. 马尔可夫假设
  5. 近似函数的评估涉及其准确性、效率和实施的难易程度。

Bibliographical Remarks

  略

扩展阅读

  1. 状态和状态空间
  2. 马尔可夫链
  3. 卡尔曼滤波(可能需要vpn)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值