跳转到导航跳跃以搜索统计和控制理论,卡尔曼滤波,也称为线性二次估计(LQE),是一种算法,它使用随时间观察到的一系列测量,包含统计噪声和其他不准确性,并产生未知的估计通过估计每个时间帧的变量上的接头概率分布,该变量比仅基于单个测量更准确。过滤器以鲁道夫E.Kálmán命名为其理论的主要开发人员之一。
卡尔曼滤波器在技术中具有许多应用。共同应用是用于导向,导航和控制车辆,特别是飞机,航天器和动态定位的船舶。此外,卡尔曼滤波器是在诸如信号处理和计量学等领域使用的时间序列分析中的广泛应用的概念。卡尔曼过滤器也是机器人运动规划和控制领域的主要主题之一,可以用于轨迹优化。 [2] Kalman滤波器还适用于建模中枢神经系统' S的运动控制。由于发出电机命令和接收感觉反馈之间的时间延迟,使用卡尔曼滤波器支持用于制作电动机系统的当前状态并发出更新命令的估计的现实模型。 [3]
该算法在两步过程中工作。在预测步骤中,卡尔曼滤波器产生当前状态变量的估计,以及它们的不确定性。一旦观察到下一个测量的结果(必然地损坏了一定量的误差,包括随机噪声),就使用加权平均值更新这些估计,因此更重量估计更高的确定性。该算法递归。它可以实时运行,仅使用本输入测量和先前计算的状态及其不确定性矩阵;不需要额外的过去信息。
卡尔曼滤波器的最优性假定错误是高斯。用RudolfE.Kálmán:&#34的话语;总之,以下假设是关于随机过程的:可能被认为是由于主要随机源激发动态系统的物理随机现象。假设主要来源是独立的高斯随机过程,零平均值;动态系统将是线性的。" [4]虽然无论高斯,但如果已知过程和测量协方差,则卡尔曼滤波器是最低平均方误差感的最佳线性估计。 [5]
还开发了对方法的扩展和概括,例如扩展卡尔曼滤波器和未加工的Kalman滤波器,在非线性系统上工作。底层模型是隐藏的马尔可夫模型,其中潜在变量的状态空间是连续的,并且所有潜在和观察的变量都具有高斯分布。此外,卡尔曼滤波器已成功用于多传感器融合,[6]和分布式传感器网络,以开发分布式或共识卡尔曼滤波器。 [7]
过滤器以匈牙利ÉmigréRudolfe.Kálmán命名,虽然Thorvald Nicolai Thiele [8] [9] [9]和Peter SweRling早先开发了类似的算法。 Johns Hopkins应用物理实验室的理查德S. Bucy贡献了理论,导致它有时被称为卡尔曼 - Bucy过滤器。 Stanley F. Schmidt通常归功于开发卡尔曼滤波器的第一次实施。他意识到过滤器可以分成两个不同的部分,其中传感器输出之间的时间段和另一部分用于结合测量的一部分。 [10]这是在Kálmán的访问期间,施密特在Apollo计划中展示了Kálmán'思想的适用性,导致Apollo计划在Apollo导航计算机中的轨迹估计的非线性问题。这首先描述了Kalman滤波器,并通过Swerling(1958),卡尔曼(1960)和卡尔曼和Bucy(1961)中的技术文件中部分地描述和部分开发。
Apollo计算机使用2K磁芯RAM和36K钢丝绳[...]。 CPU是由ICS [...]构建的。时钟速度达到100 kHz [...]。麻省理工学院工程师能够将这种良好的软件(Kalman滤波器的第一个应用之一)包装成这种微小的计算机的事实真正显着。
卡尔曼过滤器对美国海军核炮弹导弹潜艇导航系统的实施至关重要,以及美国海军等巡航导弹的指导和导航系统,如美国海军和#39; SOAHAWK导弹和美国空军' s空气发射巡航导弹。它们也用于可重复使用的发射车辆的指导和导航系统和航天器姿态控制和导航系统,该航天器在国际空间站停靠。 [11]
这种数字滤波器有时称为Stratonovich-Kalman-Bucy过滤器,因为它是苏联Mathematician Ruslan Stratonovich早期更早地开发出更通用的非线性过滤器的特殊情况。 [第12] [13] [14] [15]实际上,一些特殊案例线性滤光片' S的方程在这些论文中出现在1960年夏季之前发表的Stratonovich,当时卡尔曼在莫斯科会议期间与Stratonovich相遇。 [16]
卡尔曼滤波器使用系统' S动态模型(例如,物理定律),该系统的已知控制输入以及多个顺序测量(例如来自传感器),以形成系统的估计。数量(其状态)优于单独使用一次测量的估计。因此,它是一种常见的传感器融合和数据融合算法。
嘈杂的传感器数据,描述系统演化的方程中的近似,以及未占所有地方的外部因素限制,以确定系统' s状态。卡尔曼滤波器有效地处理了由于嘈杂的传感器数据而有效的不确定性,并且在一定程度上具有随机外部因素。卡尔曼滤波器产生系统状态的估计作为系统的平均值和使用加权平均值的预测状态和新测量的平均值。权重的目的是具有更好(即,较小)估计的不确定性的值"值得信赖的"更多的。从协方差计算权重,衡量系统预测的估计不确定度。加权平均值的结果是在预测和测量状态之间呈现的新状态估计,并且具有比单独的更好的估计不确定性。每次步骤重复该过程,其中新估计值及其协方差通知在以下迭代中使用的预测。这意味着卡尔曼滤波器递归地工作,只需要最后一个"最佳猜测",而不是整个历史,系统' s状态计算新状态。
测量和当前状态估计的相对确定性是重要的考虑因素,并且常常讨论滤波器的滤波器的响应,而在卡尔曼滤波器中'卡尔曼增益是给测量和当前状态估计的相对重量,并且可以是"调谐"实现特定的性能。具有高增益,滤波器在最近的测量结果上使得更大的重量,因此更响应地跟随它们。具有低增益,过滤器更仔细地遵循模型预测。在极端情况下,接近一个的高增益将导致更跳跃的估计轨迹,而低增益接近零将平滑噪声,但降低响应性。
在执行过滤器的实际计算时(如下所述),状态估计和协方差被编码为矩阵以处理单个计算中涉及的多个维度。这允许在任何转换模型或协方差中的不同状态变量(例如位置,速度和加速度)之间表示线性关系。
作为示例申请,考虑确定卡车的精确位置的问题。该卡车可以配备GPS单元,可在几米范围内提供估计。 GPS估计可能是嘈杂的;读物'跳跃'迅速,虽然剩下几米的实际位置。此外,由于卡车预计遵循物理规律,因此还可以通过将其速度随时间整合而估计其位置,通过跟踪轮旋转和方向盘的角度来确定。这是一种称为死者的技术。通常,死亡的估计将提供卡车' S位置非常平滑的估计,但随着小错误累积,它会随着时间的推移而漂移。
在此示例中,卡尔曼滤波器可以被认为是以两个不同的阶段操作:预测和更新。在预测阶段,卡车'旧位置将根据运动的物理定律(动态或#34;状态转换"模型)进行修改。不仅会计算新的位置估计,还将计算新的协方差。也许协方差与卡车的速度成正比,因为我们更不确定在高速估计的死亡估计位置的准确性,但非常确定在低速下的位置估计。接下来,在更新阶段,从GPS单元中取出卡车' S位置的测量。随着这种测量来,来自前一阶段的预测相对于预测的协方差,它决定了新测量将影响更新预测的程度。理想情况下,由于死者的估计倾向于远离实际位置,因此GPS测量应将估计的位置拉回真实位置,但不会打扰它到变得嘈杂和迅速跳跃的程度。
卡尔曼滤波器是一种有效的递归滤波器,估计来自一系列噪声测量的线性动态系统的内部状态。它用于从雷达和计算机视觉到结构宏观经济模型的雷达和计算机视觉的各种工程和计量应用,[17] [18],是控制理论和控制系统工程中的重要课题。卡尔曼滤波器与线性二次调节器(LQR)一起解决了线性 - 二次高斯控制问题(LQG)。卡尔曼滤波器,线性二次调节器和线性 - 二次高斯控制器是可谓是控制理论中最基本的问题的解决方案。
在大多数应用中,内部状态比少数少数&#34更大(更多程度的自由);可观察和#34;测量的参数。但是,通过组合一系列测量,卡尔曼滤波器可以估计整个内部状态。
在Dempster-Shafer理论中,每个状态方程或观察被认为是线性信念功能的特殊情况,卡尔曼滤波器是在加入树或马尔可夫树上组合线性信仰函数的特殊情况。额外的方法包括使用贝叶斯或证据更新到状态方程的信仰过滤器。
现在已经开发了各种各样的卡尔曼过滤器,来自卡尔曼'原始配方,现在称为"简单"卡尔曼滤波器,卡尔曼 - Bucy滤波器,施密特' s"延伸"过滤器,信息过滤器和各种" Square-Root"由Bierman,Thornton和许多其他人开发的过滤器。也许最常用的非常简单的卡尔曼滤波器是锁相环,现在是无处不在的无线电,尤其是频率调制(FM)无线电,电视机,卫星通信接收机,外太空通信系统以及几乎任何其他电子通讯设备。
卡尔曼滤波器基于在时域中离散化的线性动态系统。它们在Markov链条上建模,该链条基于由可能包括高斯噪声的错误扰乱的线性运算符。系统的状态表示为实数的向量。在每个离散时间增加时,将线性运算符应用于状态以生成新状态,其中一些噪声混合,并且可选地,如果它们是已知的,则来自系统上的控件的一些信息。然后,与更多噪声混合的另一线性操作员从真实("隐藏")状态产生观察到的输出。卡尔曼滤波器可以被视为类似于隐藏的马尔可夫模型,其中隐藏状态变量在连续空间中取得的值,而与隐藏的马尔可夫模型中的离散空间相反。卡尔曼滤波器的方程与隐马尔可夫模型的方程之间存在强烈的类比。 Roweis和Ghahramani(1999),[19]和Hamilton(1994),第13章中给出了对此和其他模型的审查。[20]
为了使用卡尔曼滤波器来估计过程的内部状态,只给出一个嘈杂的观察序列,必须根据以下框架模拟过程。这意味着指定以下矩阵:
卡尔曼滤波器模型假定在时间k处的真实状态是根据(k - 1)的状态逐渐发展
XK = F KXK - 1 + B kuk + Wk {\ displaystyle \ mathbf {x} _ {k} = \ mathbf {f} _ {k} \ mathbf {x} _ {k-1} + \ mathbf {b}} _ {k} \ mathbf {u} _ {k} + \ mathbf {w} _ {k}}
f k是应用于先前状态x k-1的状态转换模型;
wk是过程噪声,假设从零平均多变量正态分布,n {\ displaystyle {\ mathcal {n}}},具有协方差,q k:wk〜n(0,q k){\ displaystyle \ mathbf {w} _ {k} \ sim {\ mathcal {n}} \ left(0,\ mathbf {q} _ {k} \右)}。
在时间k,根据的观察(或测量)z k根据
z k = h k x x + v k {\ displaystyle \ mathbf {z} _ {k} = \ mathbf {h} _ {k} \ mathbf {x} _ {k} + mathbf {v} _ {k}}
H K是观察模型,将真实状态空间映射到观察到的空间和
VK是观察噪声,假设为零表示高斯白噪声,具有协方差R K:VK〜N(0,R K){\ DisplayStyle \ MathBF {V} _ {k} \ SIM {\ Mathcal {n} \ \ left(0,\ mathbf {r} _ {k} \右)}。
初始状态和每个步骤的噪声矢量{x 0,w 1,...,w k,v 1,...,v k}都被认为是相互独立的。
许多真正的动态系统不完全适合此模型。实际上,即使应该使用未知的随机信号作为输入,也可以严重降低过滤器性能会严重降低过滤器性能。这样做的原因是,未确定动态的效果取决于输入,因此可以将估计算法带来不稳定(它发散)。另一方面,独立的白噪声信号不会使算法发散。区分测量噪声和未拼质动力学的问题是难度的问题,并且在鲁棒控制框架下被控制理论处理。 [21] [22]
卡尔曼滤波器是递归估计器。这意味着只有前一步步和电流测量的估计状态都需要计算当前状态的估计。与批量估计技术相比,不需要观察历史和/或估计。在下文中,符号x ^ n | m {\ displaystyle {\ hat {\ mathf {x}}} _ {n \ mid m}}表示在时间n的x {\ displaystyle \ mathbf {x}}的估计给出达到和包括在时间m≤n的观察结果。
x ^ k | k {\ displaystyle {\ hat {\ mathbf {x}} _ {k \ mid k}},在时间k的后验状态估计给出观察到,包括在时间k;
p k | k {\ displaystyle \ mathbf {p} _ {k \ mid k}},后者估计协方差矩阵(估计状态估计的估计准确性)。
卡尔曼滤波器可以写成单个方程,然而,它通常是概念化为两个不同的阶段:"预测"和#34;更新"预测阶段使用前一个时间步来的状态估计来产生当前时间步来的状态的估计。该预测状态估计也称为先验状态估计,因为虽然它是当前时间步骤中的状态的估计,但它不包括来自当前时间的观察信息。在更新阶段中,当前先验预测与当前观察信息组合以改进状态估计。这种改进的估计被称为后验状态估计。
通常,两个相替换,通过预测推进状态直到下一个预定的观察,以及结合观察的更新。但是,这不是必需的;如果出于某种原因,观察不可用,则可以跳过更新并执行多个预测步骤。同样,如果同时获得多个独立观察,则可以执行多个更新步骤(通常具有不同观察矩阵H k)。 [23] [24]
x ^ k | k - 1 = f kx ^ k - 1 | k - 1 + b kuk {\ displaystyle {\ hat {\ mathbf {x}}} _ {k \ mid k-1} = \ mathbf {f} _ {k} {\ hat {\ mathbf {x}}} _ {k-1 \ mid k-1} + \ mathbf {b} _ {k} \ mathbf {u} _ {k}}
p k | k - 1 = f k p k - 1 | k - 1 f k t + q k {\ displaystyle \ mathbf {p} _ {k \ mid k-1} = \ mathbf {f} _ {k} \ mathbf {p} _ {k-1 \ mid k-1} \ mathbf {f} _ {k} ^ {k} ^ {\ textsf {t}} + \ mathbf {q} _ {k}}
y〜k = zk - h kx ^ k | k - 1 {\ displaystyle {\ tilde {\ mathbf {y}}} _ {k}}} _ {k}} _ {k} = mathbf {z} _ {k} - \ mathbf {h} _ {{ k}} {\ hat {\ mathbf {x}}} _ {k \ mid k-1}}}
s k = h k p k | k - 1 h k t + r k {\ displaystyle \ mathbf {s} _ {k} = \ mathbf {h} _ {k} \ mathbf {p} _ {k \ mid k -1} \ mathbf {h} _ {k} ^ {\ textsf {t}} + \ mathbf {r} _ {k}}
k k = p k | k - 1 h ks k - 1 {\ displaystyle \ mathbf {k} _ {k} = \ mathbf {p} _ {k \ mid k-1} \ mathbf {h} _ {k } ^ {\ textsf {t}} \ mathbf {s} _ {k} ^ {k} ^ { - 1}}
x ^ k | k = x ^ k | k - 1 + k ky〜k {\ displaystyle {\ hat {\ mathbf {x}}} _ {k \ mid k} = {\ hat {\ mathbf {x}} } _ {k \ mid k-1} + \ mathbf {k} _ {k} {\ tilde {\ mathbf {y}}} _ {k}}
p k | k =(i - k k h k)p k | k - 1 {\ displaystyle \ mathbf {p} _ {k | k} = \ left(\ mathbf {i} - \ mathbf {k} _ {k} \ mathbf {h} _} _ {k} \右)\ mathbf {p} _ {k | k-1}} y〜k | k = zk - h kx ^ k | k {\ displaystyle {\ tilde {\ mathbf {y}} _ {k \ mid k} = \ mathbf {z} _ {k} - \ mathbf {h } _ {k} {\ hat {\ mathbf {x}}} _ {k \ mid k}}} 上面更新(后验)估计协方差的公式对于最大限度地减少残留误差的最佳k k增益有效,其中形成了它在应用中最广泛应用的形式。 在衍生部分中发现公式的证据,其中还显示了对任何K k有效的公式。 表达更新状态估计的更直观的方法(x ^ k | k ......