zoukankan      html  css  js  c++  java
  • 【转】kalman滤波

    Kalman Filter是一个高效的递归滤波器,它可以实现从一系列的噪声测量中,估 计动态系统的状态。广泛应用于包含Radar、计算机视觉在内的等工程应用领域,在控制理论和控制系统工程中也是一个非常重要的课题。连同线性均方规划,卡尔曼滤波器可以用于解决LQG(Linear-quadratic-Gaussian control)问题。卡尔曼滤波器,线性均方归化及线性均方高斯控制器,是大部分控制领域基础难题的主要解决途径。

    目录

    ■    1     应用实例

    ■    2    命名和发展历史

    ■    3    基本动态系统模型

    ■    4    卡尔曼滤波器

                4.1    预测

                4.2    更新

                4.3    不变量

    ■    5    实例

    ■    6    推导

               6.1    后验估计协方差矩阵推导

               6.2    Kalman 增益推导

               6.3    后验误差协方差矩阵简化

    ■    7    信息滤波

    ■    8  非线性滤波器

               8.1   扩展Kalman 滤波

               8.2   Unscented Kalman filter

    ■    9   Kalman-Bucy滤波

    ■    10  应用

    ■    11  参见

    ■    12  参考文献

    ■    13  外部链接

    ■    1    应用实例

    一个简单的应用是估计物体的位置和速度;简要描述如下:假设我们可以获取一个物体的包含噪声的一系列位置观测数据,我们可以获得此物体的精确速度和位置连续更新信息。

    例如,对于雷达来说,我们关心的是跟踪目标,而目标的位置,速度,加速度的测量值是时刻含有误差的,卡尔曼滤波器利用目标的动态信息,去掉噪声影响,获取目标此刻好的位置估计(滤波),将来位置估计(预测),也可以是过去位置估计的(插值或平滑)

    ■    2    命名和发展历史

    这个滤波器以它的发明者Rudolf.E.Kalman 而命名,但是在Kanlman之前,Thorvald Nicolai Thiele和Peter Swerling 已经提出了类似的算法。Stanley Schmidt 首次实现了Kalman滤波器。在一次对NASA Ames Research Center访问中,卡尔曼发现他的方法对于解决阿波罗计划的轨迹预测很有用,后来阿波罗飞船导航 电脑就使用了这种滤波器。这个滤波器可以追溯到Swerling(1958),Kalman(1960),Kalman和Bucy(1961)发表的论文。

    这个滤波器有时叫做Stratonovich-Kalman-Bucy滤波器。因为更为一般的非线性滤波器最初由Ruslan L.Stratonovich发明,而Stratonovich-Kalman-Bucy滤波器只是非线性滤波器的一个特例。事实上,1960年夏季,Kalman和Stratonovich在一个Moscow召开的会议中相遇,而作为非线性特例的线性滤波方程,早已经由Stratonovich在此以前发表了。

     在控制领域,Kalman滤波被称为线性二次型估计,目前,卡尔曼滤波已经有很多不同的实现,有施密特扩展滤波器、信息滤波器以及一系列的Bierman和Thornton 发明的平方根滤波器等,而卡尔曼最初提出的形式现在称为简单卡尔曼滤波器。也许最常见的卡尔曼滤波器应用是锁相环,它在收音机、计算机和几乎全部视频或通讯设备中广泛存在。

     ■   3    基本动态系统模型

    Kalman滤波基于时域描述的线性动态系统,它的模型是Markov Chain,而Markov Chain建立在一个被高斯噪声干扰的线性算子之上。系统的状态可以用一个元素为实数的向量表示。 随着离散时间的增加,这个线性算子就会作用到当前状态之上,产生一个新的状态,并且会带入一定的噪声,同时一些已知的控制信息也会加入。同时另外一个受噪声干扰的线性算子将产生这些隐含状态的可见输出。Kalman 滤波可以被看作为类似隐马尔科夫模型,它们的显著不同点在于:隐状态变量的取值空间是一个连续的空间,而离散状态空间则不是;另为,隐马尔科夫模型可以描述下一个状态的一个任意分布,这也与应用于Kalman滤波器中的高斯噪声模型相反。Kalman滤波器方程和隐马尔科夫方程之间有很大的二重性,关于Kalman 滤波方程和隐马尔科夫方程之间二重性参看Roweis and Ghahramani(1999)[4]。              

     为了从一系列的噪声观测中,应用Kalman滤波估计观测过程的内部状态。我们必须把这个过程在Kalman 滤波器的框架下建立模型, 这就意味着,对于

    每一步k  我们要定义矩阵Kalman Filter - 一名惊人 - 一名惊人 Kalman Filter - 一名惊人 - 一名惊人 Kalman Filter - 一名惊人 - 一名惊人 Kalman Filter - 一名惊人 - 一名惊人 Kalman Filter - 一名惊人 - 一名惊人 如下:

    Kalman Filter 假设k 时刻的真实状态是从k-1时刻演化而来,符合下式Kalman Filter - 一名惊人 - 一名惊人

    这里

    ■ Kalman Filter - 一名惊人 - 一名惊人是作用在前一状态的状态转移模型(状态转移矩阵)

    ■ Kalman Filter - 一名惊人 - 一名惊人 是作用在控制向量 上的控制输入模型(输入输出矩阵)

     Kalman Filter - 一名惊人 - 一名惊人是过程噪声,假设是均值为0的白噪声,协方差为Kalman Filter - 一名惊人 - 一名惊人 则:Kalman Filter - 一名惊人 - 一名惊人

    在k时刻,假设真实状态Kalman Filter - 一名惊人 - 一名惊人 的观测, Kalman Filter - 一名惊人 - 一名惊人满足如下公式:

                                                        Kalman Filter - 一名惊人 - 一名惊人

    其中 Kalman Filter - 一名惊人 - 一名惊人是观测模型(观测矩阵),它把真实状态映射到观测空间, Kalman Filter - 一名惊人 - 一名惊人是观测噪声,假设它是均值是0,方差是Kalman Filter - 一名惊人 - 一名惊人 的高斯白噪声: Kalman Filter - 一名惊人 - 一名惊人

    Kalman Filter基本动态系统模型如图(1)所示,圆圈代表向量,方块代表矩阵,星号代表高斯噪声,其协方差在右下方标出。

    初始状态以及每一时刻的噪声向量{x0, w1, ..., wk, v1 ... vk} 都为认为是互相独立的。实际中,真实世界中动态系统并不是严格的符合此模型。但是Kalman模型是设计在噪声过程工作的,一个近似的符合已经可以使这个滤波器非常有用了,更多复杂模型关于Kalman Filter模型的变种,将在下述中讨论:

    Kalman Filter - 一名惊人 - 一名惊人

                                                                         图(1)

    ■    4    卡尔曼滤波器

    Kalman Filter 是一个递归的估计,即只要获知上一时刻的状态估计和当前状态的观测就可以计算出当前状态的估计,不同于其他的估计技术,Kalman 滤波器不需要观测或/和估计的历史记录,Kalman Filter 是一个纯粹的时域滤波器,而不像低通滤波器等频域滤波器那样,需要在频域中设计,然后转换到时域中应用。

    下面,Kalman Filter - 一名惊人 - 一名惊人代表已知从m到n-1包括m时刻的观测在n时刻的估计值

    卡尔曼滤波器的状态由以下两个变量表示:

          ■ Kalman Filter - 一名惊人 - 一名惊人已知k时刻以前时刻观测值,k时刻的状态估计值

          ■ Kalman Filter - 一名惊人 - 一名惊人误差协方差矩阵,度量状态估计的精度程度

    Kalman 滤波包括两个阶段:预测和更新;在估计阶段,滤波器应用上一状态的估计做出对当前状态的估计。在更新阶段,滤波器利用在当前状态的观测值优化预测阶段的预测值,以获的一个更精确的当前状态的估计。

    4.1    预测

    状态预测:

     Kalman Filter - 一名惊人 - 一名惊人

    估计协方差预测:

    Kalman Filter - 一名惊人 - 一名惊人

    4.2    更新

    新息或测量余量

     Kalman Filter - 一名惊人 - 一名惊人

    新息协方差

     Kalman Filter - 一名惊人 - 一名惊人

    Kalman 增益

     Kalman Filter - 一名惊人 - 一名惊人

    状态估计更新

     Kalman Filter - 一名惊人 - 一名惊人

    状态协方差更新

     Kalman Filter - 一名惊人 - 一名惊人

    使用上述公式计算 Kalman Filter - 一名惊人 - 一名惊人仅在最优卡尔曼增益的时候有效。使用其他增益公式要复杂一些,看见推导

    4.3    不变量

    如果模型准确, Kalman Filter - 一名惊人 - 一名惊人 Kalman Filter - 一名惊人 - 一名惊人值将准确反映最初状态的分布,那么下面所有不变量保持不变,所有估计的误差均值为0:

     Kalman Filter - 一名惊人 - 一名惊人

     Kalman Filter - 一名惊人 - 一名惊人

    这里Kalman Filter - 一名惊人 - 一名惊人 表示 Kalman Filter - 一名惊人 - 一名惊人的期望,而协方差矩阵则反映的估计的协方差

     Kalman Filter - 一名惊人 - 一名惊人

     Kalman Filter - 一名惊人 - 一名惊人

     Kalman Filter - 一名惊人 - 一名惊人

  • 相关阅读:
    android 项目学习随笔十五(ShareSDK开放平台)
    android 项目学习随笔十四(WebView)
    android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)
    android 项目学习随笔十二(ListView加脚布局)
    android 项目学习随笔十一(ListView下拉刷新提示)
    android 项目学习随笔十(自定义ProgressBar)
    android 项目学习随笔九(ListView加头布局)
    android 项目学习随笔八(xUtils的BitmapUtils模块)
    android 项目学习随笔七(ViewPagerIndicator与ViewPager)
    android 项目学习随笔六(网络缓存)
  • 原文地址:https://www.cnblogs.com/BaroC/p/3409494.html
Copyright © 2011-2022 走看看