最近期末考试完了,终于有时间静下心来好好推一下卡尔曼最优预测跟滤波的相关方程了,虽然之前也用过也知道怎么用,但是也仅仅停留在知道怎么用能用来干什么的境界。老早就想好好理一理卡尔曼的几个基本方程,也算是来填个坑。
最早接触卡尔曼滤波还是在三年前调试惯性MEMS的时候,就那么十几几十行代码甚至神奇,当时理解起来也只能是人云亦云,什么陀螺仪是短时测量精准但是存在积分误差,加速度计短时测量没有陀螺仪准但是不存在积分误差,可以用加速度计来修正陀螺仪的积分误差等等等等......反正那会儿也没去深究,能用就行了,但是心里总感觉有一个梗......
现在有时间也有相关的知识储备来好好探究一下那几个方程了,打算用两篇文章来详细地推导一下卡尔曼最优预测方程跟卡尔曼最优滤波方程,如果过年回老家有时间精力的话我会写一个demo来实际评估一下卡尔曼的效果。前排提醒,这两篇文章不是卡尔曼最优预测跟最优滤波的科普性文章,不会举什么养猪、开车的例子,因此想看通俗解释的请提前绕道,个人尽量做到严谨的推导。若发现错误,望读者不吝指正。
一、基础知识复习
在正式开篇之前,希望读者能有最基本的概率论与数理统计、一点点的线性代数、一点点的微积分、亿点点的随机过程以及一些线性系统的状态空间描述的知识储备。
先给出几个简单的定义跟定理:
1.正定对称矩阵的相关性质:
(1)若为正定对称矩阵,有
,且对
,有
当且仅当
时为0
(2)若为正定对称矩阵,则
的各特征值均大于0
2.接下来帮大家复(yu)习概率论里面的相关知识:
(1)随机变量(全称应写为
,
为样本空间,一般直接简写为
)的分布函数为:
若为连续型随机变量,则有:
其中为随机变量
的概率密度,且有
(2)随机变量的数学期望(也称均值)为:
若为离散型随机变量,则有:
若为连续型随机变量,则有:
,数学期望的本质为一阶矩
(3)随机变量的方差定义为:
若为离散型随机变量,则:
若为连续型随机变量,则:
称为标准差,方差其实是二阶中心矩
(4)对于维连续型随机向量
,其联合分布函数为:
其中为
维联合概率密度。
维随机向量的期望向量(也称均值向量)为:
方差阵(有的地方也叫协方差矩阵,本质上一样,但是这里为了与下面的不同随机向量之间做区分记为方差阵)为:
方差阵主对角线为随机向量各分量的方差,其余元素为分量之间的相关矩。特别的,对于两个随机变量,若有
,则称
正交,后面我们会证明的正交定理就是基于此
(5)对于二维随机向量,其协方差为:
,当
,
均为
维随机向量时,称
为
的协方差矩阵,且:
(6)正态随机变量在实际工程中广泛存在,我们所熟知的高斯白噪声就是一类幅值服从正态分布,功率谱密度分布服从均匀分布的一类噪声。正态分布的随机变量在自然界中也是广泛存在的,中心极限定理告诉我们,无穷多个独立同分布甚至不同分布的随机变量的叠加的结果近似服从正态分布,因此单个因素可能影响很小,但是无穷多因素叠加会影响整体分布。
正态分布又称高斯分布,其概率密度为:
记为,其中
为
的均值(数学期望),
为
的方差。
正态分布有一个非常重要的性质,也就是正态分布的线性函数也服从正态分布。即若,则
。这一点非常重要,在实际采样过程中,由于采样信号中混杂着零均值的高斯白噪声,那么对采样信号叠加的时候实际有用信号幅值会叠加,但是零均值的高斯白噪声叠加均值仍然为零,相当于变相地提高了信噪比。
(8)对于维正态随机向量
,其均值向量为
,协方差矩阵为
若协方差矩阵非奇异即,则其
维联合概率密度为:
,记为
此时协方差矩阵为一个正定对称矩阵。若协方差矩阵
为奇异矩阵,
不存在,则上面的联合概率密度公式无意义,此时称该
维随机向量服从退化正态分布(也称奇异正态分布)。上面提到正态分布的线性函数也服从正态分布,对于多维正态随机向量,有同样的性质。即对于
维正态随机向量
服从
的正态分布,且
为任意矩阵,则线性变换
服从
维正态分布
,此性质称为正态随机变量的线性不变性。
3.坐稳了,下面开始复(yu)习随机过程的相关知识
(1)随机过程的严格定义是:对于给定概率空间和指标集
,若对于每一个
,有定义在
上的随机变量
与之对应,称依赖于
的随机变量族
为随机过程,记为
,或记为
以及
,定义比较抽象,这里举个简单的例子,拿我们熟知的电阻的热噪声来讲,指标集
就是时间,对于
时刻我们对热噪声采样,则实际采样得到的数据其实是一个随机变量,其服从正态分布,因此电阻热噪声就是个正态过程,当然指标集
可以是连续的也可以是离散的,可以是时间也可以是其他。常见的随机过程分类就是正态过程、更新计数过程、平稳过程、马尔可夫过程等。随机过程
可以看成一个无穷维的随机向量,我们可以用有限维分布函数族来近似的刻画随机过程,但是较为复杂,实际工程不可能采用此方法来分析随机过程,因此我们经常研究随机过程的一阶矩、二阶矩统计特性。
一阶矩其实就是我们在概率论里所熟知的均值,但是这里是的一个函数,即:
称为随机过程的均值函数。有了均值函数,我们可以定义随机过程的方差函数
下面给出随机过程的一些重要的数字特征:
对于随机过程,称
为随机过程的自相关函数,自相关函数是随机过程中最常用的数字特征。称
为随机过程的协方差函数,不难得出以及
(2)就像多维随机变量一样,也存在多维随机过程,给定两个随机过程,则称
为两随机过程的互协方差函数,其中。称
为两个随机过程的互相关函数,同样,若对有
,则称随机过程
相互正交
(3)二阶矩过程:对于随机过程,若对
有
,则称该随机过程为二阶矩过程
(4)平稳过程:若随机过程的任意
维联合分布函数不随时间推移而改变,则称此随机过程为严平稳过程,但是由于严平稳过程要求过于严格,且证明较困难,因而在实际工程技术中应用更多的一类是宽平稳过程。对于二阶矩过程
,若满足
(a)为一个常数
(b)对只与时间区间长度有关,与起始时间无关
则称此二阶矩过程为宽平稳过程,一般来讲严平稳过程不一定是宽平稳过程,宽平稳过程也不一定是严平稳过程,但是对于正态过程,严平稳与宽平稳等价。此外,正态随机过程还有一个非常重要的性质就是正态随机过程经过线性系统之后还是正态随机过程。本文所讲的平稳过程均指宽平稳过程
*(5)关于平稳过程的均方遍历性(也称为各态历经性),通俗的来讲就是可以仅利用一条样本轨迹来估计整体的统计特性,虽然实际工程中许多随机过程都满足均方遍历性,但是其定义涉及到均方微积分的相关概念,数学验证也往往很困难,不过很多时候可以根据实际工程背景来确定。在此就不展开叙述,读者若有兴趣可以翻阅随机过程相关书籍的相关章节
*(6)傅里叶变换是一种有效的信号分析方法,同样我们可以用傅里叶变换来分析平稳过程获得平稳过程的功率谱。对于平稳过程是均方连续的,若其自相关函数
满足
则此平稳过程功率谱密度为:
同时
即平稳过程的相关函数与功率谱密度构成一对傅里叶变换。称
为平稳过程
的谱函数
4.线性系统的状态空间描述
(1)线性系统的定义在这里就不给出了,线性系统最重要的性质是满足齐次跟叠加原理。线性系统又分为线性时变系统跟线性定常系统。线性时变系统是指系统各结构参数会随时间变化的线性系统,而线性定常系统则不会随时间变化,拿我们人体为例,我们身体各器官各功能从长远看一定在变化,比如我们的听力、视力等一定会衰减,这时就是一个时变系统,但是在很短的时间内我们的各项器官功能可以看作不变的,这时可以看成是一个定常系统。
描述一个动态系统,最常用的两种方式是传递函数描述外部的输入输出关系以及状态空间描述内部各状态变化规律。传递函数的相关介绍在此就不展开,可以参考信号与系统相关章节,本文的重点是系统的状态空间描述。卡尔曼等人在20世纪60年代将状态以及状态空间的概念引入到系统控制理论中,极大地推动了系统的时间域理论的发展,状态空间描述不仅可以用于分析单输入单输出的线性定常、时变系统、还可以分析多输入多输出的线性系统、非线性系统,本文所讲的卡尔曼滤波就是基于线性系统的状态空间描述。
(2)系统的状态是指一组能完整描述系统的时间域行为或运动过程的线性无关(数目最少)的变量,当状态表示为以各状态变量为分量的向量时,称为状态向量,记为:
状态空间定义为状态向量的集合,是以状态向量的个线性无关的分量为基底生成的
维线性空间。这里可以举个简单的例子,还是拿我们人体来说,我们人体本身就是一个复杂的系统,描述我们人体的时候我们经常选取的一些变量可以是身高、体重、性别、年龄....这些变量就可以称为我们人体这个系统的状态。系统的状态空间描述通常需要两个过程,即系统的输入引起系统内部状态变化的过程以及状态与输入导致的输出变化的过程。输入引起状态变化是一个动态过程,通常用微分方程来描述,称其为状态方程。而状态与输入导致输出的变化是一个转化的过程,通常用代数方程来描述,称其为输出方程或者量测方程。记系统的
个输入为:
系统的个输出为:
则对于连续时间线性时变系统可以描述为:
其中为与时间相关的
维矩阵,称为系统矩阵;
为
维输入矩阵;
为
维输出矩阵;
为
维前馈矩阵。它们均由系统的参数或结构决定。特别的,当系统的各项参数结构不随时间变化时,则
退化为与时间无关的常数矩阵,此时系统变为线性定常系统,其状态空间描述可写为:
(3)我们实际经常使用的数字系统本质上是离散的线性系统,此时可以用差分方程的形式给出离散时间线性时变系统的状态空间描述,即:
同样,对于离散时间线性定常系统的状态空间描述为:
5.相关定理的证明:
在推导卡尔曼最优预测以及最优滤波方程时,经常用到正交定理,下面我们来证明一下正交定理。
在讨论线性最小方差估计的时候,通常使用观测值的线性函数来表示
的估计值,即:
,式中
为待定的常数,
则估计误差方差要最小,即:
当达到最小时,应满足:
,即
式中
为估计误差,立即可得到:
即估计误差与观测值的乘积的期望为0,也就是估计误差与观测值正交。
充分性的证明在此略去,仅需证明在估计误差与观测值正交的条件下确实是方差最小的。
同样我们可以证明估计误差与
也是正交的。由于线性最小方差估计是无偏估计,即有:
则我们有:
,即
与
正交。
以上对所需的数学基础知识以及线性系统的相关知识做了一些复习,下一节我们将正式进入线性系统的卡尔曼滤波部分的学习。
二、问题的提法
在实际系统中,信号总是受到各种随机噪声的干扰,因此引起我们系统各状态变化的因素里面还应加上一项干扰项,此时系统的状态方程应改写为:。同时我们的各传感器、ADC等量测得出的信号其实也都是受到随机噪声干扰的信号,在没有前馈通道的情况下,量测方程实际上应写为
(这里用符号区别于之前讲的量测方程,其实本质上都是对状态的反映)。上两式中,
为干扰向量,
为观测向量,
为观测噪声向量。为了实现最优控制,我们需要实际的状态向量
,但是状态向量受到随机噪声的干扰,因此需要估计状态向量
,并且需要状态向量的估计值
尽可能的接近实际状态向量。但是在大家实际应用的基本上都是离散的数字系统,因此我们主要来研究线性离散系统的卡尔曼滤波。
我们给出卡尔曼滤波问题的提法:
对于线性离散的随机系统的卡尔曼滤波问题可以描述为:
设有线性离散随机系统状态空间描述如下:
式中:
为
维状态向量;
为
维输入控制向量;
为
维随机干扰向量;
为
维量观测向量;
为
维随机观测噪声向量;
分别为
维矩阵。
并且假定:
(1)均为零均值的白噪声或高斯白噪声序列,且
相互独立,即有:
其中,为
的方差阵,是一个非负定对称矩阵,
为
的方差阵,是一个正定对称矩阵。
(2)状态向量的初始时刻均值为
,方差阵
(3)与
不相关,即
这些假定是合理的,因为通常我们所接触到的噪声都是高斯白噪声,都是正态随机过程,经过采样之后成为高斯白噪声序列,且系统噪声与量测噪声分属不同部分一般都是不相关的,且实际有用信号也跟噪声是不相关的。
对于式所描述的系统,已经得到观测序列
,要求找出
的线性最优估计
,使得估计值
与
之间的误差
的方差
最小,同时要求估计值
是观测序列
的线性函数,且估计是无偏的,即
根据和
的大小,估计问题可以分为三类:
(a) 称为预测问题
(b) 称为滤波问题
(c) 称为平滑问题
这里仅研究预测以及滤波问题。
三、线性离散系统的卡尔曼最优预测方程
通常在推导卡尔曼最优预测方程时,我们均忽略控制输入信号的作用,即输入为0,这样我们可以得到系统的状态空间描述为:
给定观测序列,我们需要找出
的最优估计
,称此估计为一步最优估计,使得估计误差:
的方差最小,也就是使得:
当我们已经获得观测序列后,假定我们已经找到了状态向量
的一个最优线性预测估计
。在我们还没有获得观测值
的情况下,先对
时刻的状态向量
做出估计,观察状态方程,由于
为零均值的白噪声序列,我们无法做具体预测,其最优估计为
,因此只能把
当作状态向量的一个预测估计。
则当是
的最优线性估计时,我们所得到的
也是
的最优线性估计,下面给出证明:
证明:由
由于是
的最优线性估计,根据正交定理,估计误差
应正交于
,同时,由于
均值为零且与
相互独立,即有
,因此
与
也正交,根据线性代数的相关知识,我们可以得出
的线性变换
与
的线性变换
的叠加也应与
正交,即
也与
正交。所以,在获取到观测向量
之前,
是
的最优线性估计。
在获取到观测向量之后,我们就可以利用观测值
来修正
。
由于是
的最优线性估计,则通过量测方程,且由于
也是零均值的白噪声序列且无法预测,我们可以得到
时刻观测向量
的最优线性估计为:
若获取到的观测值恰好等于预测估计
,则新的观测值
并没有提供任何有用的信息,无法用于修正
。关于这一点,只需要证明估计误差
与
正交即可,下面给出证明:
证明:根据正交定理,我们有
接下来我们计算
不难看出上式中右侧第一项与第二项均为0,因此可以得出误差与
正交。
因此,若获取到的观测值恰好等于预测估计
,则
就是
的最优线性估计。但是在实际中,一般观测值
不可能恰好等于预测估计
,但是我们可以分析一下误差的来源:
由
而
从上式我们不难看出误差主要来源于的估计误差
以及量测噪声
。因此我们可以考虑用量测误差
来修正我们之前的预测值
使其变为
。由于采用的是线性估计方法,通常我们使用加权的方法来修正,也就是在
后加上一项与
成正比的修正项
,如此,我们可以得到:
即:
式中为一个待定的矩阵,称为最优增益矩阵或加权矩阵。式
可进一步写成:
要让是
的最优线性估计,那么估计误差:
必定与观测序列均正交。
由
则估计误差:
观察上式右边已正交于,因而
也正交于
,因此,只要
还正交于
,那么
就是
的最优线性估计。因此我们可以根据最优线性估计的条件来反算出最优增益矩阵
。(学过现代控制论的同学可能注意到,上式右侧第一项的系数是不是非常眼熟(矩阵
)?其实就是观测器的系统矩阵。)
由与
正交,即:
也就是:
观察上式右侧,不难看出第1、3、4、5、6、7、8项均为0,因此可以进一步化简为:
上式中为误差方差阵,简记为
,且又
,则:
即:
因此可以计算出最优增益矩阵:
上式中引入了误差方差阵,下面开始计算他的迭代式:
由其定义式可知:
不难看出上式右侧第2、3、4、6、7、8项均为0,因此可以进一步化简为:
进一步展开得:
观察上式中右侧第4项以及第6项,我们有:
将式代入上式右侧中前面的
有:
将上式代回式可得:
将式代入上式中的
有:
由此得到误差方差阵的递推公式。
最后将式、
、
综合起来可以得到卡尔曼最优预测方程如下:
最优预测估计方程:
最优增益矩阵方程:
误差方差阵递推方程:
至此推导完成。
四、线性离散系统的卡尔曼最优预测的算法实现
(1)给定时刻的初始值:
估计误差的方差阵为:
(2)计算时刻的最优增益矩阵
:
(3)此时应获取到新的观测值,结合新观测值,计算
的最优预测估计:
(4)更新估计误差方差阵:
(5)获取到新的估计误差方差阵之后可以计算时刻的最优增益矩阵
(6)根据新的观测值,结合
,计算
的最优预测估计
......
依次迭代。
五、总结
第四节中的算法实现可以看出卡尔曼最优预测所需要存储的数据很少,仅仅是更新后的最优增益矩阵、误差方差阵以及前一时刻的最优状态预测估计值,不需要存储其他过去时刻的值,极大地减少了存储量跟运算量,因此便于实时处理。
正是由于卡尔曼等人提出的线性系统的状态空间描述以及相关的估计、滤波算法使得二十世纪六十年代以来航空航天事业、制导、定位、火控等迅猛发展。在此对老爷子致以崇高的敬意。
写到这里最优预测篇也该结束了,即将开启下一篇--最优滤波篇。