3 卡尔曼滤波器的简介3.1 卡尔曼滤波器的概述卡尔曼滤波器[4]由一系列递归数学公式描述,它们提供了一种高效可计算的方法来估计过程的状态,并使估计均方误差最小。
卡尔曼滤波器应用广泛且功能强大,它可以估计信号的过去和当前状态,甚至能估计将来的状态,即使并不知道模型的确切性质。
假设我们要研究的对象是一个房间的温度。
根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。
假设你对你的经验不是100%的相信,可能会有上下偏差几度。
我们把这些偏差看成是高斯白噪声(White Gaussian Noise ),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution )。
另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。
我们也把这些偏差看成是高斯白噪声。
现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。
下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。
假如我们要估算k 时刻的是实际温度值。
首先你要根据1k -时刻的温度值,来预测k 时刻的温度。
因为你相信温度是恒定的,所以你会得到k 时刻的温度预测值是跟1k -时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果1k -时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。
然后,你从温度计那里得到了k 时刻的温度值,假设是25度,同时该值的偏差是4度。
由于我们用于估算k 时刻的实际温度有两个温度值,分别是23度和25度。
究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的协方差来判断。
因为252(5242)Kg ∧∧∧∧=+,所以0.78Kg =,我们可以估算出k 时刻的实际温度值是:230.78(2523)24.56+*-=度。
可以看出,因为温度计的协方差比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。
现在我们已经得到k 时刻的最优温度值了,下一步就是要进入1k -时刻,进行新的最优估算。
到现在为止,好像还没看到什么自回归的东西出现。
对了,在进入1k -时刻之前,我们还要算出k 时刻那个最优值(24.56度)的偏差。
算法如下:((1)52)0.5 2.35Kg ∧∧-*=。
这里的5就是上面的k 时刻你预测的那个23度温度值的偏差,得出的2.35就是进入1k +时刻以后k 时刻估算出的最优温度值的偏差(对应于上面的3)。
就是这样,卡尔曼滤波器就不断的把协方差递归,从而估算出最优的温度值。
他运行的很快,而且它只保留了上一时刻的协方差。
上面的Kg ,就是卡尔曼增益(Kalman Gain )。
他可以随不同的时刻而改变他自己的值!3.2 卡尔曼滤波器的算法首先,我们先要引入一个离散控制过程的系统。
该系统可用一个线性随机微分方程(Linear Stochastic Difference equation )来描述:()(1)()()X k AX k BU k W K =-++ (3.1)再加上系统的测量值:()()()Z k HX k V k =+ (3.2)上两式子中,()X k 是k 时刻的系统状态,()U k 是k 时刻对系统的控制量。
A 和B 是系统参数,对于多模型系统,他们为矩阵。
()Z k 是k 时刻的测量值,H 是测量系统的参数,对于多测量系统,H 为矩阵。
()W K 和()V k 分别表示过程和测量的噪声。
他们被假设成高斯白噪声(White Gaussian Noise),他们的协方差分别是,Q R (这里我们假设他们不随系统状态变化而变化)。
对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。
下面我们来用他们结合他们的协方差s 来估算系统的最优化输出。
首先我们要利用系统的过程模型,来预测下一状态的系统。
假设现在的系统状态是k ,根据系统的模型,可以基于系统的上一状态而预测出现在状态:(1)(11)()X kk AX k k BU k -=--+ (3.3)式(3.3)中,(1)X kk -是利用上一状态预测的结果,(11)X k k --是上一状态最优的结果,()U k 为现在状态的控制量,如果没有控制量,它可以为0。
到现在为止,我们的系统结果已经更新了,可是,对应于(1)X k k -的协方差(协方差)还没更新。
我们用P 表示协方差:'(1)(11)P k k AP k k A Q -=--+ (3.4)式(3.4)中,(1)P kk -是(1)X k k -对应的协方差,(11)P k k --是(11)X k k --对应的协方差,'A 表示A 的转置矩阵,Q 是系统过程的协方差。
式子(3.3),(3.4)就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。
现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。
结合预测值和测量值,我们可以得到现在状态()k 的最优化估算值()X kk :()(1)()(()(1))X kk X k k Kg k Z k HX k k =-+-- (3.5)其中Kg 为卡尔曼增益(Kalman Gain):''()(1)((1))Kg k P kk H HP k k H R =--+ (3.6)到现在为止,我们已经得到了k 状态下最优的估算值()X k k 。
但是为了要令卡尔曼滤波 器不断的运行下去直到系统过程结束,我们还要更新k 状态下()X kk 的协方差:()(())(1)P k k I Kg k H P k k =-- (3.7)其中I 为1的矩阵,对于单模型单测量,1I=。
当系统进入1k +状态时,()P k k 就是式子(3.4)的(11)P k k --。
这样,算法就可以自回归的运算下去。
式子(3.3),(3.4),(3.5),(3.6)和(3.7)就是卡尔曼滤波器的基本原理了。
根据这5个公式,可以很容易的实现计算机的程序。
3.3 卡尔曼滤波器的原理在现代,随机最优控制和随机信号处理技术中,信号和噪声往往是多维非平稳随机过程。
卡尔曼滤波理论采用时域上的递推算法在数字计算机上进行数据滤波处理。
对于离散域线性系统:()(1)(()())x k Ax k B u k w k =-++ (3.8)()()()v y k Cx k v k =+ (3.9)式中,()w k 为过程噪声信号, ()v k 为测量噪声信号。
离散卡尔曼滤波器递推算法为:()()()Tn T P k C M k CP k C R=+ (3.10) ()(1)T T P k AP k A BQB =-+ (3.11) ()(())()n n P k I M k C P k =- (3.12) ()(1)()(()(1))n v x k Ax k M k y k CAx k =-+-- (3.13) ()()e y k Cx k = (3.14)误差的协方差为:cov()()T err k CP k C = (3.15)卡尔曼滤波器结构如图所示卡尔曼滤波器结构u3.4 卡尔曼滤波器的仿真及分析 3.4.1 系统描述验证卡尔曼滤波器的滤波性能[5]对象为二阶传递函数:2133()25P G s s s=+ (3.16)取采样时间为1ms ,采样Z 变换将对象离散化,并描述离散状态方程的形式:(1)()(()())x k Ax k B u k w k +=++ (3.17)()()y k Cx k = (3.18)带有测量噪声的被控对象输出为:()()()v y k Cx k v k =+ (3.19)式中,[][]1.0000000,0.00098760.0000659,,1,0,00.0000000,0.97530990.1313512A B C D ⎡⎤⎡⎤====⎢⎥⎢⎥⎣⎦⎣⎦3.4.2 仿真方法一:采用M 语言进行仿真控制干扰信号()w k 和测量噪声信号()v k 幅值均为0.10的白噪声信号,输入信号幅值为1.0、频率为1.5Hz 的正图信号。
采用卡尔曼滤波器实现信号的滤波,取1,1Q R ==。
仿真时间为3s ,误差协方差的变化,原始信号及带有噪声的原始信号和原始信号及滤波后的信号和分别如图1、图2和图3所示。
图1误差协方差的变化-3time(s)C o v a r i a n c e o f e s t i m a t i o n e r r o r00.511.522.53-0.20.20.40.60.81.21.4time(s)y -i d e a l s i g n a l ; y v -s i g n a l w i t h n o i s e图2原始信号及带有噪声的原始信号00.511.522.53-0.20.20.40.60.81.2time(s)y -i d e a l s i g n a l ; y e -f i l t e r e d s i g n a l图3原始信号及滤波后的信号仿真结果表明,该滤波器对控制干扰和测量噪声具有良好的滤波作用。
3.4.3 仿真方法二 :采用Simulink 进行仿真卡尔曼算法由M 函数实现。
控制干扰信号()w k 和测量噪声信号()v k 幅值均为0.10的白噪声信号,输入信号幅值为1.0、频率为0.5Hz 的正弦信号采用卡尔曼滤波器实现信号的滤波,取1,1Q R ==。
仿真时间为10s ,仿真结果如下图4和图5所示图4 原始信号y (红色线)及滤波后的信号e y (黄色线)图5原始信号y 及带有噪声的原始信号v y仿真程序如下图所示基于Kalman滤波器的Simulink仿真5 基于卡尔曼滤波器的 PID 控制算法及仿真 5.1 基于卡尔曼滤波器 PID 控制的原理结合卡尔曼滤波器与经典PID 控制得到一种基于卡尔曼滤波器的PID 控制方法。
其控制系统结构[6,7]如图:基于卡尔曼滤波器的PID 控制系统结构5.2 仿真程序及分析被控对象为二阶传递函数[8]:2133()25P G s s s=+ (5.1) 离散化结果与3.4的仿真实例相同。
采样时间为1ms 。
控制干扰信号()w k 和测量噪声信号()v k 幅值均为0.002的白噪声信号,输入信号为一阶跃信号。
采用卡尔曼滤波器实现信号的滤波,取1,1Q R ==。
仿真时间为1s ,分两种情况进行仿真:1M =时为未加滤波,2M=时为加滤波。
在PID 控制器中,取8.0,0.80,0.20p i d k k k ===。