资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
卡尔曼滤波器介绍摘要在1960年,卡尔曼出版了他最著名的论文,描述了一个对离散数据线性滤波问题的递归解决方法。从那以后,由于数字计算的进步,卡尔曼滤波器已经成为广泛研究和应用的主题,特别在自动化或协助导航领域。卡尔曼滤波器是一系列方程式,提供了有效的计算(递归)方法去估计过程的状态,是一种以平方误差的均值达到最小的方式。滤波器在很多方面都很强大:它支持过去,现在,甚至将来状态的估计,而且当系统的确切性质未知时也可以做。这篇论文的目的是对离散卡尔曼滤波器提供一个实际介绍。这次介绍包括对基本离散卡尔曼滤波器推导的描述和一些讨论,扩展卡尔曼滤波器的描述和一些讨论和一个相对简单的(切实的)实际例子。1 离散卡尔曼滤波器在1960年,卡尔曼出版了他最著名的论文,描述了一个对离散数据线性滤波问题的递归解决方法Kalman60。从那以后,由于数字计算的进步,卡尔曼滤波器已经成为广泛研究和应用的主题,特别在自动化或协助导航领域。第一章讲述了对卡尔曼滤波器非常“友好的”介绍Maybeck79,而一个完整的介绍可以在Sorenson70找到,也包含了一些有趣的历史叙事。更加广泛的参考包括Gelb74;Grewal93;Maybeck79;Lewis86;Brown92;Jacobs93.被估计的过程卡尔曼滤波器卡用于估计离散时间控制过程的状态变量。这个离散时间过程由以下离散随机差分方程描述: (1.1)测量值, (1.2)随机变量和分别表示过程和测量噪声。他们之间假设是独立的,正态分布的高斯白噪: (1.3) (1.4)在实际系统中,过程噪声协方差矩阵Q 和观测噪声协方差矩阵R 可能会随每次迭代计算而变化。但在这儿我们假设它们是常数。当控制函数 或过程噪声为零时,差分方程1.1中的 阶增益矩阵A 将过去 时刻状态和现在的时刻状态联系起来。实际中A 可能随时间变化,但在这儿假设为常数。 阶矩阵B 代表可选的控制输入 的增益。测量方程1.2中的 阶矩阵H 表示状态变量对测量变量的增益。实际中H 可能随时间变化,但在这儿假设为常数。滤波器的计算原型我们定义( -代表先验,代表估计)为在已知第k步以前的状态情况下,第k 步的先验状态估计。定义为已知测量变量时第k 步的后验状态估计。由此定义先验估计误差和后验估计误差: 先验估计误差的协方差为: (1.5)后验估计误差的协方差为: (1.6)式1.7构造了卡尔曼滤波器的表达式:先验估计 和加权的测量变量及其预测之差的线性组合构成了后验状态估计。式1.7的理论解释请参看“滤波器的概率原型”一节。 (1.7)式1.7中测量变量及其预测之差被称为测量过程的革新或残余。残余反映了预测值和实际值之间的不一致程度。残余为零则表明二者完全吻合。式1.7中 阶矩阵K 叫做残余的增益或混合因数,作用是使1.6式中的后验估计误差协方差最小。可以通过以下步骤计算K :首先将1.7式代入的定义式,再将代入1.6式中,求得期望后,将1.6式中的对K 求导。并使一阶导数为零从而解得K 值。详细推导清参照Maybeck79, Brown92, Jacobs93 。K 的一种表示形式为: (1.8)由1.8式可知,观测噪声协方差R 越小,残余的增益越大K 越大。特别地, R 趋向于零时,有: 。另一方面,先验估计误差协方差 越小,残余的增益K 越小。特别地, 趋向于零时,有: 。增益K 的另一种解释是随着测量噪声协方差R 趋于零,测量变量的权重越来越大,而的预测的权重越来越小。另一方面,随着先验估计误差协方差趋于零,测量变量的权重越来越小,而的预测的权重越来越大。滤波器的概率原型解释1.7式的解释来源于贝叶斯规则:的更新取决于在已知先前的测量变量 的情况下的先验估计 的概率分布。卡尔曼滤波器表达式中包含了状态分布的前二阶矩。 后验状态估计1.7式反应了状态分布的均值(一阶矩)如果条件式1.3和1.4成立,均值的估计便是正态分布的。后验估计误差协方差1.6式反映了状态分布的方差(二阶非中心矩)。在已知的情况下,的分布可写为:有关卡尔曼滤波器的概率原型的更多讨论,请参考Maybeck79, Brown92, Jacobs93。离散卡尔曼滤波器算法我们先给出卡尔曼滤波器的总体性概述,然后讨论方程式的具体细节及其作用。卡尔曼滤波器用反馈控制的方法估计过程状态:滤波器估计过程某一时刻的状态,然后以(含噪声的)测量变量的方式获得反馈。因此卡尔曼滤波器可分为两个部分:时间更新方程和测量更新方程。时间更新方程负责及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计。测量更新方程负责反馈也就是说,它将先验估计和新的测量变量结合以构造改进的后验估计。时间更新方程也可视为预估方程,测量更新方程可视为校正方程。最后的估计算法成为一种具有数值解的预估校正算法,如图1-1所示。图1-1离散卡尔曼滤波器循环更新图。时间更新方程将当前状态变量作为先验估计及时地向前投射到测量更新方程,测量更新方程校正先验估计以获得状态的后验估计。如下分别给出了时间更新方程和测量更新方程的具体形式。 (1.9) (1.10)请再次注意上式中的时间更新方程怎样将状态估计和协方差估计从k-1时刻向前推算到k 刻。A 和B 来自式1.1, Q 来自式1.3,滤波器的初始条件在早先的引用中讨论过。 (1.11) (1.12) (1.13)测量更新方程首先做的是计算卡尔曼增益。注意1.11式和1.8式是相同的。其次,便测量输出以获得,然后按1.12式(与1.7式相同)产生状态的后验估计。最后按1.13式 估计状态的后验协方差。计算完时间更新方程和测量更新方程,整个过程再次重复。上一次计算得到的后验估计被作为下一次计算的先验估计。这种递归推算是卡尔曼滤波器最吸引人的特性之一它比其它滤波器更容易实现:例如维纳滤波器Brown92 ,每次估计必须直接计算全部数据,而卡尔曼滤波器每次只根据以前的测量变量递归计算当前的状态估计。图1-2将表1-1和表1-2结合显示了滤波器的整个操作流程。滤波器系数及调整 滤波器实际实现时,测量噪声协方差R 一般可以观测得到,是滤波器的已知条件。观测测量噪声协方差R 一般是可实现的(可能的),毕竟我们要观测整个系统过程。因此通常我们离线获取一些系统观测值以计算测量噪声协方差。通常更难确定过程激励噪声协方差的Q 值,因为我们无法直接观测到过程信号。有时可以通过Q 的选择给过程信号“注入”足够的不确定性来建立一个简单的(差的)过程模型而产生可以接受的结果。当然在这种情况下人们希望信号观测值是可信的。在这两种情况下,不管我们是否有一个合理的标准来选择系数,我们通常(统计学上的)都可以通过调整滤波器系数来获得更好的性能。调整通常离线进行,并经常与另一个(确定无误的)在线滤波器对比,这个过程称为系统识别。在讨论的结尾,我们指出在Q 和R 都是常数的条件下,过程估计误差协方差R 和卡尔曼增益都会快速收敛并保持为常量(参照图1-2中的更新方程)。若实际情况也如此,那么滤波器系数便可以通过预先离线运行滤波器计算,或者,比如说,用Grewal93 中的方法计算的稳定值。实际中,观测误差R 尤其不易保持不变。例如,用我们的光电跟踪仪观察挂在房间顶棚面板上的信号灯时,较近的信号灯会比较远的信号灯具有较小的观测噪声。不仅是观测噪声会变化,有时过程激励噪声协方差Q也会随着滤波器运行而动态变化这样Q 变成了来适应不同的动态状态。例如,在跟踪三维虚拟环境中用户头部位置时,如果用户头部缓慢移动,我们会减小的幅度,如果移动开始快速变化,则增加幅度。在这些情况下,的幅度要根据用户的意图和模型的不确定性来选择。2 扩展卡尔曼滤波器3 卡尔曼滤波器实践:估计随机常数前两节我们讨论了离散卡尔曼滤波器和扩展卡尔曼滤波器的基本形式。在这儿,我们给出一个简单的例子以帮助读者更好地理解卡尔曼滤波器的实现和性能。Andrew Straw在http:/www.scipy.org/Cookbook/KalmanFiltering 上给出了使用Python/SciPy的具体实现方法。过程模型在这个简单的例子里我们估计一个常数随机变量,比如电压。假设我们可以测量这个常数的幅值,但观测幅值中掺入了幅值均方根(Root-Mean-Square,RMS)为0.1 伏的白噪声(比如在模数转换器不是很准确的情况下)。下面的线性差分方程描述了整个过程:测量值, 过程的状态不随时间变化,所以A = 1;没有控制输入,所以u = 0;包含噪声的观测值是状态变量的直接体现,所以H = 1 。(注意有些地方我们忽略了下标k ,因为对应的系数在这个例子中为常数。)滤波器方程和参数时间更新方程为: 测量更新方程为: 假设过程噪声方差Q 非常小,(也可以令Q = 0 ,但是一个小的非零常数可以方便地调整滤波器参数,下面将会证明)。再假设由经验我们知道随机常数的真值具有标准正态分布,因此我们令滤波器的初始条件为零,即。类似地,我们要选择Pk1 的初值P0 。如果确定初始状态估计= 0,可以令P0 = 0 。但因为初始状态估计并不确定,令P0 = 0 可能会使滤波器一直产生 = 0 的结果。就像实验验证的那样,P0 的选择并不关键,几乎任何P0 0 都会使滤波器最终收敛。在这里我们令P0 = 1 。模拟实验首先,我们令常数标量x =-0.37727(因为x 是真值所以并没有 符号)。然后产生50个不同的观测值 ,其误差为正态分布,期望为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 的选择
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号