跳转至

KF & EKF

参考资料:B 站 Dr.Can 的视频

1 任务定义

考虑线性离散系统状态空间方程

\[\begin{aligned} \mathbf{x}_k &= A\mathbf{x}_{k-1}+B\mathbf{u}_{k-1}+\mathbf{w}_{k-1}\\ \mathbf{z}_k &= H\mathbf{x}_k + \mathbf{v}_k \end{aligned}\]

这里的 \(\mathbf{w}_{k-1}\)\(\mathbf{v}_k\) 都是噪声,服从如下正态分布

\[ \mathbf{w}_k \sim \mathcal{N}(\mathbf{0}, Q_k) \ \ \ \ \ \ \ \ \ \ \mathbf{v}_k \sim \mathcal{N}(\mathbf{0},R_k) \]

其中,我们已知的是系统结构 \(A,B,H\) ,测量结果 \(\mathbf{z}_k\) ,控制输入 \(\mathbf{u}_k\) 以及协方差矩阵 \(Q_k\)\(R_k\) 。目的是求得系统状态 \(\mathbf{x}_k\) 的最优估计。(这里的 \(A,H\) 都是方阵, \(B\) 可以不是方阵。)

2 先验估计与测量

首先,在获得上一时刻的估计值 \(\hat{\mathbf{x}}_{k-1}\) 后,可以计算得到本时刻系统状态的先验估计 \(\hat{\mathbf{x}}_k^{-}\) (右上角的负号代表先验):

\[ \hat{\mathbf{x}}_k^{-} = A\hat{\mathbf{x}}_{k-1} + B\mathbf{u}_{k-1} \tag{1} \]

其次,在获得当前时刻的测量值后,可以计算得到本时刻系统状态的测量结果 \(\hat{\mathbf{x}}_{k,meas}\)

\[ \hat{\mathbf{x}}_{k,meas} = H^{-1}\mathbf{z}_k \tag{2} \]

Note

实际系统中,\(H\) 很可能是不可逆的,即无法通过测量值得知状态量。此处假设 \(H\) 是可逆的,仅为了方便理解下文数据融合的思路。

2 数据融合与 Kalman Gain

2.1 宕开一笔——数据融合

考虑两个满足正态分布的测量结果,一个均值 \(z_1 = 6.5\) ,标准差 \(\sigma_1 = 0.2\) ;另一个均值 \(z_2 = 7.3\) ,标准差 \(\sigma_2 = 0.4\) 。请问如何根据这两个测量结果,得到一个最优的测量估计值?

首先一个最基本的思路是将这两个数据加权求和,即

\[ \hat{z} = z_1+k(z_2-z_1) \]

这里的 \(k \in [0,1]\) ,表示对 \(z_2\) 的信任程度 / 对 \(z_1\) 的不信任程度。接下来的问题是, \(k\) 取何值时,估计是最优的?

我们如何定义"最优性"?让我们回顾一下测量结果中"标准差"的含义。以测量结果 1 为例,由于满足正态分布,均值 6.5 ,标准差 0.2 代表真值有 68.27% 的概率落在 [6.3, 6.7] 之间,有 95.45% 的概率落在 [6.1, 6.9] 之间,有 99.73% 的概率落在 [5.9, 7.1] 之间。

我们的 \(\hat{z}\) 可以理解为测量估计的均值,也就是这些区间的中间值;若测量估计的标准差/方差越小,则测量估计与真值越接近,则估计越好。

也就是说,我们需要找到一个 \(k\) 使得 \(\hat{z}\) 的方差最小。

\[\begin{aligned} \mathrm{Var}(\hat{z}) &= \mathrm{Var}[(1-k)z_1] + \mathrm{Var}[kz_2]\\ &= (1-k)^2\mathrm{Var}[z_1]+k^2\mathrm{Var}[z_2]\\ &= (1-k)^2\sigma_1^2 + k^2\sigma_2^2\\ &= \left(\sigma_1^2+\sigma_2^2\right)k^2 -2\sigma_1^2k + \sigma_1^2 \end{aligned}\]

这是一个关于 \(k\) 的二次函数,其极小值点在 \(k = \dfrac{\sigma_1^2}{\sigma_1^2 + \sigma_2^2}\) . 因此,最优测量估计为

\[ \hat{z} = \frac{\sigma_2^2}{\sigma_1^2+\sigma_2^2}z_1 + \frac{\sigma_1^2}{\sigma_1^2+\sigma_2^2}z_2 \]

2.2 回归正题——引出 Kalman Gain

上文的 (1) (2) 两式都没有考虑噪声。我们采用如下的常见方式融合这两个数据,得到系统状态的后验估计:

\[ \hat{\mathbf{x}}_k = \hat{\mathbf{x}}_k^{-} + (K_kH)\left(\hat{\mathbf{x}}_{k,meas}-\hat{\mathbf{x}}_k^{-}\right) \]

这里的 \(K_kH\) 是个对角方阵,对角线上每个元素取值都在 \([0,1]\) ,表示对测量值的信任程度。从而有

\[ \hat{\mathbf{x}}_k = \hat{\mathbf{x}}_k^{-}+K_k\left(\mathbf{z}_k-H\hat{\mathbf{x}}_k^{-}\right) \tag{3} \]

之所以采用 \(K_kH\) 作为系数矩阵,是为了消去 \(\hat{\mathbf{x}}_{k,meas}\) 中多数情况下不成立的 \(H^{-1}\) 一项。

从而有后验估计的误差值:

\[ \begin{aligned}\mathbf{e}_k &= \mathbf{x}_k - \hat{\mathbf{x}}_k\\ &=\mathbf{x}_k - \hat{\mathbf{x}}_k^{-}-K_k\left(\mathbf{z}_k-H\hat{\mathbf{x}}_k^{-}\right)\\ &= \mathbf{x}_k - \hat{\mathbf{x}}_k^{-}-K_k\left(H\mathbf{x}_k + \mathbf{v}_k-H\hat{\mathbf{x}}_k^{-}\right)\\ &= (I-K_kH)\left(\mathbf{x}_k-\hat{\mathbf{x}}_k^{-}\right)-K_k\mathbf{v}_k\\ &= (I-K_kH)\mathbf{e}_k^{-}-K_k\mathbf{v}_k \end{aligned}\]

我们想要求得 \(\mathbf{x}_k\) 的最优估计,也就是想要寻找一个最优的卡尔曼系数 \(K_k\) ,使得误差 \(\mathbf{e}_k\) 最小。

注意到误差满足正态分布,期望为 0 。设 \(\mathbf{e}_k \sim \mathcal{N}(0,P_k)\) ,其中 \(P_k\) 是协方差矩阵。

我们想使误差最小,其实是想使误差分布尽可能集中在 0 附近,即方差尽可能小,即 \(\mathrm{tr}(P_k)\) 尽可能小。我们接下来的任务就是寻找一个最优的卡尔曼系数 \(K_k\) ,使得 \(\mathrm{tr}(P_k)\) 最小。

怎么计算协方差矩阵?\(\mathrm{VAR}(\mathbf{x}) = \mathbb{E}\left(\mathbf{x}\mathbf{x}^{\top}\right) -\mathbb{E}^2(\mathbf{x})\) .

首先,我们计算后验估计误差分布的协方差矩阵 \(P_k\) 。注意到 \(\mathbb{E}(\mathbf{e}_k) = 0\) ,从而有:

\[\begin{aligned} P_k &= \mathbb{E}\left(\mathbf{e}_k\mathbf{e}_k^\top\right)\\ &= \mathbb{E}\left\{\left[(I-K_kH)\mathbf{e}_k^{-}-K_k\mathbf{v}_k\right]\left[(I-K_kH)\mathbf{e}_k^{-}-K_k\mathbf{v}_k\right]^\top\right\}\\ &= \mathbb{E}\left\{\left[(I-K_kH)\mathbf{e}_k^{-}-K_k\mathbf{v}_k\right]\left[\mathbf{e}_k^{-\top}(I-K_kH)^{\top}-\mathbf{v}_k^{\top}K_k^{\top}\right]\right\}\\ &= \mathbb{E}[(I-K_kH)\mathbf{e}_k^{-}\mathbf{e}_k^{-\top}(I-K_kH)^{\top}-(I-K_kH)\mathbf{e}_k^{-}\mathbf{v}_k^\top K_k^\top-\\ &\ \ \ \ \ \ K_k\mathbf{v}_k\mathbf{e}_k^{-\top}(I-K_kH)^{\top} + K_k\mathbf{v}_k\mathbf{v}_k^{\top}K_k^{\top}]\\ &= \mathbb{E}\left[(I-K_kH)\mathbf{e}_k^{-}\mathbf{e}_k^{-\top}(I-K_kH)^{\top}\right] - \mathbb{E}\left[(I-K_kH)\mathbf{e}_k^{-}\mathbf{v}_k^\top K_k^\top\right] - \\ &\ \ \ \ \ \ \mathbb{E}\left[K_k\mathbf{v}_k\mathbf{e}_k^{-\top}(I-K_kH)^{\top}\right] + \mathbb{E}\left[K_k\mathbf{v}_k\mathbf{v}_k^\top K_k^\top\right]\\ &= (I-K_kH)\mathbb{E}\left[\mathbf{e}_k^{-}\mathbf{e}_{k}^{-\top}\right](I-K_kH)^{\top}-(I-K_kH)\mathbb{E}\left[\mathbf{e}_k^{-}\mathbf{v}_{k}^{\top}\right]K_k^{\top} -\\ &\ \ \ \ \ \ K_k\mathbb{E}\left[\mathbf{v}_k\mathbf{e}_k^{-\top}\right](I-K_kH)^{\top} + K_k\mathbb{E}\left[\mathbf{v}_k\mathbf{v}_k^{\top}\right]K_k^{\top} \end{aligned}\]

其中,注意到先验误差 \(\mathbf{e}_k^{-}\) 和测量误差 \(\mathbf{v}_k\) 是相互独立的,因此有

\[\begin{aligned} (I-K_kH)\mathbb{E}\left(\mathbf{e}_k^{-}\mathbf{v}_k^\top\right) K_k^\top &= (I-K_kH)\mathbb{E}\left(\mathbf{e}_k^{-}\right)\mathbb{E}\left(\mathbf{v}_k^\top\right) K_k^\top\\ &= \mathbf{0}\\ K_k\mathbb{E}\left[\mathbf{v}_k\mathbf{e}_k^{-\top}\right](I-K_kH)^{\top} &= \mathbf{0} \end{aligned}\]

此外,因为 \(\mathbf{e}_k^{-}\)\(\mathbf{v}_k\) 的期望都为 \(\mathbf{0}\) ,则有

\[ \mathbb{E}\left(\mathbf{e}_k^{-}\mathbf{e}_k^{-\top}\right) = P_k^{-} \ \ \ \ \ \ \ \ \ \ \mathbb{E}\left(\mathbf{v}_k\mathbf{v}_k^{\top}\right) = R_k \]

进而可以推得:

\[ \begin{aligned}P_k &= (I-K_kH)P_k^{-}(I-K_kH)^{\top} + K_kR_kK_k^\top\end{aligned}\tag{Joseph} \]

上式被称为 Joseph 形式。我们继续化简:

\[\begin{aligned} P_k &= (I-K_kH)P_k^{-}(I-K_kH)^{\top} + K_kR_kK_k^\top\\ &= (I-K_kH)P_k^{-}\left(I-H^\top K_k^\top\right) + K_kR_kK_k^\top\\ &= (P_k^{-}-K_kHP_k^{-})\left(I-H^\top K_k^\top\right) + K_kR_kK_k^\top\\ &= P_k^{-}-P_k^{-}H^\top K_k^{\top}-K_kHP_k^{-}+K_kHP_k^{-}H^\top K_k^{\top} + K_kR_kK_k^\top \end{aligned}\]

注意到 \(P_k^{-}H^\top K_k^\top = (K_kHP_k^{-})^{\top}\) ,所以两者的迹相等。从而可以计算协方差矩阵的迹:

\[\begin{aligned} \mathrm{tr}(P_k) &= \mathrm{tr}\left(P_k^{-}\right)-2\mathrm{tr}\left(K_kHP_k^{-}\right) + \mathrm{tr}\left(K_kHP_k^{-}H^\top K_k^\top\right) + \mathrm{tr}\left(K_kR_kK_k^\top\right) \end{aligned}\]

接下来,我们要找到卡尔曼系数 \(K_k\) 的最优值,让误差分布的协方差矩阵的迹最小。

Theorem

【定理】 \(\dfrac{\partial \mathrm{tr}\left(AB\right)}{\partial A} = \dfrac{\partial \mathrm{tr}\left(B^\top A^\top\right)}{\partial A}=B^\top\) ,其中 \(A\in \mathbb{R}^{m\times n}, B \in \mathbb{R}^{n\times m}\)

【证明】设

\[\begin{aligned} A_{m\times n} = \begin{bmatrix}\mathbf{a}_{1,1\times n}\\ \mathbf{a}_2\\ \vdots\\ \mathbf{a}_m\end{bmatrix} = \begin{bmatrix}a_{11} & a_{12} & \cdots & a_{1n}\\ \vdots & \vdots & & \vdots\\ a_{m1} & a_{m2} & \cdots & a_{mn}\end{bmatrix}\\ B_{n\times m} = \begin{bmatrix}\mathbf{b}_{1,n\times1} & \mathbf{b}_2 & \cdots & \mathbf{b}_m\end{bmatrix} = \begin{bmatrix}b_{11} & b_{12} & \cdots & b_{1m}\\ \vdots & \vdots & & \vdots\\ b_{n1} & b_{n2} & \cdots & b_{nm}\end{bmatrix} \end{aligned}\]

则有 \(\mathrm{tr}(AB) = \mathbf{a}_1\mathbf{b}_1 + \cdots + \mathbf{a}_m\mathbf{b}_m\) 。而 \(\dfrac{\partial \mathrm{tr}(AB)}{\partial a_{ij}} = \dfrac{\partial \mathbf{a}_i\mathbf{b}_i}{\partial a_{ij}} = b_{ji}\) ,所以

\[\begin{aligned} \frac{\partial \mathrm{tr}\left(AB\right)}{\partial A} &= \begin{bmatrix}\frac{\partial\mathrm{tr}\left(AB\right)}{\partial a_{11}} & \cdots & \frac{\partial\mathrm{tr}\left(AB\right)}{\partial a_{1m}}\\ \vdots & &\vdots\\ \frac{\partial\mathrm{tr}\left(AB\right)}{\partial a_{n1}} & \cdots & \frac{\partial\mathrm{tr}\left(AB\right)}{\partial a_{nm}}\end{bmatrix} = \begin{bmatrix}b_{11} & \cdots & b_{n1}\\ \vdots & & \vdots\\ b_{1m} & \cdots & b_{nm}\end{bmatrix}\\ &= B^\top\end{aligned}\]

【定理】 \(\dfrac{\partial \mathrm{tr}\left(ABA^\top\right)}{\partial A}=A\left(B^\top+B\right)\) ,其中 \(A,B \in \mathbb{R}^{n\times n}\)

【证明】

\[\begin{aligned} \frac{\partial \mathrm{tr}\left(ABA^\top\right)}{\partial A} &= \frac{\mathrm{tr}\left[\mathrm{d}A\left(BA^\top\right)\right]}{\partial A} + \frac{\mathrm{tr}\left[(AB)\mathrm{d}A^\top\right]}{\partial A}\\ &= \left(BA^\top\right)^\top + (AB)\\ &= A\left(B^\top+B\right) \end{aligned}\]

我们通过对误差分布的协方差矩阵的迹求导,求其极值点:

\[ \begin{aligned} \frac{\partial \mathrm{tr}(P_k)}{\partial K_k} &= -2(HP_k^{-})^\top + \frac{\partial\mathrm{tr}\left(K_kHP_k^{-}H^\top K_k^\top\right)}{\partial K_k} + \frac{\partial\mathrm{tr}\left(K_kR_kK_k^\top\right)}{\partial K_k}\\ &= -2(HP_k^{-})^\top + K_k\left(HP_k^{-}H^\top + HP_k^{-\top}H^\top\right) + K_k\left(R_k+R_k^{\top}\right)\\ \end{aligned} \]

注意到协方差矩阵 \(P_k^{-}\)\(R_k\) 都是对称矩阵,因而有

\[ \frac{\partial \mathrm{tr}(P_k)}{\partial K_k} = -2P_k^{-} H^\top + 2K_kHP_k^{-}H^\top + 2K_kR_k = 0 \]

从而可以推导得到极小值点为

\[ K_k = P_k^{-} H^\top \left(HP_k^{-}H^\top + R_k\right)^{-1} \]

这就是最优的卡尔曼增益(Kalman Gain)。

3 Kalman Gain 中的协方差

现在,唯一的问题是如何计算先验误差的协方差矩阵 \(P_k^{-}\) 。根据定义,\(P_k^{-} = \mathbb{E}\left[\mathbf{e}_k^{-}\mathbf{e}_k^{-\top}\right]\)

\[\begin{aligned} \mathbf{e}_k^{-} &= \mathbf{x}_k - \hat{\mathbf{x}}_k^{-}\\ &= A\mathbf{x}_{k-1}+B\mathbf{u}_{k-1}+\mathbf{w}_{k-1} - (A\hat{\mathbf{x}}_{k-1} + B\mathbf{u}_{k-1})\\ &= A(\mathbf{x}_{k-1} - \hat{\mathbf{x}}_{k-1}) + \mathbf{w}_{k-1}\\ &= A\mathbf{e}_{k-1} + \mathbf{w}_{k-1} \end{aligned}\]

将上式代入协方差矩阵定义,有

\[\begin{aligned} P_k^{-} &= \mathbb{E}\left[(A\mathbf{e}_{k-1} + \mathbf{w}_{k-1})\left(\mathbf{e}_{k-1}^{\top}A^{\top}+\mathbf{w}_{k-1}^{\top}\right)\right]\\ &= \mathbb{E}\left[A\mathbf{e}_{k-1}\mathbf{e}_{k-1}^{\top}A^{\top}\right] + \mathbb{E}\left[A\mathbf{e}_{k-1}\mathbf{w}_{k-1}^{\top}\right] + \mathbb{E}\left[\mathbf{w}_{k-1}\mathbf{e}_{k-1}^\top A^\top\right] + \mathbb{E}\left[\mathbf{w}_{k-1}\mathbf{w}_{k-1}^\top\right]\\ &= A\mathbb{E}\left[\mathbf{e}_{k-1}\mathbf{e}_{k-1}^{\top}\right]A^{\top} + A\mathbb{E}\left[\mathbf{e}_{k-1}\mathbf{w}_{k-1}^{\top}\right] + \mathbb{E}\left[\mathbf{w}_{k-1}\mathbf{e}_{k-1}^\top\right]A^{\top} + \mathbb{E}\left[\mathbf{w}_{k-1}\mathbf{w}_{k-1}^\top\right] \end{aligned}\]

注意到 \(\mathbf{e}_{k-1}\) 描述第 k-1 次的状态估计误差,而 \(\mathbf{w}_{k-1}\) 是第 k 次的过程噪声,两者相互独立,因而有:

\[\begin{aligned} A\mathbb{E}\left[\mathbf{e}_{k-1}\mathbf{w}_{k-1}^\top\right] &= A\mathbf{0}_{n\times 1}\mathbf{0}_{1\times n}\\ &= \mathbf{0}_{n\times n} \end{aligned}\]

同理, \(\mathbb{E}\left[\mathbf{w}_{k-1}\mathbf{e}_{k-1}^\top\right]A^{\top} = \mathbf{0}_{n\times n}\) 。因此,协方差矩阵可表示为:

\[\begin{aligned} P_k^{-} &= A\mathbb{E}\left[\mathbf{e}_{k-1}\mathbf{e}_{k-1}^\top\right]A^\top + \mathbb{E}\left[\mathbf{w}_{k-1}\mathbf{w}_{k-1}^\top\right]\\ &= AP_{k-1}A^\top + Q_{k-1} \end{aligned}\]

4 Kalman Filter 公式

4.1 预测过程

先验估计: \(\hat{\mathbf{x}}_k^{-} = A\hat{\mathbf{x}}_{k-1} + B\mathbf{u}_{k-1}\)

先验误差协方差: \(P_k^{-} = AP_{k-1}A^\top + Q_{k-1}\)

4.2 校正过程

卡尔曼增益: \(K_k = P_k^{-} H^\top \left(HP_k^{-}H^\top + R_k\right)^{-1}\)

后验估计: \(\hat{\mathbf{x}}_k = \hat{\mathbf{x}}_k^{-}+K_k\left(\mathbf{z}_k-H\hat{\mathbf{x}}_k^{-}\right)\) (最终的估计结果)

更新后验误差的协方差矩阵:

\[\begin{aligned} P_k &= P_k^{-}-P_k^{-}H^\top K_k^{\top}-K_kHP_k^{-}+K_kHP_k^{-}H^\top K_k^{\top} + K_kR_kK_k^\top\\ &= P_k^{-}-P_k^{-}H^\top K_k^{\top}-K_kHP_k^{-}+ K_k\left(HP_k^{-}H^\top + R_k\right)K_k^\top\\ &= P_k^{-}-P_k^{-}H^\top K_k^{\top}-K_kHP_k^{-}\\ &\ \ \ \ + P_k^{-} H^\top \left(HP_k^{-}H^\top + R_k\right)^{-1}\left(HP_k^{-}H^\top + R_k\right)K_k^\top\\ &= P_k^{-}-K_kHP_k^{-}\\ &= \left(I-K_kH\right)P_k^{-} \end{aligned}\]

以及 Joseph 形式:

\[ P_k = (I-K_kH)P_k^{-}(I-K_kH)^{\top} + K_kR_kK_k^\top \]

在工程实际中,Joseph 形式是更受推荐的形式,因其显式保证了计算结果的对称正定性,避免了浮点舍入误差或强非线性对计算结果正定对称性的干扰。

5 初值问题

TODO

6 EKF 扩展卡尔曼滤波器

之前我们所考虑的都是线性系统,那如果是更常见的非线性系统呢?

\[\begin{aligned} \mathbf{x}_k &= f(\mathbf{x}_{k-1},\mathbf{u}_{k-1},\mathbf{w}_{k-1})\\ \mathbf{z}_k &= h(\mathbf{x}_k, \mathbf{v}_k) \end{aligned}\]

大问题:正态分布的随机变量通过非线性映射后,就不再是正态分布的了

常见的解决方法:在工作点(Operating Point)处,对非线性系统进行线性化。但我们实际上无法获知真实工作点,所以常见的做法是在上一时刻的后验估计 \(\hat{\mathbf{x}}_{k-1}, \hat{\mathbf{w}}_{k-1}\) 处对系统进行线性化。

首先考虑模型动力学部分:

\[\begin{aligned} \mathbf{x}_k = f(\hat{\mathbf{x}}_{k-1},\mathbf{u}_{k-1},\hat{\mathbf{w}}_{k-1}) &+ \frac{\partial f}{\partial \mathbf{x}}|_{\hat{\mathbf{x}}_{k-1}, \mathbf{u}_{k-1}, \hat{\mathbf{w}}_{k-1}}(\mathbf{x}_{k-1} - \hat{\mathbf{x}}_{k-1})\\ &+ \frac{\partial f}{\partial \mathbf{w}}|_{\hat{\mathbf{x}}_{k-1}, \mathbf{u}_{k-1}, \hat{\mathbf{w}}_{k-1}}(\mathbf{w}_{k-1} - \hat{\mathbf{w}}_{k-1}) \end{aligned}\]

Question

Q:为什么不对控制输入 \(\mathbf{u}_{k-1}\) 求偏导?

A:因为 \(\mathbf{u}_{k-1}\) 的偏导项为 0 。再细了说,因为 \(\mathbf{u}_{k-1} - \hat{\mathbf{u}}_{k-1} = 0\) ,即我们所知的控制输入必是真实工作点的控制输入。

由于我们对噪声信息基本没什么了解,所以直接将估计值设为 0 ,即 \(\hat{\mathbf{w}}_{k-1} = \mathbf{0}\) . 进而有:

\[ \mathbf{x}_k = f(\hat{\mathbf{x}}_{k-1}, \mathbf{u}_{k-1}, \mathbf{0}) + \frac{\partial f}{\partial \mathbf{x}}|_{\hat{\mathbf{x}}_{k-1}, \mathbf{u}_{k-1}, \mathbf{0}}(\mathbf{x}_{k-1} - \hat{\mathbf{x}}_{k-1}) + \frac{\partial f}{\partial \mathbf{w}}|_{\hat{\mathbf{x}}_{k-1}, \mathbf{u}_{k-1}, \mathbf{0}}\mathbf{w}_{k-1} \]

\(\tilde{\mathbf{x}}_k = f(\hat{\mathbf{x}}_{k-1}, \mathbf{u}_{k-1}, \mathbf{0})\) ,在此处对测量模型进行线性化,同理有

\[ \mathbf{z}_k = h(\tilde{\mathbf{x}}_k, \mathbf{0}) + \frac{\partial h}{\partial\mathbf{x}}|_{\tilde{\mathbf{x}}_k, \mathbf{0}}(\mathbf{x}_k - \tilde{\mathbf{x}}_k) + \frac{\partial h}{\partial \mathbf{v}}|_{\tilde{\mathbf{x}}_k, \mathbf{0}}\mathbf{v}_k \]

我们令 \(\tilde{\mathbf{z}}_k = h(\tilde{\mathbf{x}}_k, 0)\)\(A = \dfrac{\partial f}{\partial \mathbf{x}}|_{\hat{\mathbf{x}}_{k-1},\mathbf{u}_{k-1}, \mathbf{0}}\)\(W = \dfrac{\partial f}{\partial \mathbf{w}}|_{\hat{\mathbf{x}}_{k-1},\mathbf{u}_{k-1}, \mathbf{0}}\)\(H = \dfrac{\partial h}{\partial\mathbf{x}}|_{\tilde{\mathbf{x}}_k, \mathbf{0}}\)\(V = \dfrac{\partial h}{\partial \mathbf{v}}|_{\tilde{\mathbf{x}}_k, \mathbf{0}}\) ,则有线性化后的模型:

\[\begin{aligned} \mathbf{x}_k &= \tilde{\mathbf{x}}_k + A(\mathbf{x}_{k-1} - \hat{\mathbf{x}}_{k-1}) + W\mathbf{w}_{k-1}\\ \mathbf{z}_k &= \tilde{\mathbf{z}}_k + H(\mathbf{x}_k - \tilde{\mathbf{x}}_k) + V\mathbf{v}_k \end{aligned}\tag{6-1}\]

其中,过程噪声和测量噪声的协方差矩阵分别为 \(WQ_{k-1}W^\top\)\(VR_{k}V^\top\)

6.1 EKF 公式

预测过程:

先验估计: \(\hat{\mathbf{x}}_k^{-} = f(\hat{\mathbf{x}}_{k-1},\mathbf{u}_{k-1},\mathbf{0})\)

先验误差协方差矩阵: \(P_k^{-} = AP_{k-1}A^\top + WQ_{k-1}W^\top\)

校正过程:

卡尔曼增益: \(K_k = P_k^{-} H^\top \left(HP_k^{-}H^\top + VR_{k}V^\top\right)^{-1}\)

后验估计: \(\hat{\mathbf{x}}_k = \hat{\mathbf{x}}_k^{-}+K_k\left(\mathbf{z}_k-h\left(\hat{\mathbf{x}}_k^{-},\mathbf{0}\right)\right)\)

更新后验误差协方差矩阵:

\[\begin{aligned} P_k &= (I-K_kH)P_k^{-}(I-K_kH)^{\top} + K_kVR_kV^\top K_k^\top\\ &= (I - K_k H)P_k^{-} \end{aligned}\]

需要的初值条件: \(\hat{\mathbf{x}}_0, P_0\) ,即初始状态的后验估计、初始后验估计误差的协方差矩阵。

6.2 更常见的情况

一般情况下,我们对噪声对状态转移和测量的影响了解很少;最常见的假设是高斯分布的加性噪声:

\[ \begin{aligned} \mathbf{x}_k &= f(\mathbf{x}_{k-1},\mathbf{u}_{k-1}) +\mathbf{w}_{k-1}\\ \mathbf{z}_k &= h(\mathbf{x}_k) + \mathbf{v}_k \end{aligned} \]

预测过程:

先验估计: \(\hat{\mathbf{x}}_k^{-} = f(\hat{\mathbf{x}}_{k-1},\mathbf{u}_{k-1})\)

先验误差协方差矩阵: \(P_k^{-} = AP_{k-1}A^\top + Q_{k-1}\)

校正过程:

卡尔曼增益: \(K_k = P_k^{-} H^\top \left(HP_k^{-}H^\top + R_{k}\right)^{-1}\)

后验估计: \(\hat{\mathbf{x}}_k = \hat{\mathbf{x}}_k^{-}+K_k\left(\mathbf{z}_k-h\left(\hat{\mathbf{x}}_k^{-}\right)\right)\)

更新后验误差协方差矩阵:

\[\begin{aligned} P_k &= (I-K_kH) P_k^{-}(I-K_kH)^{\top} + K_kR_k K_k^\top\\ &= (I - K_k H) P_k^{-} \end{aligned}\]

6.3 多条观测量的 EKF 融合滤波

\[ \begin{aligned} \mathbf{x}_k &= f(\mathbf{x}_{k-1},\mathbf{u}_{k-1}) +\mathbf{w}_{k-1}\\ \mathbf{z}_k^{(1)} &= h_1(\mathbf{x}_k) + \mathbf{v}_k^{(1)}\\ \mathbf{z}_k^{(2)} &= h_2(\mathbf{x}_k) + \mathbf{v}_k^{(2)}\\ &\cdots\\ \mathbf{z}_k^{(j)} &= h_j(\mathbf{x}_k) + \mathbf{v}_k^{(j)}\\ \end{aligned} \]

其中, \(\mathbf{v}^{(i)}_k\sim \mathcal{N}(\mathbf{0},R_k^{(i)})\) .

思路是逐个融合,将上一个融合的结果作为下一次融合的先验。