卡尔曼_卡尔曼滤波最完整公式推导

c49361eba6ececf1d9084506d6f350f3.png

卡尔曼滤波是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。上面一段话来自百度百科,其实最核心的意思就是卡尔曼滤波可以很好地从带有噪声的数据过程中估计状态。而且卡尔曼滤波也是阿波罗登月中使用的突破性技术之一,正好我国嫦娥五号采土归来,正好回顾一下卡尔曼滤波的技术细节,对公式推导做一个完整的整理。

1、定义

  • 状态方程:

  • 观测方程:

  • 符号定义:

首先定义状态估计误差

理解卡尔曼公式推导的核心,是一定要理解这里的符号标记。核心是在第k时刻,对k+1时刻的估计!所以后面都要记住,在第k时刻的时候,对k+1时刻的任何值,都只能是估计(预测未来值)。具体怎么估计的,如下:

同理,我们也可以得到观测估计误差

基于上面的公式,我们定义两个重要的误差协方差矩阵

  • 最终目的

其实卡尔曼的最终目的,是得到一个基于误差能够不断修正迭代式估计表达式,其具体形式应该如下:

这个式子非常直观,就是基于误差去修正,怎么最优的去修正?就是我们怎么来算这个W,也就是卡尔曼增益(Kalman Gain)。

2、推导

为了得到不停的基于误差修正的一种计算模式,可能要能够得到一些关键的递推形式,如我之前发表过关于递推最小二乘的推导。首先我们推导关于状态误差协方差矩阵:

这里我们得到了P(k|k) P(k+1|k)的一个递推形式,注意这里P(k|k)的标记形式是为了更方便后面的推导,为什么这么说,其实是为了得到

这样一种能够不停向前迭代的形式。带着这个思考继续下面的推导,就会明白卡尔曼的巧妙之处。

我们先总结下,这里得到了P的一个递推形式:

同理,也是可以得到观测误差协方差的一个递推形式:

会发现其实S(k+1)S(k)没啥直接的关系,这就是为什么不把S(k+1)写成像P那样S(K+1|K)的形式,因为没有必要,只有P是需要这样来写的。

这里再次思考,我们的目的是求一个最优的W,就是卡尔曼增益,具体怎么来最优?这里就用到了状态估计误差,就是说,我们的目的是让状态误差的平方和最小,这里可以使用P的迹。具体推导如下:

然后使用P的迹对W求导,令其为0得到最优的W:

得到:

然后再把W带回P(k+1|k+1)的式子中:

到这里,推导完毕,得到了W的最优表达式,同时,也解决了我们上面提出的问题,一个完整的递推链:

建立完毕。那么通过这一套完整的递推链,给定P的一个初始估计P(0|0)就可以按照下面的链来进行状态估计:

到这里卡尔曼滤波的公式推导完成了,这个版本是我在看过很多其他资料,反复提炼之后,标记最友好,推导最友好的一个版本,理解卡尔曼滤波一定要首先理解符号的定义,特别是下标,以及怎么样构建递推链。在掌握之后可以自行通过上面的推导总结出,其他教程反复提到的黄金五条公式,其实这些在我看来不是重点,重点是理解其本质原理。

3、资料

其实要弄懂卡尔曼滤波还真不简单,需要一些基本矩阵、统计、自控原理以及矩阵求导的知识,特别是对迹求导,这里推荐Matrix CookBook,里面详细列举了各种常用的求导方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 缓存实战——缓存、数据库一致性问题分析与解决方案

引言 缓存与数据库一致性的问题自从出现了缓存概念后就一直被提及,它是一个缓存方案的先天缺陷,只要存在缓存,就势必会讨论缓存与数据库一致性的问题。 一致性问题还广泛存在于各种分布式存储场景中,如主从一致性等等。 本篇博…

基于计算思维的python程序设计王彬丽期末考试题库_基于计算思维的程序设计类课程教学实践...

基于计算思维的程序设计类课程教学实践滕剑锋王玉锋王猛刘二林【摘要】摘要很多专业开设了程序设计类课程。如何在该课程教学中培养学生的创新能力是大家普遍考虑的问题。计算思维的提出对于解决该问题具有重要的指导意义。在此背景下,我们针对程序设计类课程的教学…

Java 多线程 —— AQS 详解

引言 AQS 是AbstractQuenedSynchronizer 的缩写,抽象的队列式同步器,它是除了java自带的synchronized关键字之外的锁机制。是 JUC 下的重要组件。 相关产物有:ReentrantLock、CountDownLatch、Semaphore、ReadWriteLock等。 一、AQS的设计…

的主机名_如何在Mac 上更改电脑的名称或本地局域网主机名?

我们知道,一台电脑有其设定的具体名称,电脑的名称和本地主机名用于在本地网络上识别您的电脑。当我们需要自定义电脑名称或本地局域网主机名时,则需要对其进行更改。那我们该如何更改呢?有需要的小伙伴们快和小编一起来看看吧~更改…

Java常用设计模式——观察者模式

导航一、行为描述二、角色关系三、代码示例一、行为描述 观察者会观察特定对象的状态变化,一旦状态有所变化或产生特定条件,被观察对象会通知给观察者, 而观察者则会依据通知信息采取特定处理措施。 举个例子,公司接到了一个大项…

dev控件swiftplot图滚动方法_无限轮播图使用Scroller就这么简单

前言这几天又拾起老本行,复习复习Android,才发现忘的差不多了,上午做了一个小Demo,配合Scroller做了一个轮播图,效果如下,但是不知为何,录制的GIF成这样,凑乎一下看看。原理是继承Vi…

JVM——CPU缓存架构与Java 内存模型

导航一、CPU缓存架构与一致性协议1.1 CPU缓存架构1.2 缓存行与伪共享问题1.3 MESI 缓存一致性协议1.4 伪共享的解决办法二、JMM Java 内存模型2.1 JMM 简介2.2 原子性、可见性、有序性2.3 八大内存交互操作2.4 happens-before 原则一、CPU缓存架构与一致性协议 1.1 CPU缓存架构…

蓝牙连接不上车要hfp_汽车上hfp是什么意思

汽车上hfp的全称是Hands-free-Profile,是一款让蓝牙设备控制电话,实现接听、挂断、拒接、语音拨号等功能的软件。hfp车载蓝牙功能使用上十分方便,可以有效地降低安全事故,在手机和车载蓝牙连接之后,在打电话的状况下可…

python3中的 input函数_Python3中的input函数

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

python转二进制字符串_python如何将二进制串(UTF-8)转换为字符串?

已知一个二进制串(UTF-8编码格式)列表(每一项为一字节8bit):b[01010000, 01111001, 01110100, 01101000, 01101111, 01101110, 11100101, 10100100, 10100111, 11100110, 10110011, 10010101]#即字符串"Python大法"如何将其转换为字符串呢?string ""for …

python中reshape_Numpy之reshape()使用详解

如下所示:Numpy中reshape的使用方法为:numpy.reshape(a, newshape, orderC)参数详解:1.a: type:array_like(伪数组,可以看成是对数组的扩展,但是不影响原始数组。)需要reshape的array2.newshape:新的数组新形状应与原形状兼容。如…

vue 手机端路由切换滑动_vue移动端router-view嵌套实现底部导航切换

路由使用 vue-router组件库使用 vue-ydui效果图:登录.png主界面-首页.png主界面-办事大厅.png项目结构图片.png大体流程图片.png路由代码import Vue from vueimport Router from vue-routerimport home from ../page/homeimport office from ../page/officeimport m…

bs4 乱码_Python BeautifulSoup中文乱码问题的2种解决方法

解决方法一:使用python的BeautifulSoup来抓取网页然后输出网页标题,但是输出的总是乱码,找了好久找到解决办法,下面分享给大家首先是代码复制代码 代码如下:from bs4 import BeautifulSoupimport urllib2url //www.jb51.net/page urllib2.urlopen(url)soup Beaut…

白噪声检测_科学家尝试用智能扬声器的白噪声来监测婴儿的呼吸运动

华盛顿大学的一支研究团队,刚刚介绍了他们开发的一种新型智能扬声器技术。这种设备能够借助白噪声来安抚熟睡的婴儿,并监测他们的呼吸和运动。具体说来是,通过智能扬声器发出的白噪声,原型设备能够将之与生命体征监测仪的数据相匹…

最大值_285期 博最大值2路,已经箭在弦上!

往期数据P-5掉码 跨度 和尾 012断路 余数和 位数86072 1 8 4 200 断1路2 5 对214对 双双双79703 0 2 3 101 断2路2 4 对215对 单单单62386 0 4 1 020 断1路2 4 错216对 双双单71903 0 8 7 110 断2路2 5 错217对 单单单64838 0 4 8 012 来3路3 4 错218对 双双双02052 0 2 2 020 …

商品领域ddd_为 Gopher 打造 DDD 系列:领域模型-资源库

前言: 作为领域模型中最重要的环节之一的Repository,其通过对外暴露接口屏蔽了内部的复杂性,又有其隐式写时复制的巧妙代码设计,完美的将DDD中的Repository的概念与代码相结合!Repository资源库通常标识一个存储的区域…

mysql5.7主从全备恢复_Mysql5.7—运维常用备份方式(超全)

小生博客:http://xsboke.blog.51cto.com小生 Q Q:1770058260-------谢谢您的参考,如有疑问,欢迎交流一、 Mysqldump备份结合binlog日志恢复使用mysqldump进行全库备份,并使用binlog日志备份,还原时&#xf…

客户端连接mysql 自动断开_MySql连接空闲8小时自动断开的原因及连接池配置方法...

数据库连接超时时间查询非交互式超时时间,如 JDBC 程序show global variables like wait_timeout;交互式超时时间,如数据库工具show global variables like interactive_timeout;MySQL服务器默认的“wait_timeout”是28800秒即8小时,意味着如…

docker 运行容器_Docker之运行 Django 容器

首先此篇笔记默认你已经安装好了 Docker,并了解 Docker 的基础概念,诸如镜像、容器、以及他们之间的关系等。如果不太了解,等我回头了解清楚以后,可以再写一篇文章阐述一下。(狗头当然,对于这篇文章&#x…

mysql类似的数据库_MemSQL学习笔记-类似MySQL的数据库

http://gigaom.com/cloud/ex-facebookers-launch-memsql-to-make-your-database-fly/-- 多主-从http://www.mysqlops.com/2012/02/14/diy_multi_master_replication.htmlhttp://www.cnblogs.com/liuhao/archive/2012/06/26/2563702.html前facebook员工和前微软sql server工程师…