在学习卡尔曼滤波的时候看了很多博客讲这方面的知识,感觉都讲得表面的东西,无法了解它五个公式真正代表的过程,这篇博客我想以我的理解讲讲卡尔曼滤波。

首先我先写出卡尔曼滤波的具体过程,首先针对如下状态空间模型(因为卡尔曼滤波都是针对状态空间模型进行滤波的):

其中分别为系统噪声和测量噪声,对于不了解这个模型怎么回事的建议去补补现代控制理论的知识,这里就不加解释这个模型是什么。

针对上述模型存在如下卡尔曼滤波迭代公式:

这里我想解释一下这五个公式中变量代表的含义:

1.代表状态一步预测值,简单理解就是我们在已知模型的基础上(这时候不知道下一拍的测量值)预测下一拍系统的状态值得到的结果。举个例子,假如一个恒温系统中,此时估计的温度为38度,在不知道下一时刻温度计测量值的基础上估计系统下一时刻的预测值为38度。

2.代表状态预测的误差,由公式1可以知道状态预测值,但是这个值肯定和我们下一拍实际的状态值有所偏差,就是体现这个偏差大小的一个指标,统计学上将误差均方差。

3.表示滤波增益,怎么理解这个增益??我们由系统方程可以得到下一拍状态预测值,由传感器可以得到状态的测量值,当前这两个数据对于状态的真实值来说都是存在误差的,怎么将误差达到更小呢??将两种数据融合在一起可以达到误差更小,融合的方式就是这和滤波增益,你可以看成两种数据之间的一个权重。

4.代表状态估计,就是将上面将的两种数据融合之后的值。

5.表示状态估计均方差,我们融合后的数据肯定相对于真实值之间还存在一定的误差,表示就是这个误差的大小,也是均方差。

通过上述的解释后,我将卡尔曼滤波推导过程写下来,推导的方式我现在看到的有两种:一种是严恭敏老师在捷联惯导算法与组合导航算法中的推导;一种是邓自立老师在信息融合滤波理论及其应用中的推导。严老师的推导过程便于理解,但是推导过程不是特别严谨,邓老师的推导过程严谨,但是过程很难理解,但是理解之后对于后续的学习很有好处,不然你连新息是啥都不知道。

  • 严老师推导过程

由状态方程可知,一步预测状态表达式如下:

(1)

这里是因为系统方差W为零均值的误差,所以有:

                                          (2)

则状态一步预测误差如下:

                     (3)

将状态方程和一步预测表达式带入上式可知:

                 (4)

由此可得一步预测均方差误差阵:

                            (5)

我们定义一个名词:新息,新息表达式如下:

                                                       (6)

这里可以通过新息来对状态估计值来进行修正,即得到如下式子:

                                                     (7)

由此我们可以得到k时刻的状态估计误差如下:

                                                                           (8)

状态估计误差均方差阵如下:

                                      (9)

下面就是怎么来求滤波增益K的问题??我们估计状态的目的肯定是为了使得估计值与真实值之间误差最小,这里的误差最小指的各个状态的均方误差之和最小,即:

                                                                   (10)

                                                        (11)

等价于:

                                                                                                            (12)

由此可得:

        (13)

最小可以对上式进行求导获得:

下面给出矩阵求导的两个式子如下:

                                                                                           (14)

利用矩阵求导式子对关于求偏导可得:

                                         (15)

根据函数极值原理,令其右端等于零可得:

                                                                                     (16)

                                                                                        (17)

将式16带入式9,即可得到:

                                                                                                                (18)

由此卡尔曼滤波的五个迭代式子就都导出了,感觉这样推导比较好理解一点,因为严老师在讲义上讲这部分很细,所以以上部分好多都是照搬的,自己理解的部分很少,有不懂的可以多看看严老师讲义。

  • 邓老师书上推导

邓老师推导过程就相对而言更加严谨一点,需要的数学知识也多一点,以下全都是我个人对书上知识的理解。

首先我们要估计一个系统的状态值,我们能够获得的是系统输出的测量值y(t),即我们要做的就是怎么利用y(t)来估计状态x(t),我们采用的是线性最小估计,即:

                                                    (2.1)

其中A,b都为矩阵,我们需要做的就是怎么获得参数A和b。

首先我们得到期望方差均方差表达式如下:

                      (2.2)

选择A和b极小化J,则有,则有:

                           (2.3)

则有:

                                            (2.4)

将式2.4带入式2.2,则有:

这里不妨令:

                                                    (2.5)

则有:

       (2.6)

,则有:

                                                                                           (2.7)

因为:

                                                                                                                                  (2.8)

则有:

                                                                                                                              (2.9)

由此可得线性最小估计下,状态估计值表达式如下:

                                                                                           (2.10)

射影定理:

我一直想着怎么将这段知识能把射影定理给绕过去,因为射影定理理解起来比较难,但是没办法,还是绕不过去,还是需要了解一些定义。

推论1:(正交性)

                                       (2.11)

证明:

                                                  (2.12)

上述式子成立是因为:

         (2.13)

由此证明上述推论。

定义:我们称与y不相关为与y正交,记,称为为x在y上的投影,记为。示意图如下:

推论2:设x为零均值随机变量,y(1),y(2),.....y(k)为零均值互不相关的随机变量,则有:

                                                        (2.14)

这个式子应该比较好理解,我就不证明了,你可以看成向量x投影到由y(1),y(2),.....y(k)为基组合构成的向量上投影等于向量x分别投影到y(1),y(2),.....y(k)基向量上分量的组合。

由此我们可以通过x投影到由y(1),y(2),.....y(k)构成的平面上的分量,即我们的估计值,计算过程如下:

                         (2.15)

从2.15可知,由于两两之间并不是正交的,所以在求2.15的表达式就会出现问题,即使求出来也会比较复杂,所以我们希望能找到一组另外的基向量,两两正交,且与y(k)具有相同的统计信息,这里的新息概念就出来了。

定义:设y(1),y(2),......y(k)为存在二阶矩的随机序列,其新息序列定义为:

                     (2.16)

定理3:信息序列是零均值白噪声。该定理可以看出两两正交。

综上可得递推射影定理:

证明过程如下:

有了递推射影公式现在来推导卡尔曼滤波的五个公式。

  • 表达式1

现在针对状态方程在y(1).............y(k-1)构成的平面空间进行投影,可得;

                                           (2.17)

通过对最上面的状态空间模型不断迭代可知,y(t)的值只与w(1).......w(t-1),v(t),x(0)有关,表达式如下:

                                 (2.18)

由此:

                                                            (2.19)

其中L代表线性空间,可得:

               (2.20)

由于系统噪声w(t)为零均值白噪声,且与测量v(t)互不相关,则有:

                                                                                                 (2.21)

由此可得:

                                                                                                          (2.22)

  • 表达式2

       (2.23)

因为:

                           (2.24)

所以有:

                                          (2.25)

所以简化式2.23可得:

                                                                                   (2.26)

  • 表达式3

由射影递推公式可得:

                                                          (2.17)

其中:

                                      (2.18)

                                   (2.19)

这里是因为有:

垂直于x(t)的投影

(2.20)

这里是因为:

将式2.20和式2.19带入式2.18可得

                                                                   (2.21)

  • 表达式4

其中有:

                                                                                  (2.22)

带入上式有:

                                                                          (2.23)

  • 表达式5

由此可得卡尔曼滤波所有表达式的推导,希望对你们理解卡尔曼滤波过程有帮助。

卡尔曼滤波的推导过程详解相关推荐

  1. BTC公钥生成地址的过程详解

    BTC公钥生成地址的过程详解 首先简单介绍一下,BTC助记词以及种子和公私钥之间的关系:BTC助记词生成种子,种子生成私钥,私钥生成公钥,公钥生成地址. 本文主要的内容是介绍公钥生成地址的这一过程: ...

  2. hadoop作业初始化过程详解(源码分析第三篇)

    (一)概述 我们在上一篇blog已经详细的分析了一个作业从用户输入提交命令到到达JobTracker之前的各个过程.在作业到达JobTracker之后初始化之前,JobTracker会通过submit ...

  3. Hadoop学习之Mapreduce执行过程详解

    一.MapReduce执行过程 MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示: ...

  4. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  5. 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  6. JetBrains DataGrip工具配置数据库过程详解

    JetBrains DataGrip工具配置数据库过程详解 DataGrip是一款数据库管理客户端工具,方便连接到数据库服务器,执行sql.创建表.创建索引以及导出数据等. DataGrip 是 Je ...

  7. Apache+PHP配置过程详解

    Apache+PHP配置过程详解 经过两晚上的奋斗终于将Apache配置PHP成功,安装配置过程中走了不少弯路,特记录之. 1.Apache配置PHP个人认为首先要注意的是Apache和PHP的版本信 ...

  8. Mysql加锁过程详解(3)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  9. 理论经典:TCP协议的3次握手与4次挥手过程详解

    理论经典:TCP协议的3次握手与4次挥手过程详解 https://blog.csdn.net/omnispace/article/details/52701752 转载于:https://www.cn ...

最新文章

  1. 【Netty】传输(Transport)
  2. 8个字典常用的内置函数,一次性给你总结了!
  3. mysql导出单表数据
  4. 关于 Oracle分页数据重复的问题
  5. JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype
  6. excel批量删除公式保留数据_Excel公式大批量输入,这几个技巧你一定不能错过...
  7. Pepperl+Fuchs收购德国手持RFID设备提供商Ecom仪器
  8. Android基础入门教程——7.5.4 WebView文件下载
  9. mysql截止5.7版本全部异常汇总 Error SQLSTATE 中英文对照
  10. 卸载神器:geek(绝对好用,中国人不骗中国人)
  11. DNS:解析域资源记录(A, AAAA, PTR, SOA, NS, CNAME, MX)
  12. 怎么用ps通道快速抠图?实用图解
  13. PS入门(1-7) HSB色彩模式
  14. 计算机无法加载这个项目,Windows系统中出现无法加载这个硬件的设备驱动程序(代码39)的解决方法介绍 win7...
  15. 外包两年,进了字节后才明白为什么所有人都想进字节,区别真的太大了
  16. Volatile关键字~转载自博客园的“海子”
  17. Easyui Tree扁平化数据不显示父节点的一种解决方法
  18. 学python之前需要学什么,学好python需要什么基础
  19. 通过英文剧集、电影学单词的小工具
  20. 使用IBM MQ远程连接时报错AMQ 4043解决思路

热门文章

  1. 基于注意力机制的机器翻译——经典论文解读与代码实现
  2. 适配动态 | 3月份巨杉数据库与6款产品完成互认证
  3. html如何把快变为行内元素,怎么把行元素变为块元素
  4. 放弃哪吒造车增资,360的“智能汽车网络安全”牌不好打
  5. carsim软件教学
  6. matlab lbm 代码,Matlab实现格子玻尔兹曼方法(Lattice Boltzmann Method,LBM)模拟
  7. 不懂语言代码,超级菜鸟的建站分享(一):建站流程
  8. 【翻译】PCI Express –信号完整性和EMI
  9. 阿拉丁神灯奖出炉,顺舟智能基于CBOX云盒网关的智慧路灯再上榜
  10. Python抓取电影天堂电影信息