前言
在准备着考博英语复习的过程中,为了更好的与以后读博课题进行接轨,我抽出时间学习了卡尔曼滤波。首先通过查阅相关领域的教材,理解了基本的卡尔曼滤波的原理。为了巩固理解,编写了物体运动状态定位的仿真程序。随后继续研究一些常用卡尔曼滤波的变种算法。以下便是我对卡尔曼滤波算法的理解。
一.问题的引入
为了理解卡尔曼滤波算法,收集了许多资料,其中最形象的理解方式是某位吧友以传感器的例子进行类比举例。
首先,我们抛开卡尔曼滤波问题,来考虑下最简单的传感器问题。如果我们有一个传感器A,我们知道世界上不存在绝对精确的测量,因此
我们可以很容易发现,为了提高测量的质量我们可以进行多次测量然后取其平均值作为我们的最终测量结果,这样可以减少误差。假设进行两次测量,我们有以下结果。
但是有时候我们需要一个实时的测量结果。比如测量某时间点房间的气温。对于这样的问题,重复测量并不被允许,也不可能被实现。此时可以考虑再增加一个传感器,分别进行测量。然后,从直观上讲,取两个传感器的平均值来减少总体测量的误差。但是在实际中,传感器和传感器之间的误差并非完全相同,取平均值的方法并不科学。试想,如果我们有 A ,
不难想象最后测量结果一定是 XA 与 XB 的线性组合。且它们的系数之和必须为1。其形式如下:
其中 k∈[0,1] 。我们只需要找到这样的一个 k ,
在极值点出可以得到:
从而有:
用 P 表示求随机变量方差的函数,将上面的式子进行调整:
通过这种方法我们可以利用两个传感器测出一个最理想的值。但是如果此时只有一个传感器怎么办?假设我们还能知道系统的方程,就可以从数学上推断出一个值,这个值与传感器得到的值不相关。我们可以把这个计算出来的值看做一个独立的传感器,然后通过以上的方法进行计算,算出最优估计值。通俗的讲,这就是卡尔曼滤波的主要思想。但是卡尔曼滤波远远比两个传感器问题要复杂的多。下面我利用一个真实的案例来简单的讲解卡尔曼滤波算法的整个过程。
二.气温测量的案例
假设我们要研究一个房间的温度,以一分钟为时间单位。
根据我们的经验判断,这个房间的温度是恒定的。但是我们对我们自己的经验并不是完全的信任,可能存在上下几度的偏差。我们需要把这个偏差看做是高斯白噪声。另外,在房间里放置一个温度计。温度计也并非完全准确,测量值会与实际值存在一定偏差。我们把这偏差也看做是高斯白噪声。现在,我们要根据以上信息来估算出房间的实际温度。
Step 1: 假设在t−1时刻我们预测房间的温度为23度,预测的误差为3度。假设它是服从高斯分布,我们将3度视为温度标准差。
Step 2: 根据我们的经验,在没有外界干扰的情况下房间的温度将会恒定不变。于是我们预测在t时刻房间的温度为23度。但是预测本身也会存在误差。我们把这个误差看做是服从高斯分布。假设其标准差为4度。值得一提的是对于4度和3度,两个高斯分布是相互独立的。综合这两个高斯分布,通过我们的经验可以得到