关于卡尔曼滤波器的一个简单介绍_第1页
关于卡尔曼滤波器的一个简单介绍_第2页
关于卡尔曼滤波器的一个简单介绍_第3页
关于卡尔曼滤波器的一个简单介绍_第4页
关于卡尔曼滤波器的一个简单介绍_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关于卡尔曼滤波器的一个简单介绍在实际生产过程中,我们经常需要使用某种仪器测量某一物理参数。比如,用一台仪器测量大气中一氧化碳的浓度。由于测量误差永远存在,使得这样两个问题非常突出,首先,是否存在某个计算方法,能够从含有误差的测量结果中获得比较接近真实值的结果;其次,如何证明这样的结果是最优的,也就是说有没有这样一种数学方法,经过其进行处理后得到的测量结果是最接近真实值的。为了消除测量误差,人们首先想到的方法是取平均值。通过对于同一物理量的多次测量,抵消可能存在的测量误差,从而得到真实值。但是,通过生产实践,人们很快发现这样的测量方法并不是最优的。如果参与平均值计算的数据量太小,就达不到抵消测量

2、误差的目的,如果参与计算的数据量太多,不仅完全消除了可能的物理量变化,而且实现起来非常麻烦。1960年,匈牙利数学家卡尔曼(Rudolf Emil Kalman,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位,1957年于哥伦比亚大学获得博士学位)在他的博士论文和1960年发表的论文A New Approach to Linear Filtering and Prediction Problems(线性滤波与预测问题的新方法)中提出一种计算方法,后来被称为卡尔曼滤波器。这种滤波器比较简单,但是对于绝大多数类似本文开头提出的问题,可以证明,它

3、得出的结果是最优的。卡尔曼滤波器的最大优势是它非常简单,非常容易实现。故而在各领域广泛应用超过三十年。下面简单介绍卡尔曼滤波器,为了便于阅读,尽量少使用数学公式。下面的用词不是非常严格的。假如,我们需要用一个温度计测量一个房间的温度。每个1秒钟从温度计上读取一个数值。假设这个房间的真实温度是25度。由于温度计本身有测量误差,我们得到的测量值是围绕25度上下波动的一组数值。“围绕”这一特性是符合我们的直观感受的。也就是说虽然温度计上的读数在不停的变化,但是我们知道温度计上出现26度或24度的可能性要比出现30度或20度的可能性大。这种特性在数学上被称为高斯分布。当有很多因素影响测量结果,而每种干

4、扰因素都不起主导作用时,测量的结果呈现高斯分布。对于温度计来讲,制造工艺,空气扰动,我们读数时候的误差都可能影响测量结果。所以,温度计的读取结果是符合高斯分布的。高斯分布有两个参数,一个叫做期望,在这里可以等同于平均值,一个叫做方差。方差反映了数据的集中程度。比如一个温度计测量的结果分布在24到26度之间,另一个温度计测量结果在20到30度之间,显然,前一个温度计更好一些。它的数据方差就比较小。这里假设我们温度计的方差是3。于是,温度计的测量结果就是期望是25,方差是3的一组数据。另外,我们可以根据经验猜测一下房间的温度(就好像把自己当成一个人体温度计),比如,我们猜测房间的温度是23度,当然

5、,我们自己猜测的结果是有方差的,我们假设这个方差是4,于是根据人的感觉,测量结果是期望是23,方差是4的一组数据。然后,由经验我们知道房间温度变化不大,基本可以认为,这一秒的温度和下一秒的温度是相等的。现在,在第1秒,我们有了两个值,一个是温度计上显示的数据,25。一个是我们自己根据感觉得出来的数据,23。那么相信谁呢?这里有一个数学公式,可以算出kg0.6,于是25×0.6+23×(10.6)24.2,这个24.2就是我们在第1秒得到的测量结果。也就是说第1秒的温度是24.2度。现在,我们进入了第2秒,这时,由于我们已经知道了第1秒的温度是24.2度,所以,这时温度计的测

6、量方差就需要改变了。计算方法是,这里的4来自人体温度计的那个方差4。于是,温度计的方差已经变成了3.0984。在第2秒,我们从温度计上获得的读数是26度,方差是3.0984。我们自己的感觉是22度,方差是4。按照第1秒的计算方法,就能得到第2秒的温度值。如此循环计算下去,就是卡尔曼滤波。可见,卡尔曼滤波是这样一种计算方法,在两个测量值中取平衡,在第一秒,我们有60相信温度计,40相信自己。但是随着计算的进行,这个平衡可以改变。Kg被称为卡尔曼增益(Kalman Gain)。它可以随不同的时刻而改变他自己的值。为什么如此计算超出了本文的范围。但是可以证明,随着时间的增加,Kg能够变化到一个合适的

7、值,使得测量的结果最接近真实值。卡尔曼滤波的程序实现以及仿真例子:c1=23;假设我们的感觉是23P1=10;初始参数,带来一个初始的kgQ=1e-6;人体感觉的方差R=1e-2;温度计的方差for m=1:200 这里我模拟了两百个参数P2=P1+Q;c2=c1;假设室内温度不变kg=P2/(P2+R;c(m=c2+kg*(b(m-c2;b(m)代表在第m秒的温度计读数,c(m)是经过卡尔曼滤波后得到的读数P1=(1-kg*P2;c1=c(m;end仿真结果如上图所示,这里黑色线是由温度计测量出的结果,绿色线是真实值(25),红色线是卡尔曼滤波的结果,作为对比,蓝色线是五点平均的结果,也就是

8、取过去的五个数值进行平均。可以看出,由于存在测量误差,温度计测出的值(黑色)围绕真实值(绿色)上下波动。直观的看,卡尔曼滤波结果(红线)比五点平均值滤波(蓝线)更接近真实值(绿线),显示出卡尔曼滤波比五点平均值滤波的结果更加优越。数学上可以证明,卡尔曼滤波得到的结果比其它的滤波器都要接近真实值,是最优结果(在最小二乘意义下)。几点提示1, 在开始的头几个数据,卡尔曼滤波与五点平均滤波都距离绿线比较远。但是随着时间的推移,卡尔曼滤波的结果逐渐接近了绿线。实际上,对于初始参数,例如上面的25,23,3,4的选择要求并不严格。在本文的条件下,卡尔曼滤波结果都能接近真实值。当然,如果参数选的好,接近的

9、就比较快。2, 假设室内温度变化不大这一提法,被称为系统建模。由于室内温度变化不大,得出程序中的C2C1,也就是这一秒的温度等于前一秒的温度。这就是系统的数学模型。这对于卡尔曼滤波非常重要。如果这个房间有一个电暖器和一个大空调,导致房间温度忽上忽下,再使用C2C1这一数学模型就得不到正确结果了。这不是卡尔曼滤波的问题,而是系统建模的问题。比如有一个锅炉给房间加热,这时的模型就应该写作C2N×C1,N是一个大于1的系数。正确的模型是卡尔曼滤波器正确工作的前提。好在大气中的CO等等变化速度都不可能太快,所以C2C1这一模型一般还是正确的。3, 卡尔曼滤波要求误差是正态分布的。也就是说,如

10、果温度是25度,温度计的读数应该在25度上下,不能越来越高(对于测量误差不是正态分布的情况,人们还设计出了改进的卡尔曼滤波器)。4, 程序中的P和Q的取值会直接影响到卡尔曼滤波器的性能。滤波结果改变的比较快,它的稳态误差就比较大,如果要求稳态误差小,滤波器的快速性就不好。这是一对矛盾的指标。现在在工程上,P和Q的取值还是需要试凑的(即使卫星的设计中也是如此)几个进一步的例子真实值有个小变化,卡尔曼滤波器几乎削去了这一变化,充分显示了“滤波”的意义。当然在这种测量条件下五点平均的结果也好不到哪去。真实值有一个跳变,在这种情况下,五点平均滤波的快速性要优于卡尔曼滤波。毕竟这里卡尔曼滤波的假设是房间温度不变。当然,如果时间长一点卡尔曼滤波

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论