卡尔曼滤波器有无数种推导方法:你可以将因果IIR维纳滤波器写成递推的形式,那么就是卡尔曼滤波器;你可以将估计值测量值等等都假设为高斯分布,通过最大后验估计(maximun a posterior)得到批量最小二乘法(batch least-squares):$(H^TW^{-1}H)x = H^TW^{-1}z$,利用$H^TW^{-1}H$的稀疏性,通过Cholesky分解并发现其中的递推规则,总结出卡尔曼滤波器。。。你也可以直接解析地求得后验分布并总结出卡尔曼滤波器,而这种推导方法是最简洁的。

为什么要将估计量和测量值建模为高斯分布?一方面因为这是现实世界的合理假设,另外高斯分布这种指数上二次型有很好的特性:两个高斯分布的和、积都是高斯分布,从而高斯分布经过线性变换之后还是高斯分布。

将参数建模为高斯分布的均值,假设只有线性变换,然后该怎么求?高斯分布的均值和最大值一样,而且它是凸的,而且指数只是二次的,于是求导令它等于0就得到结果了。求导得到的就是最小二乘法的方程,也就是说高斯分布求最值其实是最小二乘意义下的最优值。。然后接下来就要神奇地“看出”最小二乘方程里面的稀疏性并化简那些华丽的公式,才能得到卡尔曼滤波器。。

然而,利用贝叶斯公式,从联合高斯分布推导出后验分布的解析表达式,就可以得到后验的均值和方差,就是我们想要的东西了。

多维高斯分布

其中$\bf\mu = \bigl[ \begin{matrix} \mu_1&…&\mu_N \end{matrix} \bigr]^T$ 为N个随机变量的均值,$\bf\Sigma = E[(\bf x - \bf\mu)(\bf x - \bf\mu)^T]$为N个随机变量的协方差矩阵。

舒尔补

Schur complement将一个分4块的可逆矩阵分解为上三角×对角×下三角(UDL),或者下三角×对角×上三角(LDU)形式:

其中$D-CA^{-1}B$和$A-BD^{-1}C$就是舒尔补,字母顺序是顺时针的,方便记忆。

求逆也很方便:

对于协方差矩阵这种对称矩阵求舒尔补,$B=C$,随处可见有二次型。

将上面求逆的式子乘起来得到华丽的式子:

拆开4个式子,称为SMW等式(Sherman-Morrison-Woodbury):

其实可以看出,若ABCD分别代换为DCBA,前面两组式子是等价的,后面两组式子也是等价的,相当于只有两条等式。利用这些等式可以进行化简,两个项变一个项,左乘变右乘等等。虽然后文并没用到,但是别的卡尔曼滤波器推导方法则是反复利用这些公式来将结果化到标准形式。。

乘法原理和贝叶斯公式

一个联合概率密度函数可以写成连乘的形式;其中$\bf {x_i}$也可以是个向量:

如果只有两个(两组)随机变量,联合概率密度函数可以写成两种形式:

调整一下就是常见的贝叶斯公式:

赋予它一些含义:$p(y|x)$称为后验(posterior),$p(x|y)$称为似然(likelihood),$p(y)$称为先验(prior)

展开联合高斯概率密度函数

已知

其中$\bf\Sigma_{xy} = \bf\Sigma_{yx}^T$。我们展开联合分布$\bf p(x,y)$,只考虑指数部分的二次型:

从而得到后验概率$\bf p(x|y)$,其中协方差矩阵是一个关于$\bf\Sigma_{xx}$的舒尔补:

同理,用另一种方式展开舒尔补,我们可以得到x的后验概率:

推导经典的5个卡尔曼滤波器公式

将系统建模为以下两个线性方程:运动方程观测方程

其中,$\bf x_k$是当前系统的状态(比如速度、位姿等),$\bf w_k$为当前时刻系统的输入(外界驱动的因素),$\bf y_k$是当前观测(传感器测得值);它们都加上了0均值的高斯噪声$\bf u_k \sim \mathcal N(\bf 0, \bf Q_k)$和$\bf v_k \sim \mathcal N(\bf 0, \bf R_k)$。

由运动方程看出,系统是一个由带$\bf u_k$噪声的$\bf w_k$驱动的一阶自回归系统(AR(1)模型),因此系统是一定程度上可预测的;另外系统的观测方程描述了在$\bf x_k$状态下传感器可能的读数$\bf y_k$。根据运动方程得到的是$p(\bf x_k | \bf x_{k-1})$的分布,根据观测方程则得到$p(\bf y_k | \bf x_{k-1})$的分布。我们先算得它们的联合分布$p(\bf x_k,\bf y_k | \bf x_{k-1})$,进而得到后验分布$p(\bf x_k | \bf x_{k-1},\bf y_k)$,得于是到后验的均值和方差,这就是卡尔曼滤波的想法。

我们先得到$p(\bf x_k | \bf x_{k-1})\sim\mathcal N(\bf\check{x}_k,\bf\check{P}_k)$,即卡尔曼滤波的预测

对于y:

要得到联合高斯分布还需要$\bf x,y$的协方差矩阵:

然后我们直接写出联合高斯分布$\bf p( x_k, y_k | x_{k-1})$:

由上文展开联合高斯概率密度函数得到后验概率,即卡尔曼滤波器的更新

发现有一些项重复性很高,总结为卡尔曼增益。(注意它的形式跟第三条SMW等式一样,意味着它也可以写成另外的形式)

于是后验的均值和方差为:

总结