什么情况下使用卡尔曼滤波(如何通俗解释卡尔曼滤波)(1)

在航天领域,卡尔曼滤波是一种殿堂级的理论,应用的到处都是!

这篇文章,笔者尽可能通俗解释卡尔曼滤波理论。

什么情况下使用卡尔曼滤波(如何通俗解释卡尔曼滤波)(2)

先来点背景音乐:我种下一颗种子,终于长出了果实。。

好吧,假设你在去一个风景区旅游的时候,种下了一棵果树,但显然从果树幼苗到果实不是一天两天能完成的啊,需要慢慢长高。而你又不可能经常去看,但又想知道果树的高度,那怎么办?

所以要解决的问题是:如何正确估计一棵果树的高度?

什么情况下使用卡尔曼滤波(如何通俗解释卡尔曼滤波)(3)

我们把想要知道的果树高度叫做待估的状态变量。我们想一年知道一次,这就叫做步长

你需要知道种下果树的时候大概高度啊,于是你想了想,大概1米吧,但我也不确定,有可能90公分也有可能110公分。于是这个1米,叫做你的初始状态估计,这个10公分的不确定性,叫做状态估计的误差协方差矩阵,后续它会随着你的下一步估计而变化。

怎么办呢?

你在网上查了查,这种果树差不多每年都比前一年生长10%的高度(纯假设而已哈),这个生长的规律/模型就叫做状态转移矩阵。于是根据模型,假如2017年有1米,2018年就大概有1.1米。

但显然这个模型不适用于任意一棵果树和你种植当地的实际日照风土情况,而且你明明知道果树不可能无限增长。所以咱们的模型不可能是100%准确的,我们用一个叫做过程噪声的东西来衡量它。可以理解为模型递推下去的不准确度。比如假设这个估计模型误差在0.3米,这叫做白噪声。过程噪声越小就意味着你相信生长模型很准确,越大就表示模型越垃圾。

但尽管如此还是不靠谱啊,闭门猜果树高度肯定不可能一直准,这个时候我们需要找一下本地的朋友们定期去看一眼。由于是拜托他们帮忙,也不想真要求他们爬上去拿尺子量,大概给个数就行,这个朋友帮忙看到的高度就是我们的测量值

假设有朋友A和B,朋友A很认真,每次都拿尺子大概比一比,告诉你都用大概多少分米来说,比如大概1米8到1米9吧;而朋友B不认真,只瞄一眼说大概1.5-2米吧。但是A有一个坏处,比较懒,两年才给你发个短信;B比较勤快,每年就有。这个2年或者1年就叫做测量更新频率。我们需要他们尽可能提供数据,所以两个都要采纳。而且这两个测量一个来自尺子一个来自视力,不同的测量类型我们都能同时使用,太好了!

你明显觉得A比B要靠谱一些,于是认为A的精度在分米级,B的精度在半米级,这个分米和半米叫做他俩的测量噪声。基于这个测量噪声你可以建立一个测量噪声矩阵,衡量在参考时对A和B观测值的权重。

那么你现在明白了,既需要果树生长模型,这样即便A和B不给我数据,我也大概能估计出明年这个树的高度。但也不能只依靠模型,比如果树进入成熟期慢慢就不长了,我们也需要A和B的观测值去校正估计,那么就需要把他们融合在一起。

于是,从模型这里,有一个衡量初始估计是否准确的矩阵叫做状态估计协方差矩阵,有一个衡量生长模型准确度的过程噪声矩阵;从观测那里有一个衡量观测是否准确的矩阵叫做观测噪声协方差矩阵。

我们把它和模型融合在一起,就变成了一个叫做增益矩阵的东西。糊涂了?别着急,其实增益矩阵就是一件事情:我到底是应该相信我推的模型多,还是应该相信来自A和B的测量多呢?

于是通过增益矩阵和这一系列矩阵,你建立了一套系统:当模型比较准确时,我相信模型多一点,当它不准时我相信实际测量多一些。而且还有一个优势,测量帮助我校正模型准确度;当A和B突然不给我测量时,我也能通过已经建立好的这套体系估计在下一个步长(明年)果树的高度。

卡尔曼滤波就这样建立起来了。

最理想的情况是怎样?

最准确的果树初始高度估计,=较小的状态估计误差

最准确的果树生长状态模型,=较小的过程噪声

最准确的果树测量值,=较小的测量噪声,而且测量类型越多越好(尺子和视力)

卡尔曼博士在1960年去了NASA访问,把这套理论首次提出,震惊了NASA,于是很快采用。美国的标志性阿波罗登月任务,就是使用这套崭新的估计理论,登上月球的!

什么情况下使用卡尔曼滤波(如何通俗解释卡尔曼滤波)(4)

什么情况下使用卡尔曼滤波(如何通俗解释卡尔曼滤波)(5)

大家经常开玩笑,说阿波罗登月是”划着洗衣盆飘过大西洋“,那么这套估计理论大概就相当于洗衣盆上的那个舵手了。现在在航天领域,卡尔曼滤波是一种殿堂级的理论,应用的

到处都是!

到处都是!

到处都是啊!

什么情况下使用卡尔曼滤波(如何通俗解释卡尔曼滤波)(6)

2016年86岁的鲁道夫卡尔曼博士仙逝了,祝他在天堂里依然幸福!

,