1、浅析卡尔曼滤波器控制科学与工程 摘 要:卡尔曼滤波在信号处理与系统控制领域应用广泛,目前,正越来越广泛地应用于计算机应用的各个领域。本文简要回顾了卡尔曼滤波研究的发展历程,简单介绍了卡尔曼滤波器的基本原理,并利用 Matlab 软件,结合实例展示卡尔曼滤波的优良效果,最后总结了自己学习卡尔曼滤波的一些心得。关键词:卡尔曼滤波 Matlab 仿真Initial Analysis of Kalman filter154611071 Xingchan ZhangControl science and engineering, automation, 1503 classE-mail: 1023920
2、389 Abstract: Kalman filtering is widely used in the field of signal processing and system control, at present, its more and more widely used in various fields of computer application. This paper reviews the research development of kalman filter, simply introduces the basic principle of kalman filte
3、r, and by using the Matlab software, combined with kalman filter is shown in a case of good effect, finally summarizes some of my learning kalman filter result.Keywords: Kalman filter Matlab simulation1、引言在信号的产生、传输、接收过程当中,必定会遭受外部环境扰动和内部设备噪声的影响,为获得需求信号或状态的最有效估计,要排除无用干扰,这就叫做滤波。 “滤波”的术语在无线电领域首先出现。由于随机信
4、号功率谱的确定性,有用信号和无用信号必定不同,从而可以根据其差异来设计滤波器。1960 年,卡尔曼发表了用递归方法解决离散数据线性滤波问题的论文(A New Approach to Linear Filtering and Prediction Problems) 。在这篇文章里,一种克服了维纳滤波缺点的新方法被提出来,这就是我们今天称之为卡尔曼滤波的方法。卡尔曼滤波应用广泛且功能强大,它可以估计信号的过去和当前状态,甚至能估计将来的状态,即使并不知道模型的确切性质。其基本思想是:以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量
5、的估计,求出当前时刻的估计值,算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。2、卡尔曼滤波算法自从 1960 年卡尔曼滤波提出以来,它已成为控制、信号处理与通信等领域最基本最重要的计算方法和工具之一,并已成功地应用到航空、航天、工业过程及社会经济等不同领域。2.1 发展历程二战期间,攻击飞机的火炮控制系统被广泛研究,即如何准确的进行弹道估计,根据此应用背景, Wiener1提出了维纳滤波理论,它可以在频率域有效地进行滤波器设计,但所需的维纳方程计算量过大,对存储空间要求高,对多变量、时变、非平稳随机信号的滤波计算也不适用。在 1979 年,现代维纳滤波算法2由捷克
6、斯洛伐克科学家 V.Kucere 提出。若想获得可实现的维纳滤波器,只需要计算 Diophantine 方程,但滤波器仍然是非递归的,计算量大,不适合实时应用。1960 年,美籍科学家 R.E.Kalman3冲破了维纳滤波理论在工程应用中的限制,创造了适用于离散随机系统的卡尔曼滤波方法(简称为 KF) 。次年,此滤波理论再次被 Kalman 和 R.S.Bucy 扩展到连续时间系统中4,从而构成完备的卡尔曼滤波估计体系。然而传统的卡尔曼滤波器无法自适应地应对噪声的时变特性,基于此,众多研究者先后提出了多种不同的自适应卡尔曼滤波方法,如基于极大后验估计的噪声统计估计器6、动态偏差去耦估计、虚拟噪
7、声补偿技术等,均有效的提高了卡尔曼滤波的鲁棒性和精度;另外,经典卡尔曼滤波需要掌握系统精确的数学模型,但是实际上我们很难充分掌握,于是一大批方法在 1970 年左右被陆续提出并投入应用,例如限定记忆滤波、衰减记忆滤波等;在实际应用中,卡尔曼滤波受到愈来愈多的重视和推广,对理论方面的研究也更加深入,一大批优秀的算法相继被提出,这进一步完善了卡尔曼滤波理论。2.2 基本原理在实际应用中,我们可以将物理系统的运行过程看作是一个状态转换过程,卡尔曼滤波将状态空间理论引入到对物理系统的数学建模过程中来,其假设系统状态可以用 n 维空间的一个向量XRn 来表示。为了描述方便,我们作以下假设:物理系统的状态
8、转换过程可以描述为一个离散时间的随机过程;系统状态受控制输入的影响;系统状态及观测过程都不可避免受噪声影响;对系统状态是非直接可观测的。在以上假设前提下,定义系统状态变量为 ,系统矩阵为 ,状态矩阵 ,系统控 制输入为 ,系统过程激励噪声为 ,可得出系统的状态随机差分方程5为: (1)=1+定义观测变量 ,冠词矩阵为 ,观测噪声为 ,得到量测方程: (2)=+假设 , 为相互独立,正态分布的白色噪声,过程激励噪声协方差矩阵为 Q,观测噪声协 方差矩阵为 R,即:(3)(0,)(4)(0,)从建立的系统数学模型出发,可以导出卡尔曼滤波的计算原型,包括:时间更新方程和测量更新方程7。为了便于描述,
9、做以下说明:(1) ,第 k 步之前的状态已知的情况下第 k 步的先验状态估计值(代表先验, 代表估计) ;(2) ,测量变量 已知情况下第 k 步的后验 状态估计值。由此定义先验估计误差和后验估计误差:(5)=(6)=先验估计误差的协方差矩阵为:(7)=()后验估计误差的协方差矩阵为:(8)=()先验估计 和加权的测量变量 Zk 及其预测 H 之差的线性组合构成了后验状态估计 : (9)=+()式中测量变量及其预测值之差 反映了预测值和实际值之间的不一致程度,称为测量过()程的残余。nm 阶矩阵 K 叫做残余的增益,作用是使( 8)式中的后验估计误差协方差最小。可以通过以下步骤求出 K:将(
10、 9)式代入(6)式代入(8 )式,将 Pk 对 K 求导,使一阶导数为零,可以求出 K,K 的一种形式为:(10)=(+)1对卡尔曼增益 K 的确定是建立滤波模型的关键步骤之一,它能显著影响模型的效率。时间更新方程:(11)=+1(12)=1+状态更新方程:(13)=(+)2(14)=+()(15)=()其中:A 为作用在 上的 nn 状态变换矩阵,B 为作用在控制向量 上的 n1 输入控1 1制矩阵,H 为 mn 观测模型矩阵。随着卡尔曼滤波理论的发展,一些实用卡尔曼滤波技术被提出来,如自适应滤波,次优滤波以及滤波发散抑制技术等逐渐得到广泛应用。其它的滤波理论也迅速发展,如线性离散系统的分
11、解滤波(信息平方根滤波,序列平方根滤波,UD 分解滤波8) ,鲁棒滤波(H波) 。2.3 应用实例下面以一个实例来体现卡尔曼滤波的优越性。已知一个物体作自由落体运动,对其高度进行了 20 次测量,其值如下表:时间s 1 2 3 4 5 6 7高度km 2.0976 1.9974 1.9554 1.9214 1.8777 1.8170 1.7694时间s 8 9 10 11 12 13 14高度km 1.6857 1.5536 1.5092 1.4076 1.2944 1.1724 1.0399时间s 15 16 17 18 19 20高度km 0.8980 0.7455 0.5850 0.41
12、25 0.2318 0.0399设高度的测量误差是均值为 0、方差为 1 的高斯白噪声随机序列,该物体的初始高度 h0 和速度 V0 也是高斯分布的随机变量, 。试求该物体高度和速00=190010/,0=00=10000 2度随时间变化的最优估计。 ( )=9.80/2令 ,t=1 ,R(k)=1,Q(k)=0()=()()根据式(1) 、 (2)可得:()=(,1)(1)+(1)()=()()+()其中 (,1)=1 0 1 (1)=0.52 ()=1 0滤波初值:X(0|0) = EX(0) = , P(0|0) = varX(0)=P0=190010 10000 2一步预测: X(k|
13、k-1)=A(k|k-1)X(k-1|k-1)+U(k-1)(1)=(|1)(1|1)(|1)卡尔曼增益: ()=(|1)()()(|1)()+(+1)1最优估计: (|)=(|1)+()()()(|1)(|)=()()(|1)以下是用 Matlab 仿真的实验结果:0 2 4 6 8 10 12 14 16 18 2005001000150020002500 值 值 值 值 值 值 值值 值 T/s值值H/m值 值 值 值 值值 值 值 值 值0 2 4 6 8 10 12 14 16 18 20-50050100150200 值 值 值 值 值值 值 T(s)值值V(m/s)可以看出开始的
14、时候,滤波曲线还有些波动,但月到后面就越平滑,去除噪声的效果越好,经过滤波后的高度曲线比直接测量得出的曲线更加接近于抛物线, ,即更逼近真实值。速度也逐渐体现出匀加速运动的特性。因此可以得出,卡尔曼滤波能够有效地去除混入系统的白噪声。3、总结经过这几天的学习,我发现,卡尔曼滤波的实质其实就是在理论值(预测值)与测量值之间进行协调,去寻找一个更加逼近真实值的数据,而他协调的准则就是使得系统状态的均方差最小。在整个卡尔曼滤波中,卡尔曼增益 K 的计算是关键,虽然我至今仍然不太理解这个卡尔曼增益是如何达到协调预测值和测量值的,但是大概还是知道,它体现的是预测值的可信度,是一个 之间01的值。假如 K
15、=0,就说明预测值是 100%可信的,不需要再参考实际的测量值来对预测值进行修正,预测值将是最优输出值;如果 ,则说明预测值完全不可信,在后续的修正中将会将其消除,=1将实测值作为最有输出值。经过上面的分析与实例,我们可以看出卡尔曼滤波方法能通过获取系统状态的最小均方差,来估计拥有高斯分布噪声的线性系统。从这点来说,卡尔曼滤波与维纳滤波的基本原理是一致的,但它具有维纳滤波不具备的一些优点。第一,卡尔曼滤波是时域估计方法,它将最优滤波理论与状态空间的思想结合在一起,从而能够对时变系统、非平稳信号、多维信号进行处理;第二,选用递推计算,卡尔曼滤波的运算量很小,这样对存贮量要求不高,实时在线运算和计
16、算机实现都非常容易。正是因为这些独特优势,卡尔曼滤波方法自提出以来就在工程实践中受到普遍应。尽管卡尔曼滤波算法十分优越,但仍有其缺陷N。首先,保证卡尔曼滤波算法的最优性依赖于建立准确的系统方程和量测方程,若模型有变动将影响卡尔曼滤波的效果;其次,需要正确描述噪声的统计特性,且要求系统噪声和量测噪声是不相关的白噪声,但在实际中这两个条件都可能无法达到;最后,传统卡尔曼滤波算法仅适用于线性高斯系统。在实际的工程环境中,系统不经常是线性高斯的。基于以上缺点,在未来,如何检测并修复模型误差以使模型最佳,如何使卡尔曼滤波适应有色噪声和相关噪声,将成为新的研究方向。此外,应用于非线性非高斯系统的卡尔曼滤波
17、算法9,10,如扩展卡尔曼滤波器、粒子滤波器等具有更重要的应用价值和理论价值,将成为下一步的研究重点。参考文献1 Wiener N.Extrapolation,Interpolation,and Smoothing of Stationary TimeSeriesR.OSRD70,Report to the Services 19,research project DIC-6037,MIT, 1942.2 Kucera V.Discrete linear controlJ.The polynomial equation approach,Chichester:Wiley,1979.3 R.E.
18、Kalman.A new approach to linear filtering and prediction problemsJ.Transactions of theASME,Journal of Basic Engineering,1960, 82(Series D):35-45.4 R.E.Kalman,R.S.Bucy.New results in linear filtering and prediction theoryJ. Transactions ofthe ASME,Journal of Basic Engineering,1961,83(Series D):95-107
19、.5 付梦印,邓忠红,张继伟. Kalman 滤波理论及其在导航系统中的应用M. 北京:科学出版社,2003.6 杨丹. 卡尔曼滤波器设计及其应用研究D. 湖南,湘潭大学,20147 彭丁聪,卡尔曼滤波的基本原理及应用J. 软件导刊,2009,11(8):32-348 张友民,戴冠中,张洪才. 卡尔曼滤波计算方法研究进展J. 控制理论与应用,1995,5(12):529-538.9 杨宏,李亚安,李国辉. 一种改进扩展卡尔曼滤波新方法J. 计算机工程与应用,2010,46(19):18-20.10 韩萍,桑威林,石庆研. 一种新型非线性卡尔曼滤波方法 J. 仪器仪表学报 ,2015,3(36):632-638.