卡尔曼滤波公式理解

卡尔曼滤波

卡尔曼滤波适用于线性高斯系统,即系统满足叠加性、齐次性,噪声满足正态分布。其使用上一次的最优结果预测当前的值(先验估计),同时使用观测值修正当前值,得到最优结果。

卡尔曼、粒子滤波实际应该叫做估计器(Estimator),估计当前值叫滤波(Filtering),估计过去叫平滑(Smoothing),估计未来叫预测(Predicting)。

卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(插值或平滑)。

Kalman Filter

1. 状态空间模型

卡尔曼滤波假设系统状态与噪声是高斯的,可以用均值和方差来描述。则上述状态空间模型可以被表述为:

  • 系统状态方程

    x k = A x k − 1 + B u k − 1 + w k − 1 x_k = Ax_{k-1} + Bu_{k-1} + w_{k-1} xk=Axk1+Buk1+wk1

    • x k x_k xk 是状态分量的 n 维矢量
    • A A A n × n n \times n n×n 的状体转移矩阵,也就是目标状态转移的猜想模型,是已知的
    • u k − 1 u_{k-1} uk1是新的,让系统可以接受外部控制
    • B B B n × c n \times c n×c 的矩阵,将输入转化为状态的矩阵
    • w k − 1 w_{k-1} wk1 是预测过程中服从高斯分布的噪声,对应了 x k x_k xk 中每个分量的噪声,期望为0,协方差为 Q 的高斯白噪声 w k − 1 ∼ N ( 0 , Q ) w_{k-1} \sim N(0, Q) wk1N(0,Q), Q 即下文过程激励噪声。
  • 系统观测方程
    z k = H x k + v k z_k = H x_k+v_k zk=Hxk+vk

    • H H H m × n m \times n m×n 矩阵,是状态变量(观测)的转移矩阵,表示将状态和观测连接起来的关系,卡尔曼滤波里为线性关系,它负责将m维的测量值转换到 n n n 维,使之符合状态变量的数学形式。
    • v k v_k vk 观测噪声,服从高斯分布 v k ∼ N ( 0 , R ) v_k \sim N(0, R) vkN(0,R) R R R 即下文测量噪声
  • 卡尔曼滤波的两个假设

    • 信息过程的足够精确的模型,是由白噪声所激发的线性( 也可以是时变的) 动态系统;
    • 每次的测量信号都包含着附加的白噪声分量 。当满足以上假设时,可以应用卡尔曼滤波算法。
2. 5个公式
2.1 预测

根据上一时刻( k − 1 k-1 k1 时刻) 的后验估计值来估计当前时刻( k k k 时刻) 的状态,得到 k k k​ 时刻的先验估计值;
x ^ k ‾ = A x ^ k − 1 + B u k − 1 \hat x_{\overline k} = A\hat x_{k-1} + Bu_{k-1} x^k=Ax^k1+Buk1

  • x ^ k ‾ \hat x_{\overline k} x^k k k k 时刻的先验状态估计值,即根据上一时刻( k − 1 k-1 k1时刻)的最优估计预测的 k k k 时刻的结果。
  • x ^ k − 1 \hat x_{k-1} x^k1 表示 k − 1 k-1 k1 时刻的后验状态估计值,也叫最优估计,是滤波的结果之一。
  • A A A:状态转移矩阵,实际上是对目标状态转换的一种猜想模型。
  • u k − 1 u_{k-1} uk1:控制向量
  • B B B:是将控制向量 u k − 1 u_{k-1} uk1转换为状态的矩阵

P k ‾ = A P k − 1 A T + Q P_{\overline k} = AP_{k-1}A^T + Q Pk=APk1AT+Q

  • P k ‾ P_{\overline k} Pk k k k 时刻的先验估计协方差( x ^ k ‾ \hat x_{\overline k} x^k 的协方差)
  • A A A:状态转移矩阵,实际上是对目标状态转换的一种猜想模型。
  • P k − 1 P_{k-1} Pk1 k − 1 k-1 k1 时刻后验估计协方差(即 x ^ k − 1 \hat x_{k-1} x^k1 的协方差,表示状态的不确定度),是滤波的结果之一。
  • Q Q Q: 过程激励噪声协方差(系统过程的协方差)。该参数被用来表示状态转换矩阵与实际过程之间的误差。因为我们无法直接观测到过程信号, 所以 Q Q Q 的取值是很难确定的。是卡尔曼滤波器用于估计离散时间过程的状态变量,也叫预测模型本身带来的噪声。状态转移协方差矩阵
2.2 更新

使用当前时刻的测量值来更正预测阶段先验估计值,得到当前时刻的后验估计值。
K k = P k ‾ H T H P k ‾ H T + R K_k = \frac{P_{\overline k }H^T}{HP_{\overline k}H^T + R} Kk=HPkHT+RPkHT

  • K k K_k Kk:滤波增益矩阵,是滤波的中间计算结果,卡尔曼增益,或卡尔曼系数。
  • P k ‾ P_{\overline k} Pk k k k 时刻的先验估计协方差( x ^ k ‾ \hat x_{\overline k} x^k 的协方差)
  • H H H:是状态变量到测量(观测)的转换矩阵,表示将状态和观测连接起来的关系,卡尔曼滤波里为线性关系,它负责将 m 维的测量值转换到 n 维,使之符合状态变量的数学形式,是滤波的前提条件之一。
  • R R R:测量噪声协方差。滤波器实际实现时,测量噪声协方差 R一般可以观测得到,是滤波器的已知条件。

x ^ k = x ^ k ‾ + K k ( z k − H x ^ k ‾ ) \hat x_k = \hat x_{\overline k} + K_k(z_k- H\hat x_{\overline k}) x^k=x^k+Kk(zkHx^k)

  • x ^ k \hat x_{k} x^k 表示 k k k 时刻的后验状态估计值,也叫最优估计,是滤波的结果之一。
  • x ^ k ‾ \hat x_{\overline k} x^k k k k 时刻的先验状态估计值,即根据上一时刻( k − 1 k-1 k1时刻)的最优估计预测的 k k k 时刻的结果。
  • K k K_k Kk:滤波增益矩阵,是滤波的中间计算结果,卡尔曼增益,或卡尔曼系数。
  • z k z_k zk:测量值(观测值),是滤波的输入。
  • H H H:是状态变量到测量(观测)的转换矩阵,表示将状态和观测连接起来的关系。
  • z k − H x ^ k ‾ z_k- H\hat x_{\overline k} zkHx^k:实际观测和预测观测的残差,和卡尔曼增益一起修正先验(预测),得到后验。

P k = ( I − K k H ) P k ‾ P_k = (I - K_kH) P_{\overline k} Pk=(IKkH)Pk

  • P k P_{k} Pk k k k 时刻后验估计协方差(即 x ^ k \hat x_{k} x^k 的协方差,表示状态的不确定度),是滤波的结果之一。

  • I I I:单位矩阵

  • K k K_k Kk:卡尔曼增益,或卡尔曼系数。

  • H H H:是状态变量到测量(观测)的转换矩阵。

  • P k ‾ P_{\overline k} Pk k k k 时刻的先验估计协方差( x ^ k ‾ \hat x_{\overline k} x^k 的协方差)

请添加图片描述

3. 代码实现

prediction
x ′ = F x + u P ′ = F P F T + Q x^\prime = Fx + u \\ P^\prime = FPF^T + Q x=Fx+uP=FPFT+Q
update
y = z − H x ′ S = H P ′ H T + R K = P ′ H T S − 1 x = x ′ + K y P = ( I − K H ) P ′ y = z-Hx^\prime \\ S = HP^\prime H^T + R \\ K = P^\prime H^T S^{-1} \\ x = x^\prime + Ky \\ P = (I - KH)P^\prime y=zHxS=HPHT+RK=PHTS1x=x+KyP=(IKH)P
code

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
卡尔曼滤波(Kalman Filter)是一种用于估计动态系统状态的最优线性算法,广泛应用于信号处理、控制系统和导航等领域。它是基于贝叶斯定理的一种数学模型,尤其适用于处理存在噪声和不确定性的情况,如传感器数据、机器学习中的预测等。 卡尔曼滤波的核心思想是利用前一时刻的状态估计和观测数据来更新当前时刻的估计。它包括两个主要步骤:预测(Prediction)和更新(Update)。预测阶段使用系统的动力学模型,而更新阶段则结合观测数据进行状态估计的调整。 以下是卡尔曼滤波的一般公式: 1. **预测阶段(Predict)**: - 预测状态:\( \hat{x}_k^- = A_k \hat{x}_{k-1} + B_k u_k + w_k \) (状态转移模型) - 预测协方差:\( P_k^- = A_k P_{k-1} A_k^T + Q_k \) (过程噪声协方差) 2. **更新阶段(Update)**: - 测量残差:\( z_k - H_k \hat{x}_k^- \) (观测模型,其中\( H_k \)是观测矩阵) - 更新增益:\( K_k = P_k^- H_k^T (H_k P_k^- H_k^T + R_k)^{-1} \) (卡尔曼增益,\( R_k \)是测量噪声协方差) - 更新状态估计:\( \hat{x}_k = \hat{x}_k^- + K_k (z_k - H_k \hat{x}_k^-) \) - 更新协方差:\( P_k = (I - K_k H_k) P_k^- \) (新的状态估计误差协方差) 其中,\( \hat{x}_k \) 表示状态估计,\( x_k \) 是真实状态,\( A_k \) 是状态转移矩阵,\( B_k \) 是控制输入矩阵,\( u_k \) 是控制输入,\( w_k \) 是过程噪声,\( z_k \) 是观测值,\( H_k \) 是观测函数矩阵,\( Q_k \) 和 \( R_k \) 分别是过程噪声和测量噪声的协方差矩阵。 卡尔曼滤波公式涉及矩阵运算,如果要深入理解,需要对线性代数和概率论有基本的了解。如果你对某个具体的步骤或概念不清楚,可以告诉我,我会进一步解释。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值