通俗的解释卡尔曼滤波(Kalman Filter)以及其Python的实现

卡尔曼滤波

风力发电机中的风速估计,转速估计甚至扭矩估计都设计到卡尔曼滤波,如果只是单一传感变量的平滑处理也能用到卡尔曼滤波。
振动信号中的滤波大多采用低通去除高频噪音,而卡尔曼滤波则是通过不确定度把置信度高的值滤出来。综合看了不少文献和资料,能把卡尔曼滤波讲清楚的最好的几篇分别是:
Understanding the Basis of the Kalman Filter Via a Simple and Intuitive Derivation
https://zhuanlan.zhihu.com/p/45238681
https://www.zhihu.com/question/23971601
https://zhuanlan.zhihu.com/p/64539108
http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/

本质上来说,工业上对对象的动态认知主要来自两方面,一方面是基于之前状态和动力学理论进行的的状态推导,另一中方法是直接通过传感器读取状态栏。遗憾的是不管是间接推导还是直接测量的结果都有一定的误差,分别来自推导的不确定度和传感器本身的不确定度。如何融合推导和直接测量得出最优估计就是卡尔曼滤波针对不确定信息的动态系统所做的事情,简单来说就是谁的结果可靠性高些就信的更多点,在推导结果的正太分布和传感器测量结果的正太分布求个并集,推导出新的正太分布,这个正太分布的平均值就是最优估计。

'Understanding the Basis of the Kalman Filter Via a Simple and Intuitive Derivation’这篇文章用几幅图比较生动的解释了这一点:
在这里插入图片描述
这是一个小车的运动状态示意图,有个传感器可以直接观测到小车的状态(距离S,速度V),同时也有运动学方程可以根据上一时刻小车的速度和距离预测一个当前小车的状态量,当然这两种方法都是有一定的误差,并且符合正太分布:
在这里插入图片描述
卡尔曼滤波是一种降噪手段,目的是减少预测的噪声和测量的噪声,得到最优估计,也就是下图中绿色的概率分布均值:
在这里插入图片描述
好了,下面贴上卡尔曼滤波典型的几个方程:

第一个方程
在这里插入图片描述

是状态预测公式,矩阵 Ft 为状态转移矩阵,表示如何从上一状态来推测当前时刻的状态;Bt为控制矩阵,表示控制量 ut如何作用于当前矩阵;xt 有顶帽子,表示只是估计值,并不是最优的:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
状态预测公式只能告诉我们状态预测的均值,前面说过预测也是正太分布,因此还需要协方差矩阵P,假设前一时刻Pt-1已知,那么t时刻的协方差矩阵表示为:
在这里插入图片描述
上式中Q是一些无法确认的干扰噪音。

对于传感器的读数分布也是需要方程来进行表述:
在这里插入图片描述
Ht为观测矩阵,v为观测噪音,很多文章和博客写H矩阵是用于将传感器读取的数据尺度转换为我们关系的状态,但实际从英文原文中应该指的是将预测的值转换到传感器观测预的矩阵,这样才能在同一尺度上做两者的融合。从测量到的传感器数据中,我们大致能猜到系统当前处于什么状态。但是由于存在不确定性,某些状态可能比我们得到的读数更接近真实状态。我们将这种不确定性(例如:传感器噪声)用协方差Rt 表示,即上式中的v,该分布的均值就是我们读取到的传感器数据,称之为Zt。

  • 20
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值