先上公式:
在一个离散控制过程的系统中,假设该系统可用一个线性随机微分方程(Linear Stochastic Difference equation)来描述:
x
k
=
A
x
k
−
1
+
B
u
k
−
1
+
w
k
−
1
x_k=Ax_{k-1}+Bu_{k-1}+w_{k-1}
xk=Axk−1+Buk−1+wk−1。
其中x是系统的状态向量,大小为n* 1列;A为转换矩阵,大小为n* n;u为系统输入,大小为k* 1;B是将输入转换为状态的矩阵,大小为n* k;随机变量w为系统噪声(高斯白噪声,均值为0,方差为Q)。再加上系统测量值:
z
k
=
H
x
k
+
v
k
z_k=Hx_k+v_k
zk=Hxk+vk。
其中z是测量值,大小为m* 1;H是状态变量到测量的转换矩阵,大小为m*n;随机变量v是测量噪声(高斯白噪声,均值为0,方差为R)。这些测量值是由系统状态变量映射出来的。对于满足以上线性随机微分系统、过程和测量都是高斯白噪声两个条件的滤波问题,卡尔曼滤波器是最优的信息处理器。
卡尔曼滤波是一种递归过程,主要有预测和更新两个步骤。其中预测包括状态预测和协方差预测,主要是对系统状态的预测。更新包括计算卡尔曼增益、状态更新和协方差更新。因此整个递归过程包括五个方面的计算:1)状态预测;2)协方差预测;3)卡尔曼增益;4)状态更新;5)协方差更新。具体公式在文章顶部。
正如卡尔曼滤波的步骤,卡尔曼滤波的核心也就是预测+测量反馈。我个人认为的一种好的理解卡尔曼滤波的方式是,根据系统所给的参数、k-1时刻的系统状态,预测k时刻的系统状态分布是一种高斯分布;根据k时刻系统观测值得到的k时刻的系统状态分布也是一种高斯分布,这两种分布存在交集,卡尔曼滤波就是从这两种分布中得到的新的高斯分布,求得最优估计值。换一种说法,在多元高斯分布中,各个变量服从高斯分布,每个变量都有一个均值 μ,表示随机分布的中心(最可能的状态),以及方差
σ
2
\sigma ^{2}
σ2,表示不确定性。理论预测值属于先验信息,而观测值属于后验信息,卡尔曼滤波基于最小均方差,借助先验、后验信息求得最优估计。
对于公式中的H阵,我个人的理解是:整个卡尔曼滤波,最终的变量是系统值。包括预测、更新、估计在内,都是围绕着这个系统值展开的,所有的参数最终都要转化到系统值上,也就是统一度量才成立。举个例子,系统值是传感器的数据( z k z_k zk),现在我们有一组状态量,假设是速度和方位(x={v,o}),显然x和z并不是一个尺度的量,因此必须引入H阵,将系统状态转换到系统值层面上。同理,更新阶段公式中的H阵也是一样的道理。
附上几篇参考的博文,都非常不错:
国外某大神形象的分析卡尔曼滤波
卡尔曼滤波的推导