-
卡尔曼滤波器
Kalman
Filter
(zz)
关键词
:
卡尔曼滤波器
Kalman
Filter
在学习卡尔曼滤波器之前,首先看看为什么叫
“
卡尔曼
”
。跟其他著名的理
论(例如傅立叶变换,泰勒级数等等)
一样,卡尔曼也是一个人的名字,而跟他们不同的
是,他是个现代人!
卡尔曼全名
Rudolf
Emil
Kalman
,匈牙利数学家,
193
0
年出生于匈牙利首都布达佩斯。
1953
,
1954
年于麻
省理工学院分别
获得电机工程学士及硕士学位。
1957
年于哥伦比亚大学获得
博士学位。
我们现在要学习的卡尔
曼滤波器,正是源于他的博士
论文和
1960
年发表的论文《
A
New
Approach
to
Linear
Filtering
and
Predict
ion
p>
Problems
》(线性滤波与预测问题的新方法)。如果对这编
论文有兴趣,可以到这里的地址下载:
/~welch/kalman/media/pdf/
<
/p>
简单来说,
卡尔曼滤波器是一个
“opt
imal
recursive
data
processing
algorithm
< br>(最优化自回归数据处理算法)
”
。
对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过
30
年,包括机器人
导航,控制,传感器数据融合甚至在军
事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处
理,例如头脸识别
,图像分割,图像边缘检测等等。
2
.卡尔曼滤波器的介绍
(
Introduction
to
the
Kalman
Filter
)
为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描
述方法来讲解,而不是像大多数参考书那样罗列
一大堆的数学公式和数学符号。但是,他
的
5
条公式是其核心内容。结合现代的计算机,其实卡尔曼的程
序相
当的简单,只要你理解了他的那
5
条公式。
在介绍他的
5
条公式之前,先让我们来根据下面的例子一步一步的探索。
假设我们要研究的对象是一个房间的温度。根据你
的经验判断,这个房间的温度是恒定的,也就是下一分钟的
温度等于现在这一分钟的温度
(假设我们用一分钟来做时间单位)。假设你对你的经验不是
100%
< br>的相信,可
能会有上下偏差几度。我们把这些偏差看成是高斯白噪声(
White
Gaussian
Noise
p>
),也就是这些偏差跟前后
时间是没有关系的而且符合高斯分配(<
/p>
Gaussian
Distribution
< br>)。另外,我们在房间里放一个温度计,但是这
个温度计也不准确的,测量值会比
实际值偏差。我们也把这些偏差看成是高斯白噪声。
好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测
值)和温度计
的值(测量值)。下面我们要用这两个值结合他们各自的噪声来估算出房间
的实际温度值。
假如我们要估算<
/p>
k
时刻的是实际温度值。首先你要根据
k
-1
时刻的温度值,来预测
k
时刻的温
度。因为你相信
温度是恒定的,所以你会得到
k
时刻的温度预测值是跟
k-1
时刻一样的,假设是
p>
23
度,同时该值的高斯噪声
的偏差是
p>
5
度
(
5
是这样得到的:
如果
k-1
时刻估算出的最优温度值的偏差是
3
,
你对自己预测的不确定度是
4
度,他们平方相加再开方,就
是
5
)。然后,你从温度计那里得到了
k
时刻的温度值,假设是
25
度,同时
该值
的偏差是
4
度。
< br>
由于我们用于估算
k
时刻的实际温度有两个温度值,分别是
23
度
和
25
度。
究竟实际温度是多少呢?相
信自己
还是相信温度计呢?究竟相信谁多一点,我们可以用他们的
covariance
来判断。因为
Kg^2=5^2/(5
^2+4^2)
,
所以
Kg=0.78
,我们可以估算出
k
时刻的实际温度值
是:
23+0.78*(25-23)=24.56
度。可以看
出,因为温度计
的
covariance
比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。
现在我们已经得到
k
时刻的最优温度值了,下一步就是要进入
k+1
时刻,
进行新的最优估算。到现在为止,好
像还没看到什么自回归的东西出现。对了,在进入<
/p>
k+1
时刻之前,我们还要算出
k
时刻那个最优值(
24.56
度)
的偏差。
算法如下:
((1-Kg)*5^2)^
0.5=2.35
。这里的
5
就是上面
的
k
时刻你预测的那个
23
度温度值的偏差,
得
出的
2.35
就是进入
k+1
时刻以后
p>
k
时刻估算出的最优温度值的偏差(对应于上面的
< br>3
)。
就是这样,卡尔曼滤波器就不断的把
covariance
递归,从而估算出最优的温度值。他运行的很快,而且它只保
留了上一时刻的
covariance
。上面的
Kg
,就是卡尔曼增益(
Kalman
Gain
)。他可以随不同的时刻而改变他
自己的值,是不是很神奇!
下面就要言归正传,讨论真正工程系统上的卡尔曼。
3
.
卡尔曼滤波器算法
(
The
Kalman
Filter
Algorithm
)
在这一部分,我们就来描述源于
Dr
Kalman
的卡尔曼滤波器。下面的描述,会涉及一些基本
的概念知识,包
括概率(
Probability
),随即变量(
Random
Variable<
/p>
),高斯或正态分配(
Gaussian
Distribution
)还有
Sta
te-space
Model
等等。但对于卡尔曼滤波器
的详细证明,这里不能一一描述。
首先,我们先要引入一个离散控制过程的系统。该系统可用一个线性随机微分方程(
Li
near
Stochastic
Differ
ence
equation
)来描述:
X(k)=A
X(k-1)+B
U(k)+W(k)
再加上系统的测量值:
Z(k)=H
X(k)+V(k)
上两式子中,
X(k)
是
k
时刻的系统状态,
U(k)
是
k
时刻对系统的控制量。
A
和
< br>B
是系统参数,对于多模型系统,
他们为矩阵。
Z(k)
是
k
时刻的测
量值,
H
是测量系统的参数,对于多测量系统,
H
为矩阵。
W(k)
和
V(k)
分别表
示过程和测量的噪声。
他们被假设成高斯白噪声
(White
Gaussian
Noise)
,<
/p>
他们的
covariance
分别是<
/p>
Q
,
R
(这
p>
里我们假设他们不随系统状态变化而变化)。
对于满足上面的条件
(
线性随机微分系统,过程和测量都是高斯白噪声
)
,
卡尔曼滤波器是最优的信息处理器。
下面我们来用他们结合他们的
covariances
来估算系统的最优化输出(类似上一节那个温度的例子)。
首先我们要利用系统的过程模型,来预测下一状态的系统。假
设现在的系统状态是
k
,根据系统的模型,可以
基于系统的上一状态而预测出现在状态:
X(k|k-1)=A
X(k-1|k-
1)+B
U(k)
………..
(1)
式
(1)
中,
X(k|k-1
)
是利用上一状态预测的结果,
X(k-1|k-1)
是上一状态最优的结果,
U(k)
为现在状态的
控制量,
如果没有控制量,它可以为
0
。
到现在为止,我们的系统结果已
经更新了,可是,对应于
X(k|k-1)
的
< br>covariance
还没更新。我们用
P
表示
cov
ariance
:
P(k|k-1)=A
P(k-1|k-
1)
A’+Q
………
(2)
式
(2)
中,
P(k|k-1)<
/p>
是
X(k|k-1)
对应的
covariance
,
P(k-1|k-1)
p>
是
X(k-1|k-1)
对应的
covariance
,
A’
表示
A
的转置
矩阵,
Q
是系统过程的
covariance
。式子
1
,
2
就是卡尔曼滤波器
5
个公式当中的前两个,也就是对
系统的预
测。