一个应用实例详解卡尔曼滤波及其算法实现概要

一个应用实例详解卡尔曼滤波及其算法实现概要
一个应用实例详解卡尔曼滤波及其算法实现概要

一个应用实例详解卡尔曼滤波及其算法实现

分类:数据结构及其算法 2012-05-14 10:48 17708人阅读评论 (16 收藏举报

算法 filtermatlabalgorithm 优化工作

为了可以更加容易的理解卡尔曼滤波器, 这里会应用形象的描述方法来讲解, 而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是, 他的 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个公式,可以很容易的实现计算机的程序。

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

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 。

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';

用 matlab 做的 kalman 滤波程序 , 已通过测试

--------------------------

还有下面一个 Matlab 源程序,显示效果更好。

clear

clc;

N=300;

CON = 25;%房间温度,假定温度是恒定的 %%%%%%%%%%%%%%%kalman filter%%%%%%%%%%%%%%%%%%%%%% x = zeros(1,N;

y = 2^0.5 * randn(1,N + CON;%加过程噪声的状态输出

x(1 = 1;

p = 10;

Q = cov(randn(1,N;%过程噪声协方差

R = cov(randn(1,N;%观测噪声协方差

for k = 2 : N

x(k = x(k - 1;%预估计 k 时刻状态变量的值

p = p + Q;%对应于预估值的协方差

kg = p / (p + R;%kalman gain

x(k = x(k + kg * (y(k - x(k;

p = (1 - kg * p;

end

%%%%%%%%%%%Smoothness Filter%%%%%%%%%%%%%%%%%%%%%%%%

Filter_Wid = 10;

smooth_res = zeros(1,N;

for i = Filter_Wid + 1 : N

tempsum = 0;

for j = i - Filter_Wid : i - 1

tempsum = tempsum + y(j;

end

smooth_res(i = tempsum / Filter_Wid;

end

% figure(1;

% hist(y;

t=1:N;

figure(1;

expValue = zeros(1,N;

for i = 1: N

expValue(i = CON;

end

plot(t,expValue,'r',t,x,'g',t,y,'b',t,smooth_res,'k'; legend('expected','estimate','measure','smooth result';

axis([0 N 20 30]

xlabel('Sample time';

ylabel('Room Temperature';

title('Smooth filter VS kalman filter';

卡尔曼滤波计算举例

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

假设有一个标量系统,信号与观测模型为 [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 =

卡尔曼滤波算法总结

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

卡尔曼滤波算法与matlab实现

一个应用实例详解卡尔曼滤波及其算法实现 标签:算法filtermatlabalgorithm优化工作 2012-05-14 10:48 75511人阅读评论(25) 收藏举报分类: 数据结构及其算法(4) 为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的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度

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

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

北航卡尔曼滤波课程-捷联惯导静基座初始对准实验

卡尔曼滤波实验报告 捷联惯导静基座初始对准实验 一、实验目的 ①掌握捷联惯导的构成和基本工作原理; ②掌握捷联惯导静基座对准的基本工作原理; ③了解捷联惯导静基座对准时的每个系统状态的可观测性; ④了解双位置对准时系统状态的可观测性的变化。 二、实验原理 选取状态变量为:[]T E N E N U x y x y z X V V δδεεε=ψψψ??,其

中导航坐标系选为东北天坐标系,E V δ为东向速度误差,N V δ为北向速度误差,E ψ为东向姿态误差角,N ψ为北向姿态误差角,U ψ为天向姿态误差角,x ?为东向加速度偏置,y ?为北向加速度偏置,x ε为东向陀螺漂移,y ε为北向陀螺漂移,z ε为天向陀螺漂移。则系统的状态模型为: X AX W =+ (1) 其中, 1112212211 12 1321222331323302sin 000002sin 000000000sin cos 0000sin 000000cos 0000000000000000000000000000000000000000000000000000 0L g C C L g C C L L C C C L C C C L C C C A Ω-? ? ??-Ω????Ω-Ω? ?-Ω????Ω=? ?????? ?????????? ? [00000]E N E N U T V V W W W W W W δδψψψ=,E D V W W δψ 为零均值高斯 白噪声,分别为加速度计误差和陀螺漂移的噪声成分,Ω为地球自转角速度,ij C 为姿态矩 阵n b C 中的元素,L 为当地纬度。 量测量选取两个水平速度误差:[ ]T E N Z V V δδ=,则量测方程为: 10000000000100000000E E N N V X V δηδη???? ??=+???????????? (2) 即Z HX η=+ 其中,H 为量测矩阵,[]T E N ηηη=为量测方程的随机噪声状态矢量,为零均值高 斯白噪声。 要利用基本卡尔曼滤波方程进行状态估计,需要将状态方程和量测方程进行离散化。 系统转移矩阵为: 2323/1111102!3!! n n k k k k k k n T T T I TA A A A n ∞ -----=Φ=++++=∑ (3)

几种非线性滤波算法的研究-内附程序

2017 年秋季学期研究生课程考核 (读书报告、研究报告) 考核科目:雷达系统导论 学生所在(系):电子与信息工程学院 学生所在学科:电子与同学工程 学生姓名: 学号: 学生类别: 考核结果阅卷人 第 1 页(共页)

几种非线性滤波算法的介绍与性能分析 作者姓名:学号: 专业院系:电信学院电子工程系 电子邮件: 摘要—非线性滤波算法在雷达目标跟踪中有着重要的应用,对雷达的跟踪性能有着至关重要的影响。好的滤波算法有利于目标航迹的建立及保持,能够得到较精确的目标位置,为发现目标后的后续工作提供可靠的数据依据。本文重点介绍了雷达数据处理中的几种非线性滤波算法:扩展卡尔曼滤波(EKF)、不敏卡尔曼滤波(UKF)、粒子滤波(PF),并且给出了一个利用这三种算法进行数据处理的一个实例,通过这个实例对比分析了这三种算法的性能以及优劣。 关键字—非线性滤波算法;扩展卡尔曼滤波;不敏卡尔曼滤波;粒子滤波; I.概述(一级表题格式) 在雷达对目标进行跟踪前要先对目标进行检测。对于满足检测条件的目标就需要进行跟踪,在跟踪的过程中可以利用新获得的数据完成对目标的进一步检测比如去除虚假目标等,同时利用跟踪获得数据可以进一步完成对目标动态特性的检测和识别。因此对目标进行准确的跟踪是雷达性能的一个重要指标。在检测到满足条件的目标后,根据目标运动状态建立目标运动模型,然后对目标跟踪算法进行设计,这是雷达目标跟踪中的核心部分。 目前主要的跟踪算法包括线性自回归滤波,两点外推滤波、维纳滤波、- αβ滤波、加权最小二乘滤波、维纳滤波和卡尔曼滤波[1]。对于线性系统而言最优滤波的方法就是卡尔曼滤波,卡尔曼滤波是线性高斯模型下的最优状态估计算法。但是实际问题中目标的运动模型往往不是线性的,因此卡尔曼滤波具有很大的局限性。目前主要用的非线性滤波算法可以分为高斯滤波和粒子滤波[2]。不敏卡尔曼滤波和扩展卡尔曼滤波就是高斯滤波中的典型代表,也是应用相对较为广泛的。粒子滤波的应用范围比高斯滤波的适用范围要广,对于系统状态非线性,观测模型非高斯等问题都有很好的适用性。本文具体分析阐述了扩展卡尔曼滤波算法,不敏卡尔曼滤波算法,粒子滤波算法,并且通过一个实例利用仿真的方法分析了这三种算法在滤波性能上的优劣,最后对这三种算法做了一定的总结。 我本科毕业设计题目为《基于历史数据的路径生成算法研究》,由于我是跨专业保研到电信学院,该课题所研究内容不属于雷达系统研究范围,是一种城市路网最快路径生成算法。 II.几种非线性滤波算法 A.扩展卡尔曼滤波 扩展卡尔曼滤波是将非线性系统转换为近似的线性系统的一种方法,其核心思想是围绕滤波值将非线性函数展开成泰勒级数并略去二阶及以上的项,得到一个近似的线性化模型,然后应用卡尔曼滤波完成状态估计。 扩展卡尔曼滤波状态空间模型: k k k w x f+ = + ) ( x 1 状态方程 k k k v x h+ =) ( z观测方程 其中(.) f和(.) h为非线性函数 在扩展卡尔曼滤波中,状态的预测以及观测值的预测由非线性函数计算得出,线性卡尔曼滤波中的状态转移矩阵A阵和观测矩阵H阵由f和h函数的雅克比矩阵代替。 对 (.) f和(.) h Taylor展开,只保留一次项有: ) ? ( ) ?( ) ( k k k k k x x A x f x f- + ≈ ) ? ( ) ?( ) ( k k k k k x x H x h x h- + ≈ 其中: k k x x k k dx df A ?= =为f对 1- k x求导的雅克比矩阵 k k x x k k dx dh H ?= =为h对 1- k x求导的雅克比矩阵 ) ?( ? 1-k k x f x=,于是可以得出: k k k k k k k w x A x f x A x+ - + ≈ + ) ? ) ?( ( 1 k k k k k k k v x H x h x H z+ - + ≈ + ) ? ) ?( ( 1 通过以上变换,将非线性问题线性化。接下来EKF 滤波过程同线性卡尔曼滤波相同,公式如下: )) | (?( ) |1 ( X?k k X f k k= + ) ( ) ( ) | ( ) ( ) |1 (P k Q k k k P k k k+ Φ' Φ = + )1 ( )1 ( ) |1 ( )1 ( )1 (S+ + + ' + + = +k R k H k k P k H k )1 ( )1 ( ) |1 ( )1 ( K1+ + ' + = +-k S k H k k P k

几种卡尔曼滤波算法理论

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

卡尔曼滤波算法(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;

卡尔曼滤波算法总结

卡尔曼滤波算法总结-标准化文件发布号:(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)更新协方差阵

自适应滤波实验报告

LMS 自适应滤波实验报告 姓名: 学号: 日期:2015.12.2 实验内容: 利用自适应滤波法研究从宽带信号中提取单频信号的方法。 设()()()()t f B t f A t s t x 212cos 2cos π?π+++=,()t s 是宽带信号,A ,B ,1f ,2f , ?任选 (1)要求提取两个单频信号; (2)设f f f ?+=12,要求提取单频信号()t f 22cos π,研究f ?的大小对提取单频信号的影响。 1. 自适应滤波器原理 自适应滤波器理论是现代信号处理技术的重要组成部分,它对复杂信号的处理具有独特的功能。自适应滤波器在信号处理中属于随机信号处理的范畴。在一些信号和噪声特性无法预知或他们是随时间变化的情况下,自适应滤波器通过自适应滤波算法调整滤波器系数,使得滤波器的特性随信号和噪声的变化,以达到最优滤波的效果,解决了固定全系数的维纳滤器和卡尔曼滤波器的不足。 (1) 自适应横向滤波器 所谓自适应滤波,就是利用前一时刻已获得的滤波器参数等结果,自动调节现时刻的滤波器参数,以适应信号和噪声未知或随时间变化的统计特性,从而实现最优滤波。自适应滤波器由两个部分组成:滤波器结构和调节滤波器系数的自适应算法。自适应滤波器的特点是自动调节自身的冲激响应,达到最优滤波,此算法适用于平稳和非平稳随机信号,并且不要求知道信号和噪声的统计特性。 一个单输入的横向自适应滤波器的原理框图如图所示:

实际上这种单输入系统就是一个FIR 网络结构,其输出()n y 用滤波器单位脉冲响应表示成下式: ()()()∑-=-=1 N m m n x m w n y 这里()n w 称为滤波器单位脉冲响应,令:()()n i n x x i w w m i i i ,1,1,1+-=-=+=用j 表示,上式可以写成 ∑==N i ij i j x w y 1 这里i w 也称为滤波器加权系数。用上面公式表示其输出,适用于自适应线性组合器,也适用于FIR 滤波器。将上式表示成矩阵形式: X W W X j T T j j y == 式中 [][ ] T Nj j j j T N x x x w w w X W ,...,,, ,...,,2121== 误差信号表示为 X W j T j j j j d y d e -=-= (2) 最小均方(LMS )算法 Widrow 等人提出的最小均方算法,是用梯度的估计值代替梯度的精确值,这种算法简单易行,因此获得了广泛的应用。 LMS 算法的梯度估计值用一条样本曲线进行计算,公式如下:

自适应滤波实验报告

LMS 自适应滤波实验报告 : 学号: 日期:2015.12.2 实验容: 利用自适应滤波法研究从宽带信号中提取单频信号的方法。 设()()()()t f B t f A t s t x 212cos 2cos π?π+++=,()t s 是宽带信号,A ,B ,1f ,2f , ?任选 (1)要求提取两个单频信号; (2)设f f f ?+=12,要求提取单频信号()t f 22cos π,研究f ?的大小对提取单频信号的影响。 1. 自适应滤波器原理 自适应滤波器理论是现代信号处理技术的重要组成部分,它对复杂信号的处理具有独特的功能。自适应滤波器在信号处理中属于随机信号处理的畴。在一些信号和噪声特性无法预知或他们是随时间变化的情况下,自适应滤波器通过自适应滤波算法调整滤波器系数,使得滤波器的特性随信号和噪声的变化,以达到最优滤波的效果,解决了固定全系数的维纳滤器和卡尔曼滤波器的不足。 (1) 自适应横向滤波器 所谓自适应滤波,就是利用前一时刻已获得的滤波器参数等结果,自动调节现时刻的滤波器参数,以适应信号和噪声未知或随时间变化的统计特性,从而实现最优滤波。自适应滤波器由两个部分组成:滤波器结构和调节滤波器系数的自适应算法。自适应滤波器的特点是自动调节自身的冲激响应,达到最优滤波,此算法适用于平稳和非平稳随机信号,并且不要求知道信号和噪声的统计特性。

一个单输入的横向自适应滤波器的原理框图如图所示: 实际上这种单输入系统就是一个FIR 网络结构,其输出()n y 用滤波器单位脉冲响应表示成下式: ()()()∑-=-=1 N m m n x m w n y 这里()n w 称为滤波器单位脉冲响应,令: ()()n i n x x i w w m i i i ,1,1,1+-=-=+=用j 表示,上式可以写成 ∑==N i ij i j x w y 1 这里i w 也称为滤波器加权系数。用上面公式表示其输出,适用于自适应线性组合器,也适用于FIR 滤波器。将上式表示成矩阵形式: X W W X j T T j j y == 式中 [][ ] T Nj j j j T N x x x w w w X W ,...,,, ,...,,2121== 误差信号表示为 X W j T j j j j d y d e -=-= (2) 最小均方(LMS )算法 Widrow 等人提出的最小均方算法,是用梯度的估计值代替梯度的精确值,这种算法简单易行,因此获得了广泛的应用。

时间序列分析方法之卡尔曼滤波

第十三章 卡尔曼滤波 在本章中,我们介绍一种被称为卡尔曼滤波的十分有用的工具。卡尔曼滤波的基本思想是将动态系统表示成为一种称为状态空间表示的特殊情形。卡尔曼滤波是对系统线性投影进行序列更新的算法。除了一般的优点以外,这种算法对计算确切的有限样本预测、计算Gauss ARMA 模型的确切似然函数、估计具有时变参数的自回归模型等,都提供了重要方法。 §13.1 动态系统的状态空间表示 我们已经介绍过一些随机过程的动态表示方法,下面我们在以前的假设基础上,继续分析动态系统的表示方法。 13.1.1 继续使用的假设 假设表示时刻观测到的n 维随机向量,一类非常丰富的描述动态性的模型可以利用一些可能无法观测的被称为状态向量(state vector)的r 维向量表示,因此表示动态性的状态空间表示(state-space representation)由下列方程系统给出: 状态方程(state model) (13.1) 量测方程(observation model) (13.2) 这里,和分别是阶数为,和的参数矩阵,是的外生或者前定变量。方程(13.1)被称为状态方程(state model),方程(13.2)被称为量测方程(observation model),维向量和维向量都是向量白噪声,满足: (13.3) (13.4) 这里和是和阶矩阵。假设扰动项和对于所有阶滞后都是不相关的,即对所有和,有: (13.5) t x 是外生或者前定变量的假定意味着,在除了包含在121,,,y y y t t 内的信息以外,t x 没有为s t ξ和s t w ( ,2,1,0 s )提供任何新的信息。例如,t x 可以包括t y 的滞后值,也可以包括与 ξ和 w (任意 )不相关的变量。 方程系统中方程(13.1)至方程(13.5)可以表示有限观测值的序列},,,{21T y y y ,这时需要状态向量初始值1ξ。假设1ξ与t v 和t w 的任何实现都不相关:

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)主程序

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

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

卡尔曼滤波与组合导航课程报告

卡尔曼滤波与组合导航》课程实验报告 实验 捷联惯导 /GPS 组合导航系统静态导航实验 实验序号 3 姓名 陈星宇 系院专业 17 班级 ZY11172 学号 ZY1117212 日期 2012-5-15 指导教师 宫晓琳 成绩 、实验目的 ① 掌握捷联惯导 /GPS 组合导航系统的构成和基本工作原理; ②掌握采用卡尔曼滤波方法进行捷联惯导 /GPS 组合的基本原理; ③掌握捷联惯导 /GPS 组合导航系统静态性能; ④了解捷联惯导 /GPS 组合导航静态时的系统状态可观测性; 、实验原理 ( 1)系统方程 X FX GW 系统噪声矢量由陀螺仪和加速度计的随机误差组成,表达式为: 2)量测方程 和 H 分别为捷联解算与 GPS 的东向速度、北向速度、天向速度、纬度、经度和高度之 差;量测矩阵 H H V H P T ,H P 03 6 diag R M H, (R N H )cos L, 036 , H V 033 diag 1, 1, 1 039 ,v v V E v V N v V U v L v v H 为量测噪声。 量测噪声 v E v N T v U L h x y z x y z 其中, E 、 N 、 U 为数学平台失准角; v E 、 v N 、 v U 分别为载体的东向、北向和天向速度误差; L 、 、 h 分别为纬度误差、经度误差和高度误差; x 、 y 、 z 、 x 、 y 、 z 分别为陀螺随 机常值漂移和加速度计随机常值零偏。(下 标 系统的噪声转移矩阵 G 为: E 、N 、 U 分别代表东、北、天) C b n 3 3 0 9 3 3 3 C n C b 9 3 15 6 系统的状态转移矩阵 w w w w F 组成内容为: w z F 06N 9 F S F M ,其中 F N 中非零元素为可由惯导误差模型获得。 F S C b n 3 3 0 3 3 3 3 C b n 3 3 96 量测变量 z V E V N V U L H , , V E 、 V N 、 V U 、 L 、 X U

北航卡尔曼滤波实验报告-GPS静动态滤波实验

卡尔曼滤波实验报告

2014 年 4 月 GPS 静/动态滤波实验 一、实验要求 1、分别建立GPS 静态及动态卡尔曼滤波模型,编写程序对静态和动态GPS 数据进行Kalman 滤波。 2、对比滤波前后导航轨迹图。 3、画出滤波过程中估计均方差(P 阵对角线元素开根号)的变化趋势。 4、思考:① 简述动态模型与静态模型的区别与联系;② R 阵、Q 阵,P0阵的选取对滤波精度及收敛速度有何影响,取值时应注意什么;③ 本滤波问题是否可以用最小二乘方法解决,如果可以,请阐述最小二乘方法与Kalman 滤波方法的优劣对比。 二、实验原理 2.1 GPS 静态滤波 选取系统的状态变量为[ ]T L h λ=X ,其中L 为纬度(deg),λ为经度(deg),h 为高度 (m)。设()w t 为零均值高斯白噪声,则系统的状态方程为: 310()w t ?=+X (1) 所以离散化的状态模型为: ,111k k k k k W ---=+X X Φ (2) 式中,,1k k -Φ为33?单位阵,k W 为系统噪声序列。 测量数据包括:纬度静态量测值、经度静态量测值和高度构成31?矩阵Z ,量测方程

可以表示为: k k k Z HX V =+ (3) 式中,H 为33?单位阵,k V 为量测噪声序列。 系统的状态模型是十分准确的,所以系统模型噪声方差阵可以取得十分小,取Q 阵零矩阵。 系统测量噪声方差阵R 由测量确定,由于位置量测精度为5m ,采用克拉索夫斯基地球椭球模型,长半径e R 为6378245m ,短半径p R 为6356863m 。所以R 阵为: 2 2 25180()0 05180 ( )0cos()00 5p e R R L ππ ??? ?? ? ??= ??? ? ? ?? ? R (4) 2.2 GPS 动态滤波 动态滤波基于当前统计模型,在地球坐标系下解算。选取系统的状态变量为 T x x x y y y z z z X x v a y v a z v a εεε??=??,其中,,,x x x x v a ε依次为地球坐标系下x 轴上的位置、速度、加速度和位置误差分量,,y z 轴同理。系统的状态模型可以表示为: ()()()()t t t t =++X AX U W (5) 式中,位置误差视为有色噪声,为一阶马尔科夫过程,可表示为: x x x x y y y y z z z z w w w εετεετεετ?=-+????=-+????=-+?? 1 11 (6) 其中,i τ(,,i x y z =)为对应马尔科夫过程的相关时间常数,(,,)i w i x y z =为零均值高斯白噪声。

卡尔曼滤波器总结

1. 卡尔曼全名Rudolf Emil Kalman ,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems 》(线性滤波与预测问题的新方法)。 基于状态空间描述对混有噪声的信号进行滤波的方法,简称卡尔曼滤波。这种方法是R.E.卡尔曼和R.S.布什于1960和1961年提出的。卡尔曼滤波是一种切实可行和便于应用的滤波方法,其计算过程通常需要在计算机上实现。实现卡尔曼滤波的装置或软件称为卡尔曼滤波器。 卡尔曼滤波器(Kalman Filter )是在克服以往滤波方法局限性的基础上提出来的,是一个最优化自回归数据处理算法(optimal recursive data processing algorithm )。它是针对系统的部分状态或是部分状态的线性组合,且量测值中有随机误差(常称为量测噪声)。将仅与部分状态有关的测量进行处理,得出从某种统计意义上讲误差最小的更多状态的估值,从而将混有噪声(干扰)的信号中噪声滤除、提取有用信号。 卡尔曼滤波是一种递推线性最小方差估计,以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。 现设线性时变系统的离散状态方程和观测方程为: ()()()()()X k+1F k X k G k u k ()w k =?++ ()()()()k+1H k+1X k+1k+1Y v =?+ 其中 ()k X 和()k Y 分别是k 时刻的状态矩阵和测量矩阵 ()k F 为状态转移矩阵 ()k G 为系统控制项矩阵 ()k u 为k 时刻对系统的控制量 ()k w 为k 时刻动态噪声,其协方差()Q k ()k H 为k 时刻观测矩阵 ()k v 为k 时刻测量噪声, 其协方差()R k 则卡尔曼滤波的算法流程为: 状态的一步预估计()()()()()??X k+1k F k X k k G k u k |=?|+ 一步预估计协方差矩阵 ()()()()()C k+1k F k C k k F k Q k '|=?|+' 计算卡尔曼增益矩阵

相关文档
最新文档