Kalman Filter卡尔曼滤波器

目的:从多个不确定数据中提取相对精确的数据。

一、概述

Kalman Filter是一种优化估计算法(Optimal estimation algorithm),利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计。

可以在任何含有不确定因素的动态系统中使用卡尔曼滤波。系统中需要存在一个数学建模方法,能对系统的下一状态做出预测。适用于动态系统,内存要求极低(仅需保留上一状态的数据)。

例子:

​ 做出好喝的咖啡,需要准确控制咖啡冲煮时的水温,所以现代咖啡机中都会存在一个PID温度控制器。当前水温的测量可以通过温度探针(传感器)直接得到,但存在误差;同时,存在一个温度——压力的数学建模,使用该数学建模的方式可以通过锅炉内压力来算出温度。我们的目的是估计控制下一时刻的咖啡机水温达到设置温度。

该咖啡机锅炉的系统状态可表示为:x = (t, p) (仅表示该系统中所有状态的一部分)

Kalman Filter卡尔曼滤波器

​ 已知:当前锅炉内温度(观测值);上一时刻锅炉温度;当前锅炉内压力;

​ 根据上一时刻锅炉温度和锅炉内压力,可以算出估计的温度(估计值

​ 假设,现在存在观测值123℃,估计值125℃,卡尔曼滤波要解决的问题就是应该相信哪一个数据,因为两个数据都存在误差或噪声干扰,不能单纯的相信某一个,所以要通过观测值和估计值的准确度来最终得到下一时刻的温度估计值。

卡尔曼滤波算法是对贝叶斯滤波的一种具体实现。

二、贝叶斯滤波

​ 当我们知道观测值根据控制命令所计算的估计值可信度时,贝叶斯滤波告诉我们如何计算最终估计出的值的可信度。但贝叶斯滤波没有告诉如何计算观测值和估计值的可信度。

Kalman Filter卡尔曼滤波器

​ P(xt|zt, ut, xt-1)表示已知融合观测值zt、控制命令ut和上个状态xt-1的情况下,当前状态为xt的概率。

​ P(zt|xt)是需要设计的观测模型,即在当前状态xt下观测值是zt的概率。

​ P(xt|ut, xt-1)是需要设计的控制模型,即在上个状态是xt-1且控制命令是ut的情况下,当前状态是xt的概率。

卡尔曼滤波认为观测值可信度模型符合正态分布,控制模型符合正态分布,且信号是线性变化的。前文提到,卡尔曼滤波算法是对贝叶斯滤波的一种具体实现,可以看到,卡尔曼滤波实际上是设计了P(zt|xt)和P(xt|ut, xt-1)的计算模型。

三、卡尔曼滤波

1.高斯分布(正态分布)

对于上面举的咖啡机例子,卡尔曼滤波的系统状态 x = (t, p)中的变量都需要是随机且符合高斯分布(正态分布)的。变量具有一个平均值μ,表示随机分布的中心值;方差σ^2表示不确定度。

Kalman Filter卡尔曼滤波器

2.协方差矩阵

不同于独立同分布的变量计算,在现实中变量间往往具有关联性,当确定了压力,则存在某个温度的可能性更高,反之亦然。当知道上一状态的温度,即我们得到了上一状态的测量值,此时我们需要用一个测量值去预测另一个测量值可能是怎样的,这种关系可以使用协方差矩阵来进行描述:

Kalman Filter卡尔曼滤波器

Σij表示第i个状态变量和第j个之间的关系

3.矩阵描述系统状态

为了建立高斯分布,在k时刻,最佳预估值xk表示为:

Kalman Filter卡尔曼滤波器

此时的协方差矩阵:

Kalman Filter卡尔曼滤波器

然后使用k-1时刻状态来预测k时刻状态

Kalman Filter卡尔曼滤波器

4.状态转移矩阵

使用状态转移矩阵Fk来描述该转换

Kalman Filter卡尔曼滤波器

该预测过程可用公式表示为(pk就是pressure k):

Kalman Filter卡尔曼滤波器

我们得到了状态转移矩阵,然后按照下方公式更新协方差矩阵:

Kalman Filter卡尔曼滤波器

最后可得:

Kalman Filter卡尔曼滤波器

5.加权外界因素——得到预测值

上面公式中,咖啡机系统的状态仅仅与上一系统状态有关,但实际上,例如使用蒸汽棒打奶泡、热水等外界作用力都会影响锅炉内的压力和温度,除此之外还存在外界噪音等因素。

对公式进行相应的修正,表示为:

Kalman Filter卡尔曼滤波器

Bk是控制矩阵,uk是控制向量,Qk表示高斯噪声

6.使用测量值精炼预测值——得到精确估计

使用温度传感器的测量值,通过矩阵Hk将预测值映射到测量值中

Kalman Filter卡尔曼滤波器

同样,传感器也存在误差和噪声,将该传感器不确定性的方差描述为Rk,读数平均值zk

如果我们有两个相互独立的获取系统状态的方式(预测值和测量值),并且我们想知道两者都准确的概率值,只需要将两者相乘,相乘之后得到的即为重叠部分,这个区域同时属于两个高斯斑,并且比单独任何一个区域都要精确。

Kalman Filter卡尔曼滤波器

概率分布相乘

一维高斯被定义为Kalman Filter卡尔曼滤波器

将预测值和测量值这两个高斯分布相乘,得到精确估计值的概率分布:Kalman Filter卡尔曼滤波器

Kalman Filter卡尔曼滤波器

因式分解得到kKalman Filter卡尔曼滤波器

将一维高斯分布标准化到多维,则将上述公式以矩阵的方式表述,Σ表示协方差矩阵,μ表示平均向量Kalman Filter卡尔曼滤波器

该式中,K被称为卡尔曼增益

最终表示

对于上述系统,最终计算方式如下

​ 预测值:Kalman Filter卡尔曼滤波器

​ 测量值:Kalman Filter卡尔曼滤波器

将预测值和测量值相乘,带入(15)

则卡尔曼增益K为:Kalman Filter卡尔曼滤波器

最终:

Kalman Filter卡尔曼滤波器

9.卡尔曼滤波器信息流

Kalman Filter卡尔曼滤波器

四、参考

1.如何通俗并尽可能详细地解释卡尔曼滤波? - 米开朗基罗赵的回答 - 知乎 https://www.zhihu.com/question/23971601/answer/375355599

2.How a Kalman filter works, in pictures

3.[易懂]如何理解那个把嫦娥送上天的卡尔曼滤波算法Kalman filter? - 司南牧(李韬)的文章 - 知乎 https://zhuanlan.zhihu.com/p/77327349