《卡尔曼滤波器综述.docx》由会员分享,可在线阅读,更多相关《卡尔曼滤波器综述.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、卡尔曼滤波器综述瞿伟军 G100741、卡尔曼滤波的起源1960年,匈牙利数学家卡尔曼发表了一篇关于离散数据线性滤波递推算法的论文,这意味着卡尔曼滤波的诞生。斯坦利.施密特(Stanley Schmidt)首次实现了卡尔曼滤波器,卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗方案的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器。关于这种滤波器的论文由Swerling (1958)、Kalman (1960)与 Kalman and Bucy (1961)发表。2、卡尔曼滤波的开展卡尔曼滤波是一种有着相当广泛应用的滤波方法,但它既需要假定系统是线性的,又需要认为系统中
2、的各个噪声与状态变量均呈高斯分布,而这两条并不总是确切的假设限制了卡尔曼滤波器在现实生活中的应用。扩展卡尔曼滤波器EKF极大地拓宽了卡尔曼滤波的适用范围。EKF的根本思路是,假定卡尔曼滤滤对当前系统状态估计值非常接近于其真实值,于是将非线性函数在当前状态估计值处进展台劳展开并实现线性化。另一种非线性卡尔曼滤波叫线性化卡尔曼滤波。它与EKF的主要区别是前者将非线函数在滤波器对当前系统状态的最优估计值处线性化,而后者因为预先知道非线性系统的实际运行状态大致按照所要求、希望的轨迹变化,所以这些非线性化函数在实际状态处的值可以表达为在希望的轨迹处的台劳展开式,从而完成线性化。不敏卡尔曼滤波器UKF是针
3、对非线性系统的一种改良型卡尔曼滤波器。UKF处理非线性系统的根本思路在于不敏变换,而不敏变换从根本上讲是一种描述高斯随机变量在非线性化变换后的概率分布情况的方法。不敏卡尔曼滤波认为,与其将一个非线性化变换线性化、近似化,还不如将高斯随机变量经非线性变换后的概率分布情况用高斯分布来近似那样简单,因而不敏卡尔曼滤波算法没有非线性化这一步骤。在每一定位历元,不敏卡尔曼滤波器按照一套公式产生一系列样点,每一样点均配有一个相应的权重,而这些带权的样点被用来完整地描述系统状态向量估计值的分布情况,它们替代了原先卡尔曼滤波器中的状态向量估计值及协方差。不敏卡尔曼滤器让这些样点一一经历非线性状态方程与测量方程
4、,然后再将这些经非线性变换后的样点按照它们的权重而综合出对当前时刻的系统状态向量估计值。多态自适应MMA卡尔曼滤波器是一种受到广泛关注的滤波器,它由好多个并联、同时运行的卡尔曼滤波器组成。在这组卡尔曼滤波器中,每一个滤波器对未知的滤波参数分别做出相互不同的假设,然后各自按照自己的模型假设进展滤波计算,而多态自适应滤波器最后将它们对系统状态的各个估计值进展加权,并以此作为最优估计值输出。3、卡尔曼滤波器概述简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm最优化自回归数据处理算法。对于解决很大局部的问题,他是最优,效率最高甚至是最
5、有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。卡尔曼滤波器由一系列递归数学公式描述,它们提供了一种高效可计算的方法来估计过程的状态,并使估计均方误差最小。卡尔曼滤波器应用广泛且功能强大,它可以估计信号的过去与当前状态,甚至能估计将来的状态,即使并不知道模型确实切性质。假设我们要研究的对象是一个房间的温度。根据你的经历判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度假设我们用一分钟来做时间单位。假设你对你的经历不是100%的相信,可
6、能会有上下偏差几度。我们把这些偏差看成是高斯白噪声White Gaussian Noise,也就是这些偏差跟前后时间是没有关系的而且符合高斯分配Gaussian Distribution。另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。我们也把这些偏差看成是高斯白噪声。现在对于某一分钟我们有两个有关于该房间的温度值:你根据经历的预测值系统的预测值与温度计的值测量值。下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。假设我们要估算时刻的是实际温度值。首先你要根据时刻的温度值,来预测时刻的温度。因为你相信温度是恒定的,所以你会得到时刻的温度预测值是跟时
7、刻一样的,假设是度,同时该值的高斯噪声的偏差是度是这样得到的:如果时刻估算出的最优温度值的偏差是,你对自己预测的不确定度是度,他们平方相加再开方,就是。然后,你从温度计那里得到了时刻的温度值,假设是度,同时该值的偏差是度。由于我们用于估算时刻的实际温度有两个温度值,分别是度与度。终究实际温度是多少呢?相信自己还是相信温度计呢?终究相信谁多一点,我们可以用他们的协方差来判断。因为,所以,我们可以估算出时刻的实际温度值是:度。可以看出,因为温度计的协方差比拟小比拟相信温度计,所以估算出的最优温度值偏向温度计的值。现在我们已经得到时刻的最优温度值了,下一步就是要进入时刻,进展新的最优估算。到现在为止
8、,好似还没看到什么自回归的东西出现。对了,在进入时刻之前,我们还要算出时刻那个最优值度的偏差。算法如下:。这里的就是上面的时刻你预测的那个度温度值的偏差,得出的就是进入时刻以后时刻估算出的最优温度值的偏差对应于上面的。就是这样,卡尔曼滤波器就不断的把协方差递归,从而估算出最优的温度值。他运行的很快,而且它只保存了上一时刻的协方差。上面的,就是卡尔曼增益Kalman Gain。他可以随不同的时刻而改变他自己的值。4、卡尔曼滤波器算法首先,我们先要引入一个离散控制过程的系统。该系统可用一个线性随机微分方程Linear Stochastic Difference equation来描述: (3.1)
9、再加上系统的测量值: (3.2)上两式子中,是时刻的系统状态,是时刻对系统的控制量。与是系统参数,对于多模型系统,他们为矩阵。是时刻的测量值,是测量系统的参数,对于多测量系统,为矩阵。与分别表示过程与测量的噪声。他们被假设成高斯白噪声(White Gaussian Noise),他们的协方差分别是这里我们假设他们不随系统状态变化而变化。对于满足上面的条件(线性随机微分系统,过程与测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。下面我们来用他们结合他们的协方差s 来估算系统的最优化输出。首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是,根据系统的模型,可以基于系统的
10、上一状态而预测出现在状态: (3.3)式(3.3)中,是利用上一状态预测的结果,是上一状态最优的结果,为现在状态的控制量,如果没有控制量,它可以为0。到现在为止,我们的系统结果已经更新了,可是,对应于的协方差(协方差)还没更新。我们用表示协方差: (3.4)式(3.4)中,是对应的协方差,是对应的协方差,表示的转置矩阵,是系统过程的协方差。式子(3.3),(3.4)就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。结合预测值与测量值,我们可以得到现在状态的最优化估算值: (3.5)其中为卡尔曼增益(Kalman Gain)
11、: (3.6)到现在为止,我们已经得到了状态下最优的估算值。但是为了要令卡尔曼滤波器不断的运行下去直到系统过程完毕,我们还要更新状态下的协方差: (3.7)其中为1的矩阵,对于单模型单测量,。当系统进入状态时,就是式子(3.4)的。这样,算法就可以自回归的运算下去。式子3.3,3.4,3.5,3.6与3.7就是卡尔曼滤波器的根本原理了。根据这5个公式,可以很容易的实现计算机的程序。5、卡尔曼滤波器的原理在现代,随机最优控制与随机信号处理技术中,信号与噪声往往是多维非平稳随机过程。卡尔曼滤波理论采用时域上的递推算法在数字计算机上进展数据滤波处理。对于离散域线性系统: 3.8 3.9式中,为过程噪
12、声信号, 为测量噪声信号。离散卡尔曼滤波器递推算法为: 3.10 3.11 3.12 3.13 3.14误差的协方差为: 3.15卡尔曼滤波器构造如下图卡尔曼滤波器构造6、卡尔曼滤波器的应用实例6.1、基于VDLL的GPS信号跟踪算法图2 VDLL的根本构造系统的状态量为用户状态( 位置、速度、用户钟差、用户钟漂移) ,观测量为所有卫星通道的码环鉴相器输出组成的矢量D(X) X=(x y z b x() y() z() b()TD(X)=(D(1) D(2) D(N)T 3-1其中x,y,z,b,x(),y(),z(),b()分别为在ECEF( Earth Centered Earth Fix
13、ed, 地心坐标系) 下的用户接收机三维位置与速度, b, b()分别为接收机钟差与钟差变化率。预检测积分时间T 选择为1ms,即滤波器迭代的k时刻与k+1时刻间隔1ms。假设用户为匀加速运动,可写出状态方程如下 3-2其中wk-1 为状态扰动噪声。 导航滤波器把k- 1 时刻的状态与对应的卫星位置信息反应给本地信号生成模块,产生超前、即时与滞后码序列,分别与k时刻的1ms 卫星信号的同相支路与正交支路做相关运算,即图2 中的“积分存储模块。为了去除对信号幅度变化的敏感性与对载波环路锁定的依赖性,码环鉴相器选择归一化的超前码与滞后码相关能量差( 第i 颗卫星) 3-3该码环鉴相器在没有噪声的理
14、想情况下,当超前码与滞后码间距为1 chip( 码片) 时,在0.5 chip 输入误差范围内,鉴相器输出等于真实的跟踪误差。在实际应用中,超前滞后码的移位通常以采样点为单位,1 个chip 的长度不一定为整数个采样点,但鉴相器仍然与输入误差成线性关系,所以式可写为 3-4其中gi 为待求的鉴相器特性在线性区的斜率, vi, k为观测噪声。鉴相器输入误差是k时刻( 接收机时刻) 第i颗卫星1ms 长度的采样信号与本地即时码之间的相位偏移,而本地即时码的初始相位值等于k- 1时刻对卫星信号的相位估计。所以i, k实质上是k时刻卫星信号的相位与k - 1时刻的相位估计之差,等于k 时刻信号传输延迟
15、的真实值与k- 1 时刻信号传输延迟的估计值。 k 时刻接收到第i颗卫星信号的理论测量延迟为 3-5其中( xk , yk , zk ) 为k 时刻用户的三维位置坐标,( xi, k , yi, k , zi, k ) 为k 时刻第i 颗卫星的位置坐标,bk 为k 时刻的接收机钟差。K-1 时刻信号传输延迟的估计值可由k-1 时刻的用户状态估计X() ( k- 1 |k- 1) 与卫星位置计算得到 3-6由( 4) ) ( 6) 式,可写出第i 颗卫星的观测方程如下 3-7其他卫星的观测方程可以类似地写出。 卡尔曼滤波器的仿真及分析.1 系统描述验证卡尔曼滤波器的滤波性能对象为二阶传递函数:
16、3.16取采样时间为1ms,采样Z变换将对象离散化,并描述离散状态方程的形式: 3.17 3.18带有测量噪声的被控对象输出为: 3.19式中,.2 仿真方法一:采用M语言进展仿真控制干扰信号与测量噪声信号 幅值均为0.10的白噪声信号,输入信号幅值为1.0、频率为1.5Hz的正图信号。采用卡尔曼滤波器实现信号的滤波,取。仿真时间为3s,误差协方差的变化,原始信号及带有噪声的原始信号与原始信号及滤波后的信号与分别如图1、图2与图3所示。图1误差协方差的变化 图2原始信号及带有噪声的原始信号图3原始信号及滤波后的信号仿真结果说明,该滤波器对控制干扰与测量噪声具有良好的滤波作用。.3 仿真方法二
17、:采用Simulink进展仿真卡尔曼算法由M函数实现。控制干扰信号与测量噪声信号幅值均为0.10的白噪声信号,输入信号幅值为1.0、频率为0.5Hz的正弦信号采用卡尔曼滤波器实现信号的滤波,取。仿真时间为10s,仿真结果如下列图4与图5所示图4 原始信号红色线及滤波后的信号黄色线图5原始信号及带有噪声的原始信号仿真程序如下列图所示基于Kalman滤波器的Simulink仿真 基于卡尔曼滤波器的 PID 控制算法及仿真.1 基于卡尔曼滤波器 PID 控制的原理结合卡尔曼滤波器与经典PID控制得到一种基于卡尔曼滤波器的PID控制方法。其控制系统构造如图:PID被控对象卡尔曼 滤波器rin + + _+ 控制干扰 测量噪声 yout基于卡尔曼滤波器的PID控制系统构造.2 仿真程序及分析被控对象为二阶传递函数8: (5.1) 离散化结果与3.4的仿真实例一样。采样时间为1ms。控制干扰信号与测量噪声信号幅值均为0.002的白噪声信号,输入信号为一阶跃信号。采用卡尔曼滤波器实现信号的滤波,取。仿真时间为1s,分两种情况进展仿真:时为未加滤波,时为加滤波。在PID控制器中,取。用MATLAB进展仿真9,参加滤波前后PID阶跃响应如图6与图7所示。图6未参加滤波的PID控制阶跃响应图7 参加滤波后PID控制阶跃响应仿真结果说明,采用滤波器使控制效果明显改善。第 15 页