卡尔曼滤波器推导

注:受控制领域大牛CAN博士启发,受益匪浅,作此文以为笔记。

简介

  设
在这里插入图片描述

  卡尔曼滤波器是从测量值ZZZk的平均数开始的。开始推导:
在这里插入图片描述
由上式可知
在这里插入图片描述
  也就是说随着kkk的增大,测量结果Zk不在重要,因为已经获得了足够多的测量值,此时的估计值已经很贴近了实际值了。我们令Kk=1/k1/k1/k,即
在这里插入图片描述
可知,Kk[0,1][0,1][0,1]之间,当Kk =0=0=0时,估计值等于上一次计算的估计值,当Kk =1=1=1时,估计值等于本次测量值,这时引入两个参数eEST,eMEA,令
在这里插入图片描述

在这里插入图片描述
其中,eMEA是测量误差,是测量工具自身的属性,是不变的,eEST是估计误差,会受历史数据的影响,即
在这里插入图片描述
由上述几个式子便可使用卡尔曼滤波器来解决实际的问题了。步骤如下:
第一步
在这里插入图片描述
第二步
在这里插入图片描述
第三步
在这里插入图片描述

  有一个质量为50g50g50g的物体,但我们此时并不知道该物体质量是多少,先估计其有46g46g46g,估计误差为5g5g5g,将其放在称上称得质量为
在这里插入图片描述
该称的测量误差为3g3g3g,将所有数据放在Excel里进行计算
在这里插入图片描述
其中蓝色线条表示测量值,红色线条表示估计值,从图中可以看出,尽管测量值起伏较大,但估计值整体趋势很平缓,不断向实际值靠拢且十分接近实际值。

数据融合

  从一个例子入手,设某物体质量为mmm,分别用标准差为σ1 =2g=2g=2g和σ2 =4g=4g=4g得称来称该物体,称得质量分别为Z1 =30g=30g=30g和Z2 =33g=33g=33g,求出最优估计值。
  从上述中可得式
在这里插入图片描述
此时引入标准差,即估计值的标准差,当标准差越小时,即方差越小,估计值的波动越小,也就越趋于真实值。如下:
在这里插入图片描述
由上式可知,估计值的方差是关于Kk的函数,使估计值方差对Kk求导,即
在这里插入图片描述
将σ1 =2g=2g=2g和σ2 =4g=4g=4g代入上式中,Kk =0.2=0.2=0.2,得
在这里插入图片描述

协方差矩阵

  有以下333组数据
在这里插入图片描述
平均值
在这里插入图片描述
方差
在这里插入图片描述
协方差
在这里插入图片描述
协方差矩阵PPP
在这里插入图片描述
为方便编程计算,引入一个过渡矩阵AAA
在这里插入图片描述

在这里插入图片描述
注: 式中的333是指矩阵得维数。
  在matlabmatlabmatlab中验证一下
在这里插入图片描述
与计算得结果一致。

状态空间表达式

  有如下系统
在这里插入图片描述
  该系统中,物块质量为MMM,弹簧弹力系数为kkk,阻尼系数为BBB,系统输入为拉力FFF。于是有
在这里插入图片描述
状态变量
在这里插入图片描述


在这里插入图片描述
测量量
在这里插入图片描述
状态空间表达式
在这里插入图片描述
化为离散形式
在这里插入图片描述
  由于系统存在各种不确定性,需要加入过程噪声WWW和测量噪声VVV,即
在这里插入图片描述
  WWW服从正态分布,期望为000,协方差矩阵为QQQ,即P(W)−N(0,Q)P(W)-N(0,Q)P(W)N(0,Q)VVV也服从正态分布,期望为000,协方差矩阵为RRR,即P(V)−N(0,R)P(V)-N(0,R)P(V)N(0,R)。其中Q=E[WWT]Q=E[WW^T]Q=E[WWT],推导如下:
在这里插入图片描述
同理,R=E[VVT]R=E[VV^T]R=E[VVT]

卡尔曼增益推导

  由于过程噪声是不确定的,于是状态估计值先验为
在这里插入图片描述
根据先验估计和测量估计可得出后验估计
在这里插入图片描述
G=G=G= KkHHH,则
在这里插入图片描述
  我们的目标是求得合理的Kk值使得估计误差最小,有
在这里插入图片描述
同理
在这里插入图片描述
  当后验估计值越接近真实值 Xk, 则说明 ek 的方差越小,即 ek 越接近于期望值000。于是有
在这里插入图片描述
接着推导
在这里插入图片描述


在这里插入图片描述

先验误差协方差矩阵

在这里插入图片描述

ek的协方差矩阵Pk

  由之前的推导可得
在这里插入图片描述

总结

在这里插入图片描述

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

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

相关文章

第 6-7 课:Java 分布式框架面试题合集

1.什么是 ZooKeeper? 答:ZooKeeper 是一个开源的分布式应用程序协调服务,是一个典型的分布式数据一致性解决方案。设计目的是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的系统,并以一系列简单易用的原子操作提供给用户使用。 2.ZooKeeper 提供了…

Oracle date 插入显示公元前日期

显示公元前日期很简单:--先创建一个表 create table test (d date);--插入一条记录 --插入的日期要注意 --1、“ - ”(负号) 表示公元前 --2、“ s ” 格式控制符 insert into test values(to_date(-2000-12-2, syyyy-mm-dd));--查询一下 --要…

cocos2dx3.2文件结构和代码结构

既然选定了cocos2dxlua的原生方式来开发,首先要确定的是使用哪个版本的cocos2dx,先看看github上的changelog和releasenote,然后在google里搜索一下,参考了jacky的博客http://zengrong.net/post/2100.htm,最终选择了coc…

java 方法 示例_Java集合的lastlastIndexOfSubList()方法和示例

java 方法 示例集合类lastIndexOfSubList()方法 (Collections Class lastIndexOfSubList() method) lastIndexOfSubList() method is available in java.util package. lastIndexOfSubList()方法在java.util包中可用。 lastIndexOfSubList() method is used to return the star…

Redis 面试题汇总

1.Redis 使用场景有哪些? 答:Redis 使用场景如下: 记录帖子点赞数、点击数、评论数缓存近期热帖缓存文章详情信息记录用户会话信息2.Redis 有哪些功能? 答:Redis 功能如下: 数据缓存功能分布式锁的功能支持数据持久化支持事务支持消息队列3.Redis 支持哪些数据类型? …

改进的PID算法

位置式PID算法 位置式PIDPIDPID算法是一种比较直观的的PIDPIDPID算法,如系统框图中所示,ininin表示设定值,errorerrorerror表示差值,uuu表示控制器输出值,outoutout表示被控量。算法表达式如下: 增量式PI…

奇怪的排序

P6: 奇怪的排序 Description: 春秋战国时期,赵国地大物博,资源非常丰富,人民安居乐业。但许多国家对它虎视眈眈,准备联合起来对赵国发起一场战争。 显然,面对多个国家的部队去作战,赵国的兵力明显处于劣势。…

Oracle 练习题P256

--根据Oracle数据库scott模式下的emp表和dept表,完成下列操作。--(1)查询20号部门的所有员工信息select * from emp where deptno 20;--(2)查询所有工种为CLERK的员工的员工号、员工名和部门号select empno,ename,dep…

oracle中dbms_如何在DBMS中找到关系的最高范式?

oracle中dbmsTo find the highest normal form of a relation, you have to first understand the basics of Functional dependency, Candidate keys, and Normal Forms. 要查找关系的最高范式 ,您必须首先了解功能依赖项 ,候选键和范式的基础。 In re…

MySQL 面试题汇总

1.说一下 MySQL 执行一条查询语句的内部执行过程? 答:MySQL 执行一条查询的流程如下: 客户端先通过连接器连接到 MySQL 服务器;连接器权限验证通过之后,先查询是否有查询缓存,如果有缓存(之前执行过此语句)则直接返回缓存数据,如果没有缓存则进入分析器;分析器会对查…

几种简单电路知识汇总

这篇文章用于记录平时设计电路或者在书中遇到的一些电路方面的知识,会不定期更新。就先从运算放大器开始,对此做个简单的介绍。 运算放大器 说到运算放大器就不得不说两个概念,虚短与虚断。 虚短: 在理想情况下,运算…

Oracle 创建表 练习题

a) 建立下列教学管理用的数据表。注意,表名和字段名都是英文。 学生表(student) 字段 名称 数据类型 约束 学号 S_NO CHAR(6) 主键 姓名 S_NAME CHAR(10) 非空 性别 S_SEX CHAR(2) 只取男、女 出生日期 S_BIRTHDAY DA…

算法常用面试题汇总

1.说一下什么是二分法?使用二分法时需要注意什么?如何用代码实现? 二分法查找(Binary Search)也称折半查找,是指当每次查询时,将数据分为前后两部分,再用中值和待搜索的值进行比较,如果搜索的值大于中值,则使用同样的方式(二分法)向后搜索,反之则向前搜索,直到搜…

Java LocalDateTime类| 带示例的getDayOfYear()方法

LocalDateTime类getDayOfYear()方法 (LocalDateTime Class getDayOfYear() method) getDayOfYear() method is available in java.time package. getDayOfYear()方法在java.time包中可用。 getDayOfYear() method is used to get the field value day-of-year from this date-t…

51单片机——交通灯

原理图 功能描述 1、基本功能就是如同红绿灯一般,不做赘述。   2、红灯时长和绿灯时长可通过按键设置,即按键列中的上面4个,当这4个按键有一个按下后便进入时长设置功能,设置完成后按最下面两个按键(紧急控制按钮&am…

设置TextField内文字距左边框的距离

2019独角兽企业重金招聘Python工程师标准>>> //设置文本框左边的viewUITextField *textField [[UITextField alloc]init];textField.frame CGRectMake(10, 30, 300, 30);[self.view addSubview:textField];textField.leftView [[UIView alloc]initWithFrame:CGRe…

Oracle注册表修改 乱码编码

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0"NLS_LANG"值改为"SIMPLIFIED CHINESE_CHINA.ZHS16GBK"AMERICAN.AL32UTF8乱码更改oracle 10g装上后,建了个表写入中文数据,发现通过工具DbVisualizer 6.5 写入/读取中文都正常,就sqlplus和PL/SQL Developer不正常…

设计模式常见面试题汇总

1.说一下设计模式?你都知道哪些? 答:设计模式总共有 23 种,总体来说可以分为三大类:创建型模式( Creational Patterns )、结构型模式( Structural Patterns )和行为型模式( Behavioral Patterns )。 分类包含关注点创建型模式工厂模式、抽象工厂模式、单例模式、建…

java 根据类名示例化类_Java LocalDateTime类| minusMinutes()方法与示例

java 根据类名示例化类LocalDateTime类minusMinutes()方法 (LocalDateTime Class minusMinutes() method) minusMinutes() method is available in java.time package. minusMinutes()方法在java.time包中可用。 minusMinutes() method is used to subtract the given minutes …

类的三大特性

类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性: 一、封装 学习过Java中类的同学可能都知道了,封装就是对类中的一些字段&a…