问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

轻松理解卡尔曼滤波

发布网友 发布时间:2024-10-23 23:20

我来回答

1个回答

热心网友 时间:2024-10-27 22:00

假设我们开发了一台无人机(假设它的名字是Eva),想要用它来在城市中送快递,Eva身上有一些传感器,可以让我们知道它的速度v(比如三维空间中沿x,y,z各轴的速度大小),同时Eva身上还有GPS系统、气压计等设备,可以获知它的位置p(比如经纬度,海拔等),也就是说我们可以实时观测Eva的状态。

那么我们可以把Eva的某一个时刻的状态表示为一个向量:[公式]

虽然我们比较肯定Eva此时的状态,但是无论如何系统总是会存在误差的,无论是计算上,还是传感器的检测上,所以我们只能认为当前状态是当前真实状态的一个最优估计。那么我们不妨认为Eva的当前状态服从一个高斯分布,如下图所示:

高斯分布的中心[公式]就是图中的[公式]:

对于方差[公式](也就是图中的椭圆的范围),因为我们有两个变量,所以可以用一个协方差矩阵[公式]来表示(如果对协方差矩阵还不了解, 戳此了解):

所以Eva的真实状态可能就位于上图椭圆的范围内,位于圆心的概率最大。

Ok,接下来我们需要通过Eva当前的状态,运用一些物理学的知识来预测它的下一个状态,通过简单的物理学知识,通过k-1时刻的位置和速度,可以推测下一个时刻的状态为:

写成矩阵形式就是:

此处的[公式]就是状态转移矩阵。 Eva的系统误差通过协方差矩阵[公式]来表示,根据协方差矩阵的性质:

那么我们所预测的Eva下一个时刻的状态误差为:

Ok,新方程中的[公式]我们称为状态控制矩阵,而[公式]称为状态控制向量,含义很明显,前者表明的是加速减速如何改变Eva的状态,而后者则表明控制的力度大小和方向。

为了能让Eva到达任何地方,毫无疑问我们需要对它进行控制,比如加速和减速,假设某个时刻我们施加给Eva的加速度是[公式],那么下一时刻的位置和速度则应该为:

因此我们的状态预测方程更新为:

Ok,新方程中的[公式]我们称为状态控制矩阵,而[公式]称为状态控制向量,含义很明显,前者表明的是加速减速如何改变Eva的状态,而后者则表明控制的力度大小和方向。

但是,外界可能有很多影响因素,导致我们对Eva实施控制的时候并不总是如我们所愿,有时候会逆风,有时候则是顺风,在此我们猜测外部的不确定因素对Eva造成的系统状态误差[公式]服从均值为0高斯分布[公式],至此我们就能得到Kalman滤波中完整的状态预测方程:

因为[公式]为0,所以有的文章可能会忽略不写,但是如果明确知道均值不为零的是时候,就需要注意了,这要看实际应用时候的场景,理解了它的原理,就能对各部分的变化有深入体会。

前面我们通过Eva的上一个状态,对它的当前状态做了缜密的预测,此时我们要考虑我们事先安装在Eva身上的各种传感器应该能够观测到什么? Eva当前的状态和我们观测到的传感器数据应该具备特定的关系,假设这个关系通过矩阵表示为[公式],如下图所示:

在此前对Eva所做的预测状态下,我们应该观测到传感器的观测值为:

因此我们就完成了对观测值的预测,预测其结果服从如下高斯分布:

好的,我们不仅推测了Eva当前的状态,还推测了我们应该观测到的传感器数据,但是现实和理想之间必然是存在差距的,我们预测的观测结果和实际的观测结果可能如下图所示:

上图中的[公式]表示实际观测的结果,但是观测的结果肯定也是不准确的,所以我们认为其观测噪声[公式]是一个均值为0,协方差矩阵为[公式]的高斯分布,即:

其实也就是说我们对Eva的观测值服从高斯分布,Eva真实的情况应该存在以[公式]为椭圆心的椭圆内,即观测结果服从高斯分布:

终于来到了最关键的一步:卡尔曼滤波需要做的最重要的最核心的事就是融合预测和观测的结果,充分利用两者的不确定性来得到更加准确的估计。通俗来说就是怎么从上面的两个椭圆中来得到中间淡黄色部分的高斯分布,看起来这是预测和观测高斯分布的重合部分,也就是概率比较高的部分。

一维的高斯分布通过高斯概率密度函数来表示,在坐标轴上画出来是一个类似草帽的形状。下面给出两个高斯概率密度函数相乘的直观的结果,需要详细的推导过程可以 戳此查看。

对比标准的高斯概率密度函数,相乘的结果是一个乘了特定系数的新的高斯概率密度函数(这个系数在后面的演示代码中会计算),并且我们可以求解得到这个新的高斯分布的均值和方差分别为:

通过matlab我们可以计算两个高斯概率密度函数的乘积,以及通过上述公式计算得到的新的高斯概率密度函数,以下是相关的代码和运行截图:

运行截图:

因为matlab的函数normpdf使用的参数是均值和标准差,所以代码和截图中也是使用均值和标准差表示一个高斯分布。

图中蓝色和橙色两个波形的直接乘积是黄色这个波形,而它其实可以通过紫色的波形乘上一个系数得到,也就是前面代码中的scale这个变量,计算公式在上面的已经提供。如果在计算y4(紫色的波形)的时候乘上这个系数,你会发现它的波形就和黄色的波形(y3)完全重合了。把对应行稍作修改即可:

大家可以自行复制代码进行实验。

那么我们把关注点放在这个乘积中这个新的高斯概率密度函数,其实它就描述了一个新的高斯分布,这正是卡尔曼滤波想要的最优估计。在新的均值和方差计算公式中,我们令:

那么可以得到:

将它们写成矩阵形式就是:

前面我们已经得到了预测结果和观测结果服从的两个高斯分布,如下:

所以我们可以进行如下推导,来得到卡尔曼滤波对当前状态(基于预测和观测的)最优估计的计算方程:

好的,两边化简下,注意[公式]可以展开,于是可以得到(是的,易得):

此处的[公式]就是传说中的卡尔曼增益:

在实际使用卡尔曼滤波的时候,计算的步骤一般为(这里把下标去掉了,因为在实现的时候,即使下标不一样,我们用的其实就是一个变量,注意和前面的方程进行比对):

上面的[公式]是测量余量(measurement residual),[公式]是测量余量协方差矩阵。

最重要的是,我们要时刻关注不断迭代的系统变量,分别是系统的状态:[公式],其误差协方差矩阵:[公式],和卡尔曼增益:[公式]。

在实际应用时,对[公式]和[公式]的选择要依据实际情况来定,可以不断调试来寻找一个最优解,也可以是可变的,只要最终效果能够更好。

理解卡尔曼滤波的整个迭代过程,相信大家在实践和调试的时候也会得心应手。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
卡耐基的智慧大全集内容简介 会说话赢天下内容简介 卡耐基演讲与口才内容简介 商务口才训练内容简介 卡耐基金牌口才作者简介 卡耐基商务口才 作者简介 爱因斯坦的更多故事 杨柯叶谨言是什么电视 房贷和消费贷利率差别不大,但是还款金额差别挺大,都是怎么计算的... ...11月18号提现1500元、,11月25号还款1515,请问我还需要还 dnf中高级熔岩碳怎么来? 巴西龟睡眠时间 PSINS-卡尔曼滤波器的可观测度以及误差分配分析方法 有一个样品进口的问题。 已知弧长L=773.半径R=450,求弧高? DNF高级熔岩碳 怎么样判断狗狗得了螨虫? 请问12月23日早上10:00左右到彭水的火车票有些什么班次的车啊?急急... ...基本的电路结构除了变压、整流、滤波和稳压外,还需要什么别的模块设... ...用flash播放器想要的效果是双击flash动画的任何一点都可以把界面关... 国庆去西安的人多吗 注册一级建筑初始注册一般需要 多久? iphone7录音删了怎么恢复 地下城拿高级熔岩碳强化+10装备成功几率是多少? 出租的房子没到期房主收回可以吗 发一个flash player6 SWF播放器给我 DNF如果强化+10的装备,用高级熔岩碳一定会成功吗?+11、+12、+13的呢... 怎么用高级炉岩碳强化? dnf高效强化和普通强化有什么区别 phpnow安装好后能本地输入127.0.0.1DISCUZ能使用,重启电脑后就不能... 我家狗狗去医院医生说他耳朵里有什么螨虫?说要拿两百块钱买药,把我吓... 西宁有哪些便宜的KTV 借钱怎么拒绝?没交情和好多年没见的同学或朋友,因为他们也看到我平时一... 扩展卡尔曼滤波器用于扩展物体跟踪(Matlab代码实现) 巴西龟能在晚上八九点钟睡觉吗 为什么会有这种朋友?我跟他在学校是很好的同学,可是他老是超我借钱30.... 花蕊的拼音是什么意思 我的世界1.8如何生成有命令的命令方块 太阳能发电站税目编码是多少,有人知道啊?是整套发电系统,不是光伏_百 ... 怎么样判断狗狗得了螨虫? 我家狗狗去医院医生说他耳朵里有什么螨虫?说要拿两百块钱买药,把我吓... 英语翻译小三这个单词怎么拼 金山表单提交后可以修改吗 头疼低烧吃什么药好 空调外机一会转一会不转什么原因 刚满月宝宝不吃奶原因 海信液晶电视声音怎么设置? 我72岁老人了要做全口义牙,选择那种价位和材料比较好? 液晶电视高低音怎么调节 请问,我今年72岁可是什么饭都不想吃是什么原因啊!