卡尔曼滤波讲解

一些基础知识

协方差系数与相关系数

  • 相关系数是用于刻画两个变量或者序列的变化趋势是相同的还是相反的,也可以判断这个相同或者相反的程度。设变量序列X与Y,则协方差系数计算为

    C o v = E [ ( X E ( X ) ) ( Y E ( Y ) ) ]

    如果2个变量是正相关的,则 C o v > 0 ,否则 C o v < 0

  • 相关系数的公式如下

    ρ = C o v σ X σ Y

    因此相关系数的范围是 1 ρ 1
    相关系数剔除了两个变量量纲的影响,可以被视为一种特殊的协方差系数;它更关注变量的变化趋势,而非其幅度信息。

参数估计

  • 样本方差:样本方差的定义为 E ( ( X E ( X ) ) 2 ) 。对于实际的变量序列X,其无偏的方差估计为

S 2 = 1 n 1 i = 1 n ( X i X ¯ ) 2

  • 样本协方差:计算公式为
    S 2 = 1 n 1 i = 1 n ( X i X ¯ ) ( Y i Y ¯ )

卡尔曼滤波

  • 卡尔曼滤波是用于随机信号的算法,它是在特定的假设条件下,对测量结果与预测结果进行融合,得到最终的滤波结果。
  • 在卡尔曼估计的过程中,只需要考虑测量噪声、估计噪声以及当前时刻状态系统的统计特性,因此计算量很小。

基本假设

  • 后验概率 P ( x k 1 | y 1 : k 1 ) 为高斯分布
  • 动态系统是线性的
    x k = A x k 1 + B u k 1 + q k 1 y k = H x k + r k

    其中
    • x ( k ) :k时刻系统的状态(位置、速度等状态信息)。
    • u ( k ) :对系统的控制量,如果是无控制系统,则系统方程中不包含这一项。
    • A , B :系统参数(状态转移矩阵等)。
  • 系统噪声与测量噪声都符合高斯分布,协方差矩阵为 Q k 1 R k

5个更新方程

这里写图片描述
* 首先赋予系统初始值,之后根据测量值就可以直接自回归地运算下去。

具体推导过程

  • 以机器人移动为例,假设其有状态 x k ,表示位置与速度, x k = ( p , v ) ,可以通过GPS等信息得到其状态信息(传感器数据或者成为测量数据),传感器数据有一个精度指标,但是我们可以通过后续的卡尔曼滤波操作,使得最终的状态信息的精度指标小于这个值。
  • 假设对于单一变量,符号高斯分布的话,其均值为 μ ,方差为 σ ,如果有多个变量,其协方差矩阵为 Σ ,这里有个小的公式定理,如果
    C o v ( x ) = Σ

    则有
    C o v ( A x ) = A Σ A T
  • 假设机器人的状态转移矩阵为 F k ,协方差矩阵为 P k 。根据上面的公式有

    x ^ k = F k x ^ k 1 P k = F k P k 1 F k T

  • 上述公式中没有添加外部的控制变量,如果移动机器人可以通过油门或者刹车等部分进行加速度的控制,则可以给状态变量加入控制变量。假设知道了加速度a,则上式可以更新如下:

    x ^ k = F k x ^ k 1 + [ Δ t 2 2 Δ t ] a = F k x ^ k 1 + B k u k

    B k 即是系统的控制矩阵 u k 控制向量

  • 上述公式均没有考虑到外界干扰,如果考虑到其他的如随机风力或者其他随机噪声的影响,可以将随机噪声视为符合高斯分布的,假设 x k 1 中的每个状态移动到一个新的符合高斯分布的区域,协方差为 Q k ,即相当于将没有被跟踪的干扰视为协方差为 Q k 的噪声。对协方差公式进行修正,得到下面的公式

    x ^ k = F k x ^ k 1 + B k u k P k = F k P k 1 F k T + Q k

    上式刻画了一个较为完整的状态估计的方法:新的最优估计是根据上一最优估计的预测得到的,同时加上了外部控制变量的修正;新的不确定性是由上一不确定性的预测得到的,并且加上了外界环境的干扰。

  • 上面只考虑到一个初步的预测估计,还需要结合传感器数据,得到更加准确的结果。
  • 状态估计数据与传感器数据可能不一致,因此在统一的时候需要统一量纲,假设预测数据到传感器数据的转换矩阵为 H k ,则可以计算出预测数据的分布
    μ expexcted = H k x ^ k Σ expexcted = H k P k H k T

    通过传感器或者状态估计的方法,均可以得到系统当前的预测的状态,但是由于均存在噪声,因此有些状态可能比单一预测的结果更接近真实状态。将传感器的不确定性用协方差 R k 表示,分布的均值就是读取得到的传感器数据或者测量值,记为 z k
  • 引入一个小的公式定理:将两个高斯分布相乘,得到的结果仍然是符合高斯分布的(归一化之后),新的均值与方差如下
    μ = μ 0 + σ 0 2 ( μ 1 μ 0 ) σ 0 2 + σ 1 2 σ 2 = σ 0 2 σ 0 4 σ 0 2 + σ 1 2

k = σ 0 2 σ 0 2 + σ 1 2
用矩阵表示,则有

K = Σ 0 ( Σ 0 + Σ 1 ) 1 μ = μ 0 + K ( μ 1 μ 0 ) Σ = Σ 0 K Σ 0

K 称为 卡尔曼增益
* 整合2个高斯分布,预测部分
( μ 0 , Σ 0 ) = ( H k x ^ k , H k P k H k T ) ( μ 1 , Σ 1 ) = ( z k , R k )

融合两个高斯分布,得到

H k x ^ k = H k x ^ k + K ( z k H k x ^ k ) H k P k H k T = H k P k H k T K H k P k H k T

其中,卡尔曼增益为
K = H k P k H k T ( H k P k H k T + R k ) 1

得到最终的状态更新公式为

x ^ k = x ^ k + K ( z k H k x ^ k ) P k = P k K H k P k K = P k H k T ( H k P k H k T + R k ) 1

上述公式中, x ^ k 就是新的最优估计,可以将其与 P ^ k 放到下一个预测和更新方程中不断迭代。

参考链接

猜你喜欢

转载自blog.csdn.net/u012526003/article/details/81840603