当前位置: 首页 > news >正文

卡尔曼滤波-从公式到理解

参考文献:

【卡尔曼滤波】图文结合带你详细推导卡尔曼滤波(超详解)-CSDN博客

本文基于上述参考文献,进行进一步的理解。

卡尔曼滤波是将 预测的值和量测的值结合起来,获得更接近真实情况的数值。

目前,我的理解只能在文中举的一个特定的例子上,即:预测一个机器人的某一时刻的速度和位置,下面的描述均以这个例子为例进行说明。

预测值是指机器人的速度和位置

已知当前的机器人的位置和速度,机器人下一时刻的速度和位置可以通过一个模型计算出来,这里可以通过,加速度对时间的积分获得速度,通过对速度的积分获得位置。因此,从公式上可以写为:

x_k 表示的是k时刻的预测值,包含了p位置和v速度两个值。

P_k表示的是p和v的协方差,协方差是两个变量的相关性。

表示的是p和v的更新公式,即k时刻的p和v与k-1时刻的p和v之间的关系。

这里,把上面的方程表示为矩阵的形式,则F_k表示的是预测矩阵,矩阵只是计算上的便利和表达形式上的简化而已,并没有特别多的作用。

如果变量的转移矩阵为F_k,根据上面的协方差矩阵特性,新的协方差矩阵可以表示为:

这个公式就是,需要预测的变量k-1时刻与k时刻的关系,同时,其协方差矩阵也发生了变化。

注意,上面的p和v的更新是不合理的,更合理地应该写为:

因此,其转换矩阵(将上面的公式写成矩阵的表达式)为:

其中,B_k为控制矩阵,u_k为控制变量。

另外,由于控制的不确定性,如车辆打滑,无人机受风吹等原因,预测值及协方差的迭代需要加入噪音影响。

Q_k为加入的噪音,但是为什么不是加在预测变量x_k的计算上,我还没有想明白。

传感器方面(这个方面可以忽略,传感器是不需要转移矩阵的)

上述公式中,H_k表示预测值到传感器读数的转换矩阵。

同理,sensor表示新的协方差矩阵,传感器方面的协方差矩阵。

知识补充:

假定有变量x,通过预测或者观察等方法,发现其服从两个高斯分布,其期望分别是μ_1μ_2,方差分别是δ_1δ_2,那么变量真正的分布是多少呢?或者说,根据两个分布,如何推出更接近真实分布的分布?

答案是,两个分布相乘。如上图所示,红色,绿色表示预测或者观察的分布,蓝色则表示两者相乘的分布。至于为何两者相乘更接近真实的分布,则是数学上的事情了。

具体的推导可以见参考文献,这里说一下结论:

两个高斯分布相乘,其新的分布,期望是分布1的期望μ_1加上卡尔曼增益K乘以期望μ_2减去μ_1。K给人的感觉是就是一种权重的计算方法,这个权重就是分布1的方差与分布1+分别2的比值。一种直观的解释是,如果某个测量器(方法)更可靠,则理论上,真值应该更接近这个分布,也就是说,应该给误差更小的分布分配更多的权重。因此,新的分布等于期望μ_1加上卡尔曼增益K乘以期望μ_2减去μ_1,如果分布1更加可靠,则应该更小地调整(更加相信分布1),反之,则应该更大地调整,使得新的分布更加接近分布2。

理解了两个高斯分布,求取其更接近真值的方法就是,两个高斯分布相乘。其核心是卡尔曼增益的计算,即:

分布1的方差占两个和的比例,最后按照这个比例给出最终的高斯分布,或者说更加接近真值的高斯分布。

有了上面的理论基础,我们知道,在卡尔曼滤波中,有两个分布,分别是:

 

因此,两个分布,利用高斯相乘,可以得到:

简化后有:(我不会,我不知道数学上怎么简化的)

因此,卡尔曼滤波有:

这里,预测是指,给出目标值的预测值。这里包含了预测分别的期望x_k和方差p_k

更新,则是根据传感器的测量分布,更新期望值x_kx_k^',使得更加接近真值。同时,更新预测分布的方差P_k^',使得其下次的预测更加准确。

因此,要实现一个卡尔曼滤波,需要做以下的事情:

1. 给出根据控制量计算出控制目标的控制方程(模型,转移方法),公式

2. 需要给定噪音Q_k的值

3. 传感器测量值的期望和分布

做完上面的事情后,就可以利用卡尔曼滤波来进行优化(使用),使得基于预测模型和传感器测量结果,获得的值更加准确。理论上,经过一定的迭代次数后,预测分布P_k就会稳定到一个值。实际使用中,在P_k收敛后,可以根据预测分布P_k,直接计算出K^',然后就可以直接计算更加准确的目标值了。这应该也是卡尔曼滤波的一个优势。

至于两个传感器的融合,个人觉得,直接使用高斯分布的乘积即可,不需要进行卡尔曼滤波。当然,也可以使用一个传感器作为预测值,一个作为测量值,进行卡尔曼滤波,这就需要找出预测值的转换矩阵F_k。关于这一点,思考的还不是很成熟,后期再补充。

相关文章:

  • Flink调优面试题及参考答案20道
  • 搭建用友U9Cloud ERP及UAP IDE环境
  • Ubuntu 安装cuda踩坑记录
  • CNN卷积神经网络
  • PyCharm Flask 使用 Tailwind CSS 配置
  • Centos7.6安装JDK 1.8教程
  • ESP32- 开发笔记- 硬件设计-ESP32-C3 天线设计-利用嘉立创EDA来设计
  • 力扣算法ing(59 / 100)
  • B端网站建设,怎样平衡功能与美观,满足企业多元需求?
  • 【测试工具】JMeter使用小记
  • Dell戴尔服务器 PowerEdge R750xs + window server2012r2 || 2016
  • kafka报错:The Cluster ID doesn‘t match stored clusterId Some in meta.properties
  • 数据结构|排序算法(三)选择排序 堆排序 归并排序
  • 【AI】React Native中使用Zustand框架及自动生成选择器
  • Uniapp微信小程序:轻松获取用户头像和昵称
  • 【长按图片识别】uniapp vue开发时,点击图片识别—实现转发、收藏、识别图片二维码
  • git tag 标签
  • 基于pycatia的CATIA自动化干涉检测系统开发全解析
  • day30图像处理OpenCV
  • 如何通过数据分析提升软件开发项目的成功率?
  • 上海高桥镇10个重点项目集中签约,总投资近20亿元
  • 越秀地产约41.49亿元出售北京海淀功德寺项目公司65%股权,此前已质押给华润置地
  • 安徽凤阳通报鼓楼瓦片脱落:去年3月维修竣工,已成立调查组
  • 河南发布高温橙警:郑州、洛阳等地最高气温将达40℃以上
  • 知名中医讲师邵学军逝世,终年51岁
  • 南京艺术学院博导、雕塑家尹悟铭病逝,年仅45岁