基于卡尔曼滤波的目标跟踪研究_毕业设计(编辑修改稿)内容摘要:

本世纪 40年代,为了解决火力控制系统精确跟踪问题,维纳( )于 1942年提出了维纳滤波理论。 维纳根据有用信号和干扰信号的功率谱确定出线性滤波器的频率特性,首次将数理统计理论与线性系统理论有机的联系在一起,形成了对随机信号作平滑、估计或预测的最优估计新理论。 比维纳稍早,前苏联科学家戈尔莫克罗夫( )于1941年也曾提出过类似的理论。 维纳给 出了由功率谱求解维纳滤波器频率特性闭合解的一般方法,包括对功率谱的上、下平面分解及傅里叶变换和反变换,运算繁杂,解析求解十分困难。 1950年,伯特和香农给出了功率谱为有理谱这一特殊条件下,由功率谱直接求取维纳滤波器传递函数的设计方法,这一方法简单易行,具有一定的工程实用价值。 维纳滤波的最大缺点是适用范围极其有限,它要求被处理信号必须是平稳的,且是一维的。 人们试图将维纳滤波推广到非平稳和多维的情况,都因无法突破计算上的困难而难以推广和应用。 采用频域设计法是造成维纳滤波器设计困难的根本原因。 因此人们逐渐转向寻 求在时域内直接设计最优滤波器的新方法,其中卡尔曼的研究最具有代表性,他提出的递推最优估计理论也因此而被称为卡尔曼滤波。 由于采用了状态空间法描述系统,算法采用递推形式,所以卡尔曼滤波能处理多维和非平稳的随机过程。 卡尔曼滤波理论一经提出,立即受到了工程界的重视,而工程应用中遇到的实际问题又使卡尔曼滤波的研究更加深入和完善。 1959年起,美国太空署即 NASA开始研究载人太空船登月方案,当时提出了两个主要问题:①中途导航和制导;②液体燃料助推器大挠度条件下的自动驾驶问题。 因这两项研究的工作量都很庞大,所以主要研究 前者,即宇宙飞船的测轨问题。 导航问题中主要解决太空船运动状态的估计。 估计方法曾试图采用递推加权最小二乘和维纳滤波,均因精度满足不了要求和计算过于繁杂而不得不放弃。 1960年秋, 卡尔曼在 NASA埃姆斯研究中心访问时,发现他的方法对于解决 阿波罗鲁东大学毕业设计 7 计划 的轨道预测很有用 ,后来 阿波罗飞船 的 导航 电脑使用了这种滤波器。 卡尔曼滤波比维纳滤波的应用范围广,设计方法也简单易行得多,但它必须在计算机上执行,而 60年代初,无论是速度、字长、容量,计算机还处于低水平阶段。 为了适应当时的技术水平,避免由于字长不够产生的舍入误差引起卡尔 曼滤波的计算发散,Bierman, Carlson和 Schmidt等人提出了平方根滤波算法和 UDU分解滤波算法,以确保卡尔曼滤波增益回路中的滤波方差阵始终正定。 卡尔曼最初提出的滤波基本理论只适用于线性系统,并且要求量测也必须是线性的。 在之后的 10多年的时间里, Bucy, Sunahara等人致力于研究卡尔曼滤波理论在非线性系统和非线性量测情况下的推广,拓宽了卡尔曼滤波理论的适用范围。 卡尔曼滤波是一种有着相当广泛应用的滤波方法,但它既需要假定系统是线性的,又需要认为系统中的各个噪声与状态变量均呈高斯分布,而这 两条并不总是确切的假设限制了卡尔曼滤波器在现实生活中的应用。 扩展卡尔曼滤波器( EKF)极大地拓宽了卡尔曼滤波的适用范围。 EKF 的基本思路是,假定卡尔曼滤滤对当前系统状态估计值非常接近于其真实值,于是将非线性函数在当前状态估计值处进行台劳展开并实现线性化。 另一种非线性卡尔曼滤波叫线性化卡尔曼滤波。 它与 EKF 的主要区别是前者将非线函数在滤波器对当前系统状态的最优估计值处线性化,而后者因为预先知道非线性系统的实际运行状态大致按照所要求、希望的轨迹变化,所以这些非线性化函数在实际状态处的值可以表达为在希望的轨迹处的 台劳展开式,从而完成线性化。 不敏卡尔曼滤波器( UKF)是针对非线性系统的一种改进型卡尔曼滤波器。 UKF处理非线性系统的基本思路在于不敏变换,而不敏变换从根本上讲是一种描述高斯随机变量在非线性化变换后的概率分布情况的方法。 不敏卡尔曼滤波认为,与其将一个非线性化变换线性化、近似化,还不如将高斯随机变量经非线性变换后的概率分布情况用高斯分布来近似那样简单,因而不敏卡尔曼滤波算法没有非线性化这一步骤。 在每一定位历元,不敏卡尔曼滤波器按照一套公式产生一系列样点,每一样点均配有一个相应的权重,而这些带权的样点被用来完 整地描述系统状态向量估计值的分布情况,它们替代了原先卡尔曼滤波器中的状态向量估计值及协方差。 不敏卡尔曼滤器让这些样点一一经历非线性状态方程与测量方程,然后再将这些经非线性变换后的样点按照它们的权重而综合出对当前时刻的系统状态向量估计值。 多态自适应( MMA)卡尔曼滤波器是一种受到广泛关注的滤波器,它由好多个并联、同时运行的卡尔曼滤波器组成。 在这组卡尔曼滤波器中,每一个滤波器对未知的滤波参数分别做出相互不同的假设,然后各自按照自 己 的模型假设进行滤波计算,而多态自适应滤波器最后将它们对系统状态的各个估计值进行加 权,并以此作为最优估计值输出。 鲁东大学毕业设计 8 3 估计原理和卡尔曼滤波 DS18B20的通信协议 DS18B20的测温原理 4 编程软件 VB的特点 VB(Visual Basic)之所以受到广大编程者的喜爱,是由于它强大的功能: (1) 可视化编程:最直观的编程方法,程序人员只需绘制界面,无需编程, VB自动产生界面代码,就可以完成许多步骤。 这样大大的提高了程序设计的效率。 这些在以前的编程语言下是要经过相当复杂的工作的。 (2) 结构化的程序设计语言: VB具有丰富的数据类型,是一种符合结构化设计思想的语 言,简单易学。 此外 VB作为程序设计语言还有其独特的一面。 (3) 面向对象: VB采用了面向对象的程序设计思想。 把复杂的程序设计问题分解为一个个简单的能够完成独立功能的对象集合,就是此程序设计最基本的思想。 所谓“对象”就是一个可操作的实体,如窗体、窗体中的命令按钮、标签、时钟、文本框等。 面向对象的编程就好像搭积木一样,程序员可根据程序和界面设计的要求,直接在屏幕上“画”出窗口、菜单、按钮等不同类型的对象,并在属性窗口改写每个对象属性,从而达到所要求的目的。 (4) 强大的数据库访问功能。 (5) 多个应用程序向导,支持动态交换、动态链接技术,等等。 编程软件 VB中 MSComm控件的介绍 VB 开发串口通信程序利用 VB自身提供的控件 MSComm 控件来实现。 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。 MSComm( Microsoft Communications Control)是 Microsoft 公司提供的简化 Windows 下串行通信编程的ActiveX 控件,它为应用程序提供了通过串行接口收发数据的简便方法。 MSComm 控件两种处理通讯的方式 MSComm 提供两种处理通讯的方法:事件驱动方式和查询方式。 该论文所采用的方法是事件驱动方式,在初始化代码中将 Rthreshold 设置为 1。 这样接收缓冲区中接收到一个字符,就产生一次 OnComm 事件。 鲁东大学毕业设计 9 事件驱动通讯是一种功能很强的处理串口活动的方法,它是利用 MSm 控件的OnComm 事件触发机制来完成的。 在大多数情况下,用户需要获知事件发生的时间,例如,在串口接收缓冲区中有字符,或者 CD (Carrier Detect) 或 RTS (Request To Send) 线上一个字符到达或一个变化发生时。 在这 些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。 OnComm 事件还可以捕获和处理通讯中的错误。 在编程过程中,就可以在 OnComm 事件处理函数中加入自己的处理代码。 这种方法的优点是程序响应及时,可靠性高。 每个 MSComm 控件对应着一个串行端口。 查询法是通过周期性地读取缓冲区的信号来发现是否有事件发生并进行处理的方法。 它不使用端口的硬件中断,必须在足够频繁地查询端口的情况下才能保证不会遗失任何数据或者事件,查询的频率取决于缓存的大小、数据量和对快速响应的要求。 查询法不 具有自动判断通信的“智能”化,需要人为启动接收或发送数据。 MSComm 控件的常用属性 在 MSComm 控件中有很多。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。