卡尔曼滤波最通俗易懂的理解

本文通过一个小车在轨道上的例子,详细解释了卡尔曼滤波的工作原理。文章介绍了如何使用卡尔曼滤波来减少预测误差,并通过融合预测值与测量值来提高定位精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:肖畅
链接:https://www.zhihu.com/question/23971601/answer/46480923
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

刚刚学过并且试着直观地理解过,如有不妥的地方还望大牛们指教。
图片来源及参考文献: cl.cam.ac.uk/~rmf25/pap

题主如果只是想泛泛理解, @Kent Zeng 的回答已经非常棒了。我尝试做一个更详细的解答。

好了下面进入正题,先从简单的说起:
考虑轨道上的一个小车,无外力作用,它在时刻t的状态向量 x(t)只与 x(t-1)相关:
(状态向量就是描述它的t=0时刻所有状态的向量,比如:
[速度大小5m/s, 速度方向右, 位置坐标0],反正有了这个向量就可以完全预测t=1时刻小车的状态)

x(t)=Fx(t-1)

那么根据t=0时刻的初值 x(0),理论上我们可以求出它任意时刻的状态。

当然,实际情况不会这么美好。

这个递推函数可能会 受到各种不确定因素的影响(内在的外在的都算,比如刮风下雨地震,小车结构不紧密,轮子不圆等等)导致 x(t)并不能精确标识小车实际的状态。

我们假设每个状态分量受到的不确定因素都服从正态分布。

现在仅对小车的位置进行估计
请看下图:t=0时小车的位置服从红色的正态分布。

根据小车的这个位置,我们可以预测出t=1时刻它的位置:

分布变“胖”了,这很好理解——因为在递推的过程中又加了一层噪声,所以不确定度变大了。

为了避免纯估计带来的偏差,我们在t=1时刻对小车的位置坐标进行一次雷达测量,当然雷达对小车距离的测量也会受到种种因素的影响,于是测量结果告诉我们,小车t=1时的位置服从蓝色分布:

好了,现在我们得到两个不同的结果。前面有人提过加权,Kalman老先生的牛逼之处就在于找到了相应权值,使红蓝分布合并为下图这个 绿色的正态分布(啰嗦一句,这个绿色分布均值位置在红蓝均值间的比例称为Kalman增益(比如下图中近似0.8),就是各种公式里的K(t))
你问为什么牛逼?
绿色分布不仅保证了在红蓝给定的条件下,小车位于该点的概率最大,而且,而且,它居然还是一个正态分布!
正态分布就意味着,可以把它当做初值继续往下算了!这是Kalman滤波能够迭代的关键。

最后,把绿色分布当做第一张图中的红色分布对t=2时刻进行预测,算法就可以开始循环往复了。

你又要问了,说来说去绿色分布是怎么得出的呢?

其实可以通过多种方式推导出来。我们课上讲过的就有最大似然法、Ricatti方程法,以及上面参考文献中提及的直接对高斯密度函数变形的方法,这个不展开说了。

另外,由于我只对小车位移这个一维量做了估计,因此Kalman增益是标量,通常情况下它都是一个矩阵。而且如果估计多维量,还应该引入协方差矩阵的迭代,我也没有提到。如果楼主有兴趣,把我提及那篇参考文献吃透,就明白了。

Kalman滤波算法的本质就是利用两个正态分布的融合仍是正态分布这一特性进行迭代而已。
<think>首先,用户的问题是:“我想理解卡尔曼滤波算法的基本概念和原理请问卡尔曼滤波算法的简单解释及原理”。这要求我提供卡尔曼滤波算法的简单解释和原理。系统级指令:-所有行内数学表达式必须使用$...$格式。-独立公式必须使用$$...$$格式并单独成段。-LaTeX语法正确。-使用中文回答。-生成相关问题。-回答中引用的段落末尾自然地添加引用标识,例如:[^1]-用户可见层:回答结构清晰,帮助用户逐步解决问题,尽量保证回答真实可靠。参考站内引用:-引用[1]:介绍了卡尔曼滤波算法的基础,包括它是一种递归算法用于估计系统状态,特别是在存在噪声和不确定性的情况下,应用于信号处理、导航、控制等领域。-引用[2]:提到卡尔曼滤波器算法涉及概率、随机变量、高斯分布、状态空间模型等概念。-引用[3]:讨论了无迹卡尔曼滤波算法(UKF),作为处理非线性系统的替代方法,使用无迹变换。用户的问题是关于卡尔曼滤波算法的基本概念和原理,所以我需要基于这些引用,但简化并提供清晰的解释。回答结构:1.**介绍基本概念**:简要解释卡尔曼滤波是什么。2.**解释原理**:逐步描述卡尔曼滤波的工作原理,包括预测和更新步骤。3.**使用数学表达式**:在适当的地方使用LaTeX格式的行内数学表达式,对于独立公式使用$$...$$。4.**引用**:在回答中自然地添加引用标识,例如在提到关键点时引用[^1]或[^2]。5.**生成相关问题**:在回答结束后添加相关问题部分。关键原理:-卡尔曼滤波是一种递归算法,用于估计动态系统的状态,通过结合预测(基于模型)和测量更新(基于传感器数据)。-它假设噪声是高斯分布的。-主要步骤:预测状态和协方差(基于系统模型),然后更新(基于测量)。-数学涉及:状态方程、测量方程、协方差矩阵。数学表达:-状态方程:$x_k=Ax_{k-1}+Bu_k+w_k$-测量方程:$z_k=Hx_k+v_k$-其中,$w_k$和$v_k$是过程噪声和测量噪声,通常假设为高斯噪声。在回答中,我需要使用中文,并确保LaTeX正确。生成相关问题:在回答结束时,添加几个相关问题,如示例所示。例如:1.卡尔曼滤波在哪些领域有应用?2.如何处理非线性系统的卡尔曼滤波?3.卡尔曼滤波的性能如何评估?回答大纲:1.**开头**:定义卡尔曼滤波。2.**基本概念**:解释状态估计、噪声、递归。3.**原理步骤**:-预测步骤-更新步骤4.**数学基础**:简要提到概率和状态空间模型。5.**结尾**:总结并添加相关问题。确保引用:例如,在提到基本原理时,添加[^1]。</think>### 卡尔曼滤波算法的基本概念和原理 卡尔曼滤波算法是一种递归状态估计算法,主要用于在存在噪声和不确定性的动态系统中,实时估计系统的隐藏状态。它广泛应用于信号处理、导航、控制等领域(如机器人定位或传感器融合),通过结合系统模型和实际测量数据,逐步优化状态估计值[^1]。下面我将分步解释其基本概念和原理,确保内容清晰易懂。 #### 基本概念 - **核心目标**:卡尔曼滤波旨在从带噪声的测量数据中,推断系统的真实状态(例如位置、速度)。它假设系统噪声和测量噪声均服从高斯分布(正态分布),这使得算法能有效处理不确定性[^2]。 - **递归性质**:算法以递归方式工作,每接收到新测量数据就更新一次估计值,无需存储历史数据,适合实时应用。 - **状态空间模型**:系统状态用状态方程和测量方程描述: - **状态方程**:描述系统如何随时间演变,例如 $x_k = A x_{k-1} + B u_k + w_k$。其中: - $x_k$ 是当前时刻的状态向量, - $A$ 是状态转移矩阵, - $B$ 是控制输入矩阵, - $u_k$ 是控制输入, - $w_k$ 是过程噪声(通常为高斯噪声,$w_k \sim \mathcal{N}(0, Q)$)。 - **测量方程**:描述如何从状态得到测量值,例如 $z_k = H x_k + v_k$。其中: - $z_k$ 是测量值, - $H$ 是观测矩阵, - $v_k$ 是测量噪声($v_k \sim \mathcal{N}(0, R)$)[^1]。 #### 原理(两步递归过程) 卡尔曼滤波的核心原理分为预测和更新两个步骤,每个步骤都基于概率模型优化状态估计值和其不确定性(用协方差矩阵表示)。 1. **预测步骤(Prediction)**: 基于系统模型预测当前状态和协方差。 - 预测状态:$$\hat{x}_k^- = A \hat{x}_{k-1} + B u_k$$ - 其中,$\hat{x}_k^-$ 是先验状态估计(预测值),$\hat{x}_{k-1}$ 是上一时刻的后验估计。 - 预测协方差:$$P_k^- = A P_{k-1} A^T + Q$$ - $P_k^-$ 是先验估计的协方差矩阵,$Q$ 是过程噪声协方差,表示预测的不确定性[^2]。 2. **更新步骤(Update)**: 结合新测量值校正预测值,得到更精确的后验估计。 - 计算卡尔曼增益(Kalman Gain):$$K_k = P_k^- H^T (H P_k^- H^T + R)^{-1}$$ - $K_k$ 权衡预测和测量的可信度:当测量噪声小($R$ 小)时,增益增大,更信任测量值。 - 更新状态估计:$$\hat{x}_k = \hat{x}_k^- + K_k (z_k - H \hat{x}_k^-)$$ - 其中,$z_k - H \hat{x}_k^-$ 是测量残差(新息)。 - 更新协方差:$$P_k = (I - K_k H) P_k^-$$ - $P_k$ 是后验协方差,反映更新后的不确定性[^1]。 #### 为什么有效? - 卡尔曼滤波通过小化估计误差的协方差(即优化均方误差),实现了优线性估计。其递归结构确保计算高效,时间复杂度低。 - 在每次迭代中,算法“融合”模型预测和实际测量:如果模型精确,预测主导;如果测量可靠,更新主导。这使其在噪声环境中鲁棒性强[^1][^2]。 - 对于非线性系统,扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF)使用近似技术(如线性化或无迹变换),但基本原理相同[^3]。 总结来说,卡尔曼滤波就像一个“智能滤波器”,不断调整状态估计以减少噪声影响。其核心在于概率模型和递归优化,使它在实时系统中成为状态估计的黄金标准。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值