logo资料库

卡尔曼滤波讲解.pdf

第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
资料共17页,剩余部分请下载后查看
卡尔曼滤波器介绍 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年7月16日,星期一 摘摘摘要要要 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 ∈ n 。这个离散时 间过程由以下离散随机差分方程描述: xk = Axk−1 + Buk−1 + wk−1, 定义观测变量 z ∈ m ,得到量测方程: zk = Hxk + vk. (1.1) (1.2) 随机信号 wk 和 vk 分别表示过程激励噪声1和观测噪声。假设它们为相 互独立,正态分布的白色噪声: p(w) ∼ N(0, Q), p(v) ∼ N(0, R). (1.3) (1.4) 实际系统中,过程激励噪声协方差矩阵 Q 和观测噪声协方差矩阵 R 可 能会随每次迭代计算而变化。但在这儿我们假设它们是常数。 当控制函数uk−1 或过程激励噪声 wk−1 为零时,差分方程1.1中的 n × n 阶增益矩阵 A 将过去 k − 1 时刻状态和现在的 k 时刻状态联系起来。实际中 A 可能随时间变化,但在这儿假设为常数。n × l 阶矩阵 B 代表可选的控制 输入 u ∈ l 的增益。量测方程1.2中的 m × n 阶矩阵 H 表示状态变量 xk 对 测量变量 zk 的增益。实际中 H 可能随时间变化,但在这儿假设为常数。 滤滤滤波波波器器器的的的计计计算算算原原原型型型 定义 ˆx− k ∈ n ( − 代表先验,ˆ代表估计)为在已知第 k 步以前状态情 况下第 k 步的先验状态估计。定义 ˆxk ∈ n 为已知测量变量 zk 时第 k 步的 后验状态估计。由此定义先验估计误差和后验估计误差: e− k ≡ xk − ˆx− k , ek ≡ xk − ˆxk 1原文为 process noise,本该翻译作过程噪声,由时间序列信号模型的观点,平稳随机序 列可以看成是由典型噪声源激励线性系统产生,故译作过程激励噪声。 UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 先验估计误差的协方差为: 后验估计误差的协方差为: P − k = E[e− k e− k T ], Pk = E[ekek T ], 3 (1.5) (1.6) 式1.7构造了卡尔曼滤波器的表达式:先验估计 ˆx− k 和加权的测量变量 k 之差的线性组合构成了后验状态估计 ˆxk 。式1.7的理论解 zk及其预测 H ˆx− 释请参看“滤波器的概率原型”一节。 ˆxk = ˆx− k + K(zk − H ˆx− k ) (1.7) 式1.7中测量变量及其预测之差 (zk − H ˆx− k ) 被称为测量过程的革新或残 余。残余反映了预测值和实际值之间的不一致程度。残余为零表明二者完 全吻合。 式1.7中 n × m 阶矩阵 K 叫做残余的增益或混合因数,作用是使1.6式 中的后验估计误差协方差最小。可以通过以下步骤计算 K :首先将1.7式 代入 ek 的定义式,再将 ek 代入1.6式中,求得期望后,将1.6式中的 Pk 对 K 求导。并使一阶导数为零从而解得 K 值。详细推导清参照 [Maybeck79, Brown92, Jacobs93] 。 K 的一种表示形式为: k H T + R)−1 Kk = P − k H T (HP − P − k H T HP − k H T + R = . (1.8) 由1.8式可知,观测噪声协方差 R 越小,残余的增益越大 K 越大。特别 地, R 趋向于零时,有: Kk = H−1. lim Rk→0 另一方面,先验估计误差协方差 P − 地, P − k 趋向于零时,有: k 越小,残余的增益 K 越小。特别 Kk = 0. lim P − k →0 增益 K 的另一种解释是随着测量噪声协方差 R 趋于零,测量变量 zk k 的权重越来越小。另一方面,随着先 k 趋于零,测量变量 zk 的权重越来越小,而 zk 的预测 的权重越来越大,而 zk 的预测 H ˆx− 验估计误差协方差 P − H ˆx− k 的权重越来越大。 UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 4 滤滤滤波波波器器器的的的概概概率率率原原原型型型解解解释释释 1.7式的解释来源于贝叶斯规则: ˆxk 的更新取决于在已知先前的测量变 k 的概率分布。卡尔曼滤波器表达式中包含 量 zk 的情况下 xk 的先验估计 ˆx− 了状态分布的前二阶矩。 E[xk] = ˆxk E[(xk − ˆxk)(xk − ˆxk)T ] = Pk. 后验状态估计1.7式反应了状态分布的均值(一阶矩)――如果条件 式1.3和1.4成立,均值的估计便是正态分布的。后验估计误差协方差1.6式反 映了状态分布的方差(二阶非中心矩)。在已知 zk的情况下, xk 的分布可 写为: p(xk|zk) ∼ N(E[xk], E[(xk − ˆxk)(xk − ˆxk)T ]) = N(ˆxk, Pk). 有 关 卡 尔 曼 滤 波 器 的 概 率 原 型 的 更 多 讨 论 , 请 参 考 [Maybeck79, Brown92, Jacobs93]。 离离离散散散卡卡卡尔尔尔曼曼曼滤滤滤波波波器器器算算算法法法 我们先给出卡尔曼滤波器的总体性概述,然后讨论方程式的具体细节 及其作用。 卡尔曼滤波器用反馈控制的方法估计过程状态:滤波器估计过程某一 时刻的状态,然后以(含噪声的)测量变量的方式获得反馈。因此卡尔曼 滤波器可分为两个部分:时间更新方程和测量更新方程。时间更新方程负 责及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间 状态构造先验估计。测量更新方程负责反馈――也就是说,它将先验估计 和新的测量变量结合以构造改进的后验估计。 时间更新方程也可视为预估方程,测量更新方程可视为校正方程。最 后的估计算法成为一种具有数值解的预估-校正算法,如图1-1所示。 UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 5 图 1-1: 离散卡尔曼滤波器循环更新图。时间更新方程将当前状态变量作为 先验估计及时地向前投射到测量更新方程,测量更新方程校正先验估计以 获得状态的后验估计。 表1-1和表1-2分别给出了时间更新方程和测量更新方程的具体形式。 表 1-1: 离散卡尔曼滤波器时间更新方程 ˆx− k = Aˆxk−1 + Buk−1 P − k = APk−1AT + Q (1.9) (1.10) 请再次注意表1-1中的时间更新方程怎样将状态估计 x− k 和协方差估计 P − k 从 k − 1 时刻向前推算到 k 时刻。 A 和 B 来自式1.1, Q 来自式1.3,滤 波器的初始条件在早先的引用中讨论过。 表 1-2: 离散卡尔曼滤波器状态更新方程 Kk = P − ˆxk = ˆx− k H T (HP − k H T + R)−1 k + Kk(zk − H ˆx− k ) Pk = (I − KkH)P − k (1.11) (1.12) (1.13) 测量更新方程首先做的是计算卡尔曼增益 Kk 。注意1.11式和1.8式是相 同的。其次便测量输出以获得 zk ,然后按1.12式(与1.7式相同)产生状态 的后验估计。最后按1.13式估计状态的后验协方差。 计算完时间更新方程和测量更新方程,整个过程再次重复。上一次计 UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 6 算得到的后验估计被作为下一次计算的先验估计2。这种递归推算是卡尔曼 滤波器最吸引人的特性之一――它比其它滤波器更容易实现:例如维纳滤 波器 [Brown92] ,每次估计必须直接计算全部数据,而卡尔曼滤波器每次只 根据以前的测量变量递归计算当前的状态估计。图1-2将表1-1和表1-2结合 显示了滤波器的整个操作流程。 图 1-2: 卡尔曼滤波器工作原理图,由图1-1和表1-1及表1-2结合得到。 滤滤滤波波波器器器系系系数数数及及及调调调整整整 滤波器实际实现时,测量噪声协方差 R 一般可以观测得到,是滤波器 的已知条件。观测测量噪声协方差 R 一般是可实现的(可能的),毕竟我 们要观测整个系统过程。因此通常我们离线获取一些系统观测值以计算测 量噪声协方差。 通常更难确定过程激励噪声协方差的 Q 值,因为我们无法直接观测到 过程信号 xk 。有时可以通过 Q 的选择给过程信号“注入”足够的不确定性 来建立一个简单的(差的)过程模型而产生可以接受的结果。当然在这种 情况下人们希望信号观测值是可信的。 在这两种情况下,不管我们是否有一个合理的标准来选择系数,我们 通常(统计学上的)都可以通过调整滤波器系数来获得更好的性能。调整 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 ∈ n 。但如果被估计的过程和(或)观测变量与 过程的关系是非线性的,那应怎么办?一些最著名和有趣的卡尔曼滤波应 用就是处理这些情况的。将期望和方差线性化的卡尔曼滤波器称作扩展卡 尔曼滤波器(Extended Kalman Filter),简称EKF。 同泰勒级数类似,面对非线性关系时,我们可以通过求过程和量测方 程的偏导来线性化并计算当前估计。我们将第一节中的公式换一种方式表 示。假设过程仍具有状态向量 x ∈ n ,但其状态方程已变为非线性随机差 分方程的形式。 观测变量 z ∈ m 为: xk = f(xk−1, uk−1, wk−1), (2.1) zk = h(xk, vk), (2.2) 随机变量 wk 和 vk 仍代表过程激励噪声和观测噪声。差分方程式2.1中 的非线性函数 f 将过去 k − 1 时刻状态与现在 k 时刻状态联系起来。量测方 程2.2中的驱动函数 uk 和零均值过程噪声 wk 是它的参数。非线性函数 h 反 映了状态变量 xk 和观测变量 zk 的关系。 实际中我们显然不知道每一时刻噪声 wk 和 vk 各自的值。但是,我们 可以将它们假设为零,从而估计状态向量和观测向量为: 和 ˜xk = f(ˆxk−1, uk−1, 0) ˜zk = h(˜xk, 0), (2.3) (2.4) UNC-Chapel Hill, TR 95-041, July 24, 2006
Welch & Bishop,卡尔曼滤波器介绍 8 其中, ˆxk 是过程相对前一时刻 k 的后验估计。 有一点非常重要,那就是扩展卡尔曼滤波器的一个基本缺陷:离散随 机变量的分布(或连续随机变量的密度)在经过非线性系统转化后不再是 正态的了。扩展卡尔曼滤波器其实就是一个通过线性化而达到渐进最优贝 叶斯决策的特殊状态估计器。[Julier96]中描述了一项有趣的研究,Julier et al. 设计了扩展卡尔曼滤波器的一种变体,使得通过非线性转换后的随机变 量仍具有正态分布特性。 滤滤滤波波波器器器的的的计计计算算算原原原型型型 为了估计一个具有非线性差分和量测关系的过程,我们先给出式2.3和 式2.4的一个新的线性化表示: xk ≈ ˜xk + A(xk−1 − ˆxk−1) + W wk−1, zk ≈ ˜zk + H(xk − ˜xk) + V vk. (2.5) (2.6) 其中, • xk 和 zk 是状态向量和观测向量的真值, • ˜xk 和 ˜zk 来自2.3式和2.4式,是状态向量和观测向量的近似值, • ˆxk 是 k 时刻状态向量的后验估计, • 类似于1.3式和1.4式,随机变量 wk 和 vk 表示过程激励噪声和观测噪 声。 • A 是 f 对 x 的偏导的雅可比矩阵: A[i,j] = ∂f[i] ∂x[j] (ˆxk−1, uk−1, 0), • W 是 f 对 w 的偏导的雅可比矩阵: (ˆxk−1, uk−1, 0), W[i,j] = ∂f[i] ∂w[j] • H 是 h 对 x 的偏导的雅可比矩阵: ∂h[i] ∂x[j] H[i,j] = (˜xk, 0), • V 是 h 对 v 的偏导的雅可比矩阵: ∂h[i] ∂v[j] V[i,j] = (˜xk, 0). UNC-Chapel Hill, TR 95-041, July 24, 2006
分享到:
收藏