本文主要是介绍kalman滤波的一些理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对卡尔曼滤波算法的一丝淡淡理解


分类: 专业积累 |
最近看卡尔曼滤波,网上广为流传着几篇的科普文章,但是都夹杂着一堆复杂的公式,看的我如坠云雾里。我希望能看到一篇没有复杂数学公式的文章,却一直没找到。
于是我想写一篇,讲讲自己对卡尔曼滤波的浅显理解。
我觉得卡尔曼滤波算法本质上是一个递推反馈算法。它分两部分:时间更新方程和测量状态更新方程。其中,前者负责递推,后者负责反馈(将先验估计和新的测量变量结合,以构造改进后的后验估计)。
时间更新方程可视为预估方程,测量更新方程可视为校正方程。
这个是预估方程:
x表示状态变量;左上角带“—”的量表示先验;“ ^ ”表示估计。
“先验”与“后验”是相对的俩概念,“先验”的意思就是仅仅用之前的状态来估计出来的;而“后验”是在我们进行了测量,知道了测量变量 z 之后的。也就是说,“先验”与“后验”的区别就是有没有进行测量。
预估方程可以这么理解:因为卡尔曼滤波算法的前提条件是:系统是线性的。所以即使不用测量,我们也可以根据“线性”这个特征得到一个先验状态值。
这个是校正方程:
讲到这儿我觉得基本就可以了,最起码在我以后生疏之后再看一遍这篇文章,基本就能回想起卡尔曼。
要不最后再说说卡尔曼滤波算法能干嘛吧,我觉得基本上的应用有两个,一个是测量,一个是预测。
日常生活中,我们的测量工作比较简单,比如测个身高啊,体重啊,以及其他几乎没有随机干扰的量,这都用不到卡尔曼滤波。但有时候,我们在测量过程中会遇到比较大的随机干扰,比如有一架飞机在天上飞,我们想知道这架飞行在任一时刻所处的位置、速度等状态参数,那我们就得用雷达或其它测量装置进行观测,这样问题就来了。因为雷达等测量装置存在随机干扰,所以它测得的结果中就会夹杂着大量随机干扰,这时雷达返回来的状态参数是不靠谱的。那怎么办呢?这就用到了卡尔曼滤波算法,因为卡尔曼滤波的核心是“预测+校正”,所以在测量上,我们用到的就是校正出来后验状态变量。
预测方面的应用一般在航空方面应用比较多,即预测飞行器下一步的运行轨道,也可以做运动物体的跟踪。我没接触过,印象里看书上这么提过,想想也差不多。
这次接触卡尔曼滤波是因为要做测量上的一个滤波优化,以前上自控原理也没好好听,略微后悔。卡尔曼在博士毕业的时候拿着卡尔曼滤波算法作为他毕业论文的主题,唉……差距啊,他这么吊,也不知道他爸妈知不知道。
这篇关于kalman滤波的一些理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!