Kalman filter 卡尔曼滤波

阅读量:

[!维基百科] 卡尔曼滤波(Kalman Filter)是一种高效率的 递归滤波器自回归 滤波器),它能够从一系列的不完全及包含 杂讯测量 中,估计 动态系统 的状态。

缘由

[!note] 记录为什么有这个概念/想法/事实/观点,属于 why 的部分

说明

卡尔曼滤波器是一种 [[ 递归滤波器 ]],只需要知道上一时刻状态的估计值以及当前状态的观测值就可以计算出当前状态的估计值,不需要记录观测值或估计值的历史信息。卡尔曼滤波器是一种纯粹的 [[ 时域 ]] 滤波器,不需要像其他 [[ 频域 ]] 滤波器那样,需要在 [[ 频域 ]] 设计再转换到 [[ 时域 ]] 实现。

卡尔曼滤波器进行估计的基本动态系统和基本模型详见:卡尔曼滤波基本动态系统卡尔曼滤波基本模型

状态变量

卡尔曼滤波器的状态由两个变量表示:

  • $\hat{X}_{k k}$,时刻 $k$ 状态的估计
  • $P_{k k}$,时刻 $k$ [[ 后验估计 ]] 误差 协方差 矩阵,度量估计值的精确程度

操作步骤

卡尔曼滤波器的操作分为两个阶段:预测更新

预测

预测阶段,滤波器使用上一状态的估计值,做出对当前状态的估计。

  • 预测状态估计:$\hat{\pmb{X}}_{k k-1} = \pmb{F}k\hat{\pmb{X}}{k-1 k-1} + \pmb{B}_k\pmb{u}_k$
  • 预测状态估计协方差:$\pmb{P}_{k k-1} = \pmb{F}k\pmb{P}{k-1 k-1}\pmb{F}^T_k + \pmb{Q}_k$

其中:

  • $\pmb{F}k$ 是作用在 $\pmb{x}{k-1}$ 上的状态变换模型(矩阵/向量)
  • $\pmb{u}_k$ 是控制器向量,即除去系统自身变化外,外部对系统内变量造成的变化
  • $\pmb{B}_k$ 是作用在控制器向量 $\pmb{u}_k$ 上的输入(控制模型),外部变化的强度
  • $\pmb{Q}_k$ 为过程噪声的 协方差 矩阵

更新

更新阶段,滤波器利用对当前状态的观测值优化在预测阶段获得的对当前状态的估计值,以获得一个更精准的新估计值,作为下一个预测阶段的输入。

首先计算以下三个量:

  • 测量残差:$\widetilde{\pmb{y}}k = \pmb{z}_k - \pmb{H}_k\hat{\pmb{X}}{k k-1}$
  • 测量残差协方差:$\pmb{S}k = \pmb{H}_k\pmb{P}{k k-1}\pmb{H}^T_k + \pmb{R}_k$
  • 最优卡尔曼增益:$\pmb{K}k = \pmb{P}{k k-1}\pmb{H}^T_k\pmb{S}^{-1}_k$

然后用它们来更新滤波器变量 $\pmb{X}$ 和 $\pmb{P}$:

  • 更新的状态估计:$\hat{\pmb{X}}_{k k} = \hat{\pmb{X}}_{k k-1} + \pmb{K}_k\widetilde{\pmb{y}}_k$
  • 更新的状态估计协方差:$\pmb{P}_{k k} = (\pmb{I} - \pmb{K}k\pmb{H}_k)\pmb{P}{k k-1}$
需注意的是,上述计算 $\pmb{P}_{k k}$ 的公式仅在使用最优卡尔曼增益时有效,使用其他增益时,需要用不同的计算公式。

实例

[!note] 记录概念的应用实例,属于 how 的部分

类比

[!note] 记录与该概念类似的概念,属于 how 的部分

对比

  • 卡尔曼滤波和卡尔曼滤波器是同一个概念的不同叫法,通常被混用

效果

[!note] 记录该概念如何解决实际问题,属于 how good 的部分

备注

反向链接

到头儿啦~

局部关系图