概率机器人(Probability Robotics)笔记 Chapter 3: 高斯滤波器(Gaussian Filters)

高斯滤波器

1. 简介

本章讲解一系列递归状态估计器,统称高斯滤波器
高斯滤波器是最早的连续贝叶斯滤波器的计算量可实现版本。

高斯滤波器的思想是所有的置信度都是多元高斯。分布表达式:
p ( x ) = det ⁡ ( 2 π Σ ) − f r a c 12 exp ⁡ { − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) } p(x)=\det (2\pi\Sigma)^{-frac{1}{2}}\exp\{-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\} p(x)=det(2πΣ)frac12exp{21(xμ)TΣ1(xμ)}
这个分布是由前两阶矩来描述的,即均值$\mu$与方差 Σ \Sigma Σ
Σ \Sigma Σ是一个二次、对称、半正定矩阵,维度是状态变量维度的平方。

高斯后验的后果是,高斯是单模型(unimodel)的,也就是有单个最大值;
因此只能用来做tracking,而不适用于全局定位之类的问题。

高斯有两种表达:矩表达和权威(canonical)表达,功能相同,但算法计算不同。

2. 卡尔曼滤波器

2.1 线性高斯系统

卡尔曼滤波器可用于线性系统中的滤波和预测,适用于连续状态,不适用于离散空间。
使用矩来表达后验:均值 μ t \mu_t μt和方差 Σ t \Sigma_t Σt

需要满足三个条件,后验才是高斯分布:

  1. 状态转移概率 p ( x t ∣ u t , x t − 1 ) p(x_t|u_t,x_{t-1}) p(xtut,xt1)是线性函数加高斯噪声(简称线性高斯),即
    x t = A t x t − 1 + B t u t + ϵ t x_t=A_tx_{t-1}+B_tu_t+\epsilon_t xt=Atxt1+Btut+ϵt,
    其中 x t , u t x_t, u_t xt,ut分别是维度为n和m的列向量, A t , B t A_t, B_t At,Bt为系数阵,
    ϵ t \epsilon_t ϵt是零均值高斯分布的随机向量,方差记为 R t R_t Rt
    后验高斯的均值为 A t x t − 1 + B t u t A_tx_{t-1}+B_tu_t Atxt1+Btut,方差为 R t R_t Rt
  2. 测量概率 p ( z t ∣ x t ) p(z_t|x_t) p(ztxt)是线性高斯,即 z t = C t x t + δ t z_t=C_tx_t+\delta_t zt=Ctxt+δt
    其中 δ t \delta_t δt是零均值高斯分布的随机噪声向量,方差为 Q t Q_t Qt
    后验高斯的均值为 C t x t C_tx_t Ctxt,方差为 Q t Q_t Qt
  3. 置信概率的初始分布需要是高斯,即均值为 μ 0 \mu_0 μ0,方差为 Σ 0 \Sigma_0 Σ0

2.2 卡尔曼滤波器算法

算法 Kalman_filter( μ t − 1 , Σ t − 1 , u t , z t \mu_{t-1}, \Sigma_{t-1}, u_t,z_t μt1,Σt1,ut,zt):
02···· μ ^ t = A t μ t − 1 + B t u t \hat{\mu}_t=A_t\mu_{t-1}+B_tu_t μ^t=Atμt1+Btut
03···· Σ ^ t = A t Σ t − 1 A t T + R t \hat{\Sigma}_t=A_t\Sigma{t-1}A_t^T+R_t Σ^t=AtΣt1AtT+Rt
04···· K t = Σ ^ t C t T ( C t Σ t ^ C t T + Q t ) − 1 K_t=\hat{\Sigma}_tC_t^T(C_t\hat{\Sigma_t}C_t^T+Q_t)^{-1} Kt=Σ^tCtT(CtΣt^CtT+Qt)1
05···· μ t = μ ^ t + K t ( z t − C t μ ^ t ) \mu_t=\hat{\mu}_t+K_t(z_t-C_t\hat{\mu}_t) μt=μ^t+Kt(ztCtμ^t)
06···· Σ t = ( I − K t C t ) Σ ^ t \Sigma_t=(I-K_tC_t)\hat{\Sigma}_t Σt=(IKtCt)Σ^t
07····return μ t , Σ t \mu_t,\Sigma_t μt,Σt

算法中, K K K是卡尔曼增益,决定了测量对新的状态估计的影响。

2.3 图示

略过…

2.4 卡尔曼滤波器的数学推导

具体不写了,有些小技巧:

如果一个置信度满足 b e l ( x t ) = η exp ⁡ { − J t } bel(x_t)=\eta\exp\{-J_t\} bel(xt)=ηexp{Jt},而 J t J_t Jt x t x_t xt的二次函数,
则置信度是高斯分布, J t J_t Jt x t x_t xt的极值点(一阶导为0处)就是均值,
曲率(二阶导)的逆矩阵就是方差。

证明分两个部分,即运动预测和测量更新,
都是把高斯分布带入贝叶斯滤波器的泛化的表达式,然后求均值和方差。

3. 扩展卡尔曼滤波器

卡尔曼滤波器假设状态转换与测量模型都是线性高斯,现实中很难是这样。
扩展卡尔曼滤波器克服了线性的假设。这里假设状态转换和测量函数都非线性,即
x t = g ( u t , x t − 1 ) + ϵ t x_t = g(u_t,x_{t-1})+\epsilon_t xt=g(ut,xt1)+ϵt z t = h ( x t ) + δ t z_t=h(x_t)+\delta_t zt=h(xt)+δt

扩展卡尔曼滤波器计算的是真实置信分布的高斯近似。

3.1 泰勒展开线性化

高斯分布经过非线性函数通常就不是高斯了;
线性化是找一个与这个非线性函数在高斯分布均值点相切的线性函数;
之后这个高斯分布经过这个线性函数映射,仍然是高斯。

g ( u t , x t − 1 ) ≈ g ( u t , μ t − 1 ) + g ′ ( u t , μ t − 1 ) ( x t − 1 − μ t − 1 ) = g ( u t , μ t − 1 ) + G t ( x t − 1 − μ t − 1 ) \begin{array}{lll} g(u_t,x_{t-1}) & \approx & g(u_t,\mu_{t-1}) + g'(u_t,\mu_{t-1})(x_{t-1}-\mu_{t-1}) \\ & = & g(u_t,\mu_{t-1}) + G_t(x_{t-1}-\mu_{t-1}) \end{array} g(ut,xt1)=g(ut,μt1)+g(ut,μt1)(xt1μt1)g(ut,μt1)+Gt(xt1μt1)

雅可比矩阵 G t G_t Gt的维度是n×n。

将上式带到高斯分布中,可以得到高斯分布 p ( x t ∣ u t , x t − 1 ) p(x_t|u_t,x_{t-1}) p(xtut,xt1)的矩:
均值为 g ( u t , μ t − 1 ) + G t ( x t − 1 − μ t − 1 ) g(u_t,\mu_{t-1}) + G_t(x_{t-1}-\mu_{t-1}) g(ut,μt1)+Gt(xt1μt1), 方差为 R t R_t Rt

对测量模型的处理相同,即
h ( x t ) ≈ h ( μ ^ t ) + h ′ ( μ ^ t ) ( x t − μ ^ t ) = h ( μ ^ t ) + H t ( x t − μ ^ t ) h(x_t)\approx h(\hat{\mu}_t)+h'(\hat{\mu}_t)(x_t-\hat{\mu}_t)=h(\hat{\mu}_t)+H_t(x_t-\hat{\mu}_t) h(xt)h(μ^t)+h(μ^t)(xtμ^t)=h(μ^t)+Ht(xtμ^t)
得到对应的高斯分布的矩为:
均值为 h ( μ ^ t ) + H t ( x t − μ ^ t ) h(\hat{\mu}_t)+H_t(x_t-\hat{\mu}_t) h(μ^t)+Ht(xtμ^t), 方差为 Q t Q_t Qt

3.2 EKF算法

算法 Extended_Kalman_filter( μ t − 1 , Σ t − 1 , u t , z t \mu_{t-1}, \Sigma_{t-1}, u_t, z_t μt1,Σt1,ut,zt):
02···· μ ^ t = g ( u t , μ t − 1 ) \hat{\mu}_t=g(u_t,\mu{t-1}) μ^t=g(ut,μt1)
03···· Σ ^ t = G t Σ t − 1 G t T + R t \hat{\Sigma}_t=G_t\Sigma_{t-1}G_t^T+R_t Σ^t=GtΣt1GtT+Rt
04···· K t K_t Kt=\hat{\Sigma}_tH_tT(H_t\hat{\Sigma}_tH_tT+Q_t)^{-1}$
05···· μ t = μ ^ t + K t ( z t − h ( μ ^ t ) ) \mu_t=\hat{\mu}_t+K_t(z_t-h(\hat{\mu}_t)) μt=μ^t+Kt(zth(μ^t))
06···· Σ t = ( I − K t H t ) Σ ^ t \Sigma_t=(I-K_tH_t)\hat{\Sigma}_t Σt=(IKtHt)Σ^t
07····return μ t , Σ t \mu_t, \Sigma_t μt,Σt

与KF不同的是,EKF使用了雅可比矩阵 G t G_t Gt H t H_t Ht来代替线性的系数矩阵 A t , B t , C t A_t,B_t,C_t At,Bt,Ct

3.3 数学证明

与KF基本相同,略过。

3.4 实践考虑

EKF非常流行,因为简单而且计算效率高,时间复杂度 O ( k 2.8 + n 2 ) O(k^{2.8}+n^2) O(k2.8+n2);  
其中k是测量向量的维度,n是状态向量的维度。

EKF使用高斯,是一个单模型的分布,也就是只有一个猜测,伴随一定不确定性。
一种常用的EKF扩展是使用混合高斯(多个高斯相加)来表示后验。

泰勒展开的精确度给予两方面:函数的非线性程度,与不确定性(高斯峰的宽度)。
还有其他线性化的方式,如unscented KF,是选一些探针点,然后将其线性近似;
再如矩匹配(moments matching),是通过观测后验分布的均值和方差。

4. 信息滤波器

未完待续

5. 总结

未完待续

你可能感兴趣的:(概率机器人笔记)