[翻译][学习卡尔曼与贝叶斯滤波器][前言]

这是一本交互式的卡尔曼滤波器和贝叶斯滤波器入门教材,使用Jupyter Notebook编写,允许读者在浏览器中阅读并运行修改代码。内容涵盖滤波器的基础概念、应用以及Python实现。书中提供了实践项目和练习,旨在帮助读者理解和应用滤波算法,特别适合初学者和工程师。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[翻译][学习卡尔曼与贝叶斯滤波器——基于Python实践][前言]

开源飞控交流:562983648
项目链接:Github
:这是一个互动式教程,博客只能显示静态页面。需要得到完整功能请下载项目并按照指导运行

这是一本卡尔曼滤波器和贝叶斯滤波器入门教材。这本书使用Jupyter Notebook编写,因此你可以在浏览器中阅读这本书,还可以运行和修改书中的代码并实时查看结果。还有比这更好的学习方法吗?

卡尔曼与贝叶斯滤波器

所有传感器都有噪声。这个世界充满了各种我们想要测量和跟踪的数据与事件,但我们并不能依靠传感器来得到完美准确的信息。我车上的GPS显示高度,每次我经过同一个位置,它报告的高度略有不同。如果我使用厨房秤称同一个物体的重量两次,会得到不同的读数。

在简单的情况下,解决方案是显而易见的,如果测量仪器给出的读数只是稍有不同,我可以多读几次然后取其平均值,或者我可以使用更高精度的测量仪器。但是,但传感器噪声很大,或者在某些环境下采集数据比较困难时,我们该怎么做呢?我们可能想尝试跟踪一架低空飞行器的飞行轨迹,也可能想给无人机设计一个自动驾驶仪,亦或者想确保农场的拖拉机能够毫无遗漏地播种整个田地。我的工作与计算机视觉有关,需要跟踪图像中的运动物体,而计算机视觉算法会产生充满噪声且不太可靠的结果。

这本书教你如何解决这些滤波问题。我使用了许多不同的算法,但它们均基于贝叶斯概率。简单地说,贝叶斯概率根据过去的信息来判断未来可能发生的事。

如果我让你说出我车子现在的方向,你可能会一脸懵逼。你最多只能提供一个介于1到360°之间的数字,那么只有1/360的机会是正确的。现在假设我告诉你,2秒前我车子的航向是243°,而2秒内车子的方向变化不太可能会很大,因此你便能得出一个更精确的预测。你用过去的信息更准确地推断出当前或未来的信息。

这个世界也是充满噪声的。上面的预测有助于你做出更好的估计,但它也会受到噪声的影响。我可能会为了一条狗而突然刹车,或者绕着一个坑洞转弯。路上的强风和结冰是影响我汽车行驶路径的外部因素。在控制相关文献中,我们称这些为噪声,尽管你可能不会这么认为。

关于贝叶斯概率还不止这些,但可能你已经了解其主要概念了。知识是不确定的,我们根据现象的强度来改变我们的置信度。卡尔曼与贝叶斯滤波器将我们对系统如何运行的嘈杂且有限的认知和同样嘈杂且有限的传感器测量结合起来,以得到对系统状态的最优估计。我们的原则是永远不要丢弃信息。

假设我们正在追踪一个物体,传感器告诉我们它突然改变方向了。是真的改变了,还只是传感器数据有噪声?这得看情况而定,如果这时一架喷气式战斗机,我们会非常倾向于相信它的确发生了一个瞬时机动,而如果这是一辆直线轨道上的货运列车,那我们会降低数据的可信度,同时我们会进一步根据传感器的精度来修正它的置信度。也就是说,置信度取决于我们对正在跟踪的系统的认知程度以及传感器特性。

卡尔曼滤波器最初是由Rudolf Emil Kálmán发明的,用数学上的最优方法来解决这类问题。它最初用于阿波罗登月任务,从那时起,它就被广泛用于各种领域。飞机、潜艇和巡航导弹上都使用了卡尔曼滤波器。它们被华尔街用于跟踪金融市场,还被用于机器人、物联网传感器和实验室仪器中。化工厂用它来控制和监测化学反应,医学成像中用于去除心脏信号中的噪声。在涉及传感器和时间序列数据的应用中,通常都会运用到卡尔曼滤波器或者相似方法。

写这本书的动机

我是一名软件工程师,在航空航天领域工作了近20年,所以我经常会在卡尔曼滤波器上碰壁,但却从未实现过一个,毕竟它们是出了名的困难。这个理论很优美,但是如果你在信号处理、控制理论、概率和统计以及制导和控制理论等方面还没有比较好的训练的话,学习起来就很困难。随着我开始使用计算机视觉来解决跟踪问题,自己来实现卡尔曼滤波器的需求也变得迫切了。

这个领域并不缺少优秀的教科书,如Grewal和Andrew的《Kalman Filtering》。但是,如果不了解一些必要的背景知识,那坐下来直接阅读这些书籍只会让你感到沮丧和厌烦。一般来说,前几章会概述需要数年学习的大学数学课程内容,轻描淡写地让你参考有关微积分的教科书,并在几个简短的段落中展示需要整个学期来学习的结论。它们是高年级本科或研究生课程的教科书,也是研究人员和专业人士的宝贵参考资料,但对于更一般的读者来说,确实学习起来会很困难。引入的数学符号没有注释,不同的文档中可能会使用不同的单词和变量名来表示同一个概念,并且这些书中几乎没有实例或解决一些实际问题。我经常发现自己能看懂每一个单词并了解那些数学定义,却完全不能理解这些单词和数学公式试图描述的真实世界现象是什么,我会反复思考:“但这些是什么意思呢?”。以下是曾经让我困惑的典型例子:
x ^ k = Φ k x ^ k − 1 + G k u k − 1 + K k [ z k − H Φ k x ^ k − 1 − H G k u k − 1 ] P k ∣ k = ( I − K k H k ) cov ( x k − x ^ k ∣ k − 1 ) ( I − K k H k ) T + K k cov ( v k ) K k T \hat{x}_{k} = \Phi_{k}\hat{x}_{k-1} + G_k u_{k-1} + K_k [z_k - H \Phi_{k} \hat{x}_{k-1} - H G_k u_{k-1}] \\ \mathbf{P}_{k\mid k} = (I - \mathbf{K}_k \mathbf{H}_{k})\textrm{cov}(\mathbf{x}_k - \hat{\mathbf{x}}_{k\mid k-1})(I - \mathbf{K}_k \mathbf{H}_{k})^{\text{T}} + \mathbf{K}_k\textrm{cov}(\mathbf{v}_k )\mathbf{K}_k^{\text{T}} x^k=Φkx^k1+Gku

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值