【转】kalman滤波介绍




最近看卡尔曼滤波,网上广为流传着几篇的科普文章,但是都夹杂着一堆复杂的公式,看的我如坠云雾里。我希望能看到一篇没有复杂数学公式的文章,却一直没找到。


于是我想写一篇,讲讲自己对卡尔曼滤波的浅显理解。


我觉得卡尔曼滤波算法本质上是一个递推反馈算法。它分两部分:时间更新方程和测量状态更新方程。其中,前者负责递推,后者负责反馈(将先验估计和新的测量变量结合,以构造改进后的后验估计)。


时间更新方程可视为预估方程,测量更新方程可视为校正方程。


这个是预估方程:

这里写图片描述

x表示状态变量;左上角带“—”的量表示先验;“
^ ”表示估计。


“先验”与“后验”是相对的俩概念,“先验”的意思就是仅仅用之前的状态来估计出来的;而“后验”是在我们进行了测量,知道了测量变量
z 之后的。也就是说,“先验”与“后验”的区别就是有没有进行测量。


预估方程可以这么理解:因为卡尔曼滤波算法的前提条件是:系统是线性的。所以即使不用测量,我们也可以根据“线性”这个特征得到一个先验状态值。


这个是校正方程:
这里写图片描述

中间的那个式子做一下整理就容易理解了:把先验状态变量提出来放到一块儿。
那这个校正方程就可以这么理解了:有了测量值之后,我们便有了两个可用的量了,即测量值z和先验状态值,那我们就根据这两个量之前的表现来各自给他们分配一个权重(之前表现越好的量,其权重就越高),这个权重就是卡尔曼增益。那么什么是表现好表现不好呢,表现好意思就是测量结果稳定,方差很小,表现不好就是估计值或观测值不稳定、方差很大。

最后再付一个图基本就差不多了。

这里写图片描述
讲到这儿我觉得基本就可以了,最起码在我以后生疏之后再看一遍这篇文章,基本就能回想起卡尔曼。


要不最后再说说卡尔曼滤波算法能干嘛吧,我觉得基本上的应用有两个,一个是测量,一个是预测。


日常生活中,我们的测量工作比较简单,比如测个身高啊,体重啊,以及其他几乎没有随机干扰的量,这都用不到卡尔曼滤波。但有时候,我们在测量过程中会遇到比较大的随机干扰,比如有一架飞机在天上飞,我们想知道这架飞行在任一时刻所处的位置、速度等状态参数,那我们就得用雷达或其它测量装置进行观测,这样问题就来了。因为雷达等测量装置存在随机干扰,所以它测得的结果中就会夹杂着大量随机干扰,这时雷达返回来的状态参数是不靠谱的。那怎么办呢?这就用到了卡尔曼滤波算法,因为卡尔曼滤波的核心是“预测+校正”,所以在测量上,我们用到的就是校正出来后验状态变量。


预测方面的应用一般在航空方面应用比较多,即预测飞行器下一步的运行轨道,也可以做运动物体的跟踪。我没接触过,印象里看书上这么提过,想想也差不多。


 


这次接触卡尔曼滤波是因为要做测量上的一个滤波优化,以前上自控原理也没好好听,略微后悔。卡尔曼在博士毕业的时候拿着卡尔曼滤波算法作为他毕业论文的主题,唉……差距啊,他这么吊,也不知道他爸妈知不知道。




______


最近在知乎偶然看见Kent
Zeng 的答案,觉得不错,转帖如下:




假设你有两个传感器,测的是同一个信号。可是它们每次的读数都不太一样,怎么办?


取平均。


再假设你知道其中贵的那个传感器应该准一些,便宜的那个应该差一些。那有比取平均更好的办法吗?


加权平均。


怎么加权?假设两个传感器的误差都符合正态分布,假设你知道这两个正态分布的方差,用这两个方差值,(此处省略若干数学公式),你可以得到一个“最优”的权重。


接下来,重点来了:假设你只有一个传感器,但是你还有一个数学模型。模型可以帮你算出一个值,但也不是那么准。怎么办?


把模型算出来的值,和传感器测出的值,(就像两个传感器那样),取加权平均。


OK,最后一点说明:你的模型其实只是一个步长的,也就是说,知道x(k),我可以求x(k+1)。问题是x(k)是多少呢?答案:x(k)就是你上一步卡尔曼滤波得到的、所谓加权平均之后的那个、对x在k时刻的最佳估计值。


于是迭代也有了。


这就是卡尔曼滤波。


(无公式)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
无偏的换测量Kalman滤波算法(Unscented Transform Measurement Kalman Filter)是一种基于卡尔曼滤波的状态估计算法,用于处理非线性系统和非线性观测模型的情况。 传统的卡尔曼滤波算法是基于线性系统和线性观测模型的假设,对于非线性系统和观测模型,传统的卡尔曼滤波算法可能会导致不准确的结果。无偏的换测量Kalman滤波算法通过使用无偏变换(Unscented Transform)来处理非线性部分,提高了状态估计的准确性。 以下是无偏的换测量Kalman滤波算法的主要步骤: 1. 初始化:初始化状态向量、状态协方差矩阵、观测噪声协方差矩阵等。 2. 预测步骤:根据系统模型,使用卡尔曼滤波算法进行状态预测。在无偏的换测量Kalman滤波算法中,通过选择一组称为Sigma点的状态向量,通过非线性变换来估计状态的不确定性。 3. 选择Sigma点:通过对状态向量进行线性或非线性变换,选择一组Sigma点。这些Sigma点是对状态分布的一种采样,用于估计非线性部分的不确定性。 4. 传播Sigma点:将选择的Sigma点通过系统模型进行传播,得到一组预测的Sigma点。 5. 计算预测状态和协方差:通过对预测的Sigma点进行加权平均,计算预测的状态和协方差。 6. 更新步骤:根据观测模型,使用卡尔曼滤波算法进行状态更新。同样地,通过选择Sigma点,并将其传播到观测空间,计算预测的观测值。 7. 计算卡尔曼增益:根据预测的观测值和观测噪声协方差矩阵,计算卡尔曼增益。 8. 更新状态和协方差:通过卡尔曼增益和观测残差,更新状态和协方差矩阵。 9. 重复预测和更新步骤:根据实时的传感器数据,循环进行预测和更新步骤,以不断优化对系统状态的估计。 无偏的换测量Kalman滤波算法通过引入Sigma点和无偏变换,可以更准确地处理非线性系统和非线性观测模型,提高状态估计的精度。它在机器人导航、目标跟踪、传感器融合等领域有广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值