卡尔曼滤波的学习

卡尔曼滤波的学习
卡尔曼滤波的学习

1.2 Kalman 滤波理论的基础

在估计问题中,长考虑如下随机线性离散系统模型

,11,11k k k k k k k X X W ----=Φ+Γ k k k k Z H X V =+

k X 是系统的n 维状态向量,k Z 是系统的m 维观察向量。

根据状态向量和观察向量在时间上存在的不同对应关系,我们可以把估计问题分为滤波、预

测和平滑,以上式所描述的随机线性离散系统为例,设,?k j

X 表示根据j 时刻和j 以前时刻的观察值,对k 时刻状态k X 做出的某种估计,则按照k 和j 的不同对应关系, 叙述如下:

(1) 当k=j 时,对,?k j

X 的估计称为滤波,即依据过去直至现在的观察测量来估计现在的状态。相应地,称,?k j

X 为k X 的最有滤波估计值,简记为?k X 。这类估计主要用于随机系统的实时控制。

(2) 当k>j 时对,?k j

X 的估计称为预测或外推,即依据过去直至现在的观察测量来预测未来的状态,并把,?k j

X 称为k X 的最优预测估计值。这类估计广泛应用于对系统未来状态的预测和实时控制。

(3) 当k

X 的估计称为平滑或内插,即依据过去直至现在的观察测量去估计过去的历史状态,并称,?k j

X 为k X 的最优平滑估计值。这类估计广泛应用于通过分析实验或试验数据,对系统进行评估。

在预测、滤波和平滑三类状态估计问题中预测是滤波的基础,滤波是平滑的基础。

最早的估计方法是高斯提出的最小二乘法,最小二乘法没有考虑到被估参数和观测数据的统计特性,因此这种方法不是最优估计方法。

Wiener 滤波器采用频域设计法,运算复杂,解析求解困难,整批数据处理要求存储空间大,造成其适用范围及其有限,仅适用于一维平稳随机过程信号滤波。

Kalman 滤波采用了和Wiener 滤波相同的估计准则,二者的基本原理一致,但是kalman 滤波是一种时域滤波方法,采用状态空间方法描述系统,算法采用递推形式,数据存储量小,不仅可以处理平稳随机过程,也可以处理多维和非平稳随机过程。

关于系统过程噪声和观测噪声的统计特性如下:

[][]0,0,0T k k j k kj

T

k k j k kj T

k j E W E W W Q E V E V V R E W V δδ???==???

???==??????=????

如果被估计状态k X 和对k X 的观测量k Z 满足上式约束,系统过程噪声k W 和观测噪声

k V 满足上式的假设,系统过程噪声方差阵k Q 非负定,系统观测噪声方差阵k R 正定,k 时刻

的观测为k Z ,则k X 的估计?k

X 可按下述方程求解: 状态一步预测:

,1,11

?k k k k k X X ---=Φ 状态估计

1,1???k k k k k k k X X K Z H X --??=+-??

滤波增益矩阵

1

,1,1T T

k k k k k k k k k K P H H P H R ---??=+??

一步预测误差方差阵

,1,11,1,11,1T T

k k k k k k k k k k k k P P Q -------=ΦΦ+ΓΓ

估计误差方差阵

[][],1T

T k k k k k k k k k k P I K H P I K H K R K -=--+

其中

1T k k k k K P H R -=

其中

[],1k k k k k P I K H P -=-

111,1T k k k k k k P P H R H ----=+

Kalman 滤波算法的特点:

(1) 由于Kalman 滤波算法将被估计的信号看作在白噪声作用下一个随机线性系

统的输出,并且其输入输出关系是由状态方程和输出方程在时间域内给出的,因此这种滤波方法不仅适用于平稳序列的滤波,而且特别适用于非平稳马尔科夫序列或高斯-马尔科夫序列的滤波,因此其应用范围是十分广泛的。

(2) 由于Kalman 滤波的基本方程时间域内的递推形式,其计算过程是一个不断

地“预测-修正”过程,在求解是不要求存储大量的数据,并且一旦观测到了新的数据,随时可以算的新的滤波值,因此这种滤波方法非常便于实时处理,计算机实现。

(3) 由于滤波器的增益矩阵于观测无关,因此它可离线算出,从而可以减少实时

在线计算量;在求滤波器增益矩阵k K 时要求一个矩阵的逆,既要计算

1

,1T

k k k k k H P H R --??+??,它的阶数之取决于观测方程的维数m 而m 通常是最

小的这样,上面的求逆运算是比较方便的;另外在求解滤波器增益的过程中随时可以算得滤波器的精度指标k P ,

其对角线上的元就是滤波误差向量各分

量的方差。

(4)

增益矩阵k K 与初始方差0P ,系统噪声方差阵1k Q -以及观测噪声方差阵k R 之间具有如下关系:由基本滤波方程可见,当k R 增大时,k K 就变小,噪声变大滤波增益就应取小。如果0P 变小,1k Q -变小,因为0P 小表示初始估计较好,1k Q -变小表示系统噪声变小,于是增益矩阵应变小以便较小的修正。

扩展kalman 滤波在车辆GPS/dr 组合定位系统中的应用

GPS/DR 组合系统状态方程的建立

取组合定位系统的状态变量为[,,,,,]T e e e n n n X x v a x v a =,其中e x ,n x 分别为车辆东向和北向的位置分量;e v ,n v 分别为车辆东向和北向的速度分量;e a ,n a 分别为车辆东向和北向

的加速度分量。则得到组合定位系统连续的状态方程为:()()()X

t AX t U W t =++ 式中,

1

00000010001

00000000010000001100

00

e

n a

a A ττ????????-???

?=??????????-???

? 001001e n e a n a a U a ττ??

??????????=??????????????

,00()00e n a a W t ωω??????????=??????????

e

a ωn

a ω分别为2(0,)e

a σ2

(0,)n a σ的高斯白噪声;e

a τn

a τ分别为车辆东向和北向机动加速度变化率的相关时间常数;e a n a 分别为车辆东向和北向机动加速度分量的“当前”均值。 设采样周期为T ,将系统连续的状态方程离散化,得到系统离散的状态方程为

,1,1k k k k k k k X X U W --=Φ++ 式4.79

式中,()

()()()()

()[]T k e k e k e k n k n k n k X x v a x v a =

,1(,1)(,1)[,]k k e k k n k k diag ---Φ=ΦΦ

令1

e

e a

a τ=

,1

n

n a

a τ=

,则(,1)e k k -Φ,(,1)n k k -Φ为

21

(,1)

1(1)01(1)00e e e a T e e a T e k k e a T T T e e e ααα------??-++??Φ=-??????

2

1(,1)

1(1)01(1)00n n n a T n n a T n k k n

a T T T e e e ααα------??-++??Φ=-??????

[]12

345

6T

k U u u u u u u =

其中,2

11

10.5(1)e T

e e e e u T T e a αααα---??=-++-?

?

211

10.5(1)e T e e e e u T T e a αααα---??=-++-?? 1

2(1)e T e e u T e a αα--??=--??

3(1)e T e u e a α-=-

211

40.5(1)n T n n

n n u T T e a αααα---??=-++-?? 1

5(1)n T n n u T e a αα--??=--??

6(1)n T n u e a α-=-

式4.79就是所建立的GPS/DR 组合定位系统的状态方程。

GPS/DR 组合系统观测方程的建立

将GPS 输出的东向位置信息obs e 北向位置信息obs n ,角速率陀螺的输出ω以及里程计(或车速计)在一个采样周期内输出的距离s 作为观测量,;里程计的刻度系数取为1.观测量和状态变量之间的关系如下

1obs e e x v =+ 2obs n n x v =+

122tan ()e n e e n n e n

v v a v a t v v v ωωωεε-??

-?=

+=+???+??

s s ε=

于是系统连续的观测方程为:

1

2

22

e

obs

n

obs

n e e n

e n

s

x

v

e

x

v

n

v a v a

Z

v v

s

ω

ε

ω

ε

??

??

????

??

????

??

????

-

==+

??

????

+??

???

????

?

?

1

v

2

v分别为GPS接收机输出的东向位置和北向位置的观测噪声,可近似为2

1

(0,)

σ2

1

(0,)

σ的

高斯白噪声;

ω

ε为陀螺的漂移,近似为2

(0,)

ω

σ的高斯白噪声;

s

ε为里程计的观测噪声,近似为2

(0,)

s

σ的高斯白噪声。

将观测方程离散化,得到系统离散的观测方程为

[]

k k k

Z h X V

=+(4.86)

式中,

()()

T

k obs k obs k k k

Z e n s

ω

??

=??

[

]

()

()

()()()()

22

()()

e k

n k

n k e k e k n k

k

e k n k

x

x

v a v a

h X

v v

??

??

??

??

-

=

??

+

??

??

??

??

1()

2()

()

()

k

k

k

k

s k

v

v

V

ω

ε

ε

??

??

??

=

??

??

??

??

从式(4.86)知,观测方程是非线性的。采用扩展Kalman滤波进行线性化,将[]k

h X在预

测值

,1

?

k k

X

-

处按泰勒级数展开并忽略二次以上的高次项,得

,1,1

??

k k k k k k k k

Z h X H X X V

--

????

=+-+

????(4.87)

化简得

,1,1

??

k k k k k k k k k

Z H X V h X H X

--

??

=++-

??(4.88)

其中

[]

,1

?

1234

56

100000

000100

00

0000

k k k

k

k X X

k

h X

H

h h h h

X

h h

-

=

??

??

???

==

??

?

??

??

2

(,1)(,1)(,1)(,1)(,1)(,1)(,1)

12

22

(,1)(,1)

???????

2

??

n k k e k k e k k n k k e k k n k k n k k

n k k e k k

a v v v a a v

h

v v

-------

--

--

=

??

+

??

(,1)222

(,1)(,1)???n k k n k k e k k v

h v

v ---=+ 2(,1)(,1)(,1)(,1)(,1)(,1)(,1)

32

2

2

(,1)

(,1)

???????2??e k k e k k e k k n k k n k k e k k n k k n k k e k k a v v v a a v h v

v

---------+-=

??+??

(,1)422

(,1)(,1)???e k k n k k e k k v

h v

v ----=

+

5?Tv h =

6?Tv h =

式(4.88)就是所建立的GPS/DR 系统线性离散的观测方程。

根据扩展Kalman 滤波递推方程和所建立的GPS/DR 组合定位系统的状态方程式4.79和4.88式,可得系统的递推滤波方程如下

,1,1???[]k k k k k k k X X K Z h X --??=+-??

,1,111??k k k k k k X X U ----=Φ+ 式4.90

1,1,1[]T T k k k k k k k k k K P H H P H R ---=+ ,1,11,11T k k k k k k k k P P Q -----=ΦΦ+

,1[]k k k k k P I K H P -=-

递推方程中的,1k k -Φ、k U 的表达式可从式(4.81)获得,k H 可从式4.88获得,k R 和系统的观测噪声的协方差有关,k Q 如下

22()()[][2,2]e n T k k k a e e k a n

n k Q E W W diag a Q a Q σσ== 11

1213()

2122

2331

32

33e e e e k e e e e e e q q q Q q q q q q q ????=??????,11

1213()21

22

2331

32

33n n n n k n n n n n n q q q Q q q q q q q ????=?

?????

其中

25331

22110.5(122324)e e T T e e e e e e q e T T T Te ααααααα----=-++--

242212210.5(1222)e e e T T T e e e e e e q q e e Te T T ααααααα----==+-+-+ 2313310.5(12)e e T T e e e e q q e Te αααα---==--

2223320.5(12)e e T T e e e q q e e ααα---==+- 23220.5(342)e e T T e e e q e e T αααα---=--++ 21330.5(1)e T e e q e αα--=-

式中()e k Q ()n k Q 都是对称矩阵,()n k Q 中的元素表达式和()e k Q 中的元素表达式相似,将()e k Q 中的各元素表达式中的e α用n α来代替,即可相应地得到()n k Q 中的元素表达式。 若把加速度的一步预测看作“当前”加速度的均值,即

()(,1)?e k e k k a a

-= ()(,1)

?n k n k k a a -= 则式4.90可化简为

,11(,1)1??k k k k k X X ---=Φ

1(,1)11[(),()]k k e n diag T T -Φ=ΦΦ 21112()()01

001e n T T T T T ??

???

?Φ=Φ=?????????

?

值得注意的是,在实际的使用中为了建立系统精确的数学模型,必须事先对系统GPS 接收

机的测量误差、陀螺漂移以及里程计的测量误差特性有深入的认识,这是一个相当复杂的过程且很重要的过程。否则,如果建立的系统模型和实际系统相差很大,则可能导致kalman 滤波效果很差,组合后的系统性能反而变坏。

自适应滤波

GPS/INS 组合导航系统自适应滤波

全球定位系统GPS 和惯性导航系统INS 都是目前世界上应用最为广泛的导航方法之一。利用二者较强的非相似性和互补性将二者组合起来,可以取长补短,充分发挥各自的优势,同时克服了GPS 易受地形地物遮挡而导致定位中断和INS 定位误差随时间而积累的缺陷。在GPS/INS 组合导航系统中,由于系统本身元器件的不稳定性以及外部应用环境不确定因素的影响,给系统噪声和观测噪声统计特性的准确描述带来困难,如果采用常规Kalman 滤波器,在实际应用中不能保证收敛性和稳定性。

在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!

卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。如果对这编论文有兴趣,可以到这里的地址下载:https://www.360docs.net/doc/1c2710198.html,/~welch/kalman/media/pdf/Kalman1960.pdf

简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。

2.卡尔曼滤波器的介绍

(Introduction to the Kalman Filter)

为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。

在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。

假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。假设你对你的经验不是100%的相信,可能会有上下偏差几度。我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution)。另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。我们也把这些偏差看成是高斯白噪声。

好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。

假如我们要估算k时刻的是实际温度值。首先你要根据k-1时刻的温度值,来预测k时刻的温度。因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。

由于我们用于估算k时刻的实际温度有两个温度值,分别是23度和25度。究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的covariance来

判断。因为Kg^2=5^2/(5^2+4^2),所以Kg=0.78,我们可以估算出k时刻的实际温度值是:23+0.78*(25-23)=24.56度。可以看出,因为温度计的covariance比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。

现在我们已经得到k时刻的最优温度值了,下一步就是要进入k+1时刻,进行新的最优估算。到现在为止,好像还没看到什么自回归的东西出现。对了,在进入k+1时刻之前,我们还要算出k时刻那个最优值(24.56度)的偏差。算法如下:((1-Kg)*5^2)^0.5=2.35。这里的5就是上面的k时刻你预测的那个23度温度值的偏差,得出的2.35就是进入k+1时刻以后k时刻估算出的最优温度值的偏差(对应于上面的3)。

就是这样,卡尔曼滤波器就不断的把covariance递归,从而估算出最优的温度值。他运行的很快,而且它只保留了上一时刻的covariance。上面的Kg,就是卡尔曼增益(Kalman Gain)。他可以随不同的时刻而改变他自己的值,是不是很神奇!

下面就要言归正传,讨论真正工程系统上的卡尔曼。

3.卡尔曼滤波器算法

(The Kalman Filter Algorithm)

在这一部分,我们就来描述源于Dr Kalman 的卡尔曼滤波器。下面的描述,会涉及一些基本的概念知识,包括概率(Probability),随即变量(Random Variable),高斯或正态分配(Gaussian Distribution)还有State-space Model等等。但对于卡尔曼滤波器的详细证明,这里不能一一描述。

首先,我们先要引入一个离散控制过程的系统。该系统可用一个线性随机微分方程(Linear Stochastic Difference equation)来描述:

X(k)=A X(k-1)+B U(k)+W(k)

再加上系统的测量值:

Z(k)=H X(k)+V(k)

上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。A和B是系统参数,对于多模型系统,他们为矩阵。Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(k)分别表示过程和测量的噪声。他们被假设成高斯白噪声(White Gaussian Noise),他们的covariance 分别是Q,R(这里我们假设他们不随系统状态变化而变化)。

对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。下面我们来用他们结合他们的covariances 来估算系统的最优化输出(类似上一节那个温度的例子)。

首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:

X(k|k-1)=A X(k-1|k-1)+B U(k) (1)

式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。

到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的covariance还没更新。我们用P表示covariance:

P(k|k-1)=A P(k-1|k-1) A’+Q (2)

式(2)中,P(k|k-1)是X(k|k-1)对应的covariance,P(k-1|k-1)是X(k-1|k-1)对应的covariance,A’表示A的转置矩阵,Q是系统过程的covariance。式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。

现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):

X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) (3)

其中Kg为卡尔曼增益(Kalman Gain):

Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) (4)

到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。但是为了要另卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的covariance:

P(k|k)=(I-Kg(k) H)P(k|k-1) (5)

其中I 为1的矩阵,对于单模型单测量,I=1。当系统进入k+1状态时,P(k|k)就是式子(2)的P(k-1|k-1)。这样,算法就可以自回归的运算下去。

卡尔曼滤波器的原理基本描述了,式子1,2,3,4和5就是他的5 个基本公式。根据这5个公式,可以很容易的实现计算机的程序。

下面,我会用程序举一个实际运行的例子。。。

4.简单例子

(A Simple Example)

这里我们结合第二第三节,举一个非常简单的例子来说明卡尔曼滤波器的工作过程。所举的例子是进一步描述第二节的例子,而且还会配以程序模拟结果。

根据第二节的描述,把房间看成一个系统,然后对这个系统建模。当然,我们见的模型不需要非常地精确。我们所知道的这个房间的温度是跟前一时刻的温度相同的,所以A=1。没有控制量,所以U(k)=0。因此得出:

X(k|k-1)=X(k-1|k-1) (6)

式子(2)可以改成:

P(k|k-1)=P(k-1|k-1) +Q (7)

因为测量的值是温度计的,跟温度直接对应,所以H=1。式子3,4,5可以改成以下:

X(k|k)= X(k|k-1)+Kg(k) (Z(k)-X(k|k-1)) (8)

Kg(k)= P(k|k-1) / (P(k|k-1) + R) (9)

P(k|k)=(1-Kg(k))P(k|k-1) (10)

现在我们模拟一组测量值作为输入。假设房间的真实温度为25度,我模拟了200个测量值,

这些测量值的平均值为25度,但是加入了标准偏差为几度的高斯白噪声(在图中为蓝线)。

为了令卡尔曼滤波器开始工作,我们需要告诉卡尔曼两个零时刻的初始值,是X(0|0)和P(0|0)。他们的值不用太在意,随便给一个就可以了,因为随着卡尔曼的工作,X会逐渐的收敛。但是对于P,一般不要取0,因为这样可能会令卡尔曼完全相信你给定的X(0|0)是系统最优的,从而使算法不能收敛。我选了X(0|0)=1度,P(0|0)=10。

该系统的真实温度为25度,图中用黑线表示。图中红线是卡尔曼滤波器输出的最优化结果(该结果在算法中设置了Q=1e-6,R=1e-1)。

××××××××××××××××××

附matlab下面的kalman滤波程序:

clear

N=200;

w(1)=0;

w=randn(1,N)

x(1)=0;

a=1;

for k=2:N;

x(k)=a*x(k-1)+w(k-1);

end

V=randn(1,N);

q1=std(V);

Rvv=q1.^2;

q2=std(x);

Rxx=q2.^2;

q3=std(w);

Rww=q3.^2;

c=0.2;

Y=c*x+V;

p(1)=0;

s(1)=0;

for t=2:N;

p1(t)=a.^2*p(t-1)+Rww;

b(t)=c*p1(t)/(c.^2*p1(t)+Rvv);

s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1));

p(t)=p1(t)-c*b(t)*p1(t);

end

t=1:N;

plot(t,s,'r',t,Y,'g',t,x,'b');

卡尔曼滤波计算举例

卡尔曼滤波计算举例 ?计算举例 ?卡尔曼滤波器特性

假设有一个标量系统,信号与观测模型为 [1][][]x k ax k n k +=+[][][] z k x k w k =+其中a 为常数,n [k ]和w [k ]是不相关的零均值白噪声,方差分别为和。 系统的起始变量x [0]为随机变量,其均值为零,方差为。2n σ2 σ[0]x P (1)求估计x [k ]的卡尔曼滤波算法;(2)当时的卡尔曼滤波增益和滤波误差方差。 22 0.9,1,10,[0]10 n x a P =σ=σ==1. 计算举例

根据卡尔曼算法,预测方程为: ??[/1][1/1]x k k ax k k -=--预测误差方差为: 2 2 [/1][1/1]x x n P k k a P k k -=--+σ 卡尔曼增益为: () 1 22 22 22 [][/1][/1][1/1][1/1]x x x n x n K k P k k P k k a P k k a P k k -=--+σ --+σ=--+σ+σ ???[/][/1][]([][/1])??[1/1][]([][1/1])?(1[])[1/1][][]x k k x k k K k z k x k k ax k k K k z k ax k k a K k x k k K k z k =-+--=--+---=---+滤波方程:

()() 2 2222222 222 22 [/](1[])[/1] [1/1]1[1/1][1/1][1/1][1/1]x x x n x n x n x n x n P k k K k P k k a P k k a P k k a P k k a P k k a P k k =--??--+σ=---+σ ?--+σ+σ??σ--+σ = --+σ+σ 滤波误差方差 起始:?[0/0]0x =[0/0][0] x x P P =

卡尔曼滤波器在PID控制器中的应用

卡尔曼滤波器在PID控制器中的应用 学生姓名:潘培哲 学号: 12013002347 专业:控制工程 指导教师:李鹏 云南大学信息学院

一、引言 传统的倒立摆系统采用单纯的PID 控制模式,这种控制模式虽然可以在一定程度上满足系统的要求,但是具有精度差,响应时间长,稳定性不高等不足之处.造成这种情况的一个原因是控制信号中含有噪声干扰,噪声干扰会在很大程度上影响系统的性能.另外,除了以上提到的外界干扰外,系统内部也存在干扰,主要包括建模时因抽象和简化而引入的结构干扰以及实际系统中因参数变化而引入的参数干扰.因此,为了提高系统的稳定性,使之具有较短的响应时间和控制精度,本文设计了一种基于卡尔曼滤波器的PID 控制系统,通过卡尔曼滤波器对系统的一些噪声进行滤波处理之后,对系统的随机误差进行了比普通PID 更进一步的补偿,获得了更为精确的系统模型,从而使系统的稳定性和精度以及响应时间都得到了有效的提高.本文以直线小车倒立摆为例,研究了卡尔曼滤波器在倒立摆控制系统中的应用. 二、卡尔曼滤波器原理 在现代随机最优控制和随机信号处理技术中,信号和噪声往往是多维非平稳随机过程,因其时变性,功率谱不固定.在1960年卡尔曼提出了卡尔曼滤波理论,该理论采用时域上的递推算法在计算机上进行数据滤波处理. 对于离散域系统:

离散卡尔曼滤波器递推算法为: 图1 卡尔曼滤波器结构图 三、基于卡尔曼滤波器的PID 控制器工作过程 下面便以直线小车倒立摆为被控对象,来进一步研究卡尔曼滤波技术在倒立摆系统中的应用. 3.1 倒立摆系统的数学模型 对直线小车的倒立摆系统的数学建模. 对于倒立摆系统,由于其本身是自不稳定的非线性系统,实验建模存在一定的困难.但经过小心的假设忽略掉一些次要的因素后,倒立摆系统就是一个典型的运动的刚体系统,可以在惯性坐标系内应用经典力学理论建立系统的动力学方程. 对一级倒立摆线性化后得到系统的近似模型如下

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

卡尔曼滤波简介及其算法实现代码 卡尔曼滤波算法实现代码(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.360docs.net/doc/1c2710198.html,/~welch/media/pdf/Kalman1960.pdf。 简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 2.卡尔曼滤波器的介绍 (Introduction to the Kalman Filter) 为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。 在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。 假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就

卡尔曼滤波的应用步骤

具体步骤分述如下 1、确定系统的模型 根据对系统的充分了解,建立一个真实系统的完整模型,并用状态空间描述之。这里包括选择状态变量,观察量,建立系统的动力方程和观察方程,以及建立误差的统计模型。同时建立地面计算机模拟试验用的“模拟器”。这些“模拟器”实质上是一套计算机程序。它模拟了噪声发生,传感器信息产生 及传递过程以及研究对象的运动等等。模拟器是滤波器模拟分析的工具和鉴别标准。2、建立完整滤波器及模拟试验 根据系统的完整模型建立一个最佳的完整滤波器。它包括了所有的误差源。其维数一般较高。完整滤波器用来反映一个精确工作的最佳滤波器性能,并作为鉴定简化滤波器的标准。同时建立一个地面计算机模拟分析程序工,对完整滤波器进行模拟鉴定。这种程序包括了详细的模拟器,并模拟了完整滤波器方程。模拟目的是鉴定一个精确工作滤波器所能达到的理论精度,当然它应该超过系统所希望的精度,否则就没有必要继续进行设计了。 3、建立简化滤波器及模拟试验 这项工作主要是简化系统。系统的完整模型一般比较复杂,完整滤波器的维数较高。例如,飞机导航方程可达、个变量。因此运算要求较高。实际应用中必须简化模型。先根据工程经验简化模型,设计出相应的简化滤波器,然后作理论上的模型误差分析,但更重要的是通过计算机模拟分析来完成设计和鉴定。这里同样要借助于地面计算机模拟分析程序。程序既包括了多种模拟器,反映了真实系统,又能方便地模拟简化滤波器方程。通过程序鉴定分析简化滤波器,并与完整滤波器结果作比机一边模拟分析,一边删去对总系统影响不大的状态量,最后完成了一个维数较少且能满足性能要求的简化滤波器,这阶段的工作反映了一个不完整滤波器在精确运算时的理论精度,它至少要达到系统所希望的精度。 4、建立确定性滤波器及模拟试验 这项工作是建立一个能在实际工作环境下实时完成系统任务的确定性滤波器。建立过程中要用各种滤波技术,使得滤波器对传感器误差恶化不灵敏,并能符合计算机实时要求、容量要求以及精度限制,而又能满足系统性能的要求。建立确定性滤波器,先是根据工程经验作理论上的设计和分析,而更重要的是利用了地面计算机模拟分析程序。

几种卡尔曼滤波算法理论

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

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

卡尔曼滤波的基本原理及应用卡尔曼滤波在信号处理与系统控制领域应用广泛,目前,正越来越广泛地应用于计算机应用的各个领域。为了更好地理解卡尔曼滤波的原理与进行滤波算法的设计工作,主要从两方面对卡尔曼滤波进行阐述:基本卡尔曼滤波系统模型、滤波模型的建立以及非线性卡尔曼滤波的线性化。最后,对卡尔曼滤波的应用做了简单介绍。 卡尔曼滤波属于一种软件滤波方法,其基本思想是:以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值,算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。 最初的卡尔曼滤波算法被称为基本卡尔曼滤波算法,适用于解决随机线性离散系统的状态或参数估计问题。卡尔曼滤波器包括两个主要过程:预估与校正。预估过程主要是利用时间更新方程建立对当前状态的先验估计,及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计值;校正过程负责反馈,利用测量更新方程在预估过程的先验估计值及当前测量变量的基础上建立起对当前状态的改进的后验估计。这样的一个过程,我们称之为预估-校正过程,对应的这种估计算法称为预估-校正算法。以下给出离散卡尔曼滤波的时间更新方程和状态更新方程。 时间更新方程: 状态更新方程: 在上面式中,各量说明如下: 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∞波)。 非线性样条自适应滤波:这是一类新的非线性自适应滤波器,它由一个线性组合器后跟挠性无记忆功能的。涉及的自适应处理的非线性函数是基于可在学习

matlab对卡尔曼滤波的仿真实现

MATLAB 对卡尔曼滤波器的仿真实现 刘丹,朱毅,刘冰 武汉理工大学信息工程学院,武汉(430070) E-mail :liudan_ina@https://www.360docs.net/doc/1c2710198.html, 摘 要:本文以卡尔曼滤波器原理为理论基础,用MATLAB 进行卡尔曼滤波器仿真、对比卡尔曼滤波器的预测效果,对影响滤波其效果的各方面原因进行讨论和比较,按照理论模型进行仿真编程,清晰地表述了编程过程。 关键词:数字信号处理;卡尔曼滤波器;MATLAB ;仿真过程 中图分类号: TN912.3 1. 引言 随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。数字信号处理已在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理中,数字滤波占有极其重要的地位,目前对数字滤波器的设计有多种方法,其中著名的MATLAB 软件包在多个研究领域都有着广泛的应用,它的频谱分析[1]和滤波器的分析设计功能很强,从而使数字信号处理变得十分简单、直观。本文分析了数字滤波器的设计方法,举出了基于MATLAB 软件的信号处理工具在数字滤波器设计中的应用。 2. 卡尔曼滤波基本原理 卡尔曼滤波过程实际上是获取维纳解的递推运算过程[2]。从维纳解导出的卡尔曼滤波器实际上是卡尔曼滤波过程结束后达到稳态的情况,这时Kalman Filtering 的结果与Wiener Solution 是相同的[3]。具体推导如下: )()1|1(?)|(?n Gy n n x f n n x +??= )|(?)()(n n x n x n e ?= 已知由此求c a cG a f F G n e E n ,)1(( ..min )]([)(2?=??→?==ε 由 f G f G ,0??????????=??εε ⑴ )]1|1(?)()[()1|1(?)|(????+??=n n x ac n y n G n n x a n n x 可以是时变的,非平稳的随机信号 ⑵ Q n a n P +?=)1()(2 ε均为正数。 ⑶ ) () ()(2n P C R n CP n G += ⑷ )()](1[)()(n P n CG n G C P n ??== ε )(n G 是个随时间变化的量,每次输入输出,)(n G 就调整一次,并逐渐逼近Kalman Filter 的增益G ,而)1()(?

卡尔曼(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滤波在视频图像目标跟踪中的应用;

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

卡尔曼,美国数学家和电气工程师。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)发表.

卡尔曼滤波 从推导到应用1

卡尔曼滤波-- 从推导到应用(一) 2013-12-30 01:26 1328人阅读评论(9) 收藏举报滤波算法 该文是自我总结性文章,有纰漏,请指出,谢谢。--白巧克力 前言 卡尔曼滤波器是在估计线性系统状态的过程中,以最小均方差为目的而推导出的几个递推数学等式,也可以从贝叶斯推断的角度来推导。 本文将分为两部分: 第一部分,结合例子,从最小均方差的角度,直观地介绍卡尔曼滤波的原理, 并给出较为详细的数学推导。 第二部分,通过两个例子给出卡尔曼滤波的实际应用。其中将详细介绍一个 匀加速模型,并直观的对比系统状态模型的建立对滤波的影响。 第一部分 先看一个对理解卡尔曼滤波能起到作用的的笑话: 一片绿油油的草地上有一条曲折的小径,通向一棵大树.一个要求被提出:从起点沿着小径走到树下. “很简单.” A说,于是他丝毫不差地沿着小径走到了树下. 现在,难度被增加了:蒙上眼。 “也不难,我当过特种兵。” B说,于是他歪歪扭扭地走到了树旁。“唉,好久不练,生疏了。” (只凭自己的预测能力) “看我的,我有DIY 的GPS!” C说,于是他像个醉汉似地歪歪扭扭的走到了树旁。“唉,这个GPS 没做好,漂移太大。”(只依靠外界有很大噪声的测量)

“我来试试。” 旁边一也当过特种兵的拿过GPS, 蒙上眼,居然沿着小径很顺滑的走到了树下。(自己能预测+测量结果的反馈) “这么厉害!你是什么人?” “卡尔曼! ” “卡尔曼?!你就是卡尔曼?”众人大吃一惊。 “我是说这个GPS 卡而慢。” 此段引用自 highgear 的《授之以渔:卡尔曼滤波器...大泄蜜...》 (点击可跳转到该网页) 这个小笑话很有意思的指出了卡尔曼滤波的核心,预测+测量反馈,记住这种思想。 -----------------------------------------------------------分割线 ----------------------------------------------------------------------- 在介绍卡尔曼滤波前,简单说明几个在学卡尔曼过程中要用到的概念。即什么是协方差,它有什么含义,以及什么叫最小均方差估计,什么是多元高斯分布。如果对这些有了了解,可以跳过,直接到下面的分割线。 均方差:它是"误差"的平方的期望值(误差就是每个估计值与真实值的差),也就是多个样本的时候,均方差等于每个样本的误差平方再乘以该样本出现的概率的和。 (均方差即为标准差,为方差的开根号?) 方差:方差是描述随机变量的离散程度,是变量离期望值的距离。 注意两者概念上稍有差别,当你的样本期望值就是真实值时,两者又完全相同。最小均方差估计就是指估计参数时要使得估计出来的模型和真实值之间的误差平方期望值最小。 两个实变量之间的协方差:

卡尔曼滤波的原理及应用自己总结

卡尔曼滤波的原理以及应用 滤波,实质上就是信号处理与变换的过程。目的是去除或减弱不想要成分,增强所需成分。卡尔曼滤波的这种去除与增强过程是基于状态量的估计值和实际值之间的均方误差最小准则来实现的,基于这种准则,使得状态量的估计值越来越接近实际想要的值。而状态量和信号量之间有转换的关系,所以估计出状态量,等价于估计出信号量。所以不同于维纳滤波等滤波方式,卡尔曼滤波是把状态空间理论引入到对物理系统的数学建模过程中来,用递归方法解决离散数据线性滤波的问题,它不需要知道全部过去的数据,而是用前一个估计值和最近一个观察数据来估计信号的当前值,从而它具有运用计算机计算方便,而且可用于平稳和不平稳的随机过程(信号),非时变和时变的系统的优越性。 卡尔曼滤波属于一种软件滤波方法,概括来说其基本思想是:以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值,算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。其所得到的解是以估计值的形式给出的。 卡尔曼滤波过程简单来说主要包括两个步骤:状态变量的预估以及状态变量的校正。预估过程是不考虑过程噪声和量测噪声,只是基于系统本身性质并依靠前一时刻的估计值以及系统控制输入的一种估计;校正过程是用量测值与预估量测值之间的误差乘以一个与过程

噪声和量测噪声相关的增益因子来对预估值进行校正的,其中增益因子的确定与状态量的均方误差有关,用到了使均方误差最小的准则。而这一过程中体现出来的递归思想即是:对于当前时刻的状态量估计值以及均方误差预估值实时进行更新,以便用于下一时刻的估计,使得系统在停止运行之前能够源源不断地进行下去。 下面对于其数学建模过程进行详细说明。 1.状态量的预估 (1)由前一时刻的估计值和送给系统的可控制输入来预估计当前时刻状态量。 X(k|k-1)=A X(k-1|k-1)+B U(k) 其中,X(k-1|k-1)表示前一时刻的估计值,U(k)表示系统的控制输入,X(k|k-1)表示由前一时刻估计出来的状态量的预估计值,A表示由k-1时刻过渡到k时刻的状态转移矩阵,B表示控制输入量与状态量之间的一种转换因子,这两个都是由系统性质来决定的。 (2)由前一时刻的均方误差阵来预估计当前时刻的均方误差阵。 P(k|k-1)=A P(k-1|k-1)A’+Q 其中,P(k-1|k-1)是前一时刻的均方误差估计值,A’代表矩阵A 的转置,Q代表过程噪声的均方误差矩阵。该表达式具体推导过程如下: P(k|k-1)=E{[Xs(k|k)-X(k|k-1)][Xs(k|k)-X(k|k-1)]’}------ 其中Xs(k|k)=A Xs(k-1|k-1)+B U(k)+W(k-1)表示当前时刻的实际值,Xs(k-1|k-1)表示前一时刻的实际值,可以看出与当前时刻的预估计值

卡尔曼滤波第四次作业

卡尔曼滤波与组合导航作业四 一、作业内容 本实验的主要内容是完成基于卡尔曼滤波的INS/GPS 组合导航实验。INS 的输出频率为100Hz ,GPS 的输出频率为20Hz ,通过GPS 给出的3个方向的位置和速度作为量测信息与惯导解算结果进行组合,完成组合导航,比较分析组合导航的结果。 二、系统分析与系统建模 捷联惯导的解算过程这里不再赘述,直接从组合导航所需的模型开始建模。 1. 状态方程 系统的状态方程由捷联惯导的误差方程和惯性器件的误差方程组成: X FX GW =+ 式中,状态变量E N U E N U x y z x X V V V L H φφφδδδδδλδεεε=???y ?T z ??? ,其中E φ、N φ和U φ为数学平台失准角,E V δ、N V δ和U V δ分别为东向、 北向和天向速度误差,L δ、δλ和H δ分别为纬度误差、经度误差和高度误差;系统噪声过程噪声[]x y z x y z T w w w w w w w εεε???=,包括陀螺和加速度计的随机误差(不包括随机常值误差);系统噪声方差阵Q 根据SINS/GPS 组合导航系统的惯性器件噪声水平选取。状态转移矩阵F 和系统噪声矩阵G 的具体形式为: N S 99 96 69 661515 00F F F ???????=? ???,n b 33n 33b 93931560000C G C ??????? ??=?????? F 矩阵中,n b 33S n 33b 333396 0000C F C ?????????=?? ????,N F 为对应惯导9个误差参数(3个姿态误差,3个速度误差,3个位置误差)的系统动态矩阵,它是(9*9)阶方阵。其中非零元素可由惯导误差模型推导,具体为:

Kalman滤波原理及程序(手册)解析

Kalman 滤波原理及仿真手册 KF/EKF/UKF 原理+应用实例+MATLAB 程序 本手册的研究内容主要有Kalman 滤波,扩展Kalman 滤波,无迹Kalman 滤波等,包括理论介绍和MATLAB 源程序两部分。本手册所介绍的线性滤波器,主要是Kalman 滤波和α-β滤波,交互多模型Kalman 滤波,这些算法的应用领域主要有温度测量、自由落体,GPS 导航、石油地震勘探、视频图像中的目标检测和跟踪。 EKF 和UKF 主要在非线性领域有着重要的应用,目标跟踪是最主要的非线性领域应用之一,除了讲解目标跟踪外,还介绍了通用非线性系统的EKF 和UKF 滤波处理问题,相信读者可以通过学习本文通用的非线性系统,能快速掌握EKF 和UKF 滤波算法。 本文所涉及到的每一个应用实例,都包含原理介绍和程序代码(含详细的中文注释)。 一、四维目标跟踪Kalman 线性滤波例子 在不考虑机动目标自身的动力因素,将匀速直线运动的船舶系统推广到四 维,即状态[]T k y k y k x k x k X )() ()()()( =包含水平方向的位置和速度和纵向的位置和速度。则目标跟踪的系统方程可以用式(3.1)和(3.2)表示, )()()1(k u k X k X Γ+Φ=+ (2-4-9) )()()(k v k HX k Z += (2-4-10) 其中,? ? ???? ??? ???=Φ10 00 1000010 001 T T ,???? ???????? ??=ΓT T T T 05.00005.022,T H ?? ??????????=00100001 ,T y y x x X ? ????? ??????= ,??? ???=y x Z ,u ,v 为零均值的过程噪声和观测噪声。T 为采样周期。为了便于理解, 将状态方程和观测方程具体化:

线性离散卡尔曼滤波器

线性离散卡尔曼滤波公式 两种数学推导方法的比较 1. 引言 卡尔曼滤波属于一种软件滤波方法,其基本思想是:以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值,算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。从研究的历史来看,卡尔曼是首先研究的离散形式的卡尔曼滤波问题,所以最初的卡尔曼滤波算法被称为基本卡尔曼滤波算法,适用于解决随机线性离散系统的状态或参数估计问题。下面分别对比了离散线性卡尔曼滤波器的相关公式推导的两种方法。 2. 离散线性卡尔曼滤波器的直观数学推导 下面从直观角度来推导线性离散系统的卡尔曼滤波器,这是书中的推导方法。首先假设线性离散系统模型如下 ,11,11 k k k k k k k k k k k x w z H x v x ----=Φ+Γ=+ 其中,1k w -为过程噪声,k v 为观测噪声,k z 为第k 次的测量值,/?k k x 是k x 的最优线性估计,/1?k k x -是k x 的一步预报估计。过程噪声1k w -和观测噪声k v 的统计特性为: 1[]0,(,)[]0,(,)(,)0 k ww k kj k vv k kj wv E w R k j Q E v R k j R R k j δδ-===== 初始状态0x 的统计特性为: 0000?[],()E x x Var x P == 并假定0x 与k w 和k v 均无关,则有: 00(0,)(,)0(0,)(,)0 T xw k T xv k R k E x w R k E x v ==== 据以上假设及条件,可得如下直观形式 /1,11/1/1/1//1/1??????k k k k k k k k k k k k k k k k k k x x z H x x x K z --------=Φ==+

卡尔曼滤波应用

卡尔曼滤波的应用作者yybj 日期2009-9-22 13:51:00 卡尔曼滤波的一个典型实例是从一组有限的,对物体位置的,包含噪声的观察序列预测出物体的坐标位置及速度. 在很多工程应用(雷达, 计算机视觉)中都可以找到它的身影. 同时,卡尔曼滤波也是控制理论以及控制系统工程中的一个重要话题. 比如,在雷达中,人们感兴趣的是跟踪目标,但目标的位置,速度,加速度的测量值往往在任何时候都有噪声.卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(插值或平滑). 扩展卡尔曼滤波(EKF) EXTEND KALMAN FILTER 扩展卡尔曼滤波器 是由kalman filter考虑时间非线性的动态系统,常应用于目标跟踪系统。 附matlab下面的kalman滤波程序: clear N=200; w(1)=0; w=randn(1,N) x(1)=0; a=1;

for k=2:N; x(k)=a*x(k-1)+w(k-1); end V=randn(1,N); q1=std(V); Rvv=q1.^2; q2=std(x); Rxx=q2.^2; q3=std(w); Rww=q3.^2; c=; Y=c*x+V; p(1)=0; s(1)=0; for t=2:N; p1(t)=a.^2*p(t-1)+Rww; b(t)=c*p1(t)/(c.^2*p1(t)+Rvv);

s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1)); p(t)=p1(t)-c*b(t)*p1(t); end t=1:N; plot(t,s,'r',t,Y,'g',t,x,'b'); [x, V, VV, loglik] = kalman_filter(y, A, C, Q, R, init_x, init_V, varargin) % Kalman filter. % [x, V, VV, loglik] = kalman_filter(y, A, C, Q, R, init_x, init_V, ...) % % INPUTS: % y(:,t) - the observation at time t % A - the system matrix % C - the observation matrix % Q - the system covariance % R - the observation covariance % init_x - the initial state (column) vector

卡尔曼滤波器综述

卡尔曼滤波器综述 瞿伟军 G10074 1、卡尔曼滤波的起源 1960年,匈牙利数学家卡尔曼发表了一篇关于离散数据线性滤波递推算法的论文,这意味着卡尔曼滤波的诞生。斯坦利.施密特(Stanley Schmidt)首次实现了卡尔曼滤波器,卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器。关于这种滤波器的论文由Swerling (1958)、Kalman (1960)与 Kalman and Bucy (1961)发表。 2、卡尔曼滤波的发展 卡尔曼滤波是一种有着相当广泛应用的滤波方法,但它既需要假定系统是线性的,又需要认为系统中的各个噪声与状态变量均呈高斯分布,而这两条并不总是确切的假设限制了卡尔曼滤波器在现实生活中的应用。扩展卡尔曼滤波器(EKF)极大地拓宽了卡尔曼滤波的适用范围。EKF的基本思路是,假定卡尔曼滤滤对当前系统状态估计值非常接近于其真实值,于是将非线性函数在当前状态估计值处进行台劳展开并实现线性化。另一种非线性卡尔曼滤波叫线性化卡尔曼滤波。它与EKF的主要区别是前者将非线函数在滤波器对当前系统状态的最优估计值处线性化,而后者因为预先知道非线性系统的实际运行状态大致按照所要求、希望的轨迹变化,所以这些非线性化函数在实际状态处的值可以表达为在希望的轨迹处的台劳展开式,从而完成线性化。 不敏卡尔曼滤波器(UKF)是针对非线性系统的一种改进型卡尔曼滤波器。UKF处理非线性系统的基本思路在于不敏变换,而不敏变换从根本上讲是一种描述高斯随机变量在非线性化变换后的概率分布情况的方法。不敏卡尔曼滤波认为,与其将一个非线性化变换线性化、近似化,还不如将高斯随机变量经非线性变换后的概率分布情况用高斯分布来近似那样简单,因而不敏卡尔曼滤波算法没

卡尔曼滤波原理及应用(含MATLAB程序)

《卡尔曼滤波原理及应用-MATLAB仿真》原理+实例+程序+中文注释 基本信息 书名:卡尔曼滤波原理及应用:MATLAB仿真 原价:39.80元 作者:黄小平,王岩 出版社:电子工业出版社 出版日期:2015-06-01 ISBN:9787121263101 字数: 页码:188 版次:1 装帧:平装 开本:16开 商品重量:0.4kg

内容简介 本书主要介绍数字信号处理中的Kalman滤波算法及在相关领域应用的相关内容。全书共7章组成。第1章为绪论。第2章介绍MATLAB 算法仿真的编程基础,只有掌握一定的编程能力,才能快捷高效地仿真算法。第3章介绍线性Kalman滤波,它是经典的Kalman滤波算法,也是其他线性或非线性Kalman滤波算法的源头,如信息卡尔曼滤波、扩展卡尔曼滤波等,都是以经典的线性Kaman滤波为蓝本的。第4章讨论扩展卡尔曼滤波,并介绍其在目标跟踪和制导领域的应用和算法仿真。第5章介绍UKF滤波算法,同时也给出其应用领域内的算法仿真实例。第6章介绍了交互多模型卡尔曼滤波算法。第7章介绍Simulink环境下,如何通过模块库和S函数构建Kalman滤波器,并给出了系统是线性和非线性两种情况的滤波器设计方法。 本书可以作为电子信息类各专业高年级本科生和硕士、博士研究生数字信号处理课程或者Kalman滤波原理的教材,也可以作为从事雷达、语音、图像等传感器数字信号处理的教师和科研人员的参考书。

目录 第1章绪论t1 1.1 滤波的基础知识t1 1.2 Kalman滤波的背景t1 1.3 Kalman滤波的发展过程t2 1.4 Kalman滤波的应用领域t4 第2章MATLAB仿真基础t6 2.1 MATLAB简介t6 2.1.1 MATLAB发展历史t6 2.1.2 MATLAB 7.1的系统简介t7 2.1.3 M文件编辑器的使用t10 2.2 数据类型和数组t12 2.2.1 数据类型概述t12 2.2.2 数组的创建t13 2.2.3 数组的属性t15 2.2.4 数组的操作t16 2.2.5 结构体和元胞数组t19 2.3 程序设计t21 2.3.1 条件语句t21 2.3.2 循环语句t23 2.3.3 函数t25 2.3.4 画图t27

卡尔曼滤波算法及其在组合导航中的应用综述

卡尔曼滤波算法及其在组合导航中的应用综述 摘要:由于描述系统特性的数学模型和噪声的统计模型不准确,不能真实反映物理过程,使模型与获得的观测值不匹配从而会导致滤波器发散。文章在描述组合导航基本特性和卡尔曼滤波原理的基础上提出了滤波发散的问题并提出了抑制发散的方法,最后介绍了卡尔曼滤波在组合导航中的应用。 关键词:卡尔曼滤波;组合导航;发散 随着计算机技术的迅速发展,它有条件提供运算速度高、存贮量大的机载计算机,这为组合导航系统的发展创造了一个很好的技术条件,现代控制理论中最优估计理论的数据处理方法为组合导航系统提供了理论基础。Kalman滤波是R.E.Kalman于1960年提出的从众多与被提取信号有关的观测量中通过算法估计出所需信号的一种滤波算法。他把状态空间的概念引入到随机估计理论中,把信号过程视为白噪声作用下的一个线性系统的输出,用状态方程来描述这种输入-输出关系,估计过程中利用系统状态方程、观测方程、系统噪声和观测噪声的统计特性形成滤波算法。 1组合导航系统基本特性描述 要描述一个实际系统,首先要对其进行建模,即建立系统的状态方程和测量方程。对于组合导航系统,要进行滤波计算必须建立数学模型,此模型具有以下特点。 1.1非线性 组合导航系统本质上是非线性系统,有时为了减少计算量及提高系统实时性,在某些假设条件下组合导航系统的非线性因素可以忽略,其可以用线性化的数学模型来近似描述。但当假设条件不满足时,组合导航系统就必须采用能反映自身实际特性的非线性模型来描述。所以说,非线性是组合导航系统本质的特性。 1.2模型不确定性 组合导航系统处于实际运行环境当中时,受系统本身以及外部应用环境不确定性因素的影响,系统实际模型与建立的理论模型不能完全匹配,即组合导航系统具有模型不确定性。造成系统模型不确定性的主要原因如下: ①模型简化。采用较少的状态变量来描述系统,忽略掉实际系统某些不重要的状态特征。由此造成模型与实际不匹配。②系统噪声统计不准确。所建模型的噪声统计特性与实际系统噪声统计特性有较大差异。③对实际系统初始状态的统计特性建模不准确。④实际系统出现器件老化、损坏等使系统参数发生了变动,造成模型与实际系统不匹配。

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

卡尔曼滤波简介说明及其算法MATLAB实现代码 卡尔曼滤波算法实现代码(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.360docs.net/doc/1c2710198.html,/~welch/media/pdf/Kalman1960.pdf。 简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 2.卡尔曼滤波器的介绍 (Introduction to the Kalman Filter) 为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。 在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。 假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就

相关文档
最新文档