>概述

"如果你不能简单地解释某一概念,说明你没有很好地掌握它。"

艾尔伯特·爱因斯坦

关于本教程

卡尔曼滤波是一个简单的概念。 但很多现有的教程都不能很好地解释这个概念,其中大部分原因是因为这些教程需要学习者具备高深的数学背景。除此之外,它们也缺乏相应的数值例子来解释相关知识。

因为上诉的原因,我决定编写一个既简单直白解释原理,且具有相关数值实验的卡尔曼滤波教程。

对于教程中的例子,很大部分来自于广泛应用卡尔曼滤波算法的雷达系统(主要用于目标跟踪),然而,卡尔曼滤波算法不仅仅只作用于此,原则上它可以应用在任何需要估算和预测的领域。

教程包含以下三部分:

  • 第一部分 – 这部分通过8个数值例子来介绍卡尔曼滤波。其中例子涉及的数学原理有平均数,方差,标准差等知识,而且这些知识会在教程的开头介绍,所以你不需要担心学不会。 因为内容过于简单,你可以称本部分为“傻瓜式的卡尔曼滤波教程”,在学习这些内容之后,你应该可以明白卡尔曼滤波的概念和拥有卡尔曼滤波器的初步印象,除此之外,你也可以设计出一个一维的卡尔曼滤波算法。
  • 第二部分 – 这部分我们来学习多维的卡尔曼滤波和卡尔曼滤波在矩阵如何表示。大多数真实世界的卡尔曼滤波都是多维的卡尔曼滤波,这需要学习者具备线性代数的知识(仅仅涉及矩阵操作)。这些线性代数知识也会在教程中介绍。与此同时,教程也会向学习者展示卡尔曼滤波的数学推导和动态系统模型。在学习该部分之后,你就应该可以知道卡尔曼滤波背后的数学原理。除此之外,你也可以设计出一个多维的卡尔曼滤波。
  • 第三部分 – 这部分是卡尔曼滤波器的高级主题。因此,该部分是针对高级用户而设计的。这部分要求学习者具备统计学原理。作者也是在规划这部分的教程。这部分教程主要包括扩展卡尔曼滤波器,无迹卡尔曼滤波(unscented kalman filter)和在解决现实困难问题应用的卡尔曼滤波。

在本教程中的所有数值例子都使用公制单位来表示,我计划在将来添加英制单位来表示这些这些例子。

Get notified about new content
I'll will never spam or share your email with anyone else.
Captcha

"通过例子来学习会让你学习得更快和影响深远,而通过规则来学习则需要更多得时间和精力。"

卢修斯·塞内卡

关于作者

我是来自以色列的Alex Becker。我是一个具有15年无线技术从业经验的工程师。我的部分日常工作就是应用卡尔曼滤波来做跟踪相关的应用。

我十分欢迎建设性的批评。如果你什么想说和建议,欢迎你通过邮箱 email 和我联系。

教程中的例子不会涉及作者已知任何系统中的模式,方法,技术和相关参数。
Alex Becker

关于卡尔曼滤波

大多数现代系统都搭载上数量众多的传感器,它们通过传感器返回的一系列测量数据来估算一些有用的信息。例如,我们生活上的GPS接收器就是提供位置和速度的装置,它估算的位置和速度就是我们需要的有用数据,而不同时刻的卫星数据就是一系列的测量数据。

对于一个跟踪和控制系统来说,其中最大的问题就是在存在不确定性的前提下提供一个准确的有用信息。回到刚刚的例子,GPS接收器测量的卫星数据充满不确定性,这些不确定性往往取决于外部环境的变化,其中包括热噪声,大气层影响,卫星位置的轻微改变,GPS的内部时钟准确性等等。

而卡尔曼滤波就是众多常用且重要的估算算法。因为卡尔曼滤波器在进行预估时是默认假设输入数据是不准确的。与此同时,卡尔曼滤波是根据上一次系统的预估值来预估下一次系统的状态。

这种类型的滤波器是卡尔曼首次公开发表的,因此被命名为卡尔曼滤波器。在1960年,卡尔曼发布了一篇描述离散数据线性滤波问题的递归解的问题的论文。

现在,卡尔曼滤波器常常用于雷达跟踪系统,位置和导航系统,控制系统,计算机图形等等领域。

Rudolf E. Kálmán

一个预测例子

在介绍卡尔曼滤波之前,让我们先来了解一下预测算法。

我们用一个雷达跟踪系统作为例子。

Tracking Radar

雷达跟踪系统向目标方向发射一个笔尖型射束用于追踪目标。假设发射周期为5S,因此,雷达系统会在每5秒的时间后通过向目标方向发射专用的跟踪射束来定位目标。

在发射射束之后,雷达系统会估算当前目标的位置和速度。与此同时,雷达系统也会预测下一个发射束应该发送到哪一个位置。

通过牛顿运动方程,我们能很容易计算出目标在下一个发射周期的位置。

\[ x= x_{0} + v_{0} \Delta t+ \frac{1}{2}a \Delta t^{2} \]
符号说明:
\( x \) :目标位置
\( x_{0} \) :目标初始位置
\( v_{0} \) :目标初始速度
\( a \) :目标加速度
\( \Delta t \) :时间间隔 (在本例子为5S)

将上诉公式映射到三维空间,我们可以将牛顿运动方程作为系统的方程:

\[ \left\{\begin{matrix} x= x_{0} + v_{x0} \Delta t+ \frac{1}{2}a_{x} \Delta t^{2}\\ y= y_{0} + v_{y0} \Delta t+ \frac{1}{2}a_{y} \Delta t^{2}\\ z= z_{0} + v_{z0} \Delta t+ \frac{1}{2}a_{z} \Delta t^{2} \end{matrix}\right. \]

这些目标参数 \( \left[ x, y, z, v_{x},v_{y},v_{z},a_{x},a_{y},a_{z} \right] \) 被称为 系统状态. 通过当前系统状态代入到系统方程中,我们可以得到目标的下一个系统状态。

上面的方程被称为 动态模型 (或者空间状态模型). 动态模型是一种描述输入和输出关系的方法。

上面的方程被称为动态模型 (或者空间状态模型). 动态模型是一种描述输入和输出关系的方法。

回到我们的例子,我们知道当我们有了当前系统状态和掌握系统的动态模型之后,我们就能很容易地预测出目标的下一个状态。

然而并不是这样的。首先,雷达系统的测量数值不是完全可靠,它包含随机误差(或者这类型的不确定性)。这些随机错误的大小取决于很多因素,例如雷达自身的准确性,发射光束的宽度,返回信号强弱等等。这些测量误差被称为测量噪声

此外, 因为有很多外部因素会做成干扰,目标运动并不是完全按着运动方程。例如:风向,空气流动,驾驶策略等等。这个动态模型误差被称为 处理噪声

因为测量噪声和处理噪声的存在,这个根据上诉系统方程估算出来的目标位置会真实的目标位置相差很大。假若这样,雷达系统会向错误的方向发射跟踪射束并且丢失目标。

为了提高雷达跟踪系统的表现,这就需要能够将处理噪声和测量噪声考虑进来的预测算法。

对于此类算法,应用得最广泛无疑是卡尔曼滤波.

下一個