【学习笔记】卡尔曼滤波中的协方差矩阵
本文转载至:
添加一些自己的理解和标注的重点,算是学习笔记吧;
一. 什么是卡尔曼滤波:
首先定义问题: 对于某一个系统,知道当前状态Xt,存在以上两个问题:
1. 经过时间△t后,下一个状态如何求出?
2. 假定已求出,在t+1时刻收到传感器的非直接信息,如何对状态进行更正?
这两个问题正式卡尔曼滤波要解决的问题,形式化两个问题如下:
1.预测未来
2.修正当下
下面以一个一维的例子简单理解一下卡尔曼滤波的理论框架。
二. 卡尔曼滤波的理论框架:
以一维运动为例,假如有一个小车,开始位于x= 的位置,但是由于误差的存在,其真实分布是高斯分布,其方差是 ,即其原始位置分布是 ,当该小车经过运动,到达终点位置,但是由于运动也是不准确的(打滑等),其移动过程的分布也是高斯分布,移动分布为,那么其最终的位置分布是多少呢?
这是一个预测未来的过程,由前一时刻的位置和猜测的偏移,求新的位置,求预测位置符合全概率法则,即:
即,最终分布的均值为均值相加,方差也为方差相加,感性理解就是一个不确定的分布,经过一段不确定的移动后,其方差更大了,分布中心为两个中心和。
考虑另外一种情况,假入有一个小车,开始位于x= 的位置,但是由于误差的存在,其真实分布是高斯分布,其方差是 ,即其原始位置分布是,当时此时有一个传感器检测到该小车位于,分布方差为,那么小车的真实位置分布为多少呢?
这是一个感知过程,也就是通过传感器的数据修正当下,其感知过程符合贝叶斯法则,其最终分布是两个分布相乘,即
感性理解就是一个不确定位置的小车,经过传感器观测,其最终位置分布方差会更小,且位置中心位于两个分布之间。
在一维模式下,感知过程融合后的均值和方差分别为:
我们令
则,
总结:当一个位置小车经过移动后,且其定位和移动过程都是高斯分布时,其最终估计位置分布会更分散,即更不准确;当一个小车经过传感器观测定位,且其定位和观测都是高斯分布时,其观测后的位置分布会更集中,即更准确。
又总结:上面的两个例子总结了在一维状态下,预测过程和感知过程的均值和协方差的更新是如何更新的,也就是和,的关系,以及 之间的关系;下面的博客更清晰地讲解了预测过程和感知过程.
接下来是扩展到二维状态下的一个例子:
问题场景如下:一个机器人, 我们想知道它实时的状态, 同时也想做到预测未来和修正当下这两件事.
其状态x表示为一个一维的大小为2的向量, 元素分别表示位置信息与速度信息:
但是这个状态不一定准确, 其不确定性用协方差表示:
预测未来
只考虑机器人本身的运动, 根据物理公式,可得:
用矩阵表示如下:
在状态变化的过程中引入了新的不确定性, 根据协方差的乘积公式,
可得:
其中是系统在k-1时刻状态的不确定性;
考虑外部状态, 以引入加速度为例, 引入变量,
同时,环境中仍然存在我们无法刻画的误差, 以表示, 最终的预测公式如下:
也就是在原本的不确定性的基础上,又加入了新的不确定性,得到了新的当前时刻状态变量的不确定度,也就是协方差;
修正当下
我们已经得到,, 下面要通过观测到的测量值 对 , 进行更新;
因为 , 和 的数据尺度不一定相同,例如 ,包含了笛卡尔的坐标信息, 使用雷达得到的则包含极坐标信息. 所以首先应该把两者挡在相同的尺度下去比较, 尺度转换使用 将预测信息转换为测量信息的尺度.
这样一来,得到测量尺度上的两个分布:
1. 测量值的分布
2. 预测值的分布
在修正当下的过程中,这两个分布会组成新的分布.
新的均值和方差的计算在第一部分的时候已经推导过, (姑且称之为感知变化公式),即为:
扩展到二维情况下,公式如下(该公式也是kalman滤波的核心,):
而在这里这种情况里,测量值对应的均值和协方差分别是,
预测未来的到的状态的均值和协方差分别是:
根据感知变化公式,可得在这个例子里面新的均值和协方差的公式如下:K变成, 就获得了新的状态量的值,以及其对应的不确定性
总结
预测未来
修正当下
理论总结:
kalman滤波的理论框架是全概率法则和贝叶斯法则,在设定中假设预测和感知均有误差,且均服从正态分布,且预测过程(预测未来)和感知过程(修正当下)采用不同的概率更新策略,具体采取的策略如下所示:
- 预测过程符合全概率法则,是卷积过程,即采用概率分布相加;
- 感知过程符合贝叶斯法则,是乘积过程,即采用概率分布相乘;
参考:(建议按照顺序阅读下面的博客,对于理解卡尔曼滤波很重要)
史上zui好的卡尔曼滤波基础讲解
史上zui全的卡尔曼滤波讲解:从一到三
上面的博文是参考了大佬们的博客,总结在一起的,前面一维的公式推导都很好理解,只是二维那边省略了一些公式推导过程,下面是我的推导过程,比较详细,最后的结果稍微有一点不一样,大家可以参考一下,有问题的话也欢迎提出来告诉我~~
我最后的推导结果中,和上面彩色的公式区别如下:
1. K和上面彩色的多一个
2. 也就是 跟彩色的 也差左乘一个
3. 也就是 与上面彩色的 也是差一个左乘一个,右乘一个
【学习笔记】卡尔曼滤波中的协方差矩阵相关推荐
- r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数
在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...
- c#学习笔记05-treeview中添加图标
创建树目录前面在学习笔记03中已经提到过 即树目录数据从XML文档中获取 添加图标主要用到ImageList控件 1.ImageList控件 在树目录对应存在的窗体中添加此控件 添加图标: 2.tre ...
- 20190328学习笔记 - JSP 中的 tag 文件
20190328学习笔记 - JSP 中的 tag 文件 对于tag 文件 1. 引入 tag 文件 2. 在/WEB-INF/tags/sys 下,新增一个gridselect.tag文件 3. 在 ...
- 《probabilistic robotics》学习笔记——卡尔曼滤波
机器人系列文章目录 第一章 ubuntu16.04系统及相关软件安装 第二章 Linux操作系统入门笔记 第三章 ROS系统架构及程序编写过程 第四章 <probabilistic roboti ...
- SilverLight学习笔记--Silverlight中WebRequest通讯
本文我们学习如何使用WebRequest类实现客户端和服务器端的通讯. 本例处理过程:在客户端,我们在文本框中输入任意文本,然后用POST方法向服务器端传递信息,服务器端收到从客户端传来的信 ...
- JavaScript学习笔记——JS中的变量复制、参数传递和作用域链
今天在看书的过程中,又发现了自己目前对Javascript存在的一个知识模糊点:JS的作用域链,所以就通过查资料看书对作用域链相关的内容进行了学习.今天学习笔记主要有这样几个关键字:变量.参数传递.执 ...
- SilverLight学习笔记--Silverlight中WebService通讯
本文我们学习如何在Silverlight中使用WebService进行通讯. 新建项目Silverlight应用程序,命名为:SLWebService. 在服务器端我们需要做两项目工作: 1.在Web ...
- tornado学习笔记day08-tornado中的异步
概述 应为epoll主要用来解决网络的并发问题,所以tornado中的异步也是主要体现在网络的IO异步上,即异步web请求 tornado.httpclient.AsyncHTTPClient tor ...
- SilverLight学习笔记--Silverlight中操作DOM元素
在这里我们将实验一下在Silverlight中如何操作HTML的DOM元素. 首先创建Silverlight应用程序. 创建用户界面: <UserControl x:Class=" ...
最新文章
- HttpURLConnection 请求
- python xgboost用法_XGBoost类库使用小结
- I/O Performance HOWTO: Avoiding Bounce Buffers
- java 面向对象 — 继承
- 手把手教你--JAVA微信支付(H5支付)
- Qt文档阅读笔记-Qt Quick Controls - Wearable Demo实例解析
- kali安装nessus_漏洞扫描工具Nessus指南
- unity3d 几种镜头畸变
- resnet,inception,densenet,senet
- BZOJ 3571: [Hnoi2014]画框
- 问题集录--新手入门深度学习,选择TensorFlow 好吗?
- python列表元组字典集合实验心得_python心得 元组,字典,集合
- libcaffe.so: undefined reference to `cv.read
- VC中Radio控件的用法(VC2008)
- sklearn逻辑回归参数详解,及用逻辑回归制作评分卡
- 信用社pb通用记账_2018年农村信用社高频考点:会计账户
- 阿里云物联网平台之创建产品与设备
- grep 忽略大小写、忽略grep命令本身
- Android 客户端Socket 与 Java服务端ServerSocket
- QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection