当前位置:文档之家› 卡尔曼滤波

卡尔曼滤波

卡尔曼滤波
卡尔曼滤波

目录

第1章绪论 (1)

1.1课题研究的背景 (1)

1.2雷达信号检测与目标跟踪 (2)

1.3雷达目标跟踪的基本方法 (3)

1.3.1雷达目标跟踪的基本信息 (4)

1.3.2目标机动模型 (5)

1.3.3雷达目标跟踪的滤波算法 (6)

1.3.2.1加权最小二乘滤波 (6)

1.3.2.2 滤波 (7)

1.4目标跟踪技术有待进一步解决的问题 (8)

1.4.1卡尔曼滤波的稳定性和准确性 (8)

1.4.2收敛速度的问题 (9)

1.4.3滤波过程中的系统偏差的问题 (9)

1.5课题来源 (10)

1.6本文的主要工作和结构 (11)

第2章卡尔曼滤波理论 (12)

2.1卡尔曼滤波的基本算法 (12)

2.2卡尔曼滤波的性质 (13)

2.3 Kalman滤波算法的发展 (14)

2.3.1扩展卡尔曼滤波 (16)

2.3.2二阶滤波 (17)

2.3.3修正增益的扩展卡尔曼滤波 (17)

2.3.4自适应扩展卡尔曼滤波 (18)

2.3.5基于加权测量噪声协方差矩阵的发散抑制方法 (18)

2.4卡尔曼滤波模型 (19)

2.5船舶运动目标建模的主要方法 (20)

2.6卡尔曼滤波算法中线性化的误差 (21)

2.7卡尔曼滤波的应用意义 (22)

第3章改进的卡尔曼滤波算法 (24)

3.1野值识别与处理 (24)

3.1.1野值的识别 (24)

3.1.2野值的处理 (25)

3.1.3野值处理的仿真分析 (26)

3.2目标运动模型的建立 (27)

3.2.1Singer模型中的匀速运动目标的运动模型 (27)

3.2.2Singer模型中的匀加速运动目标的运动模型 (28)

3.3坐标转换 (28)

3.4通过自适应选择状态噪声协方差矩阵Q来提高滤波稳定性的方法 (29)

3.4.1滤波仿真 (31)

3.4.1.1状态协方差矩阵对滤波结果的影响 (31)

3.4.1.2对状态噪声协方差矩阵自适应选择以后的滤波结果仿真 (33)

3.5双模型并行滤波构造 (34)

3.5.1滤波构造的设计 (35)

3.5.2模拟仿真 (36)

3.5.2.1基础卡尔曼滤波的仿真结果 (36)

3.5.2.2并行滤波仿真结果 (38)

4.1简化卡尔曼滤波算法发展现状 (40)

4.1.1常增益滤波 (40)

4.1.2状态约减 (40)

4.1.3分段卡尔曼滤波 (40)

4.1.4解藕卡尔曼滤波 (41)

4.2本文简化算法设计方法 (41)

4.3模拟仿真 (44)

4.3.1简化算法与未简化算法的精度比较 (44)

4.3.2 K值组的数量对滤波结果的影响 (45)

第五章对卡尔曼滤波的展望 (48)

结论 (49)

参考文献 (50)

第1章绪论

1.1课题研究的背景

雷达目标跟踪是整个雷达系统中一个非常关键的环节。跟踪的任务是通过相关和滤波处理建立目标的运动轨迹。雷达系统根据在建立目标轨迹过程中对目标运动状态所作的估计和预测,评估船舶航行的安全态势和机动试操船的安全效果。因此,雷达跟踪环节工作性能的优劣直接影响到雷达系统的安全效能。

在海事安全方面,船舶避碰系统与船舶交通管理系统利用雷达作为水域交通环境的主要观测手段,其系统功能直接地取决于目标跟踪性能。雷达目标跟踪能力对增进船舶航行安全、提高航运效率及保护水域环境具有重要的意义。尤其在港区或水道等目标比较密集的区域,目标机动可能性加大,精确可靠的目标跟踪更具有重要的意义。随着科学技术和航运经济的发展,人们的安全意识和环境意识日益提高,人们对效益更加重视,由此人们也必然会要求系统具备更加精确可靠的目标跟踪性能。

在军用雷达领域中,自从二次世界大战跟踪雷达SCR——28出现后,雷达目标跟踪就逐渐成为一门专门的学科。由于雷达目标定位是雷达目标跟踪中的一个重要环节,这个环节所涉及到的数据是滤波技术中直接影响到滤波准确性的一个很重要的因素,因此雷达中的目标定位对这个雷达跟踪系统的工作性能起着至关重要的作用。军事雷达中目标跟踪方面主要包括对原始侦察数据的预处理、对辐射源位置的估计及对运动辐射源的跟踪[1]。对原始侦察数据的预处理是将测量到的原始数值做一些去偏差的处理,使得原始数据的误差对于跟踪系统最后整个的估计结果的影响降低到最小。对辐射源位置的估计是跟踪中对于目标进行估计的起始的判断,这是雷达定位的起始步骤。对运动辐射源的跟踪既是跟踪滤波的过程,这是雷达跟踪的核心内容,它的作用是对目标运动状态的估计和预测。这三个部分对于整个军用雷达系统的工作性能都有极其重要的影响。

鉴于目标跟踪在增进雷达效能中的重要作用,各国在军用和民用等领域中一直非常重视发展这一雷达技术。机动目标跟踪理论有了很大的发展,尤其是在跟

踪算法的研究上,理论更是日趋成熟。在跟踪算法中,主要有线性自回归滤波,两点外推滤波,维纳滤波,加权最小二乘滤波, 滤波和卡尔曼滤波,其中卡尔曼滤波算法在目标跟踪理论中占据了主导地位。

雷达跟踪需要处理的信息种类多种多样。除了目标的位置信息外,一般还要对目标运动速度进行估计,个别领域中的雷达还要对目标运动姿态进行跟踪。雷达跟踪的收敛速度、滤波精度和跟踪稳定度等是评估雷达跟踪性能的重要参数。[1]因此提高雷达跟踪的精度、收敛速度和稳定度也就一直是改善雷达跟踪性能的重点。随着科技的发展,各类目标的运动性能和材质特征有了大幅度的改善和改变,这就要求雷达跟踪能力要适应目标特性的这种变化。在不断提高雷达跟踪性能的前提下,降低雷达跟踪系统的成本也是现代雷达必须考虑的问题。特别是在民用领域中由于雷达造价不能过高,对目标跟踪进行快收敛性、高精度和高稳定性的改良在硬件上是受到一些制约的,因此雷达跟踪算法的研究就越来越引起学者们的关注。通过跟踪算法的改进来提高雷达的跟踪性能还有相当大的挖掘潜力。考虑到雷达设备的造价,民用雷达的跟踪系统首要的方法就是对于雷达的跟踪算法进行开发。

1.2雷达信号检测与目标跟踪

在雷达对目标进行跟踪之前,首先要对目标进行检测。跟踪是针对满足了检测条件的目标进行的,因而信号检测是目标跟踪的前置环节,良好的信号检测是提高目标跟踪性能的基础。近些年来雷达信号检测理论和实践的飞速发展,为提高目标跟踪性能创造了有利的条件。同时,跟踪也可进一步完成对目标的检测,因为可以通过跟踪去除虚假目标,可以利用跟踪获得的目标动态特征改善目标的检测和识别能力。因此从本质上看,检测与跟踪是一个可以互动和融合的过程,是一个可以在整体上进行优化的问题。

对海面目标观测来说,海杂波是影响目标检测和跟踪性能的一种最难处理的干扰。一直以来,海杂波都是用统计模型,比如高斯分布、对数正态分布、Weibull 分布、K分布模型等加以描述。基于实验的K分布模型虽被认为是比较好的海杂波模型,但在处理高分辨率雷达数据时仍遇到困难。目标检测的实质是在噪声背

景中提取目标信息,因此去噪就成了目标检测的关键。度量目标检测的好坏的两个主要标准是:发现概率,虚警概率。这两个标准之间存在着矛盾,如果发现概率大,那么虚警概率也会相应增大,这是雷达检测里不可避免的。但是为了尽量提高发现概率而又不加大虚警概率,现在通行的方法是在虚警概率恒定的条件下,尽量提高发现概率。在目标检测中,通常以信噪比作为目标检测的门限。交管雷达和航海雷达常用脉冲相关积累检测的方法,它将几个连续脉冲的回波进行叠加,利用噪声的不相关性或者弱相关性来剔除噪声,留下目标。这种方法有利于识别方位粘合目标,当几个连续回波做相关积累以后,在方位上就可以从粘合目标回波的包络上判别出是否是粘合目标。从而在算法上加大了雷达的方位分辨率。另外,在航海雷达中还可以用多卜勒技术进行目标检测,由于在一个海域内,海浪的速度是一致的,因此海浪相对与雷达的多卜勒频率就形成了一个比较窄的频带,可以利用窄带带陷滤波器将这个频率滤除,留下目标运动所产生的多卜勒频率,即检测到目标。但是这种方法的应用很受限制,因为当目标随浪漂或者其速度与海浪前进速度相似的时候,目标的多卜勒频率同时被滤除,这样也就形成了漏警。上世纪90年代以来,S.Haykin和H.Leung等人做了大量的工作,更好地考虑了物理背景和数学模型的结合,提出了基于混沌理论的海杂波模型,认为混沌可以产生符合任何概率分布的类似随机信号,海杂波的随机特性是由确定性的低维混沌产生的。相比于传统的统计模型,这种模型可以使用相对较少的自由度来描述产生海杂波的复杂非线性动力系统[4],具有很好的杂波抑制能力。另外,还有一些雷达通过极化检波来进行目标检测。在雷达极化学中引入的STOCKS极化矢量,对雷达发射波和回波的极化分析有着重要意义。由于背景噪声的stocks极化状态转换矩阵与目标的stocks极化状态转换矩阵存在着比较大的参数差异,因此也可以用检测极化状态转换矩阵的方法来进行极化检波。

1.3雷达目标跟踪的基本方法

雷达跟踪滤波其实就是在对提取的目标信息进行估计和预测的基础上,建立目标的运动轨迹,评估航行安全态势和机动效果。目前雷达跟踪技术有多种多样的方法,在进行目标跟踪时要考虑到目标特性、可用的目标观测信息及先验知识

和跟踪的性能要求等多种因素,进而选取目标的机动模型和滤波方法。

1.3.1雷达目标跟踪的基本信息

在雷达检测到目标之后,就需要对目标的运动参数进行获取。雷达运动参数

即雷达目标信息主要包括:目标的距离信息(指目标到雷达天线之间的距离),目标的方位角信息,目标的高度角信息,目标运动的速度信息[2,3]。获取目标参数的环节是一个非常重要的环节,获取目标的参数信息就意味着进入了雷达跟踪环节。通常用以下公式来获取目标的距离信息[5]:

t c R ?=2

1 (1.1) 式中,R是目标距离雷达天线的距离,C是电磁波传输的速度,t ?是发射电磁波和接收到电磁波之间的时间差。

另外,在多卜勒雷达中,目标相对于雷达径向运动所产生的多卜勒频率为[6]: 02f c

v f r d = (1.2) 其中f d 为多卜勒频率,v r 为目标相对于雷达的径向速度,C 为光速,f 0为发射

信号的频率。这样,我们就可以获得目标相对于雷达的径向速度v r 。对于边扫描边跟踪的非相参雷达,通常通过对目标距离变化的测量获得目标的运动速度,即用不同时刻观测到的目标位移除以相应的时间间隔 [7]。这种方法得到的目标速度不是瞬时速度,会有一个采样周期的延迟,这个采样周期就是天线的旋转周期。

雷达方位角信息的获得通常采用简便的最大值法,即目标方位角为天线方向性

图的最大值方向所测得的目标方位,这种方法在比较小的距离监测区域内可以保证一定的测量精度,但当距离较远时位置误差就比较大。因此在交管雷达和船舶雷达上提高方位角度的估计精度还是有相当的潜力的。

除此之外,有的雷达还要对目标的运动姿态做跟踪,这对于雷达跟踪来说是一

个难题。现阶段对于目标运动姿态进行跟踪的方法主要也是采用极化手段,这是因为目标运动姿态不同,其对雷达波束的反射波的极化也不同。极化转化矩阵中的各个元素代表了电磁波经过目标反射的变极化状况,因此暗含了目标的信息。通过对这个矩阵进行对称化(为了消除噪声和干扰的影响),伪特征值的求解(为

了确定最优化接收方式和增大信噪比),和几个极化不变量的确定(确定目标材料特性和所处姿势)都有着重要意义[7]。

通过测量方法或者通过利用原始数据简单计算所获得的目标信息总存在着测量误差。跟踪滤波就是平滑观测误差和状态噪声,而严重的观测误差和状态误差可能导致滤波的发散。因此,如何减小目标信息中的误差以提高滤波精度就成了滤波算法的研究目的之一。

1.3.2目标机动模型

跟踪算法的主要任务是对雷达所获得的目标运动状态信息数据做出预测和估计,提高预测和估计的精度,一个重要因素就是选择合适的目标机动模型。

在对目标进行跟踪算法处理之前,必须先确定机动目标模型。估计理论特别是现阶段最常用的卡尔曼滤波理论要求建立数学模型来描述与估计问题有关的物理现象。这种数学模型应该把某一时刻的状态变量表为前一时刻状态变量的函数。所定义的状态变量应该能够全面反映系统动态特性的一组维数最少的变量。一般而言,状态变量与系统的能量有关,譬如在目标运动模型中,状态变量中所包含的位置元素与势能有关,速度元素与动能有关。在目标模型构造过程中,考虑到缺乏有关目标运动的精确数据以及存在着许多不可预测的现象,如周围环境的变化及驾驶员主观操作等知识,需要引入状态噪声的概念。机动目标模型是机动目标跟踪的基本要素之一,也是一个关键而又棘手的问题。在建立机动目标模型时,一般的原则是所建立的模型即要符合机动实际,又要便于数学处理。近20年来,有不少学者对模型问题进行了讨论,方法各有特点。现阶段常用的机动目标模型有微分多项式模型,CV与CA(常速与常加速模型),时间相关模型,半马尔可夫模型,Noval统计模型,以及机动目标“当前”模型等。

但是任何一个模型都有自己的局限性,当目标的运动状态改变成为不适合这种模型描述时,滤波误差就会加大,因此必须要改用另一种适合描述目标目前运动状态的模型来进行滤波。这就涉及到现在所广泛讨论并已经开始在实际中获得应用的多模型处理的问题。多模型处理就是将两个或者两个以上的机动目标模型综合使用,这种方法可以分为切换式和综合式。切换式即是用一个单一的模型来进行估计,当系统检测到目标运动状态已经不适合用这种模型描述时,再切换使

用另一种目标模型;综合式即是将多种目标模型以不同方式进行组合以求达到适合多种机动目标跟踪的情况。

1.3.3雷达目标跟踪的滤波算法

当机动目标模型建立之后,就要对目标跟踪算法进行设计,这也是雷达跟踪

系统中核心的部分。对目标的跟踪最主要的还是对目标的距离信息,方位角信息,高度角信息,以及速度信息进行跟踪,估计和预测目标的运动参数以及运动状态,这样有利于我们针对特定目标拿出特定应对方案。基本的跟踪滤波与预测方法是跟踪系统最基本的要素,也是形成自适应跟踪滤波的前提和基础。这些方法包括线性自回归滤波,两点外推滤波,维纳滤波,加权最小二乘滤波,α~β滤波和卡尔曼滤波。其中线性自回归滤波,两点外推滤波,维纳滤波由于限制性强而在现阶段的雷达中很少应用,但是维纳滤波在滤波算法上有着里程碑的标志。现阶段最常用的就是加权最小二乘滤波, α~β滤波和卡尔曼滤波.

1.3.

2.1加权最小二乘滤波

采用何种滤波方法,主要取决于事先能掌握多少先验信息。当先验统计特性

一无所知时,一般采用最小二乘滤波。如果仅仅掌握测量误差的统计特性,可以采用马尔可夫估计,即加权阵为R -1(k )的最小二乘滤波,其中R -1(k )是测量噪声的协方差矩阵。

忽略状态噪声的影响,测量噪声V(k)是均值为0,协方差矩阵为R (k )的高斯白

噪声向量序列;R(k)为对角阵,则加权最小二乘滤波公式为:

???(/)(/1)()[()()(/1)]X

k k X k k k k Z k H k X k k =-+-- (1.3) ??(/1)(/1)(1/1)X

k k k k X k k φ-=--- (1.4) 1()(/1)()()T K k P k k H k R k -=- (1.5)

)1/()()()1/()/(---=k k P k H k k k k P k k P (1.6)

式中K (k ),P (k/k ),P (k/k-1)分别为滤波增益矩阵,协方差矩阵和预测协方差矩阵。

1.3.

2.2 α~β滤波

当目标作等速直线运动时,描述目标运动状态X 是两维向量,即X=[x,x ’]T ,

这里x 和x ’分别是位置和速度的分量。设目标状态方程为:

()(1)(1)X k X k Gw k φ=-+- (1.7)

其中 101T φ??=????

,2/2T G T ??=???? 式中状态噪声w 为均值为0的高斯白噪声序列。

测量方程:

)()()()(k v k X k H k Z += (1.8)

其中 H =[1,0]

式中v(k)是0均值的高斯白噪声。

α~β滤波方程为:

???(/)(/1)[()()(/1

)]X k k X k k k Z k H k X k k =-+-- (1.9) ??(/1)(1/1

)X k k X k k φ-=-- (1.10) /k T αβ??=????

(11) 近几十年来,基于以上滤波算法的变形算法发展非常迅速,尤其是自适应的

卡尔曼算法更是占据了现代雷达中跟踪算法的主导地位。对于卡尔曼滤波算法极

其变形算法本文在第二章中有详细叙述。

目标跟踪还包括目标数据的关联,数据关联用于多目标跟踪,尤其是在目标

密集的区域,数据关联的性能就更加重要。只有在对目标做数据关联处理以后,

才能完成点迹和航迹的相关,从而实现跟踪的滤波处理,保证跟踪的准确性和可

靠性[8]。本文中,我们仅对目标信息跟踪算法进行了讨论,未涉及到目标数据关联

算法的研究。

1.4目标跟踪技术有待进一步解决的问题

1.4.1卡尔曼滤波的稳定性和准确性

数据偏差是普遍存在的,这就是导致了滤波稳定性的问题。在众多提出的稳健化方案中,由Masreliez等在1977年提出方法与其他的方法不同,从某种意义上说它来源于人的经验和感觉,理论上严格并且合理。然而由于它的主要建设和实际不太吻合,于是其应用比较有限。有的文章[9]通过合理的修整来弥补由该假设所引起的性能下降,完成了在观测扰动满足近似高斯噪声的条件下,最小最大法的稳定卡尔曼滤波,并且给出了一个实用的算法。众所周知,系统状态的动态模型描述的不精确及模型的变化均会导致卡尔曼滤波的性能下降[10]。滤波结果的发散情况分为2类:显式发散(ApparentDivergence)和真发散(TrueDivergence)。显式发散情况下,状态参数的真实误差有界;在真发散情况下,虽然滤波器的估计方差趋于零或某一稳态值,但滤波状态参数的真实误差却越来越大。下图为我们上面所提到的两种发散的表示[10]:

图1.1 显式发散(左)和真发散(右)

Fig1.1 obvious radiation(left)&really radiation(right)

我们一般在算法上提到的发散都是第二种发散。

通过对卡尔曼滤波算法的研究,发现卡尔曼滤波算法对初始条件的选取比较敏感。初始值的选取直接影响到后来滤波是否收敛。

卡尔曼滤波的稳定性问题是滤波器能否应用的一个关键问题。由于卡尔曼滤波不但存在对系统模型的强依赖性与鲁棒性差的缺陷,而且在系统达到平稳状态时将丧失对突变状态的跟踪能力,因此该方法对机动目标的跟踪能力有限。[11]而丧失对突变状态的跟踪能力,就是一种很严重的算法丢跟踪状态,也是滤波不收

敛的情况之一。而实际的滤波过程是否稳定即滤波器是否发散,却是表明滤波效果的问题。自从卡尔曼滤波提出以后,对于滤波的稳定性、滤波的发散以及发散的抑制等问题,已经有很多文献进行了深入的分析和研究。实际应用表明,理论上卡尔曼滤波器的稳定性并不能保证滤波算法实际的收敛,从而不能保证滤波的有效性。这主要是因为系统的动态模型和噪声的统计模型的不准确造成的。滤波发散一般是指这样一种现象,即估计值相对实际的被估计值的偏差越来越大使滤波器失去估计作用,因而会造成目标跟踪丢失。为了克服这个缺点,现已经发展了许多有效的滤波发散抑制方法或者算法,例如衰减记忆滤波法,限定记忆滤波法和自适应滤波法等。这些方法都是充分利用系统新的测量值对估计值进行修正。

但是如果实际滤波过程中,在某一过程或者某种条件下测量值出现奇值,那么滤波结果会受到很大干扰。有时直接导致以后的滤波值不收敛,以至目标跟踪丢失。因此,如何解决好目标跟踪的稳定性(即滤波过程的稳定性)也是我们所面临的问题。

1.4.2收敛速度的问题

卡尔曼滤波算法中都很注意滤波的收敛速度问题,滤波收敛快慢直接影响到目标跟踪的稳定度和对目标的锁定速度,因此,滤波的收敛速度是评价一个滤波器性能的重要指标[12]。

当目标做机动运动时,如果滤波器收敛慢就很容易产生丢失跟踪的状况,而一个快收敛性的滤波器就能很好的解决锁定目标跟踪目标的任务。现代航海雷达目标跟踪中开始滤波过度到稳定跟踪一般所用时间为将近40个采样周期。对于一些海上运动的比较小型的船只,由于其机动快,所以还是有必要提高跟踪的收敛速度。如果应用多卜勒技术来实现跟踪,其收敛速度会非常快,甚至可以做到一步收敛。但由于交管雷达和航海雷达是非相参的边扫描边跟踪的体制,目前接收机又是模拟式的,使得多卜勒技术在航海雷达中未能得到应用。

1.4.3滤波过程中的系统偏差的问题

在相同的测量条件下做一系列观测,若误差的大小及符号表现出系统性,或者按照一定的规律变化,这类误差为系统偏差。系统偏差对测量结果影响很大,

且一般具有积累性,应该尽可能消除或者限制到最小程度,我们一般解决这个问题的方法都是用离线或者称为后处理的方法,所以不能在线处理误差。

非线性滤波问题往往用状态变量方程来描述,从而可采用卡尔曼滤波的方法,并由此带来了一系列的方便。文献中一般对其中的加性噪声做均值为零的概率分布假设,即不存在系统偏差。这对于有些使用场合是不恰当的,或者说没有零均值假设,模型的适用范围更为广阔。当然,若该系统偏差事先已经知道,只要观测值减去该偏差然后再进行滤波即可。但如果该偏差存在而且未知,就需要在线处理这些系统偏差。

扩展卡尔曼滤波算法对线性动力学系统的状态值提供了一个有效的最大似然估计值。扩展卡尔曼滤波的一种应用是根据已知系统模型的预测值和由噪声污染的观测值来最优的估计当前的状态值。另一种应用是根据给出的系统输入和输出值(没有受到糟声污染)来估计系统模型的某些参数。因此,人们已经探讨了利用卡尔曼滤波解决未知系统的偏差问题。怎样才能更好地估计系统偏差,是我们研究卡尔曼滤波时所面临的课题。只有将对系统误差有了正确的估计,才能使最后的对当前的状态估计值的估计结果更为贴近真值[13]。

在现阶段的民用雷达的跟踪系统中,普遍存在的问题就是跟踪误差大,跟踪结果不收敛有时以至丢失目标的状况。这个问题在很多目标跟踪算法中都容易出现。其原因大致是由两点引起的:1建立目标运动模型的限制。2具体的跟踪算法的设计。例如在解决数据饱和的时候可以采用遗忘因子,在大多数的情况下这种算法是完全可以保证跟踪精度的,但是在测量值的前一时刻值为奇值甚至连续出现两个奇值的时候,遗忘因子的存在就影响了最后的估计精度。当采用前文所提到的一次扩展卡尔曼滤波的时候由于线性处理忽略了高阶项,当初始值选择不当时,这种算法的结果往往不收敛,即算法的稳定性不高[14]。

因此本文着力于针对卡尔曼滤波存在的以上问题,提出了改善方法并对改善方法做了MATLAB仿真。

1.5课题来源

雷达跟踪系统中的关键就是目标跟踪算法的设计。由于目标跟踪技术是一项

非常复杂的多学科研究课题,迄今为止仍然没有一种通用的技术方法适合目标各种运动的跟踪。从卡尔曼滤波出现以后,目标跟踪的算法研究有了突飞猛进的发展,尤其是军事领域中目标跟踪的研究,以使跟踪结果达到了相当精确的程度。传统体制的民用雷达为了提高其跟踪精度,就不得不从目标跟踪模型设计和目标跟踪算法的研究上更下工夫。虽然这种研究已经不断了进行了许多年,取得了大量成果,但由于信号处理技术和计算机处理能力的不断发展以及对目标跟踪能力的新的要求,还有很多值得研究解决的问题,例如通过对状态噪声特殊值的变化来提高跟踪精度;通过遗忘因子来解决‘跟踪数据饱和’等。

现阶段,利用在卡尔曼滤波基础上所发展来的各个算法占据了雷达目标跟踪算法的主导地位,其中以自适应的卡尔曼滤波最为突出。但是卡尔曼滤波算法还需要进一步发展,例如:卡尔曼滤波算法的稳定性问题;卡尔曼滤波算法中运动模型与实际目标运动不一致的问题等。因此本文确定了这一研究方向。

1.6本文的主要工作和结构

本文首先讨论了卡尔曼滤波算法的原理,并对卡尔曼滤波在其滤波特性和一些参数上做了分析,对于卡尔曼滤波发展现状做了阐述。接下来,对于即将进行滤波处理的数据进行了针对野值的预处理,并对于野值对滤波结果的影响和测量数据进行野值处理以后对滤波结果的影响做了仿真。本文针对卡尔曼滤波提出了改进算法,并对改进算法进行了仿真。在改进算法之后,对整个滤波结构也进行了设计,将singer模型中的匀速和加速运动模型以并联的方式结合起来,构造了多模型联合使用的滤波器,力图使这种卡尔曼滤波算法能够加快滤波收敛速度,加强滤波稳定性,并做了仿真分析。同时本文对实际应用中通过对常增益矩阵K 进行选择的方法来简化滤波算法的可行性和滤波效果也做了研究和仿真。

第2章 卡尔曼滤波理论

2.1卡尔曼滤波的基本算法

卡尔曼滤波在近20年来取得了长足的发展。把目标的位置,速度和加速度作为目标状态矢量,通过目标的动力学方程来描述目标状态的变化,利用递推的计算方法,目标的状态可以方便的估计出来,这样目标的航迹就可以建立起来。建立在非线性运动模型上的卡尔曼滤波称为扩展的卡尔曼滤波。在雷达跟踪系统中,我们所用到的是离散型卡尔曼滤波。离散卡尔曼滤波的状态方程,测量方程以及推广方程如下:

态方程:)1()1/()1()1,()(--Γ+--=k w k k k X k k k X φ (2.1) 量方程:)()()()(k v k X k H k Z += (2.2)

式中:X (k )为所要进行估计的状态值,)1/(-k k φ为状态转移矩阵,w (k )为协方差矩阵为Q 的状态噪声,H (k )为测量转移矩阵,v (k )为协方差矩阵为R的测量噪声。

状态预测方程:

??(/1)(/1)(1/1)X

k k k k X k k φ-=--- (2.3) 预测估计值协方差矩阵:

)1/()1()1/()1/()1/1()1/()1/(-Γ--Γ+----=-k k k Q k k k k k k P k k k k P T T φφ (2.4) 增益矩阵:

1)]()()1/()()[()1/()(-+--=k R k H k k P k H k H k k P k K T T (2.5)

滤波估计值:

???(/)(/1)()[()()(/1)]X

k k X k k k k Z k H k X k k =-+-- (2.6) 滤波估计值协方差矩阵:

)1/()()()1/()/(---=k k P k H k k k k P k k P (2.7)

在卡尔曼滤波过程中,只有确定了状态估计初始值?(0)X

和滤波估计值协方差

矩阵的初始值P(0),整个滤波过程才能启动。一般情况下,我们将初始估计值?(0)X

的值定为整个系统的第一次观测值Z (0),将滤波估计值的协方差矩阵P (0)的初始值可以拟订为一个对角阵,虽然大多数实际情况并非如此,但是这样做也是符合理论要求的,并且对于我们的运算也有简化作用。整个滤波循环过程如下 图[14]:

图2.1卡尔曼滤波循环过程

Fig2.1 kalman filter cycle process 2.2卡尔曼滤波的性质

由文献[1]中对卡尔曼滤波的推导过程可知,卡尔曼滤波具有以下性质:

(1) 被估计值系统的第K+1时刻的状态值)1(+K X 的卡尔曼滤波值

?(1/1)X

K K ++,就是)1(+K X 的无偏的最小方差估计。而且,滤波误差方差阵)1(+K P 是基于测量值Z1,Z2,Z3等等的)1(+K X 的所有

线性估计中最小的均方误差阵。

(2) 对于一维的情况,测量噪声协方差矩阵增大时,增益矩阵K变小。这

就表明,如果测量噪声越大,该增益取的越小,以减弱测量噪声对估

计值的影响,而使预测值所占最后的结果比重加大。

(3) 从这5个推导公式中可以看出,当矩阵P (K/K-1),Q ,R ,同乘以一个

常数时,增益矩阵K的值不变。

(4) 由推导过程我们还可以看出,当P (K-1/K-1)或者Q矩阵变小,或者同

时变小的时候,P (K/K-1)也变小,K矩阵也减小。从直观上看,这是

自然的,因为T X X X X E P ))((∧

∧--=,P变小表示估计值或者预测值

比较好,又因为)(T W W E Q =,Q变小表示状态转移随机波动减小。

所以新的测量值对状态的估计值的矫正影响减弱,于是增益矩阵K应

当变小。

从上面性质的直观分析可知,增益阵K与Q成正比,与R成反比。我们可以归纳为:当R越大,测量噪声越大,因此测量值不准确性更大,所以K要变小,以保证测量值在最后估计结果中所占的比重比较小;而Q比较大的时候,说明状态噪声比较大,因此预测值受状态噪声干扰比较严重,所以K值比较大,以保证预测值在最后估计结果中所占的比重比较小。

状态噪声越大,状态噪声协方差矩阵Q 的值越大,这样更有利于捕捉目标机动状态,滤波收敛速度快,减少丢失跟踪的概率,但是这样所得到的滤波结果精度比较差;相反,状态噪声越小,状态噪声协方差矩阵Q 的值越小,这样所得到的滤波结果精度比较好,但是滤波收敛速度慢,当目标发生大机动状态运动时,丢失跟踪的可能性比较大。本文正是利用Q 矩阵的这种作用,对在保证一定卡尔曼滤波精度的前提下加快滤波收敛速度做了算法改进。 2.3 Kalman 滤波算法的发展

目标信息跟踪方法是一种滤波算法,例如:最小二乘法滤波;维纳滤波等。其中维纳滤波曾经占据了滤波理论中发挥了很重要的作用。他的主要优点在于:一是具有一个完整的滤波器传递函数的解析解;二是可以估计与有效信号有关的多种信息。但他也存在几个问题:一是估计量X (t )与观测值Z (t )都必须是平稳的随机过程;二是滤波器必须是定常数和物理上可实现的;三是必须对(∞-,t )上

的全部数据整批处理;四是解出的滤波器传递函数在工程上往往不容易被实现;四是维纳滤波只能应用于线性系统中,因为表示维纳滤波的脉冲响应只对线性系统有意义[15,16]。由于这些问题的存在,使维纳滤波理论在工程上的应用受到很大限制。但是维纳滤波的重大贡献不在于它在工程应用上解决了多少问题,而在于它开创了一个应用统计方法研究随机问题的新领域。

现在最常用的是对雷达信息进行卡尔曼滤波跟踪。1960年,卡尔曼为了克服维纳滤波在应用上的缺点,提出了离散型的卡尔曼滤波,1961年,他又把这一滤波方法推广到连续系统中去[17]。离散型卡尔曼滤波的主要优点是:(一)滤波解是一个适合于在电子计算机上计算的递推方程;(二)数据可以逐一实时处理,不必存储大量的数据,即可将每一时刻所获得的测量数据立即处理,并与基于这一时刻以前的数据作出的状态估计值一起,由递推方程随时绘出新的状态估计,这是比维纳滤波方法的计算量和储存量少得多;(三)信号可以是非平稳的;(四)动态系统可以是时变的。(五)如果目标运动模型是非线性的,我们可以通过线性化来扩展卡尔曼滤波的应用,这就是扩展形卡尔曼滤波[18]。这种扩展可以通过卡尔曼滤波器的微分方程(对时间系统)或者差分方程(对离散系统)来实现。因此,卡尔曼算法以其优良的特性,很快的就成为跟踪算法上的主流算法,并且现在人们在传统的卡尔曼滤波基础上又创造出许多滤波结果更加优良的算法。但归根结底,他们都属于卡尔曼滤波算法。这种算法能够利用目标前几时刻的信息预测出目标下一时刻的信息,有比较好的预见性,而且可以再通过对下一时刻信息的测量来纠正此时刻信息的误差,最后得到比较好的跟踪效果[10]。

Kalman滤波算法分为离散卡尔曼滤波算法和模拟卡尔曼滤波算法[20]。在现代工程应用中,我们最常用的是离散卡尔曼滤波算法[21]。

离散Kalman 滤波器进行目标跟踪,长期以来一直被认为是解决目标跟踪,数据预测等任务的最佳选择。卡尔曼预测算法本质上是种递归预测,它采用无偏最小方差准则以得到过程的最优估计,具有很好的实时性和抗噪性[22]。它实际上是一种叠代最小均方(Recursive Least Square, RLS)滤波技术,具有收敛速度快、运算量小等特点。

目标运动模型中线性运动模型在应用上受到很大限制,这是因为大多数目标运动有很大的机动性,其模型通常是非线性的。本文主要针对交管雷达和航海雷

达讨论目标跟踪问题,观测目标为水面航行的各种船只。这些船只通常做的都是匀速运动,因此线性运动模型在跟踪算法中还是很有应用价值的。但在更一般的情况下,由非线性数学模型描述目标运动有广泛的实用性,也有很好的效果,因此非线性滤波技术一直受到研究者的重视。非线性目标跟踪算法主要包括推广卡尔曼滤波、二阶滤波、修正增益的推广卡尔曼滤波、自适应推广卡尔曼滤波等算法[23]。它们的基本思想都是采用参数化的解析形式对系统的非线性进行近似。

2.3.1扩展卡尔曼滤波

扩展卡尔曼滤波技术在三维跟踪问题中,量测矩阵H K 是非线性的,在某一预先选定的展开点^x处作一阶Taylor 展开

???()()

()()k k k k k H x H x H x x x =+?- (2.8) 式中:

?()k k H H x x

??=? 这个式子就是Jacobian 矩阵,对应于量测方程有[24]

??s i n ()c o s ()0???()?????sin()cos()sin()sin()cos()???xy xy k r r H x r r r ααβαβαβ??-?????=??--??????

(2.9) 于是量测矩阵可以近似为线性函数,?r ,?xy r 分别表示观测器与目标的距离估

值及其在xy 平面上的投影。再利用递推卡尔曼滤波方程,就可以实时估计出状态

变量。这种方法称为扩展卡尔曼滤波技术,但它只是在估计值?x

的某个邻域内可以忽略线性化误差,该邻域大小与量测方程的非线性强度有关。

扩展卡尔曼滤波(EKF )是一种常用的非线性信号处理办法,广泛应用于雷达目标跟踪,自动控制,参数估计等领域[25,26]。EKF 实质上是将观测方程和状态方程进行在前一次状态估计值上线性化处理,并进行线性卡尔曼滤波,因此采用EKF 得到的估计结果并不是最优的估计结果。由于线性处理忽略了高阶项,当初始值选择不当时,EKF 算法的结果往往不收敛,即算法的稳定性不高。实践证明EKF 算法仅适用于噪声干扰小,系统的非线性程度不高的情况。为了提高EKF 的算法

在单站无源定位与跟踪领域的性能,当前已经提出了广泛扩展卡尔曼滤波(UNIEKF )等算法。这些算法通过修正EKF 算法内部的参数以求提高算法在定位与跟踪过程中的性能,因此它们在定位跟踪精度方面都有不同程度的提高,甚至可以达到克拉美劳下界(CRLB ),可以满足实际的技术要求。但是这些算法在稳定性方面比起EKF 提高并不大,而稳定算法是定位与跟踪的一项重要技术要求

[27]。

2.3.2二阶滤波

研究表明,扩展卡尔曼滤波算法只有当滤波误差和预测误差很小时适用,否则,滤波初期估计协方差下降太快会导致滤波不稳定甚至发散。为了提高线性化精度,在Talyor 展开式中取前3、4、5项,分别得到二阶、三阶、四阶滤波技术。二阶滤波技术的性能远比扩展卡尔曼滤波效果好,但三阶、四阶滤波与二阶滤波相比,性能提高并不多,因此工程中超过二阶滤波的高阶滤波一般不采用。二阶滤波的缺点是计算量相当大,难以在线实现。

2.3.3修正增益的扩展卡尔曼滤波

修正增益的扩展卡尔曼滤波技术与EKF相比,区别在于协方差更新时改善了增益矩阵g,从而改善了状态协方差的估计性能。对于基于测向信息的三维被动定位问题,增益矩阵g成为[24]

??s i n ()c o s ()0???????s i n ()c o s ()s i n ()s i n ()c o s ()???t a n ()t a n ()t a n ()x y x y r r g ααβαβαβββββββ??-????=???--?---????

(2.10) 可见,计算EKF 中的Jacbian 矩阵需要用到俯仰角的估计值?β

,而增益矩阵g则需要俯仰角的真实值。由于真实的俯仰角β无法知道,一般以俯仰角的量测值代入计算函数g,并且认为角度的正切值近似等于角度,这样整个增益矩阵的推导过程是近似线性化的,该方法的量测误差不能大于3度[28]。当测量值和估计值相差大于3度的时候,滤波结果就容易发生不收敛或者发散的状况,实际上也就产生了跟踪失败的结果。

2.3.4自适应扩展卡尔曼滤波

自适应扩展卡尔曼滤波技术是把EKF 中Taylor 展开式中的高阶误差加到量测噪声里,一起形成虚拟噪声,并在滤波过程中实时估计其大小。由于虚拟噪声补偿了线性化模型误差,因而有利于改善滤波性能[29,30]。其中一个缺点是,虚拟噪声带有未知的时变统计特性,很难在线估计出来;另一个缺点是,由于它是基于过去所有观测的条件期望,且对这些观测值都予以均一的权值,即对新、老数据给予相同的置信度,这样随着时间的推移,采集到的数据越来越多,从新数据中获得的信息量就会相对下降,算法慢慢失去修正能力,出现所谓的“数据饱和”现象,这时参数估计值可能还偏离真值较远就无法更新了,或者对时变结构来说,将导致参数估计值不能跟踪时变参数的变化[31]。为克服“数据饱和”现象,可以采用降低老数据信度的办法来修改算法,其中之一就是引入遗忘因子到滤波过程中,形成所谓的自适应滤波。

其基本算法如下:

离散状态方程为:)1()1/()1()1,()(--Γ+--=k w k k k X k k k X φ

其中,状态转移矩阵φ为[24]:

21(1)/()01(1)/00T T T T T e K e e αααααα??-+??Φ=-??????

(2.11)

其中,α为自适应卡尔曼滤波算法中最精髓的遗忘因子。

离散测量方程:)()()()(k v k X k H k Z +=

其整个卡尔曼滤波推倒过程与基础卡尔曼滤波算法的推倒过程一致,其中只是多了一个遗忘因子。

2.3.5基于加权测量噪声协方差矩阵的发散抑制方法

在 Kalman 滤波中引入系统量测噪声协方差阵 R 的计算,并对其加权,从而影响滤波增益 K ,加强新近测量值在滤波中的作用,抑制发散[32]。

对 Kalman 滤波过程的研究发现:如果其增益越来越小,使在一定程度上反

三种卡尔曼滤波理论

经典卡尔曼滤波 动态系统的卡尔曼滤波数学模型包括状态方程和观测方程,对于线性系统,其离散形式为 X k = Φk ,k?1X k?1+ G k?1W k?1 L k = H k X k + V k 其中,X k 为系统在t k 时刻的n ×1维状态向量,Φk ,k?1为系统从t k?1时刻到t k 时刻的n ×n 维状态转移矩阵,W k?1为t k?1时刻的r ×1动态噪声,G k?1为t k?1时刻的n ×r 动态噪声矩阵,L k 为系统在t k 时刻的m ×1维观测向量,H k 为系统在t k 时刻的m ×n 维观测矩阵,V k 为系统在t k 时刻的m ×1维观测噪声。 根据最小二乘原则,可推得卡尔曼滤波递推公式为: 1)状态向量一步预测值为 X k ,k ?1 =Φk ,k?1X k ?1,k ?1 2)状态向量一步预测值方差矩阵为 P k ,k ?1 = Φk ,k?1P k ?1,k ?1 Φk ,k?1T +G k?1Q k?1G k?1T 其中,Q k 为动态噪声方差矩阵。 3)状态向量估计值为 X k ,k = X k ,k ?1 +J k L k ? H k X k ,k ?1 4)状态向量估计值方差矩阵为 P k ,k = I ? J k H k P k ,k ?1 其中,J k 为滤波增益矩阵,具体形式如下 J k = P k ,k ?1 H k T H k P k ,k ?1 H k T + R k ?1 R k 为观测噪声方差矩阵。 基于方差补偿的自适应卡尔曼滤波 假定 W k 和 V k 是正态序列,X 0是正态向量。则定义l 步预测残差是 V k +l = L k +l ? L k +l ,k 其中,L k +l ,L k +l ,k 分别为第k +l 期观测值和它的最佳观测值L k +l ,k = H k +l Φk +l ,k X k ,k ,则V k +l 为正态向量。V k +l 的方差阵S vv 为: S vv = H k +l Φk +l,k P k Φk +l ,k T H k +l T +R k +l + H k +l Φk +l ,k +i l i =1 G k +l ,k +i?1Q k +i?1G k +l ,k +i?1T Φk +l ,k +i T H k +l T

卡尔曼滤波简述

Kalman Filter Xianling Wang July23,2016v1.0 目录 一、简介2 二、线性卡尔曼滤波方法2 2.1滤波方法描述 (2) 2.2滤波过程的其他细节 (3) 三、后记4

一、简介 卡尔曼滤波器(Kalman Filter)的核心功能是对观测值进行优化,尽可能降低误差的影响,使其更加贴近系统的实际值。 二、线性卡尔曼滤波方法 2.1滤波方法描述 假设系统在t时刻的状态由x t描述,x t包含了若干个变量,因此以向量的形式出现。同时假设系统状态相对于时间变化的机理是可知的,由式(1)描述,即 x t+1=F t x t+B t u t+w t(1)其中,F t为状态转移矩阵,描述t时刻状态对t+1时刻状态的影响程度;u t表示外界控制因素;B t为控制矩阵,描述外界控制因素对t+1时刻状态的影响程度;w t表示不可控的过程噪声,假设其协方差矩阵为Q t。式(1)所描述的关系是线性的,因此对其误差消除的滤波方法称为线性卡尔曼滤波方法。 假设对系统状态的观测是间接的,而且存在一定误差,即 z t=H t x t+v t(2)其中,z t为所用观测工具可以观测到的直接变量,不一定等同于系统状态中的变量,但却是和系统状态中的变量存在一定线性关系的变量;H t描述直接观测变量和系统状态变量之间的线性关系;v t表示观测误差,假设其协方差矩阵为R t。 虽然t时刻的观测值都是带有误差的,但由于系统状态相对于时间变化的机理是可知的,因此结合t?1时刻的某些信息可以削减该误差,提升t时刻观测值的精确度,得到t时刻的最优估计值,该估计值相对实际值的误差协方差为P t。 为了获得t时刻系统状态的最优估计值,线性卡尔曼滤波器需要以下3个方面的信息: 1.t?1时刻的最优估计值?x t?1; 2.t?1时刻最优估计值相对于实际值的误差协方差P t?1; 3.t时刻的观测值z t; 在获知这些信息的条件下,t时刻系统状态的最优估计值可以依据以下5个公式逐步获得:

卡尔曼滤波算法总结

Kalman_Filter(float Gyro,float Accel) { Angle+=(Gyro - Q_bias) * dt; Pdot[0]=Q_angle - PP[0][1] - PP[1][0]; Pdot[1]= - PP[1][1]; Pdot[2]= - PP[1][1]; Pdot[3]=Q_gyro; PP[0][0] += Pdot[0] * dt; PP[0][1] += Pdot[1] * dt; PP[1][0] += Pdot[2] * dt; PP[1][1] += Pdot[3] * dt; Angle_err = Accel - Angle; PCt_0 = C_0 * PP[0][0]; PCt_1 = C_0 * PP[1][0]; E = R_angle + C_0 * PCt_0; K_0 = PCt_0 / E; K_1 = PCt_1 / E; t_0 = PCt_0; t_1 = C_0 * PP[0][1]; PP[0][0] -= K_0 * t_0; PP[0][1] -= K_0 * t_1; PP[1][0] -= K_1 * t_0; PP[1][1] -= K_1 * t_1; Angle += K_0 * Angle_err; Q_bias += K_1 * Angle_err; Gyro_x = Gyro - Q_bias; } 首先是卡尔曼滤波的5个方程: -=--+(1)先验估计 X k k AX k k Bu k (|1)(1|1)() -=--+(2)协方差矩阵的预测(|1)(1|1)' P k k AP k k A Q

卡尔曼滤波算法总结

卡尔曼滤波算法总结-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

2015.12.12 void Kalman_Filter(float Gyro,float Accel) { Angle+=(Gyro - Q_bias) * dt; Pdot[0]=Q_angle - PP[0][1] - PP[1][0]; Pdot[1]= - PP[1][1]; Pdot[2]= - PP[1][1]; Pdot[3]=Q_gyro; PP[0][0] += Pdot[0] * dt; PP[0][1] += Pdot[1] * dt; PP[1][0] += Pdot[2] * dt; PP[1][1] += Pdot[3] * dt; Angle_err = Accel - Angle; PCt_0 = C_0 * PP[0][0]; PCt_1 = C_0 * PP[1][0]; E = R_angle + C_0 * PCt_0; K_0 = PCt_0 / E; K_1 = PCt_1 / E; t_0 = PCt_0; t_1 = C_0 * PP[0][1]; PP[0][0] -= K_0 * t_0; PP[0][1] -= K_0 * t_1; PP[1][0] -= K_1 * t_0; PP[1][1] -= K_1 * t_1; Angle += K_0 * Angle_err; Q_bias += K_1 * Angle_err; Gyro_x = Gyro - Q_bias; }

首先是卡尔曼滤波的5个方程: (|1)(1|1)() X k k AX k k Bu k -=--+(1)先验估计 (|1)(1|1)'P k k AP k k A Q -=--+(2)协方差矩阵的预测 ()(|1)'/(|1)')Kg k P k k H HP k k H R =--+(3)计算卡尔曼增益 (|)(|1)()(()(|1))X k k X k k Kg k Z k HX k k =-+--(4)进行修正 5个式子比较抽象,现在直接用实例来说: 一、卡尔曼滤波第一个式子 对于角度来说,我们认为此时的角度可以近似认为是上一时刻的角度值加上上一时刻陀螺仪测得的角加速度值乘以时间,因为d dt θω=?,角度微分等于时间的微分乘以角速度。但是陀螺仪有个静态漂移(而且还是变化的),静态漂移就是静止了没有角速度然后陀螺仪也会输出一个值,这个值肯定是没有意义的,计算时要把它减去。 由此我们得到了当前角度的预测值Angle Angle=Angle+(Gyro - Q_bias) * dt; 其中等号左边Angle 为此时的角度,等号右边Angle 为上一时刻的角度,Gyro 为陀螺仪测的角速度的值,dt 是两次滤波之间的时间间隔,我们的运行周期是4ms 或者6ms 。 同时 Q_bias 也是一个变化的量。 但是就预测来说认为现在的漂移跟上一时刻是相同的,即 Q_bias=Q_bias 将上面两个式子写成矩阵的形式 1_0 1_0 Angle dt Angle dt Q bias Q bia o s Gyr -= + 得到上式,这个式子对应于卡尔曼滤波的第一个式子 (|1)(1|1)() X k k AX k k Bu k -=--+ (|)(|1) P k k I Kg k H P k k =--(())(5)更新协方差阵

卡尔曼滤波简介及其算法实现代码

卡尔曼滤波简介及其算法实现代码 卡尔曼滤波算法实现代码(C,C++分别实现) 卡尔曼滤波器简介 近来发现有些问题很多人都很感兴趣。所以在这里希望能尽自己能力跟大家讨论一些力所能及的算法。现在先讨论一下卡尔曼滤波器,如果时间和能力允许,我还希望能够写写其他的算法,例如遗传算法,傅立叶变换,数字滤波,神经网络,图像处理等等。 因为这里不能写复杂的数学公式,所以也只能形象的描述。希望如果哪位是这方面的专家,欢迎讨论更正。 卡尔曼滤波器– Kalman Filter 1.什么是卡尔曼滤波器 (What is the Kalman Filter?) 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人! 卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。如果对这编论文有兴趣,可以到这里的地址下载: https://www.doczj.com/doc/eb2457008.html,/~welch/media/pdf/Kalman1960.pdf。 简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 2.卡尔曼滤波器的介绍 (Introduction to the Kalman Filter) 为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。 在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。 假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就

卡尔曼滤波算法(C--C++两种实现代码)

卡尔曼滤波算法实现代码 C++实现代码如下: ============================kalman.h================= =============== // kalman.h: interface for the kalman class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_KALMAN_H__ED3D740F_01D2_4616_8B74_8BF57636F2C0__IN CLUDED_) #define AFX_KALMAN_H__ED3D740F_01D2_4616_8B74_8BF57636F2C0__INCLU DED_ #if _MSC_VER > 1000 #pragma once #endif// _MSC_VER > 1000 #include #include "cv.h" class kalman { public: void init_kalman(int x,int xv,int y,int yv); CvKalman* cvkalman; CvMat* state; CvMat* process_noise; CvMat* measurement; const CvMat* prediction; CvPoint2D32f get_predict(float x, float y);

kalman(int x=0,int xv=0,int y=0,int yv=0); //virtual ~kalman(); }; #endif// !defined(AFX_KALMAN_H__ED3D740F_01D2_4616_8B74_8BF57636F2C 0__INCLUDED_) ============================kalman.cpp=============== ================= #include "kalman.h" #include /* tester de printer toutes les valeurs des vecteurs*/ /* tester de changer les matrices du noises */ /* replace state by cvkalman->state_post ??? */ CvRandState rng; const double T = 0.1; kalman::kalman(int x,int xv,int y,int yv) { cvkalman = cvCreateKalman( 4, 4, 0 ); state = cvCreateMat( 4, 1, CV_32FC1 ); process_noise = cvCreateMat( 4, 1, CV_32FC1 ); measurement = cvCreateMat( 4, 1, CV_32FC1 ); int code = -1;

卡尔曼滤波简介及其实现(附C代码)

卡尔曼滤波简介及其算法实现代码(C++/C/MATLAB) 卡尔曼滤波器简介 近来发现有些问题很多人都很感兴趣。所以在这里希望能尽自己能力跟大家讨论一些力所能及的算法。现在先讨论一下卡尔曼滤波器,如果时间和能力允许,我还希望能够写写其他的算法,例如遗传算法,傅立叶变换,数字滤波,神经网络,图像处理等等。 因为这里不能写复杂的数学公式,所以也只能形象的描述。希望如果哪位是这方面的专家,欢迎讨论更正。 卡尔曼滤波器– Kalman Filter 1.什么是卡尔曼滤波器 (What is the Kalman Filter?) 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人! 卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。如果对这编论文有兴趣,可以到这里的地址下载: https://www.doczj.com/doc/eb2457008.html,/~welch/media/pdf/Kalman1960.pdf。 简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 2.卡尔曼滤波器的介绍 (Introduction to the Kalman Filter) 为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5 条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。 在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。

卡尔曼滤波的基本原理及应用

卡尔曼滤波的基本原理及应用卡尔曼滤波在信号处理与系统控制领域应用广泛,目前,正越来越广泛地应用于计算机应用的各个领域。为了更好地理解卡尔曼滤波的原理与进行滤波算法的设计工作,主要从两方面对卡尔曼滤波进行阐述:基本卡尔曼滤波系统模型、滤波模型的建立以及非线性卡尔曼滤波的线性化。最后,对卡尔曼滤波的应用做了简单介绍。 卡尔曼滤波属于一种软件滤波方法,其基本思想是:以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值,算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。 最初的卡尔曼滤波算法被称为基本卡尔曼滤波算法,适用于解决随机线性离散系统的状态或参数估计问题。卡尔曼滤波器包括两个主要过程:预估与校正。预估过程主要是利用时间更新方程建立对当前状态的先验估计,及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计值;校正过程负责反馈,利用测量更新方程在预估过程的先验估计值及当前测量变量的基础上建立起对当前状态的改进的后验估计。这样的一个过程,我们称之为预估-校正过程,对应的这种估计算法称为预估-校正算法。以下给出离散卡尔曼滤波的时间更新方程和状态更新方程。 时间更新方程: 状态更新方程: 在上面式中,各量说明如下: A:作用在X k-1上的n×n 状态变换矩阵 B:作用在控制向量U k-1上的n×1 输入控制矩阵 H:m×n 观测模型矩阵,它把真实状态空间映射成观测空间 P k-:为n×n 先验估计误差协方差矩阵 P k:为n×n 后验估计误差协方差矩阵 Q:n×n 过程噪声协方差矩阵 R:m×m 过程噪声协方差矩阵 I:n×n 阶单位矩阵K k:n×m 阶矩阵,称为卡尔曼增益或混合因数 随着卡尔曼滤波理论的发展,一些实用卡尔曼滤波技术被提出来,如自适应滤波,次优滤波以及滤波发散抑制技术等逐渐得到广泛应用。其它的滤波理论也迅速发展,如线性离散系统的分解滤波(信息平方根滤波,序列平方根滤波,UD 分解滤波),鲁棒滤波(H∞波)。 非线性样条自适应滤波:这是一类新的非线性自适应滤波器,它由一个线性组合器后跟挠性无记忆功能的。涉及的自适应处理的非线性函数是基于可在学习

几种卡尔曼滤波算法理论

自适应卡尔曼滤波 卡尔曼滤波发散的原因 如果卡尔曼滤波是稳定的,随着滤波的推进,卡尔曼滤波估计的精度应该越来越高,滤波误差方差阵也应趋于稳定值或有界值。但在实际应用中,随着量测值数目的增加,由于估计误差的均值和估计误差协方差可能越来越大,使滤波逐渐失去准确估计的作用,这种现象称为卡尔曼滤波发散。 引起滤波器发散的主要原因有两点: (1)描述系统动力学特性的数学模型和噪声估计模型不准确,不能直接真实地反映物理过程,使得模型与获得的量测值不匹配而导致滤波发散。这种由于模型建立过于粗糙或失真所引起的发散称为滤波发散。 (2)由于卡尔曼滤波是递推过程,随着滤波步数的增加,舍入误差将逐渐积累。如果计算机字长不够长,这种积累误差很有可能使估计误差方差阵失去非负定性甚至失去对称性,使滤波增益矩阵逐渐失去合适的加权作用而导致发散。这种由于计算舍入误差所引起的发散称为计算发散。 针对上述卡尔曼滤波发散的原因,目前已经出现了几种有效抑制滤波发散的方法,常用的有衰减记忆滤波、限定记忆滤波、扩充状态滤波、有限下界滤波、平方根滤波、和自适应滤波等。这些方法本质上都是以牺牲滤波器的最优性为代价来抑制滤波发散,也就是说,多数都是次优滤波方法。 自适应滤波 在很多实际系统中,系统过程噪声方差矩阵Q和量测误差方差阵R事先是不知道的,有时甚至连状态转移矩阵 或量测矩阵H也不能确切建立。如果所建立的模型与实际模型不符可能回引起滤波发散。自适应滤波就是这样一种具有抑制滤波发散作用的滤波方法。在滤波过程中,自适应滤波一方面利用量测值修正预测值,同时也对未知的或不确切的系统模型参数和噪声统计参数进行估计修正。自适应滤波的方法很多,包括贝叶斯法、极大似然法、相关法与协方差匹配法,其中最基本也是最重要的是相关法,而相关法可分为输出相关法和新息相关法。 在这里只讨论系统模型参数已知,而噪声统计参数Q和R未知情况下的自适应滤波。由于Q和R等参数最终是通过增益矩阵K影响滤波值的,因此进行自适应滤波时,也可以不去估计Q和R等参数而直接根据量测数据调整K就可以了。

卡尔曼滤波在单片机上的使用

卡尔曼滤波在单片机上的使用 2011-04-13 13:43:43| 分类:默认分类| 标签:|字号大中小订阅

#ifndef _KALMAN_H_ #define _KALMAN_H_ extern KalmanGain; //卡尔曼增益extern EstimateCovariance; //估计协方差extern MeasureCovariance; //测量协方差extern EstimateValue; //估计值extern void KalmanFilterInit( void ) ; extern KalmanFilter( Measure ); #endif #include "config.h" #include "math.h" KalmanGain; //卡尔曼增益EstimateCovariance; //估计协方差MeasureCovariance; //测量协方差EstimateValue; //估计值 void KalmanFilterInit( void ); extern float KalmanFilter( float Measure ); void KalmanFilterInit( void ) { EstimateValue = 0; EstimateCovariance = 0.1; MeasureCovariance = 0.02; }

KalmanFilter( Measure ) { //计算卡尔曼增益 KalmanGain = EstimateCovariance * sqrt( 1 / ( EstimateCovariance * EstimateCovariance + MeasureCovariance * MeasureCovariance ));//计算本次滤波估计值 EstimateValue = EstimateValue + KalmanGain*(Measure –EstimateValue ); //更新估计协方差 EstimateCovariance = sqrt(1 - KalmanGain) * EstimateCovariance; //更新测量方差 MeasureCovariance = sqrt(1 - KalmanGain) * MeasureCovariance; //返回估计值 return EstimateValue; }

Kalman滤波算法

Kalman 滤波算法 姓名:刘金强 专业:控制理论与控制工程 学号:2007255 ◆实验目的: (1)、掌握klman 滤波实现的原理和方法 (2)、掌握状态向量预测公式的实现过程 (3)、了解Riccati 差分方程实现的过程和新息的基本性质和过程的计算 ◆实验要求: 问题: F=[a1,a2,a3],其中a1=[1.0 0 0]的转置,a2=[0.3 1.0 0]的转置,a3=[0.1 0.2 0.4]的转置,x(0)=[3,-1,2]的转置;C=[b1,b2,b3],其中b1=[0.3 0.5]的转置,b2=[1,0.4]的转置,b3=[0.8 -0.7]的转置;V1(n)=[0 0 n1(n)sin(0.1n)]的转置,V2(n)=[n2(n) n3(n)];n1(n)为均值为零,方差为1的均匀分布白噪声;n2(n),n3(n)为均值为0,方差为0.1的均匀分布白噪声,n1(n),n2(n),n3(n)相互独立,试用卡尔曼滤波器算法估计x^(n). ◆实验原理: 初始条件: 1?(1)x =E{x(1)} K(1,0)=E{[x(1)- (1)x ][x(1)- (1)H x ]},其中(1)x =E{x(1)} 输入观测向量过程: 观测向量序列={y(1),…………y(n)} 已知参数: 状态转移矩阵F(n+1,n) 观测矩阵C(n) 过程噪声向量的相关矩阵1()Q n 观测噪声向量的相关矩阵2()Q n 计算:n=1,2,3,………………. G(n)=F(n+1,n)K(n,n+1) ()H C n 12[()(,1)()()]H C n K n n C n Q n --+ Kalman 滤波器是一种线性的离散时间有限维系统。Kalman 滤波器的估计性能是:它使滤波后的状态估计误差的相关矩阵P(n)的迹最小化。这意味着,kalman 滤波器是状态向量x(n)的线性最小方差估计。 ◆实验结果: ◆程序代码: (1)主程序

卡尔曼滤波器介绍 --- 最容易理解

10.6 卡尔曼滤波器简介 本节讨论如何从带噪声的测量数据把有用信号提取出来的问题。通常,信号的频谱处于有限的频率范围内,而噪声的频谱则散布在很广的频率范围内。如前所述,为了消除噪声,可以把 FIR滤波器或IIR滤波器设计成合适的频带滤波器,进行频域滤波。但在许多应用场合,需要进行时域滤波,从带噪声的信号中提取有用信号。虽然这样的过程其实也算是对信号的滤波,但所依据的理论,即针对随机信号的估计理论,是自成体系的。人们对随机信号干扰下的有用信号不能“确知”,只能“估计”。为了“估计”,要事先确定某种准则以评定估计的好坏程度。最小均方误差是一种常用的比较简单的经典准则。典型的线性估计器是离散时间维纳滤波器与卡尔曼滤波器。 对于平稳时间序列的最小均方误差估计的第一个明确解是维纳在1942年2月首先给出的。当时美国的一个战争研究团体发表了一个秘密文件,其中就包括维纳关于滤波问题的研究工作。这项研究是用于防空火力控制系统的。维纳滤波器是基于最小均方误差准则的估计器。为了寻求维纳滤波器的冲激响应,需要求解著名的维纳-霍夫方程。这种滤波理论所追求的是使均方误差最小的系统最佳冲激响应的明确表达式。这与卡尔曼滤波(Kalman filtering)是很不相同的。卡尔曼滤波所追求的则是使均方误差最小的递推算法。 在维纳进行滤波理论研究并导出维纳-霍夫方程的十年以前,在1931年,维纳和霍夫在数学上就已经得到了这个方程的解。 对于维纳-霍夫方程的研究,20世纪五十年代涌现了大量文章,特别是将维纳滤波推广到非平稳过程的文章甚多,但实用结果却很少。这时正处于卡尔曼滤波问世的前夜。 维纳滤波的困难问题,首先在上世纪五十年代中期确定卫星轨道的问题上遇到了。1958年斯韦尔林(Swerling)首先提出了处理这个问题的递推算法,并且立刻被承认和应用。1960年卡尔曼进行了比斯韦尔林更有意义的工作。他严格地把状态变量的概念引入到最小均方误差估计中来,建立了卡尔曼滤波理论。空间时代的到来推动了这种滤波理论的发展。 维纳滤波与卡尔曼滤波所研究的都是基于最小均方误差准则的估计问题。 维纳滤波理论的不足之处是明显的。在运用的过程中,它必须把用到的全部数据存储起来,而且每一时刻都要通过对这些数据的运算才能得到所需要的各种量的估值。按照这种滤波方法设置的专用计算机的存储量与计算量必然很大,很难进行实时处理。虽经许多科技工作者的努力,在解决非平稳过程的滤波问题时,给出能用的方法为数甚少。到五十年代中期,随着空间技术的发展,这种方法越来越不能满足实际应用的需要,面临了新的挑战。尽管如此,维纳滤波理论在滤波理论中的开拓工作是不容置疑的,维纳在方法论上的创见,仍然影响着后人。 五十年代中期,空间技术飞速发展,要求对卫星轨道进行精确的测量。为此,人们将滤波问题以微分方程表示,提出了一系列适应空间技术应用的精练算法。1960年

卡尔曼滤波简介和实例讲解.

卡尔曼,美国数学家和电气工程师。1930年5月 19日生于匈牙利首都布达佩斯。1953年在美国麻省理工学院毕业获理学士学位,1954年获理学硕士学位,1957年在哥伦比亚大学获科学博士学位。1957~1958年在国际商业机器公司(IBM)研究大系统计算机控制的数学问题。1958~1964年在巴尔的摩高级研究院研究控制和数学问题。1964~1971年到斯坦福大学任教授。1971年任佛罗里达大学数学系统理论研究中心主任,并兼任苏黎世的瑞士联邦高等工业学校教授。1960年卡尔曼因提出著名的卡尔曼滤波器而闻名于世。卡尔曼滤波器在随机序列估计、空间技术、工程系统辨识和经济系统建模等方面有许多重要应用。1960年卡尔曼还提出能控性的概念。能控性是控制系统的研究和实现的基本概念,在最优控制理论、稳定性理论和网络理论中起着重要作用。卡尔曼还利用对偶原理导出能观测性概念,并在数学上证明了卡尔曼滤波理论与最优控制理论对偶。为此获电气与电子工程师学会(IEEE)的最高奖──荣誉奖章。卡尔曼著有《数学系统概论》(1968)等书。 什么是卡尔曼滤波 最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼

滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。 卡尔曼滤波的实质是由量测值重构系统的状态向量。它以“预测—实测—修正”的顺序递推,根据系统的量测值来消除随机干扰,再现系统的状态,或根据系统的量测值从被污染的系统中恢复系统的本来面目。 释文:卡尔曼滤波器是一种由卡尔曼(Kalman)提出的用于时变线性系统的递归滤波器。这个系统可用包含正交状态变量的微分方程模型来描述,这种滤波器是将过去的测量估计误差合并到新的测量误差中来估计将来的误差。 卡尔曼滤波的应用 斯坦利.施密特(Stanley Schmidt)首次实现了卡尔曼滤波器.卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器. 关于这种滤波器的论文由Swerling (1958), Kalman (1960)与 Kalman and Bucy (1961)发表.

卡尔曼滤波

3. TheKalmanfilterisapowerfulrecursivedatafusiontoolbasedonestimationtheory.Itworksas an estimator forastatevector containingoneor morerandomvariablesthat are assumedtobeGaussiandistributed. Theunderlyingprinciple ofaKalman filterisapredictor-correctorstructure.Inthepredictioncycle,thestatevectordynamicsaredescribedb yastatespacemodel. Thetransition from onestatetothenextoneatatimeisexpressedbyastatetransitionmatrixor,inthenonlinearcase,asanonli nearfunction.Assignedtothestatevectorisacovariancematrix,whichdescribesthestatisticaldispersi onoftherandomstatevectorcomponents.Thecovariancematrixalsorunsthroughthepredictioncycle ,wherethequalityofthestatespacemodelisdescribedbyanadditivenoisecomponent Q . AnimportantpreconditionforusingaKalmanfilteristhatatleastoneoftheelementsinthestatevectoris observableandthatthereisadditionalinformationavailablefortheobservedelement.Thisadditionali nformationcanconsistofe.g.measurementsorknownconstraintsandis combinedinameasurement vector. Theobservation is used forthecorrectioncycle(oralso:filterupdate).Leftmultiplicationofthepredictedstatevectorwiththeo bservationmatrix C yieldsavectorthatissubtractedfromthemeasurementvectortoobtainaresidual.A fterweightingbytheKalmangain,theresidualisaddedtothepredictedstatevectortoobtainafilteresti mate. TheKalmangainincludesthepredictionerrorcovarianceoftheobservedelementsinthestatevector andthemeasurement noise R .From the formulaforthecalculationoftheKalmangainitcan beseen thattheresidualwillbe weightedlessthehigherthemeasurementnoiseis.Inotherwords,iftheaccuracyofthepredictionishig h(lowcovariancevalues)comparedtothemeasurementnoise,theKalmanfilterwill “f ollow ”ratherth estatespacemodelthanthemeasurements.Iftheaccuracyofthepredictionislowbutthequality ofthemeasurementsishigh,theoppositecaseoccurs. AdetailedexplanationoftheKalmanfilteralgorithmanditscompletederivationcanbefoundin[LO90a],[LO90b]. a) LinearKalmanFilter Ifthestatetransitionandtheobservationarelinear,theKalmanfiltercanbedescribedbyasimplesetoff ormulas. Predictioncycle: x ?? =A ?x ?+ ? k +1 =A ?P +?A T +Q with x ?: n-elementstatevector A : n×nstatetransitionmatrix P : covarianceassignedtothestatevector Q : "drivingnoise" Kalmangainandresidual: (B.1.1) K =P ? · C T ??C ?P ? ?1 ?C +R ? k +1 k +1 ? k +1 ? res k +1 =y b (k +1)?C ?x ?k +1 with K : Kalman gain res : residual (B.1.2) y : m-elementmeasurementvector b Updatecycle: C : k +1 k P k T ?

什么是卡尔曼滤波器——基础理解

1.什么是卡尔曼滤波器 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。卡尔曼是一个人的名字。 卡尔曼全名Rudolf Emil Kalman,1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文 《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。 简单来说,卡尔曼滤波器是一个 “optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 2.卡尔曼滤波器的介绍 为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。 在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。

假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。假设你对你的经验不是100%的相信,可能会有上下偏差几度。我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution)。另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。我们也把这些偏差看成是高斯白噪声。(所谓高斯白噪声中的高斯是指概率分布是正态函数,而白噪声是指它的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。这是考查一个信号的两个不同方面的问题。 高斯白噪声:如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。) 好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。 假如我们要估算k时刻的是实际温度值。首先你要根据k-1时刻的温度值,来预测k时刻的温度。因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平

卡尔曼(kalman)滤波算法特点及其应用

Kalman滤波算法的特点: (1)由于Kalman滤波算法将被估计的信号看作在白噪声作用下一个随机线性系统的输出,并且其输入/输出关系是由状态方程和输出方程在时间域内给出的,因此这种滤波方法不仅适用于平稳随机过程的滤波,而且特别适用于非平稳或平稳马尔可夫序列或高斯-马尔可夫序列的滤波,所以其应用范围是十分广泛的。 (2)Kalman滤波算法是一种时间域滤波方法,采用状态空间描述系统。系统的过程噪声和量测噪声并不是需要滤除的对象,它们的统计特征正是估计过程中需要利用的信息,而被估计量和观测量在不同时刻的一、二阶矩却是不必要知道的。 (3)由于Kalman滤波的基本方程是时间域内的递推形式,其计算过程是一个不断地“预测-修正”的过程,在求解时不要求存储大量数据,并且一旦观测到了新的数据,随即可以算的新的滤波值,因此这种滤波方法非常适合于实时处理、计算机实现。 (4)由于滤波器的增益矩阵与观测无关,因此它可预先离线算出,从而可以减少实时在线计算量。在求滤波器增益矩阵时,要求一个矩阵的逆,它的阶数只取决于观测方程的维数,而该维数通常很小,这样,求逆运算是比较方便的。另外,在求解滤波器增益的过程中,随时可以算出滤波器的精度指标P,其对角线上的元素就是滤波误差向量各分量的方差。 Kalman滤波的应用领域 一般地,只要跟时间序列和高斯白噪声有关或者能建立类似的模型的系统,都可以利用Kalman滤波来处理噪声问题,都可以用其来预测、滤波。Kalman滤波主要应用领域有以下几个方面。 (1)导航制导、目标定位和跟踪领域。 (2)通信与信号处理、数字图像处理、语音信号处理。 (3)天气预报、地震预报。 (4)地质勘探、矿物开采。 (5)故障诊断、检测。 (6)证券股票市场预测。 具体事例: (1)Kalman滤波在温度测量中的应用; (2)Kalman滤波在自由落体运动目标跟踪中的应用; (3)Kalman滤波在船舶GPS导航定位系统中的应用; (4)Kalman滤波在石油地震勘探中的应用; (5)Kalman滤波在视频图像目标跟踪中的应用;

相关主题
文本预览
相关文档 最新文档