Kalman Filter(KF)卡尔曼滤波的理解与原理推导

背景介绍

卡尔曼滤波使用来做什么的?卡尔曼滤波要解决的问题就是,根据测量数据和上一个时刻的状态来估计当前状态。打个比方就是,你闭着眼睛走路,那么你的状态就是你相对环境的位置。而你的测量数据就是你睁开眼一次看到的场景。而你看一眼可能看得不准确。你凭感觉估计也估计不准确。卡尔曼滤波要做的事就是结合你估计的自己当前相对环境的位置你看一眼觉得自己相对与环境中的位置(测量数据),来更精确的估计出当前你相对环境的位置。

直观理解卡尔曼滤波

其实卡尔曼滤波思想非常简单。就是现有我们既知道上个时刻的状态,又知道当前时刻的状态设备测量的观测值。也就是说我既可以根据上个时刻的状态预测现在这个时刻的状态。也可以根据设备测量出的观测值确定当前时刻的状态。为了更加准确,所以我需要融合预测值和测量值来估计出当前的状态值。举个例子就是:现在我既知道上一分钟的温度是21,又知道现在温度计的读数是23。因为温度计它可能不准,我得参考下上分钟的温度21,然后我设定了一个假设就是它是随时间线性变化的。我根据上分钟预测现在温度应该是 A × 21 + u = 22 A\times21+u=22 A×21+u=22。然后最终我认为现在的温度是预测的温度与测量的温度的一个折中。即 所 估 计 现 在 的 温 度 = 预 测 的 温 度 + K × ( 温 度 计 读 数 − H × 预 测 的 温 度 ) 所估计现在的温度=预测的温度+K\times (温度计读数-H \times 预测的温度) =+K×(H×)。你可以先根据我说的直观理解看看下面这个标准的卡尔曼滤波公式。 x ^ k \hat x_k x^k是最终估计的状态值。在例子中就是最终估计的温度值。 x k − x_k^- xk是我根据上个状态计算出对当前状态的预测值。
在这里插入图片描述
在这里插入图片描述
用概率论知识来理解卡尔曼滤波就是粉红色是我预测的温度概率分布,绿色是我用温度计测出的温度概率分布,蓝色是我利用预测值和测量值两者融合所计算出的温度估计。
在这里插入图片描述

卡尔曼滤波有哪些默认的假设?

背景介绍中提到了卡尔曼滤波算法的输入有两个:估计的自己当前相对环境的位置你看一眼觉得自己相对与环境中的位置(测量数据)。算法的输出为:更精确的估计出当前你相对环境的位置学任何算法一定要搞懂这个算法作出了哪些前提假设,因为畸基本这些算法都是利用这些前提假设进行推导的。如果不懂这些前提假设直接看公式会一脸懵。接下来我们讲讲卡尔曼滤波所设定了一些前提假设。

  1. 卡尔曼滤波算法认为当前状态与上一个时刻的状态是线性关系(这句话其实就是假设了马尔可夫性,即认为当前状态只与上个状态相关)。也就是说当前时刻状态=A×上一个时刻状态+u+当前时刻的噪声。假设上一个时刻的状态可以表示为 x k − 1 x_{k-1} xk1,当前时刻状态表示为 x k x_k xk,当前时刻的噪声表示为 w k w_k wk。已知当前运动输入u。那么把当前时刻状态=A×上一个时刻状态+u+当前时刻的噪声这句话写成公式就是: x k = A k x k − 1 + u k + w k x_k=A_kx_{k-1}+u_k+w_k xk=Akxk1+uk+wk。由于这个式子里面包含噪声,所以我们无法精确的求出当前状态 x k x_k xk,但是我们可以求出 x k x_k xk的概率分布,然后把这个概率分布的均值作为当前状态的估计。事实上卡尔曼就是这么想的,但是他不是直接算 x k x_k xk的概率分布,而是算在当前的观测数据条件下 x k x_k xk的概率分布。然后把这个概率分布的均值作为更准确的状态估计。假设当前观测数据是 z k z_k
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
滤波是一种用来估计系统状态的递归滤波算法,适用于线性系统且满足高斯分布的噪声。该滤波器是由R. E. Kalman提出的。 滤波原理是基于两个假设:系统动态方程能由线性方程描述,测量方程能由线性方程描述。在每个时间步,滤波器通过两个步骤进行估计和更新:预测步骤和校正步骤。预测步骤是根据系统动态方程和上一个时间步的估计状态预测当前状态的均值和方差。校正步骤是根据测量方程和当前观测得到的测量值以及预测的状态,利用贝叶斯定理更新状态的均值和方差,得到最终的估计值。 推导滤波算法的公式如下: 预测步骤: 预测状态: $ x^- = A \cdot x + B \cdot u $ 预测状态协方差矩阵: $ P^- = A \cdot P \cdot A^T + Q $ 校正步骤: 增益: $ K = P^- \cdot H^T \cdot (H \cdot P^- \cdot H^T + R)^{-1} $ 修正后的状态: $ x = x^- + K \cdot (z - H \cdot x^-) $ 修正后的状态协方差矩阵: $ P = (I - K \cdot H) \cdot P^- $ 其中,x是系统状态向量,A是状态转移矩阵,B是输入矩阵,u是输入向量,P是后验状态的误差协方差矩阵,Q是预测误差协方差矩阵,H是测量矩阵,R是测量误差的协方差矩阵,z是观测向量。 通过上述公式的迭代,滤波器可以递归地估计系统的状态,并通过校正步骤利用最新的观测值来更新估计值。这种算法在估计方差较大的实时系统中具有优势,可以去除噪声和不确定性,提高系统的估计精度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值