文档库 最新最全的文档下载
当前位置:文档库 › 卡尔曼滤波器介绍

卡尔曼滤波器介绍

卡尔曼滤波器介绍
卡尔曼滤波器介绍

卡尔曼滤波器介绍

Greg Welch1and Gary Bishop2

TR95-041

Department of Computer Science

University of North Carolina at Chapel Hill3

Chapel Hill,NC27599-3175

翻译:姚旭晨

更新日期:2006年7月24日,星期一

中文版更新日期:2007年1月8日,星期一

摘要

1960年,卡尔曼发表了他著名的用递归方法解决离散数据线性滤波问题的论文。从那以后,得益于数字计算技术的进步,卡尔曼滤波器已成为推广研究和应用的主题,尤其是在自主或协助导航领域。

卡尔曼滤波器由一系列递归数学公式描述。它们提供了一种高效可计算的方法来估计过程的状态,并使估计均方误差最小。卡尔曼滤波器应用广泛且功能强大:它可以估计信号的过去和当前状态,甚至能估计将来的状态,即使并不知道模型的确切性质。

这篇文章介绍了离散卡尔曼理论和实用方法,包括卡尔曼滤波器及其衍生:扩展卡尔曼滤波器的描述和讨论,并给出了一个相对简单的带图实例。

1welch@https://www.wendangku.net/doc/ff149658.html,,https://www.wendangku.net/doc/ff149658.html,/?welch

2gb@https://www.wendangku.net/doc/ff149658.html,,https://www.wendangku.net/doc/ff149658.html,/?gb

3北卡罗来纳大学教堂山分校,译者注。

1

Welch&Bishop,卡尔曼滤波器介绍2

1离散卡尔曼滤波器

1960年,卡尔曼发表了他著名的用递归方法解决离散数据线性滤波问题的论文[Kalman60]。从那以后,得益于数字计算技术的进步,卡尔曼滤波器已成为推广研究和应用的主题,尤其是在自主或协助导航领域。[Maybeck79]的第一章给出了一个非常“友好”的介绍,更全面的讨论可以参考[Sorenson70],后者还包含了一些非常有趣的历史故事。更广泛的参考包括[Gelb74,Grewal93,Maybeck79,Lewis86,Brown92,Jacobs93]。

被估计的过程信号

卡尔曼滤波器用于估计离散时间过程的状态变量x∈ n。这个离散时间过程由以下离散随机差分方程描述:

x k=Ax k?1+Bu k?1+w k?1,(1.1)定义观测变量z∈ m,得到量测方程:

z k=Hx k+v k.(1.2)随机信号w k和v k分别表示过程激励噪声1和观测噪声。假设它们为相互独立,正态分布的白色噪声:

p(w)~N(0,Q),(1.3)

p(v)~N(0,R).(1.4)实际系统中,过程激励噪声协方差矩阵Q和观测噪声协方差矩阵R可能会随每次迭代计算而变化。但在这儿我们假设它们是常数。

当控制函数u k?1或过程激励噪声w k?1为零时,差分方程1.1中的n×n 阶增益矩阵A将上一时刻k?1的状态线性映射到当前时刻k的状态。实际中A可能随时间变化,但在这儿假设为常数。n×l阶矩阵B代表可选的控制输入u∈ l的增益。量测方程1.2中的m×n阶矩阵H表示状态变量x k 对测量变量z k的增益。实际中H可能随时间变化,但在这儿假设为常数。滤波器的计算原型

定义?x?k∈ n(?代表先验,?代表估计)为在已知第k步以前状态情况下第k步的先验状态估计。定义?x k∈ n为已知测量变量z k时第k步的后验状态估计。由此定义先验估计误差和后验估计误差:

≡x k??x?k,

e?

k

e k≡x k??x k

1原文为process noise,本该翻译作过程噪声,由时间序列信号模型的观点,平稳随机序列可以看成是由典型噪声源激励线性系统产生,故译作过程激励噪声。

UNC-Chapel Hill,TR95-041,July24,2006

Welch &Bishop,卡尔曼滤波器介绍3先验估计误差的协方差为:

P ?k =E [e ?k e ?k T ],(1.5)

后验估计误差的协方差为:

P k =E [e k e k T ],(1.6)

式1.7构造了卡尔曼滤波器的表达式:先验估计?x ?k 和加权的测量变量z k 及其预测H ?x ?k 之差的线性组合构成了后验状态估计?x k 。式1.7的理论解释请参看“滤波器的概率原型”一节。

?x k =?x ?k +K (z k ?H ?x ?k )(1.7)

式1.7中测量变量及其预测之差(z k ?H ?x ?k )被称为测量过程的革新或残余。残余反映了预测值和实际值之间的不一致程度。残余为零表明二者完全吻合。

式1.7中n ×m 阶矩阵K 叫做残余的增益或混合因数,作用是使1.6式中的后验估计误差协方差最小。可以通过以下步骤计算K :首先将1.7式代入e k 的定义式,再将e k 代入1.6式中,求得期望后,将1.6式中的P k 对K 求导。并使一阶导数为零从而解得K 值。详细推导清参照[Maybeck79,Brown92,Jacobs93]。K 的一种表示形式为:

K k =P ?k H T (HP ?k H T +R )?1

=P ?k H T HP ?k H T +R .(1.8)

由1.8式可知,观测噪声协方差R 越小,残余的增益越大K 越大。特别地,R 趋向于零时,有:

lim R k →0K k =H ?1.

另一方面,先验估计误差协方差P ?k 越小,残余的增益K 越小。特别地,P ?k 趋向于零时,有:

lim P ?k →0K k =0.

增益K 的另一种解释是随着测量噪声协方差R 趋于零,测量变量z k 的权重越来越大,而z k 的预测H ?x ?k 的权重越来越小。另一方面,随着先验估计误差协方差P ?k 趋于零,测量变量z k 的权重越来越小,而z k 的预测H ?x ?k 的权重越来越大。

UNC-Chapel Hill,TR 95-041,July 24,2006

Welch&Bishop,卡尔曼滤波器介绍4

滤波器的概率原型解释

1.7式的解释来源于贝叶斯规则:?x k的更新取决于在已知先前的测量变量z k的情况下x k的先验估计?x?k的概率分布。卡尔曼滤波器表达式中包含了状态分布的前二阶矩。

E[x k]=?x k

E[(x k??x k)(x k??x k)T]=P k.

后验状态估计1.7式反应了状态分布的均值(一阶矩)——如果条件式1.3和1.4成立,均值的估计便是正态分布的。后验估计误差协方差1.6式反映了状态分布的方差(二阶非中心矩)。在已知z k的情况下,x k的分布可写为:

p(x k|z k)~N(E[x k],E[(x k??x k)(x k??x k)T])

=N(?x k,P k).

有关卡尔曼滤波器的概率原型的更多讨论,请参考[Maybeck79, Brown92,Jacobs93]。

离散卡尔曼滤波器算法

我们先给出卡尔曼滤波器的总体性概述,然后讨论方程式的具体细节及其作用。

卡尔曼滤波器用反馈控制的方法估计过程状态:滤波器估计过程某一时刻的状态,然后以(含噪声的)测量变量的方式获得反馈。因此卡尔曼滤波器可分为两个部分:时间更新方程和测量更新方程。时间更新方程负责及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计。测量更新方程负责反馈——也就是说,它将先验估计和新的测量变量结合以构造改进的后验估计。

时间更新方程也可视为预估方程,测量更新方程可视为校正方程。最后的估计算法成为一种具有数值解的预估-校正算法,如图1-1所示。

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍5

图1-1:离散卡尔曼滤波器循环更新图。时间更新方程将当前状态变量作为先验估计及时地向前投射到测量更新方程,测量更新方程校正先验估计以获得状态的后验估计。

表1-1和表1-2分别给出了时间更新方程和测量更新方程的具体形式。

表1-1:离散卡尔曼滤波器时间更新方程

?x?

k

=A?x k?1+Bu k?1(1.9)

P?

k

=AP k?1A T+Q(1.10)请再次注意表1-1中的时间更新方程怎样将状态估计x?k和协方差估计

P?

k 从k?1时刻向前推算到k时刻。A和B来自式1.1,Q来自式1.3,滤

波器的初始条件在早先的引用中讨论过。

表1-2:离散卡尔曼滤波器状态更新方程

K k=P?

k H T(HP?

k

H T+R)?1(1.11)

?x k=?x?

k

+K k(z k?H?x?k)(1.12)

P k=(I?K k H)P?

k

(1.13)

测量更新方程首先做的是计算卡尔曼增益K k。注意1.11式和1.8式是相同的。其次便测量输出以获得z k,然后按1.12式(与1.7式相同)产生状态的后验估计。最后按1.13式估计状态的后验协方差。

计算完时间更新方程和测量更新方程,整个过程再次重复。上一次计

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍6算得到的后验估计被作为下一次计算的先验估计2。这种递归推算是卡尔曼滤波器最吸引人的特性之一——它比其它滤波器更容易实现:例如维纳滤波器[Brown92],每次估计必须直接计算全部数据,而卡尔曼滤波器每次只根据以前的测量变量递归计算当前的状态估计。图1-2将表1-1和表1-2结合显示了滤波器的整个操作流程。

图1-2:卡尔曼滤波器工作原理图,由图1-1和表1-1及表1-2结合得到。

滤波器系数及调整

滤波器实际实现时,测量噪声协方差R一般可以观测得到,是滤波器的已知条件。观测测量噪声协方差R一般是可实现的(可能的),毕竟我们要观测整个系统过程。因此通常我们离线获取一些系统观测值以计算测量噪声协方差。

通常更难确定过程激励噪声协方差的Q值,因为我们无法直接观测到过程信号x k。有时可以通过Q的选择给过程信号“注入”足够的不确定性来建立一个简单的(差的)过程模型而产生可以接受的结果。当然在这种情况下人们希望信号观测值是可信的。

在这两种情况下,不管我们是否有一个合理的标准来选择系数,我们通常(统计学上的)都可以通过调整滤波器系数来获得更好的性能。调整2即将1.12和1.13式的结果代入1.9和1.10式,译者注。

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍7通常离线进行,并经常与另一个(确定无误的)在线滤波器对比,这个过程称为系统识别。

在讨论的结尾,我们指出在Q和R都是常数的条件下,过程估计误差协方差R和卡尔曼增益K k都会快速收敛并保持为常量(参照图1-2中的更新方程)。若实际情况也如此,那么滤波器系数便可以通过预先离线运行滤波器计算,或者,比如说,用[Grewal93]中的方法计算P k的稳定值。

实际中,观测误差R尤其不易保持不变。例如,用我们的光电跟踪仪观察挂在房间顶棚面板上的信号灯时,较近的信号灯会比较远的信号灯具有较小的观测噪声。不仅是观测噪声会变化,有时过程激励噪声协方差Q 也会随着滤波器运行而动态变化——这样Q变成了Q k——来适应不同的动态状态。例如,在跟踪三维虚拟环境中用户头部位置时,如果用户头部缓慢移动,我们会减小Q k的幅度,如果移动开始快速变化,则增加幅度。在这些情况下,Q k的幅度要根据用户的移动方向和模型的不确定性来选择。

2扩展卡尔曼滤波器

被估计的过程信号

如第一节所述,卡尔曼滤波器估计一个用线性随机差分方程描述的离散时间过程的状态变量x∈ n。但如果被估计的过程和(或)观测变量与过程的关系是非线性的,那应怎么办?一些最著名和有趣的卡尔曼滤波应用就是处理这些情况的。将期望和方差线性化的卡尔曼滤波器称作扩展卡尔曼滤波器(Extended Kalman Filter),简称EKF。

同泰勒级数类似,面对非线性关系时,我们可以通过求过程和量测方程的偏导来线性化并计算当前估计。我们将第一节中的公式换一种方式表示。假设过程仍具有状态向量x∈ n,但其状态方程已变为非线性随机差分方程的形式。

x k=f(x k?1,u k?1,w k?1),(2.1)观测变量z∈ m为:

z k=h(x k,v k),(2.2)随机变量w k和v k仍代表过程激励噪声和观测噪声。差分方程式2.1中的非线性函数f将上一时刻k?1的状态映射到当前时刻k的状态。量测方程2.2中的驱动函数u k和零均值过程噪声w k是它的参数。非线性函数h反映了状态变量x k和观测变量z k的关系。

实际中我们显然不知道每一时刻噪声w k和v k各自的值。但是,我们可以将它们假设为零,从而估计状态向量和观测向量为:

?x k=f(?x k?1,u k?1,0)(2.3)和

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍8

?z k=h(?x k,0),(2.4)其中,?x k是过程相对前一时刻k的后验估计。

有一点非常重要,那就是扩展卡尔曼滤波器的一个基本缺陷:离散随机变量的分布(或连续随机变量的密度)在经过非线性系统转化后不再是正态的了。扩展卡尔曼滤波器其实就是一个通过线性化而达到渐进最优贝叶斯决策的特殊状态估计器。[Julier96]中描述了一项有趣的研究,Julier et al.设计了扩展卡尔曼滤波器的一种变体,使得通过非线性转换后的随机变量仍具有正态分布特性。

滤波器的计算原型

为了估计一个具有非线性差分和量测关系的过程,我们先给出式2.3和式2.4的一个新的线性化表示:

x k≈?x k+A(x k?1??x k?1)+W w k?1,(2.5)

z k≈?z k+H(x k??x k)V v k.(2.6)其中,

?x k和z k是状态向量和观测向量的真值,

??x k和?z k来自2.3式和2.4式,是状态向量和观测向量的观测值,

??x k是k时刻状态向量的后验估计,

?类似于1.3式和1.4式,随机变量w k和v k表示过程激励噪声和观测噪声。

?A是f对x的偏导的雅可比矩阵:

A[i,j]=?f[i]

?x[j]

(?x k?1,u k?1,0),

?W是f对w的偏导的雅可比矩阵:

W[i,j]=?f[i]

?w[j]

(?x k?1,u k?1,0),

?H是h对x的偏导的雅可比矩阵:

H[i,j]=?h[i]

?x[j]

(?x k,0),

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍9?V是h对v的偏导的雅可比矩阵:

V[i,j]=?h[i]

?v[j]

(?x k,0).

简单起见,我们并没有在A,W,H,V中加入下标k,但它们实际上是随时间变化的。

现在我们定义一个新的预测误差的表达式:

?e x

k

≡x k??x k,(2.7)和观测变量的残余,

?e z

k

≡z k??z k,(2.8)请记住我们在实际中无法获得2.7式中的x k,它是状态向量的真值,也就是我们要估计的对象。同样,我们也无法获得2.8式中的z k,它是我们用来估计x k的观测向量的真值。由2.7式和2.8式我们可以写出误差过程的表达式:

?e x

k

≈A(x k?1??x k?1)+ k,(2.9)

?e z

k ≈H?e x

k

+ηk,(2.10)

k和ηk代表具有零均值和协方差矩阵W QW T和V RV T的独立随机变量,Q和R分别来自1.3式和1.4式。

注意2.9式和2.10式是线性的,它们很像离散卡尔曼滤波器中的状态差

分方程1.1式和量测方程1.2式。这提示我们用2.8式中的观测残余真值?e z

k 和

第二个(假设的)卡尔曼滤波器去估计2.9式中的预测误差?e x

k 。估计的结

果记为?e k,结合2.7式可以获得初始非线性过程的后验状态估计:

?x k=?x k+?e k.(2.11)式2.9和式2.10中的随机变量具有如下概率分布(参看前面的脚注):

p(?e x

k )~N(0,E[?e x

k

?e T x

k

])

p( k)~N(0,W Q k W T)

p(ηk)~N(0,V R k V T)

令?e k的估计值为零,由以上近似,可以写出估计?e k的卡尔曼滤波器表达式:

?e k=K k?e z

k

.(2.12)将2.8式和2.12式代回2.11式,我们看到实际上并不需要第二个(假设的)卡尔曼滤波器:

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍10

?x k=?x k+K k?e z

k

=?x k+K k(z k??z k)(2.13)式2.13现在可以用作扩展卡尔曼滤波器的观测变量的更新。其中?x k和?z k来自2.3式和2.4式,将1.11式中的观测误差协方差进行适当的替换可以得到卡尔曼增益K k。

表2-1和表2-2给出了扩展卡尔曼滤波器的全部表达式。注意我们用?x?k 替换了?x k来表达先验概率的意思,并且雅可比矩阵A,W,H,V也被加上了下标,显式地表明了它们在不同的时刻具有变化的值,每次需要被重复计算。

表2-1:扩展卡尔曼滤波器时间更新方程

?x?

k

=f(?x k?1,u k?1,0)(2.14)

P?

k

=A k P k?1A T k+W k Q k?1W T k(2.15)

就像基本的离散卡尔曼滤波器,表2-1中的时间更新方程将状态和协方差估计从k?1时刻向前推算到k时刻。2.14式中的f来自式2.3,A k和W k是k时刻的过程雅可比矩阵,Q k是式1.3中k时刻的过程激励噪声协方差矩阵。

表2-2:扩展卡尔曼滤波器状态更新方程

K k=P?

k H T k(H k P?

k

H T k+V k R k V T k)?1(2.16)

?x k=?x?

k

+K k(z k?h(?x?k,0))(2.17)

P k=(I?K k H k)P?

k

(2.18)

就像基本的离散卡尔曼滤波器,表2-2中的测量更新方程利用观测值变量z k的值校正状态估计和协方差估计。2.17式中的h来自式2.4,H k和V 是k时刻的测量雅可比矩阵,R k是式1.4中k时刻的观测噪声协方差矩阵(注意下标k表示R k随时间变化)。

扩展卡尔曼滤波器的基本运行流程与图1-1中的线性离散卡尔曼滤波器相同。图2-1将图1-1与表2-1和表2-2中的表达式结合。

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍11

图2-1:扩展卡尔曼滤波器工作原理图,由图1-1和表2-1及表2-2结合得到。

扩展卡尔曼滤波器的一个重要特性是卡尔曼增益K k的表达式中的雅可比矩阵H k能够正确地传递或“加权”观测信息中的有用部分。例如,如果通过h观测变量z k和状态变量没有一一对应的关系,雅可比矩阵H k便通过改变卡尔曼增益从而使得残余z k?h(?x?k,0)中真正作用于状态变量的部分被加权。当然,如果整个观测中观测变量z k和状态变量通过h都没有一

个一一对应的关系,那么滤波器很快就会发散。这种情况下过程是不可观测的。

3卡尔曼滤波器实践:估计随机常数

前两节我们讨论了离散卡尔曼滤波器和扩展卡尔曼滤波器的基本形式。在这儿,我们给出一个简单的例子以帮助读者更好地理解卡尔曼滤波器的实现和性能。Andrew Straw在https://www.wendangku.net/doc/ff149658.html,/Cookbook/ KalmanFiltering上给出了使用Python/SciPy的具体实现方法。

过程模型

在这个简单的例子里我们估计一个常数随机变量,比如电压。假设我们可以测量这个常数的幅值,但观测幅值中掺入了幅值均方根(Root-

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍12 Mean-Square,RMS)为0.1伏的白噪声(比如在模数转换器不是很准确的情况下)。下面的线性差分方程描述了整个过程:

x k=Ax k?1+Bu k?1+w k

=x k?1+w k,

观测变量z∈ 1为:

z k=Hx k+v k

=x k+v k.

过程的状态不随时间变化,所以A=1;没有控制输入,所以u=0;包含噪声的观测值是状态变量的直接体现,所以H=1。(注意有些地方我们忽略了下标k,因为对应的系数在这个例子中为常数。)

滤波器方程和参数

时间更新方程为:

?x?

k

=?x k?1,

P?

k

=P k?1+Q.

测量更新方程为:

K k=P?

k (P?

k

+R)?1

=

P?

k

P?

k

+R

,(3.1)

?x k=?x?

k

+K k(z k??x?k),

P k=(I?K k)P?

k

.

假设过程激励噪声方差Q非常小,Q=10?5(也可以令Q=0,但是一个小的非零常数可以方便地调整滤波器参数,下面将会证明)。再假设由经验我们知道随机常数的真值具有标准正态分布,因此我们令滤波器的初始条件为零,即?x k?1=0。

类似地,我们要选择P k?1的初值P0。如果确定初始状态估计?x0=0,可以令P0=0。但因为初始状态估计?x0并不确定,令P0=0可能会使滤波器一直产生?x k=0的结果。就像实验验证的那样,P0的选择并不关键,几乎任何P0=0都会使滤波器最终收敛。在这里我们令P0=1。

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍13

模拟实验

首先我们令常标量x=?0.37727(因为x是真值所以并没有?符号)。然后产生50个不同的观测值z k,其误差为正态分布,期望为0,标准偏移为0.1(先前我们假设观测值掺进了幅值均方根为0.1伏的白噪声)。我们本可以在滤波器运行时产生这些观测值,但预先准备好这些观测值然后再使用在几组不同的模拟中可以让对照更有意义。

第一组实验中我们固定测量方差为R=(0.1)2=0.01。因为这正好是预先产生的观测误差的方差的真值,所以在响应速度和估计方差方面这组实验应该具有最好的性能。这在与第二、三组实验的对比中更能显现出来。图3-1画出了第一组实验的结果。实线代表随机变量的真值x=?0.37727,加号代表预先产生的观测噪声,剩下的曲线是滤波器的估计结果。

图3-1:第一组实验:R=(0.1)2=0.01。实线代表随机变量的真值x=?0.37727,加号代表预先产生的观测噪声,剩下的曲线是滤波器的估计结果。

前面讨论P0的选择时我们提到过只要P0=0其取值并不是特别关键,因为最终滤波器总要收敛。下面的图3-2给出了每次重复迭代后的P k值。第50次迭代后它已从最初的1下降到0.0002(平方伏特)了。

UNC-Chapel Hill,TR95-041,July24,2006

图3-2:第50次迭代后初始误差协方差P?k已从最初的1下降到0.0002(平方伏特)了。

第一节“滤波器系数和调制”中我们简单地讨论了改变或调整系数Q 和R对性能的影响。图3-3和图3-4显示了将R增大或减少100倍的结果。图3-3中观测方差扩大到100倍(也就是R=1),因此滤波器收敛地更慢。

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍15

图3-3:第二次实验:R=1。滤波器对观测值的反应变慢,导致估计方差减小。

图3-4中观测方差减小了100倍(也就是R=0.0001),因此滤波器收敛地更快。

UNC-Chapel Hill,TR95-041,July24,2006

Welch&Bishop,卡尔曼滤波器介绍16

图3-4:第三次实验:R=0.0001。滤波器对观测值的反应变快,导致估计方差增大。

对常数的估计相对比较直接,这样便清晰地显示了卡尔曼滤波器的工作性能。特别是在图3-3中,估计值要比含噪声的观测值平滑很多,显著地表明了卡尔曼滤波器的“滤波”特性。

UNC-Chapel Hill,TR95-041,July24,2006

参考文献

[Brown92]Brown,R.G.and P.Y.C.Hwang.1992.Introduction to Ran-dom Signals and Applied Kalman Filtering,Second Edition,

John Wiley&Sons,Inc.

[Gelb74]Gelb,A.1974.Applied Optimal Estimation,MIT Press,Cam-bridge,MA.

[Grewal93]Grewal,Mohinder S.,and Angus P.Andrews(1993).Kalman Filtering Theory and Practice.Upper Saddle River,NJ USA,

Prentice Hall.

[Jacobs93]Jacobs,O.L.R.1993.Introduction to Control Theory,2nd Edition.Oxford University Press.

[Julier96]Julier,Simon and Je?rey Uhlman.“A General Method of Approximating Nonlinear Transformations of Probability

Distributions,”Robotics Research Group,Department of

Engineering Science,University of Oxford[cited14November

1995].Available from https://www.wendangku.net/doc/ff149658.html,/?siju/

work/publications/Unscented.zip.

Also see:“A New Approach for Filtering Nonlinear

Systems”by S.J.Julier,J.K.Uhlmann,and H. F.

Durrant-Whyte,Proceedings of the1995American Control

Conference,Seattle,Washington,Pages:1628-1632.Available

from https://www.wendangku.net/doc/ff149658.html,/?siju/work/publications/

ACC95pr.zip.

Also see Simon Julier’s home page at

https://www.wendangku.net/doc/ff149658.html,/?siju/.

[Kalman60]Kalman,R.E.1960.“A New Approach to Linear Filtering and Prediction Problems,”Transaction of the ASME—Journal of

Basic Engineering,pp.35-45(March1960).

[Lewis86]Lewis,Richard.1986.Optimal Estimation with an Introduction to Stochastic Control Theory,John Wiley&Sons,Inc.

[Maybeck79]Maybeck,Peter S.1979.Stochastic Models,Estimation,and Control,Volume1,Academic Press,Inc.

[Sorenson70]Sorenson,H.W.1970.“Least-Squares estimation:from Gauss to Kalman,”IEEE Spectrum,vol.7,pp.63-68,July

1970.

17

卡尔曼滤波器及其简matlab仿真

卡尔曼滤波器及其简matlab仿真

卡尔曼滤波器及其简matlab仿真 一、卡尔曼滤波的起源 谈到信号的分析与处理,就离不开滤波两个字。通常,信号的频谱处于有限的频率范围内,而噪声的频谱则散布在很广的频率范围内,为了消除噪声,可以进行频域滤波。但在许多应用场合,需要直接进行时域滤波,从带噪声的信号中提取有用信号。虽然这样的过程其实也算是对信号的滤波,但其所依据的理论,即针对随机信号的估计理论,是自成体系的。人们对于随机信号干扰下的有用信号不能“确知”,只能“估计”。为了“估计”,要事先确定某种准则以评定估计的好坏程度。 1960年卡尔曼发表了用递归方法解决离散数据线性滤波问题的论文A New Approach to Linear Filtering and Prediction Problems (线性滤波与预测问题的新方法),在这篇文章里一种克服了维纳滤波缺点的新方法被提出来,这就是我们今天称之为卡尔曼滤波的方法。卡尔曼滤波应用广泛且功能强大,它可以估计信号的过去和当前状态甚至能估计将来的状态即使并不知道模型的确切性质。 其基本思想是以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值。算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。 对于解决很大部分的问题,它是最优,效率最高甚至是最有用的。它的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 卡尔曼滤波不要求保存过去的测量数据,当新的数据到来时,根据新的数据和前一时刻的储值的估计,借助于系统本身的状态转移方程,按照一套递推公式,即可算出新的估值。卡尔曼递推算法大大减少了滤波装置的存储量和计算量,并且突破了平稳随机过程的限制,使卡尔曼滤波器适用于对时变信号的实时处理。

基于FPGA的卡尔曼滤波器的设计

基于FPGA的卡尔曼滤波器的设计 时间:2010-04-12 12:52:33 来源:电子科技作者:米月琴,黄军荣西安电子科技大学摘要:针对电路设计中经常碰到数据的噪声干扰现象,提出了一种Kalman滤波的FPGA实现方法。该方法采用了TI公司的高精度模数转换器ADSl25l以及Altera公司的EPlCl2,首先用卡尔曼滤波算法 设计了一个滤波器,然后将该滤波器分解成简单的加、减、乘、除运算。通过基于FPGA平台的硬件与 软件的合理设计,成功地实现了数据噪声的滤除设计,并通过实践仿真计算,验证了所实现滤波的有效性。 关键词:卡尔曼;FPGA;最小方差估计 卡尔曼滤波是一个“Optimal Recursive Data Processing Algorithm(最优化自回归数据处 理算法)”,对于解决很大部分的问题,是最优化的,效率最高甚至是最有用的。传统的卡尔曼滤波是 在DSP上实现的。但是DSP成本相对较高,而且指令是串行执行的,不能满足有些要求较高的场合。而FPGA由于其硬件结构决定了它的并行处理方式,无论在速度还是实时性都更胜一筹。文中以基于FPGA 器件和A/D转换器的数据采集系统为硬件平台,进行了卡尔曼滤波算法设计,详述了基于FPGA的卡尔 曼滤波器的设计实现。 1 卡尔曼滤波算法 工程中,为了了解工程对象(滤波中称为系统)的各个物理量(滤波中称为状态)的确切数值,或为了 达到对工程对象进行控制的目的,必须利用测量手段对系统的各个状态进行测量。但是,量测值可能仅 是系统的部分状态或是部分状态的线性组合,且量测值中有随机误差(常称为量测噪声)。最优估计就是 针对上述问题的一种解决方法。它能将仅与部分状态有关的测量进行处理,得出从统计意义上讲误差最 小的更多状态的估值。误差最小的标准常称为估计准则,根据不同的估计准则和估计计算方法,有各种 不同的最优估计,卡尔曼滤波是一种递推线性最小方差估计的最优估计。 系统的状态方程可设定为 式(3)为系统噪声。设设备的量测噪声为Vk,系统得量测方程为

卡尔曼滤波器及其简matlab仿真.

卡尔曼滤波器及其简matlab仿真 一、卡尔曼滤波的起源 谈到信号的分析与处理,就离不开滤波两个字。通常,信号的频谱处于有限的频率范围内,而噪声的频谱则散布在很广的频率范围内,为了消除噪声,可以进行频域滤波。但在许多应用场合,需要直接进行时域滤波,从带噪声的信号中提取有用信号。虽然这样的过程其实也算是对信号的滤波,但其所依据的理论,即针对随机信号的估计理论,是自成体系的。人们对于随机信号干扰下的有用信号不能“确知”,只能“估计”。为了“估计”,要事先确定某种准则以评定估计的好坏程度。 1960年卡尔曼发表了用递归方法解决离散数据线性滤波问题的论文A New Approach to Linear Filtering and Prediction Problems(线性滤波与预测问题的新方法),在这篇文章里一种克服了维纳滤波缺点的新方法被提出来,这就是我们今天称之为卡尔曼滤波的方法。卡尔曼滤波应用广泛且功能强大,它可以估计信号的过去和当前状态甚至能估计将来的状态即使并不知道模型的确切性质。 其基本思想是以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值。算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。 对于解决很大部分的问题,它是最优,效率最高甚至是最有用的。它的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 卡尔曼滤波不要求保存过去的测量数据,当新的数据到来时,根据新的数据和前一时刻的储值的估计,借助于系统本身的状态转移方程,按照一套递推公式,即可算出新的估值。卡尔曼递推算法大大减少了滤波装置的存储量和计算量,并且突破了平稳随机过程的限制,使卡尔曼滤波器适用于对时变信号的实时处理。 二、卡尔曼滤波的原理

几种卡尔曼滤波算法理论

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

维纳最速下降法滤波器卡尔曼滤波器设计及Matlab仿真

信息融合大作业 ——维纳最速下降法滤波器,卡尔曼滤波器设计及Matlab仿真 1.滤波问题浅谈 估计器或滤波器这一术语通常用来称呼一个系统,设计这样的系统是为了从含有噪声的数据中提取人们感兴趣的,接近规定质量的信息。由于这样一个宽目标,估计理论应用于诸如通信、雷达、声纳、导航、地震学、生物医学工程、 金融工程等众多不同的领域。例如,考虑一个数字通信系统,其基本形式由发

射机、信道和接收机连接组成。发射机的作用是把数字源(例如计算机)产生的0、1符号序列组成的消息信号变换成为适合于信道上传送的波形。而由于符号间干扰和噪声的存在,信道输出端收到的信号是含有噪声的或失真的发送信号。接收机的作用是,操作接收信号并把原消息信号的一个可靠估值传递给系统输出端的某个用户。随着通信系统复杂度的提高,对原消息信号的还原成为通信系统中最为重要的环节,而噪声是接收端需要排除的最主要的干扰,人们也设计出了针对各种不同条件应用的滤波器,其中最速下降算法是一种古老的最优化技术,而卡尔曼滤波器随着应用条件的精简成为了普适性的高效滤波器。2.维纳最速下降算法滤波器 2.1 最速下降算法的基本思想 考虑一个代价函数,它是某个未知向量的连续可微分函数。函数 将的元素映射为实数。这里,我们要寻找一个最优解。使它满足如下条件 (2.1) 这也是无约束最优化的数学表示。 特别适合于自适应滤波的一类无约束最优化算法基于局部迭代下降的算法: 从某一初始猜想出发,产生一系列权向量,使得代价函数在算法的每一次迭代都是下降的,即 其中是权向量的过去值,而是其更新值。 我们希望算法最终收敛到最优值。迭代下降的一种简单形式是最速下降法,该方法是沿最速下降方向连续调整权向量。为方便起见,我们将梯度向量表示为

扩展卡尔曼滤波器(EKF)进行信号处理及信号参数估计

% 扩展卡尔曼滤波器估计单相电压幅值、相位、频率参数(含直流)function test2_EKF close all; clc; tic; %计时 %模型:y=A0+A1*cos(omega*t+phy1) %离散化:y(k)=A0(k)+A1(k)*cos(omega(k)*k*Ts+phy1(k)) %状态变量:x1(k)=A0(k),x2(k)=omega(k),x3(k)=A1(k)*cos(omega(k)*k*Ts+phy1(k) ),x4(k)=A1(k)*sin(omega(k)*k*Ts+phy1(k)) %下一时刻状态变量为(假设状态不突变):A0(k+1)=A0(k),A1(k+1)=A1(k),omega(k+1)=omega(k),phy1(k+1)=phy1 (k); %则对应状态为:x1(k+1)=x1(k),x2(k+1)=x2(k),x3(k+1)=x3(k)*cos(x2(k)*Ts)- x4(k)*sin(x(2)*Ts),x4(k+1)=x3(k)*sin(x2(k)*Ts)+x4(k)*cos(x(2)*Ts); %状态空间描述:X(k+1)=f(X(k))+W(k);y(k)=H*X(k)+v(k) %f(X(k))=[x1(k);x2(k);x3(k)*cos(x2(k)*Ts)- x4(k)*sin(x(2)*Ts);x3(k)*sin(x2(k)*Ts)+x4(k)*cos(x(2)*Ts)] %偏导(只求了三个):f`(X(k))=[1,0,0;0,1,0;0,-x3(k)*Ts*sin(x2(k)*Ts)-x4(k)*Ts*cos(x2(k)*Ts),cos(x2(k)*Ts);0,x3(k)*Ts*cos(x2(k)*Ts)- x4(k)*Ts*sin(x2(k)*Ts),sin(x2(k)*Ts)]

直流电机运行状态的卡尔曼滤波估计器设计.doc

二 〇 一 五 年 六 月 题 目:直流电机运行状态的卡尔曼滤波估计器设计 学生姓名:张傲 学 院:电力学院 系 别:电力系 专 业:风能与动力工程 班 级:风能11-1 指导教师:董朝轶 教授

摘要 卡尔曼滤波是一个迭代自回归算法,对于连续运动状态用中的大部分问题它都能够给出最优的预测。它已经广泛应用了近半个世纪,例如数据的融合,机械的导航乃至军用雷达的导航等等。卡尔曼滤波一般用于动态数据的处理,是从混沌的信号中提取有用信号消除误差的参数估计法。卡尔曼滤波是依据上一个估计数值和当下的检测数据运用递推估计算出当前的估计值。通过状态方程运用递推的方法进行估计,可以建立物体运动的模型。本文采用的工程设计对运行状态下的直流电机进行参数的计算和校验。而且直流电机的调节性能非常好只需要加上电阻调压就可以了,而且启动曲线非常好,启动的转矩大适合高精度的控制。而交流电机调速需要变频,控制相对复杂一些,而对于设计无论是哪种电机都不影响结果,所以本实验采用直流电机。简单来说卡尔曼滤波就是对被观测量进行一个物理的建模,目的是用‘道理’来约束观测结果,减少噪声的影响。因此卡尔曼滤波是根据一个事物的当前状态预测它的下一个状态的过程。 此设计主要是通过对直流电机的数学模型利用MATLAB来设计卡尔曼滤波估计,进行仿真编程建模,进而对系统进行评估,并且分析估计误差。 关键词:卡尔曼滤波器;直流电机;MATLAB

Abstract Kalman filter is an iterative autoregression algorithm for continuous motion of most of the problems with it are able to give the best prediction. And it has been widely used for nearly half a century, such as the integration of data, as well as military machinery of navigation radar navigation, and so on. Kalman filter is generally used to process dynamic data, extract useful signal parameter estimation method to eliminate errors from the chaotic signal. Kalman filter is based on an estimate on the value and the current detection data is calculated using recursive estimation current estimates. By using recursive state equation method to estimate the movement of objects can be modeled. The paper describes the engineering design of the DC motor running state parameter calculation and verification. The DC motor performance and adjust very well simply by adding resistance regulator on it, and start curve is very good, start torque for precision control. The required frequency AC motor speed control is relatively complicated, and for the design of either the motor does not affect the outcome.In order to facilitate learning, so wo use the DC motor. Simply the Kalman filter is to be observables conduct a physical modeling; the purpose is to use 'sense' to restrict the observations to reduce the influence of noise. Therefore, the Kalman filter is based on the current state of things predict its next state of the process. This design is mainly through the DC motor mathematical model using MATLAB to design the Kalman filter estimation, simulation modeling program, and then to evaluate the system and analyze the estimation error. Keywords:Kalman filter; DC;MATLAB

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

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

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

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

卡尔曼滤波器综述

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

卡尔曼滤波器

卡尔曼滤波器 来这里几个月,发现有些问题很多人都很感兴趣。所以在这里希望能尽自己能力跟大家讨论一些力所能及的算法。现在先讨论一下卡尔曼滤波器,如果时间和能力允许,我还希望能够写写其他的算法,例如遗传算法,傅立叶变换,数字滤波,神经网络,图像处理等等。 因为这里不能写复杂的数学公式,所以也只能形象的描述。希望如果哪位是这方面的专家,欢迎讨论更正。 卡尔曼滤波器– 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.wendangku.net/doc/ff149658.html,/~welch/media/pdf/Kalman1960.pdf。 简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 2.卡尔曼滤波器的介绍 (Introduction to the Kalman Filter) 为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。 在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。

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

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

关于卡尔曼滤波器的一个简单介绍

关于卡尔曼滤波器的一个简单介绍 在实际生产过程中,我们经常需要使用某种仪器测量某一物理参数。比如,用一台仪器测量大气中一氧化碳的浓度。由于测量误差永远存在,使得这样两个问题非常突出,首先,是否存在某个计算方法,能够从含有误差的测量结果中获得比较接近真实值的结果;其次,如何证明这样的结果是最优的,也就是说有没有这样一种数学方法,经过其进行处理后得到的测量结果是最接近真实值的。 为了消除测量误差,人们首先想到的方法是取平均值。通过对于同一物理量的多次测量,抵消可能存在的测量误差,从而得到真实值。但是,通过生产实践,人们很快发现这样的测量方法并不是最优的。如果参与平均值计算的数据量太小,就达不到抵消测量误差的目的,如果参与计算的数据量太多,不仅完全消除了可能的物理量变化,而且实现起来非常麻烦。 1960年,匈牙利数学家卡尔曼(Rudolf Emil Kalman,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位,1957年于哥伦比亚大学获得博士学位)在他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)中提出一种计算方法,后来被称为卡尔曼滤波器。这种滤波器比较简单,但是对于绝大多数类似本文开头提出的问题,可以证明,它得出的结果是最优的。卡尔曼滤波器的最大优势是它非常简单,非常容易实现。故而在各领域广泛应用超过三十年。 下面简单介绍卡尔曼滤波器,为了便于阅读,尽量少使用数学公式。下面的用词不是非常严格的。 假如,我们需要用一个温度计测量一个房间的温度。每个1秒钟从温度计上读取一个数值。假设这个房间的真实温度是25度。 由于温度计本身有测量误差,我们得到的测量值是围绕25度上下波动的一组数值。“围绕”这一特性是符合我们的直观感受的。也就是说虽然温度计上的读数在不停的变化,但是我们知道温度计上出现26度或24度的可能性要比出现30度或20度的可能性大。这种特性在数学上被称为高斯分布。当有很多因素影响测量结果,而每种干扰因素都不起主导作用时,测量的结果呈现高斯分布。对于温度计来讲,制造工艺,空气扰动,我们读数时候的误差都可能影响测量结果。所以,温度计的读取结果是符合高斯分布的。高斯分布有两个参数,一个叫做期望,在这里可以等同于平均值,一个叫做方差。方差反映了数据的集中程度。比如一个温度计测量的结果分布在24到26度之间,另一个温度计测量结果在20到30度之间,显然,前一个温度计更好一些。它的数据方差就比较小。这里假设我们温度计的方差是3。于是,温度计的测量结果就是期望是25,方差是3的一组数据。 另外,我们可以根据经验猜测一下房间的温度(就好像把自己当成一个人体温度计),比如,我们猜测房间的温度是23度,当然,我们自己猜测的结果是有方差的,我们假设这个方差是4,于是根据人的感觉,测量结果是期望是23,方差是4的一组数据。 然后,由经验我们知道房间温度变化不大,基本可以认为,这一秒的温度和下一秒的温度是相等的。 现在,在第1秒,我们有了两个值,一个是温度计上显示的数据,25。一个是我们自己 根据感觉得出来的数据,23。那么相信谁呢?这里有一个数学公式 2 2 22 3 34 g k= + ,可以算出 kg=0.6,于是25×0.6+23×(1-0.6)=24.2,这个24.2就是我们在第1秒得到的测量结果。也就是说第1秒的温度是24.2度。 现在,我们进入了第2秒,这时,由于我们已经知道了第1秒的温度是24.2度,所以,

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

MATLAB 对卡尔曼滤波器的仿真实现 刘丹,朱毅,刘冰 武汉理工大学信息工程学院,武汉(430070) E-mail :liudan_ina@https://www.wendangku.net/doc/ff149658.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()(?

线性离散卡尔曼滤波器

线性离散卡尔曼滤波公式 两种数学推导方法的比较 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 --------=Φ==+

卡尔曼滤波的原理说明(通俗易懂)

卡尔曼滤波的原理说明(通俗易懂) 以下是为大家整理的卡尔曼滤波的原理说明(通俗易懂)的相关范文,本文关键词为尔曼,滤波,原理,说明,通俗易懂,尔曼,滤波,原理,说明,学,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在综合文库中查看更多范文。 卡尔曼滤波的原理说明 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!

卡尔曼全名RudolfemilKalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《AnewApproachtoLinearFilteringandpredictionproblems》(线性滤波与预测问题的新方法)。如果对这编论文有兴趣,可以到这里的地址下载:https://www.wendangku.net/doc/ff149658.html,/~welch/kalman/media/pdf/Kalman1960.pdf 简单来说,卡尔曼滤波器是一个“optimalrecursivedataprocessingalgorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 2.卡尔曼滤波器的介绍 (IntroductiontotheKalmanFilter) 为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。 在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。

卡尔曼滤波器介绍外文翻译

毕业设计(论文)外文资料翻译 系 : 电气工程学院 专 业: 电子信息科学与技术 姓 名: 周景龙 学 号: 0601030115 外文出处: Department of Computer Science University of North Carolina at Chapel Hill Chapel Hill,NC27599-3175 附 件:1.外文资料翻译译文;2.外文原文。 (用外文写)

卡尔曼滤波器介绍 摘要 在1960年,卡尔曼出版了他最著名的论文,描述了一个对离散数据线性滤波问题的递归解决方法。从那以后,由于数字计算的进步,卡尔曼滤波器已经成为广泛研究和应用的主题,特别在自动化或协助导航领域。 卡尔曼滤波器是一系列方程式,提供了有效的计算(递归)方法去估计过程的状态,是一种以平方误差的均值达到最小的方式。滤波器在很多方面都很强大:它支持过去,现在,甚至将来状态的估计,而且当系统的确切性质未知时也可以做。 这篇论文的目的是对离散卡尔曼滤波器提供一个实际介绍。这次介绍包括对基本离散卡尔曼滤波器推导的描述和一些讨论,扩展卡尔曼滤波器的描述和一些讨论和一个相对简单的(切实的)实际例子。 离散卡尔曼滤波器 在1960年,卡尔曼出版了他最著名的论文,描述了一个对离散数据线性滤波问题的递归解决方法[Kalman60]。从那以后,由于数字计算的进步,卡尔曼滤波器已经成为广泛研究和应用的主题,特别在自动化或协助导航领域。第一章讲述了对卡尔曼滤波器非常“友好的”介绍[Maybeck79],而一个完整的介绍可以在[Sorenson70]找到,也包含了一些有趣的历史叙事。更加广泛的参考包括Gelb74;Grewal93;Maybeck79;Lewis86;Brown92;Jacobs93]. 被估计的过程 卡尔曼滤波器卡用于估计离散时间控制过程的状态变量 n x ∈?。这个离散 时间过程由以下离散随机差分方程描述: 111k k k k x Ax bu w ---=++ (1.1) 测量值m z ∈?,k k k z Hx v =+ (1.2) 随机变量k w 和k v 分别表示过程和测量噪声。他们之间假设是独立的,正态分布的高斯白噪: ()~(0)p w N Q , (1.3) ()~(0)p v N R , (1.4) 在实际系统中,过程噪声协方差矩阵Q 和观测噪声协方差矩阵R 可能会随每次迭代计算而变化。但在这儿我们假设它们是常数。 当控制函数1k u - 或过程噪声1k w -为零时,差分方程1.1中的n n ? 阶增益矩阵A 将过去k-1 时刻状态和现在的k 时刻状态联系起来。实际中A 可能随时间变化,但

kalman滤波器算法的详细介绍

kalman滤波器 一.什么是卡尔曼滤波器 卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯, 我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。 二.卡尔曼滤波器算法的介绍 以下是卡尔曼滤波器核心的5个式子。 X(k|k-1)=A X(k-1|k-1)+B U(k) ………(1)由(K-1)时刻的最优值X(k-1|k-1)得出K 时刻系统的预测值X(k|k-1),U(k)为控制量。 P(k|k-1)=A P(k-1|k-1) A’+Q ………(2)由(K-1)时刻最优值的偏差P(k-1|k-1) 及系统本身偏差Q得到K时刻系统预测值的偏差P(k|k-1) X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) ………(3)由K时刻系统预测值X(k|k-1)及测量值Z(K)还有卡尔曼增益Kg(k)得到K时刻系统的最优值估计,即X(k|k) Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……… (4)由K时刻系统预测值的偏差P(k|k-1)及预测值误差R得到卡尔曼增益Kg(k) P(k|k)=(I-Kg(k) H)P(k|k-1) …………(5)由K时刻系统预测值的偏差P(k|k-1)及卡尔曼增益得到K时刻最优值X(k|k)的估计偏差P(k|k) 以上介绍是针对单值卡尔曼滤波的预测,若为多值,则相应Q,R等应为矩阵形式。三.卡尔曼滤波的Matlab仿真 源程序如下: clear clc; N=600;%采样点的个数 CON=25;%室内温度的理论值 x=zeros(1,N);%用来记录温度的最优化估算值 y=randn(1,N)+CON;%温度计的观测值,其中叠加了噪声 x(1)=20;%为x(k)赋初值 p(1)=2;%x(1)对应的协方差 Q=cov(randn(1,N));%过程噪声的协方差 R=cov(randn(1,N));%测量噪声的协方差 for k=2:N%循环里面是卡尔曼滤波的具体过程 x(k)=x(k-1); p(k)=p(k-1)+Q; Kg(k)=p(k)/(p(k)+R);%Kg为Kalman Gain,卡尔曼增益

相关文档
相关文档 最新文档