卡尔曼滤波器介绍
Greg Welch1and Gary Bishop2
TR 95-041
Department of Computer Science
University of North Carolina at Chapel Hill3
Chapel Hill, NC 27599-3175
翻译:姚旭晨
更新日期: 2006年7月24日,星期一
中文版更新日期:2007年1月8日,星期一
摘要
1960年,卡尔曼发表了他著名的用递归方法解决离散数据线性滤波
问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
的
论文
政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载
。从那以后,得益于数字计算技术的进步,卡尔曼滤波器
已成为推广研究和应用的主题,尤其是在自主或协助导航领域。
卡尔曼滤波器由一系列递归数学公式描述。它们提供了一种高效可
计算的方法来估计过程的状态,并使估计均方误差最小。卡尔曼滤波
器应用广泛且功能强大:它可以估计信号的过去和当前状态,甚至能
估计将来的状态,即使并不知道模型的确切性质。
这篇文章介绍了离散卡尔曼理论和实用方法,包括卡尔曼滤波器及
其衍生:扩展卡尔曼滤波器的描述和讨论,并给出了一个相对简单的
带图实例。
1welch@cs.unc.edu, http://www.cs.unc.edu/~welch
2gb@cs.unc.edu, http://www.cs.unc.edu/~gb
3北卡罗来纳大学教堂山分校,译者注。
1
Welch & Bishop,卡尔曼滤波器介绍 2
1 离散卡尔曼滤波器
1960年,卡尔曼发表了他著名的用递归方法解决离散数据线性滤波问
题的论文 [Kalman60] 。从那以后,得益于数字计算技术的进步,卡尔曼
滤波器已成为推广研究和应用的主题,尤其是在自主或协助导航领域。
[Maybeck79]的第一章给出了一个非常“友好”的介绍,更全面的讨论可以
参考 [Sorenson70],后者还包含了一些非常有趣的历史故事。更广泛的参
考包括 [Gelb74, Grewal93, Maybeck79, Lewis86, Brown92, Jacobs93]。
被估计的过程信号
卡尔曼滤波器用于估计离散时间过程的状态变量 x 2
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
uk¡1或过程激励噪声 wk¡1为零时,差分方程1.1中的 n£ n
阶增益矩阵 A将上一时刻 k¡ 1的状态线性映射到当前时刻 k的状态。实际
中 A可能随时间变化,但在这儿假设为常数。n£ l阶矩阵 B代表可选的控
制输入 u 2
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
来选择系数,我们
通常(统计学上的)都可以通过调整滤波器系数来获得更好的性能。调整
2即将1.12和1.13式的结果代入1.9和1.10式,译者注。
UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 7
通常离线进行,并经常与另一个(确定无误的)在线滤波器对比,这个过
程称为系统识别。
在讨论的结尾,我们指出在 Q和 R都是常数的条件下,过程估计误差
协方差 R和卡尔曼增益 Kk 都会快速收敛并保持为常量(参照图1-2中的更
新方程)。若实际情况也如此,那么滤波器系数便可以通过预先离线运行
滤波器计算,或者,比如说,用 [Grewal93]中的方法计算 Pk 的稳定值。
实际中,观测误差 R尤其不易保持不变。例如,用我们的光电跟踪仪
观察挂在房间顶棚面板上的信号灯时,较近的信号灯会比较远的信号灯具
有较小的观测噪声。不仅是观测噪声会变化,有时过程激励噪声协方差 Q
也会随着滤波器运行而动态变化——这样 Q变成了 Qk ——来适应不同的
动态状态。例如,在跟踪三维虚拟环境中用户头部位置时,如果用户头部
缓慢移动,我们会减小 Qk 的幅度,如果移动开始快速变化,则增加幅度。
在这些情况下, Qk 的幅度要根据用户的移动方向和模型的不确定性来选
择。
2 扩展卡尔曼滤波器
被估计的过程信号
如第一节所述,卡尔曼滤波器估计一个用线性随机差分方程描述的离
散时间过程的状态变量 x 2
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
了扩展卡尔曼滤波器的一种变体,使得通过非线性转换后的随机变
量仍具有正态分布特性。
滤波器的计算原型
为了估计一个具有非线性差分和量测关系的过程,我们先给出式2.3和
式2.4的一个新的线性化表示:
xk ¼ ~xk +A(xk¡1 ¡ x^k¡1) +Wwk¡1; (2.5)
zk ¼ ~zk +H(xk ¡ ~xk)V vk: (2.6)
其中,
² xk 和 zk 是状态向量和观测向量的真值,
² ~xk 和 ~zk 来自2.3式和2.4式,是状态向量和观测向量的观测值,
² x^k 是 k时刻状态向量的后验估计,
² 类似于1.3式和1.4式,随机变量 wk 和 vk 表示过程激励噪声和观测噪
声。
² A是 f 对 x的偏导的雅可比矩阵:
A[i;j] =
@f[i]
@x[j]
(x^k¡1; uk¡1; 0);
² W 是 f 对 w的偏导的雅可比矩阵:
W[i;j] =
@f[i]
@w[j]
(x^k¡1; uk¡1; 0);
² H 是 h对 x的偏导的雅可比矩阵:
H[i;j] =
@h[i]
@x[j]
(~xk; 0);
UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 9
² V 是 h对 v的偏导的雅可比矩阵:
V[i;j] =
@h[i]
@v[j]
(~xk; 0):
简单起见,我们并没有在 A;W;H; V 中加入下标 k ,但它们实际上是
随时间变化的。
现在我们定义一个新的预测误差的表达式:
~exk ´ xk ¡ ~xk; (2.7)
和观测变量的残余,
~ezk ´ zk ¡ ~zk; (2.8)
请记住我们在实际中无法获得2.7式中的 xk ,它是状态向量的真值,也
就是我们要估计的对象。同样,我们也无法获得2.8式中的 zk ,它是我们用
来估计 xk 的观测向量的真值。由2.7式和2.8式我们可以写出误差过程的表
达式:
~exk ¼ A(xk¡1 ¡ x^k¡1) + ²k; (2.9)
~ezk ¼ H~exk + ´k; (2.10)
²k 和 ´k 代表具有零均值和协方差矩阵WQW T 和 V RV T 的独立随机
变量, Q和 R分别来自1.3式和1.4式。
注意2.9式和2.10式是线性的,它们很像离散卡尔曼滤波器中的状态差
分方程1.1式和量测方程1.2式。这提示我们用2.8式中的观测残余真值 ~ezk 和
第二个(假设的)卡尔曼滤波器去估计2.9式中的预测误差 ~exk 。估计的结
果记为 e^k ,结合2.7式可以获得初始非线性过程的后验状态估计:
x^k = ~xk + e^k: (2.11)
式2.9和式2.10中的随机变量具有如下概率分布(参看前面的脚注):
p(~exk) » N(0; E[~exk~eTxk ])
p(²k) » N(0;WQkW T )
p(´k) » N(0; V RkV T )
令 e^k 的估计值为零,由以上近似,可以写出估计 e^k 的卡尔曼滤波器表
达式:
e^k = Kk~ezk : (2.12)
将2.8式和2.12式代回2.11式,我们看到实际上并不需要第二个(假设
的)卡尔曼滤波器:
UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 10
x^k = ~xk +Kk~ezk
= ~xk +Kk(zk ¡ ~zk) (2.13)
式2.13现在可以用作扩展卡尔曼滤波器的观测变量的更新。其中 ~xk 和
~zk 来自2.3式和2.4式,将1.11式中的观测误差协方差进行适当的替换可以得
到卡尔曼增益Kk 。
表2-1和表2-2给出了扩展卡尔曼滤波器的全部表达式。注意我们用 x^¡k
替换了 ~xk 来表达先验概率的意思,并且雅可比矩阵 A;W;H; V 也被加上了
下标,显式地表明了它们在不同的时刻具有变化的值,每次需要被重复计
算。
表 2-1: 扩展卡尔曼滤波器时间更新方程
x^¡k = f(x^k¡1; uk¡1; 0) (2.14)
P¡k = AkPk¡1A
T
k +WkQk¡1W
T
k (2.15)
就像基本的离散卡尔曼滤波器,表2-1中的时间更新方程将状态和协方
差估计从 k ¡ 1 时刻向前推算到 k 时刻。2.14式中的 f 来自式2.3, Ak 和
Wk 是 k时刻的过程雅可比矩阵, Qk 是式1.3中 k时刻的过程激励噪声协方
差矩阵。
表 2-2: 扩展卡尔曼滤波器状态更新方程
Kk = P¡k H
T
k (HkP
¡
k H
T
k + VkRkV
T
k )
¡1 (2.16)
x^k = x^¡k +Kk(zk ¡ h(x^¡k ; 0)) (2.17)
Pk = (I ¡KkHk)P¡k (2.18)
就像基本的离散卡尔曼滤波器,表2-2中的测量更新方程利用观测值变
量 zk 的值校正状态估计和协方差估计。2.17式中的 h来自式2.4, Hk 和 V
是 k 时刻的测量雅可比矩阵, Rk 是式1.4中 k 时刻的观测噪声协方差矩阵
(注意下标 k表示 Rk 随时间变化)。
扩展卡尔曼滤波器的基本运行流程与图1-1中的线性离散卡尔曼滤波器
相同。图2-1将图1-1与表2-1和表2-2中的表达式结合。
UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 11
图 2-1: 扩展卡尔曼滤波器工作原理图,由图1-1和表2-1及表2-2结合得到。
扩展卡尔曼滤波器的一个重要特性是卡尔曼增益 Kk 的表达式中的雅可
比矩阵 Hk 能够正确地传递或“加权”观测信息中的有用部分。例如,如果
通过 h观测变量 zk 和状态变量没有一一对应的关系,雅可比矩阵 Hk 便通
过改变卡尔曼增益从而使得残余 zk ¡ h(x^¡k ; 0)中真正作用于状态变量的部
分被加权。当然,如果整个观测中观测变量 zk 和状态变量通过 h都没有一
个一一对应的关系,那么滤波器很快就会发散。这种情况下过程是不可观
测的。
3 卡尔曼滤波器实践:估计随机常数
前两节我们讨论了离散卡尔曼滤波器和扩展卡尔曼滤波器的基本形
式。在这儿,我们给出一个简单的例子以帮助读者更好地理解卡尔曼
滤波器的实现和性能。 Andrew Straw在 http://www.scipy.org/Cookbook/
KalmanFiltering上给出了使用Python/SciPy的具体实现方法。
过程模型
在这个简单的例子里我们估计一个常数随机变量,比如电压。假设
我们可以测量这个常数的幅值,但观测幅值中掺入了幅值均方根(Root-
UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 12
Mean-Square,RMS)为 0:1伏的白噪声(比如在模数转换器不是很准确的
情况下)。下面的线性差分方程描述了整个过程:
xk = Axk¡1 +Buk¡1 + wk
= xk¡1 + wk ;
观测变量 z 2 <1为:
zk = Hxk + vk
= xk + vk :
过程的状态不随时间变化,所以 A = 1;没有控制输入,所以 u = 0;
包含噪声的观测值是状态变量的直接体现,所以 H = 1。(注意有些地方
我们忽略了下标k ,因为对应的系数在这个例子中为常数。)
滤波器方程和参数
时间更新方程为:
x^¡k = x^k¡1;
P¡k = Pk¡1 +Q:
测量更新方程为:
Kk = P¡k (P
¡
k +R)
¡1
=
P¡k
P¡k +R
; (3.1)
x^k = x^¡k +Kk(zk ¡ x^¡k );
Pk = (I ¡Kk)P¡k :
假设过程激励噪声方差 Q非常小, Q = 10¡5 (也可以令 Q = 0,但
是一个小的非零常数可以方便地调整滤波器参数,下面将会证明)。再假
设由经验我们知道随机常数的真值具有标准正态分布,因此我们令滤波器
的初始条件为零,即 x^k¡1 = 0。
类似地,我们要选择Pk¡1的初值P0。如果确定初始状态估计 x^0 = 0,
可以令 P0 = 0。但因为初始状态估计 x^0 并不确定,令 P0 = 0可能会使滤
波器一直产生 x^k = 0的结果。就像实验验证的那样, P0的选择并不关键,
几乎任何 P0 6= 0都会使滤波器最终收敛。在这里我们令 P0 = 1。
UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 13
模拟实验
首先我们令常标量 x = ¡0:37727 (因为 x 是真值所以并没有 ^ 符
号)。然后产生50个不同的观测值 zk ,其误差为正态分布,期望为0,标
准偏移为0.1(先前我们假设观测值掺进了幅值均方根为0.1伏的白噪声)。
我们本可以在滤波器运行时产生这些观测值,但预先准备好这些观测值然
后再使用在几组不同的模拟中可以让对照更有意义。
第一组实验中我们固定测量方差为 R = (0:1)2 = 0:01 。因为这正
好是预先产生的观测误差的方差的真值,所以在响应速度和估计方差方
面这组实验应该具有最好的性能。这在与第二、三组实验的对比中更能
显现出来。图3-1画出了第一组实验的结果。实线代表随机变量的真值
x = ¡0:37727,加号代表预先产生的观测噪声,剩下的曲线是滤波器的估
计结果。
0 10 20 30 40 50
Iteration
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0.0
V
o
lt
a
g
e
noisy measurements
a posteri estimate
truth value
图 3-1: 第一组实验: R = (0:1)2 = 0:01 。实线代表随机变量的真值
x = ¡0:37727,加号代表预先产生的观测噪声,剩下的曲线是滤波器的估
计结果。
前面讨论 P0的选择时我们提到过只要 P0 6= 0其取值并不是特别关键,
因为最终滤波器总要收敛。下面的图3-2给出了每次重复迭代后的 Pk 值。
第50次迭代后它已从最初的1下降到0.0002(平方伏特)了。
UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 14
0 10 20 30 40 50
Iteration
0.000
0.002
0.004
0.006
0.008
0.010
2 )
e
g
atl
o
V(
图 3-2: 第50次迭代后初始误差协方差 P¡k 已从最初的1下降到0.0002(平方
伏特)了。
第一节“滤波器系数和调制”中我们简单地讨论了改变或调整系数 Q
和 R 对性能的影响。图3-3和图3-4显示了将 R 增大或减少100倍的结果。
图3-3中观测方差扩大到100倍(也就是R = 1),因此滤波器收敛地更慢。
UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 15
0 10 20 30 40 50
Iteration
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0.0
V
o
lt
a
g
e
noisy measurements
a posteri estimate
truth value
图 3-3: 第二次实验: R = 1。滤波器对观测值的反应变慢,导致估计方差
减小。
图3-4中观测方差减小了100倍(也就是 R = 0:0001),因此滤波器收
敛地更快。
UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 16
0 10 20 30 40 50
Iteration
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0.0
V
o
lt
a
g
e
noisy measurements
a posteri estimate
truth value
图 3-4: 第三次实验: R = 0:0001。滤波器对观测值的反应变快,导致估计
方差增大。
对常数的估计相对比较直接,这样便清晰地显示了卡尔曼滤波器的工
作性能。特别是在图3-3中,估计值要比含噪声的观测值平滑很多,显著地
表明了卡尔曼滤波器的“滤波”特性。
UNC-Chapel Hill, TR 95-041, July 24, 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 [cited 14 November
1995]. Available from http://www.robots.ox.ac.uk/~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 the 1995 American Control
Conference, Seattle, Washington, Pages:1628-1632. Available
from http://www.robots.ox.ac.uk/~siju/work/publications/
ACC95 pr.zip.
Also see Simon Julier's home page at
http://www.robots.ox.ac.uk/~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 (March 1960).
[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, Volume 1, 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