EKF—面向初学者的互动教程(1)

来源:互联网 发布:淘宝店在哪找货源 编辑:程序博客网 时间:2024/06/06 08:36

在使用像openpilot和pixhawk的自动驾驶系统过程中,我经常会遇到所谓的拓展卡尔曼滤波器(EKF)。谷歌EKF,我找到了许多网页和文献,它们大多数都难以上手,所以我决定为初学者创建自己的教程。这篇教程仅仅需要高中数学知识,如果需要,我会介绍线性代数等高级概念。从一个简单的例子和(线性的)卡尔曼滤波器开始,最终在教程的结尾对EKF的真正实现有一个理解。

PART 1:一个简单的例子

想象一架飞机正在着陆,尽管这里有许多事情我们需要关注比如空速、燃料等等,但是最主要的是关注飞机的高度(海拔高度)。对降落过程做一个简单的近似描述,我们可以认为现在的高度是上一个时刻高度的一个函数。比如我们每次观测时,飞机每次下降2%的高度,然后飞机当前的高度是上一时刻高度的98%:


工程师使用递归这个术语来指代一个像这样的公式,在这个公式中,数量是用先前的值来定义的:为了计算当前值,我们必须“重复”回到先前的值。 最终我们又回到了一些最初的“基本情况”,就像已知的起始高度。


PART 2:噪声处理

当然,真实的高度测量来自于对传感器的观测,比如GPS或者气压计。这些传感器不同程度上的反映了真实高度。如果一个传感器仅仅是有零偏,我们减去这个零偏就可以得到高度。但是,通常情况下,传感器的准确度会随着时间的推移而不可预知地变化,使得观察到的传感器读数成为真实高度与噪声的叠加:


最后附上原版教程下载链接:The Extended Kalman Filter(html)



原创粉丝点击