浅谈卡尔曼滤波(Kalman Filter)(一)

本文介绍了卡尔曼滤波的基本概念和应用场景,通过一个气温测量的案例深入浅出地解释了卡尔曼滤波的工作原理,展示了如何结合人为经验和传感器数据进行最优估计。文章适合对滤波算法感兴趣的读者入门学习。

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


前言


  在准备着考博英语复习的过程中,为了更好的与以后读博课题进行接轨,我抽出时间学习了卡尔曼滤波。首先通过查阅相关领域的教材,理解了基本的卡尔曼滤波的原理。为了巩固理解,编写了物体运动状态定位的仿真程序。随后继续研究一些常用卡尔曼滤波的变种算法。以下便是我对卡尔曼滤波算法的理解。


一.问题的引入


  为了理解卡尔曼滤波算法,收集了许多资料,其中最形象的理解方式是某位吧友以传感器的例子进行类比举例。
  首先,我们抛开卡尔曼滤波问题,来考虑下最简单的传感器问题。如果我们有一个传感器A,我们知道世界上不存在绝对精确的测量,因此 A 的测量值一定存在误差。最理想的状态是A的测量误差很小可以忽略不计,其测量结果可以被我们直接使用。但是现实中传感器的测量结果往往不太让人满意。假设 A 传感器测量结果是一个连续数值,且这个数值服从以下正态分布。
  

XAN(μA,σ2A)

  我们可以很容易发现,为了提高测量的质量我们可以进行多次测量然后取其平均值作为我们的最终测量结果,这样可以减少误差。假设进行两次测量,我们有以下结果。
  
XA1+XA22N(μA,σ2A2)

  但是有时候我们需要一个实时的测量结果。比如测量某时间点房间的气温。对于这样的问题,重复测量并不被允许,也不可能被实现。此时可以考虑再增加一个传感器,分别进行测量。然后,从直观上讲,取两个传感器的平均值来减少总体测量的误差。但是在实际中,传感器和传感器之间的误差并非完全相同,取平均值的方法并不科学。试想,如果我们有 A , B 两个传感器,其中 A 传感器的误差较小, B 传感器的误差较大,此时我们是否应该相信 A 更多一些呢?具体分析如下:
  
XAN(μA,σ2A)XBN(μB,σ2B)

  不难想象最后测量结果一定是 XA XB 的线性组合。且它们的系数之和必须为1。其形式如下:
  
X^=kXA+(1k)XBX^N(kμA+(1k)μB,k2σ2A+(1k)2σ2B)

  其中 k[0,1] 。我们只需要找到这样的一个 k k 满足以上所有条件且使得的方差最小。令:
  
f(x)=k2σ2A+(1k)2σ2Bddkf(k)=2kσ2A2(1k)σ2B=0

  在极值点出可以得到:
  
k=σ2Bσ2A+σ2B

  从而有:
  
X^=σ2Bσ2A+σ2BXA+σ2Aσ2A+σ2BXBX^N(σ2Bσ2A+σ2BμA+σ2Aσ2A+σ2BμB,σ2Aσ2Bσ2A+σ2B)

  用 P 表示求随机变量方差的函数,将上面的式子进行调整:
  
P(X^)=σ2A(1σ2Aσ2A+σ2B)

  通过这种方法我们可以利用两个传感器测出一个最理想的值。但是如果此时只有一个传感器怎么办?假设我们还能知道系统的方程,就可以从数学上推断出一个值,这个值与传感器得到的值不相关。我们可以把这个计算出来的值看做一个独立的传感器,然后通过以上的方法进行计算,算出最优估计值。通俗的讲,这就是卡尔曼滤波的主要思想。但是卡尔曼滤波远远比两个传感器问题要复杂的多。下面我利用一个真实的案例来简单的讲解卡尔曼滤波算法的整个过程。

二.气温测量的案例


  
  假设我们要研究一个房间的温度,以一分钟为时间单位。
  根据我们的经验判断,这个房间的温度是恒定的。但是我们对我们自己的经验并不是完全的信任,可能存在上下几度的偏差。我们需要把这个偏差看做是高斯白噪声。另外,在房间里放置一个温度计。温度计也并非完全准确,测量值会与实际值存在一定偏差。我们把这偏差也看做是高斯白噪声。现在,我们要根据以上信息来估算出房间的实际温度。
温度测量
  Step 1: 假设在t1时刻我们预测房间的温度为23度,预测的误差为3度。假设它是服从高斯分布,我们将3度视为温度标准差。
  Step 2: 根据我们的经验,在没有外界干扰的情况下房间的温度将会恒定不变。于是我们预测在t时刻房间的温度为23度。但是预测本身也会存在误差。我们把这个误差看做是服从高斯分布。假设其标准差为4度。值得一提的是对于4度和3度,两个高斯分布是相互独立的。综合这两个高斯分布,通过我们的经验可以得到 t 时刻的气温为23度,其标准差为5度(5

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值