卡尔曼滤波器_干货分享 I 卡尔曼滤波器详解——从零开始(1) Kalman Filter from Zero...

c910dd535192645556cd0709328fc173.png

b73eda322741dbe4a5f0383ac14ccea6.png

来源 · 知乎

作者 · 三脚猫Frank

编辑 · 睿小妹

原文 · https://zhuanlan.zhihu.com/p/166342719

从零开始介绍 Kalman filter系列的文章花费了我许多时间整理。这个话题我一直不想开始讲,是因为真的要讲好这一块,并且从基础开始讲,是非常不容易的。这就是控制的难学之处,内容庞杂!Kalman Filter既是控制设计方面学习者的 需知常识,也是 传感器系统设计和优 化,信号处理,系统辨识等领域的实践者的 必备知识。 理解Kalman filter需要大概四块领域的知识:
  1. 概率和随机过程理论(Probability and Random Process Theory)
  2. 统计学和最优估计理论(Statistics and optimal estimation)
  3. 信号处理 (Signal Proccessing)
  4. 动力学系统常识(Dynamic Systems)
我会以 5门本书的内容(见reference)为基础从最基础的知识开始讲,把必须知道的一些东西讲清楚,而不是上来便抛出一系列公式和符号。主要基于前4本书来讲解,第5本中文教材可以说是一个以上4本教材内容的一些简短总结。同样的,名词我会用中英文交替书写,以便你习惯以后阅读其他英文资料。 说是从0开始,你需要对控制和信号的基本知识有个大概了解。这一系列文章本来是作为 LQG 控制(Linear Quadratic Gaussian Control) 的一点前奏,后来想好好写一写也算是给读者们的一点福利。由于filtering是一块非常庞大的知识体系,我只挑基础的必要知识来讲,以及基础的Kalman filter理论。 Kalman filter有很多改进版本,这里作为关于控制的系列文章,我就不花时间列举了。作为现代控制理论系列文章的一块核心内容,但愿能帮助到你们学习控制理论。 以我目前的工作状态,只能满足抽空来总结一些控制基础知识了,一方面是给自己的阅读留下一点笔记,另一方面给自己的一些要学习控制的学术界朋友和学生留点干货。我能保证的就是,既然写了,就一定要写好,不是截个图,连自己都没搞懂就来误人子弟。 本篇目录:
  • What is Kalman Filter and its use? 卡尔曼滤波器和它的用途
  • Why is Kalman Filter a Filter? 为什么叫 “滤波器”?
  • Theory of Random Variable 随机变量理论
  • Theory of Random Process 随机过程理论
  • Theory of Signal Processing 信号处理理论
  • Summary 小结

0062cc9212e26dd32374b4118abfe76c.gif


What is Kalman Filter and its use? 卡尔曼滤波器和它的用途

Kalman filter这个名字是以控制领域大神 R. E. Kalman命名的一种滤波技术,或者说 状态估计(state estimation)方法。如果不以他名字来命名,这个方法还可以叫做 Linear Least-Mean-Squares Estimator(线性最小均方差估计),或者 Linear Quadratic Estimator (线性二次型估计)[1,p1]。 Kalman Filter的使用对象通常是一个 线性随机系统(Linear stochastic system),通过测量的含有随机噪音的输出来估计出最优的系统状态。这种最优性是建立在使得 mean squared errors(MSE)最小的意义下,故有这两个名字。你可能还听说过 Extended Kalman filter(EKF,扩展卡尔曼滤波器),Adaptive Kalman Filtering(AKF, 自适应卡尔曼滤波)等等名词,先别着急,在把基本的知识介绍完后,再看也不迟。更多关于Kalman的一些事迹,将来有机会专门读些资料作为科普写一写。 Kalman filter的应用十分广泛,提供了可以真正实用的针对 有限维随机系统实时状态最优估计。它作为一种工具,主要有两方面的应用: state estimationperformance analysis of estimation system[1,p4]1.状态估计(state estimation): 我们之前讲过用 Luenberger observer来估计线性时不变系统(LTI)的状态,那时候我们并没有考虑系统的输出中夹杂着的随机噪音的信息。 注意!如果你看过我这个专栏之前关于观测器的文章,Luenberger observer是通过反馈的手段来抑制最后输出中的不确定性。我们知道在Luenberger observer的观测器方程中存在一个增益矩阵  ce8901f5-e830-eb11-8da9-e4434bdf6706.svg  ,与之相乘的是观测器输出与系统实际输出的差值。在Luenberger observer方程推导中我们并没有显示地去考虑噪音给我们带来的问题,而是把噪音的麻烦“下意识”地交给了反馈。采用反馈的目的就是抑制不确定性,那么噪音可以视为扰动,也就相对地会被这样的反馈设计所抑制。 Kalman filter也干的同一件事:状态估计。 因此Kalman filter也是一种observer。Kalman filter具有非常类似的结构,有预测值和实际观测值的参与去不断更新所谓的filter gain。 filter gain是随着观测进行不断迭代而改变的,并不像Luenberger observer中的矩阵  ce8901f5-e830-eb11-8da9-e4434bdf6706.svg 往往是一个固定值 。它们在噪音方面处理的主要不同是, Kalman filter的建模将noise的统计学信息作为已知信息考虑到了gain的设计中,而Luenberger observer却没有考虑噪音的任何信息。往往Luenberger observer的设计希望矩阵  d58901f5-e830-eb11-8da9-e4434bdf6706.svg  都是相对准确的以达到最好的估计效果,而实际情况往往不如人愿。Kalman filter考虑了系统的动态过程中存在的随机性,更好地利用信息去完成系统状态的估计。 2.估计系统的性能分析(performance analysis of estimation system) : Kalman filter可以参数化表征其估计误差的大小,从而便于我们清楚是哪一个系统参数影响了最后的估计误差结果,这是有利于设计者 分析估计系统的性能和提高估计精度的重要性质。比如采用的传感器种类,传感器位置,传感器带宽,噪音分布等等,都可以作为估计误差函数的参数。这种性质就可以帮助我们去做各个因素之间的权衡,指导我们去优化系统性能,而不是跟无头苍蝇一样trial and error。

Why is Kalman Filter a Filter? 为什么称之为 “滤波器”?

这是许多信号处理和控制的初学者经常问的一个问题: 文献和书上总是出现filter或者filtering这个词的含义是什么?包括在computer science领域的imagine processing领域,我们也时常能看到各种滤波算法。 filter,原来的意思就是 过滤器,或者俗称 筛子。所谓过滤器,我们都知道,学化学或者生物的时候我们用来去处混合物中的 杂质(impurities)用的。包括现在的很多净化产品,比如自来水过滤头,空气净化器本质上起到了的就是过滤作用。后来filter这个词被引入了信号处理领域,所谓的impurities在这个领域中往往是我们不想要的 噪音(noise)分量。 我们听过的 低通滤波器(low-pass filter), 高通滤波器(high-pass filter),带 通滤波器(band-pass filter),无论是数字的还是模拟的,都起到了滤除信号中不想要频率的作用。我在之前的专栏文章中也讲过,一个实际系统频响幅值越往高频走越小,信号输入系统后,其输出相当于通过了一个low-pass filter,此时该系统也可以被称为一个滤波器。这类对filter的理解,是“改变”了输入信号的频域信息,使得对应输出达到了我们想要的去除噪音的效果。把噪音和filter的定义广义化,我们可以定义不同物理形式的滤波器。 不同于关注点在频率设计上的滤波器, Kalman filter和维纳滤波器(Wiener filter)采用了噪音和系统状态的统计学信息,一般以最小化mean-squared error(均方差)为优化目标,来给出原输入信号的 最优估计(optimal estimation),这个estimation的 最优性(optimality)是以最小均方差为准的。 Kalman filter和Wiener filter之间有各方面的差别,我们这里暂时不去细究。从实际应用上来讲,Kalman filter和它的改进版本由于适用于 nonstationary process(非平稳过程)使用更加广泛。既然能够以某种最优标准还原信号,Kalman filter就拥有了一个与filter等同的功能: 降噪(noise reduction)。这也是为什么Kalman filter被称之为所谓的滤波器的原因。 0b9dc39b6ff0fc979231b819135fc3c8.gif 我们回过头来说,filter就是一类能够实现filtering的device或者algorithm。 那么filtering又如何定义?[2,p10] 我们可以从两个方面去理解:
  1. 使用可测量的信号,还原不能被直接测量或者带有噪音的信号。
  2. 区别另外两种不同的信号处理方式:smoothing 和 prediciton
所谓的estimation就包含三种处理信号的方法: filtering(滤波),smoothing(平滑) 和 prediciton(预测)。在第二个层面的理解中,我们把filtering理解为:根据到目前时间  d88901f5-e830-eb11-8da9-e4434bdf6706.svg  为止的信号的所有信息,来还原信号的部分或者全部信息。 Smoothing,所谓的信号 平滑,并不要求只使用当前时间  d88901f5-e830-eb11-8da9-e4434bdf6706.svg  之前的信息来估计真实信号,而是可以采用t之后的一段时间内的测量信号,返回来估计时间  d88901f5-e830-eb11-8da9-e4434bdf6706.svg  的信号。简单说,我拥有了一段10秒长的信号,用10秒的信息回过头来过去信号在第5秒的值。这说明smoothing的估计并不是即时的,而是有一定的延迟(第5秒的信号估计,却延迟了5秒,等第10秒的信息得到后再得出。)。Smoothing是一块单独可以拿出来讲的内容,在这一系列中就不多做展开了。可想而知由于smoothing用到了更多的信息,理论上估计精度应该会更好。 Prediciton,信号 预测就不用多说了吧?现在最火热的行业和研究领域莫过于AI了,其中的机器学习也好,深度学习也好,目标说到底是通过训练,代替人去做更好的预测。一般prediciton用到的信息就是截止到当前为止,然后输出是对未来的估计。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值