【卡尔曼滤波第一期】α−β−γ 滤波器概述
目录
- 前言:为什么需要预测算法?
- 基本知识:
- 估计,准度和精度
- 小节-统计学角度的测量过程
- α−β−γ 滤波器
- 示例 1 – 给金条称重
- 估计算法
- 结果分析
- 示例 2 - 跟踪直线匀速运动的飞行器
- α−β 滤波器
- 估计算法
- 数值示例
- 结果分析
- α−β−(γ) 滤波器小结
- 参考
前言:为什么需要预测算法?
以追踪雷达为例,
假设我们每5秒发起一次追踪,即以5秒为间隔,雷达发出一束波束照射目标。
雷达波到达目标并返回后,它开始估计目标当前的位置和速度。雷达同时还能估计(或预测)目标在下一个测量周期即5秒后的位置。
目标未来的位置可以通过牛顿运动方程得到:
处理三维空间中的运动时,牛顿运动方程可以以方程组形式给出:
这组目标的参数 [x,y,z,vx,vy,vz,ax,ay,az] 称为 系统状态。当前状态作为预测算法的输入,预测算法的输出则是目标未来的状态,即目标在下一个采样点所具有的参数。
上面的牛顿运动方程组称为 动态模型 或 状态空间模型。动态模型描述了预测算法的输入和输出之间的关系。
显然,如果目标当前的状态和动态模型是已知的,预测目标后续的状态就可以很简单地实现。
实际中,雷达的测量并不完全准确,它所包含的随机噪声或不确定性会影响对目标状态的预测的精准度。误差大小取决于多方面因素,例如雷达校准、波束宽度、回波的信噪比等。雷达测量的随机噪声或不确定性称为 测量噪声。
另外,由于存在风扰、飞行员干预等因素,目标的运动并不总能依照运动方程。运动方程预测和实际目标的运动轨迹之间的差异称为 过程噪声。
由于测量噪声和过程噪声的存在,估计的目标位置有可能和目标的真实位置大相径庭。这种情况下,雷达的波束完全可能指向错误的方位,从而跟丢目标。
为了提升雷达跟踪的精准度,一套能对抗测量和模型的不确定性的预测算法就至关重要。 最常用的跟踪和预测算法就是 卡尔曼滤波。
基本知识:
估计,准度和精度
所谓 估计 Estimation 是对系统的隐藏状态的估计。例如某飞行器的真实位置对观测者而言是不可见的,我们可以用传感器,例如雷达,来估计飞行器的位置。通过使用多个传感器并且使用先进的估计和跟踪算法(例如卡尔曼滤波)能够大幅提升对飞行器位置估计的效果。每次这样的测量和计算都是一次估计。
- 准度 Accuracy 描述测量值与真值的接近情况。
- 精度 Precision 描述一系列测量值相对同一个真值的偏差分布情况。
准度和精度是衡量一个估计的最基础和重要的指标。
下图展示了准度和精度的区别:
高精度系统的测量值具有很低的方差(即低不确定性),而低精度系统具有高方差(即高不确定性)。随机测量噪声造成了这些不确定性。
低准度系统又被称为 有偏 Biased 系统,源自它们的测量结果往往受系统性误差(偏差)的影响。
散布对测量的影响可以通过对测量结果求平均或进行平滑来降低。 比如,用温度计测量的室内温度会包含随机测量噪声,我们可以测量多次然后取平均。因为误差是随机的,有些测量会比真值大,有些测量会比真值小,二者在求平均中抵消后平均结果会更接近真值。进行这样的测量越多,求得的估计值就越准确。
另一方面,一个有偏的温度计的测量结果经过上述估计后,仍然是有偏的。
小节-统计学角度的测量过程
下图从统计学角度展示了测量的过程。
一次测量是对一个随机变量的取样,该随机变量由一个 概率密度函数 (PDF)来描述。
多次测量的平均值就是该随机变量的 期望。
均值和真值之间的差是该测量系统的 偏差 或者 系统性误差,它构成了测量系统的 准度Accuracy。
测量值的散布程度是该测量系统的 测量噪声,又叫 随机测量误差 或 测量不确定性,它构成了测量系统的 精度Precision。
α−β−γ 滤波器
alpha−β 滤波器和 α−β−γ 滤波器常用来对时间序列数据进行平滑alpha−β 滤波器和 α−β−γ 滤波器在原理上和卡尔曼滤波高度相关。
示例 1 – 给金条称重
现在介绍第一个简单示例。本例对一个静态系统的状态进行估计。 所谓静态系统,是指在合理时间范围内系统状态不会自发改变的系统。 例如一座塔便是一个静态系统,高度便是其状态之一,它不随时间改变而变化。
本例中,我们估计一根金条的重量。假定我们用来称金条的秤是无偏的,即称重结果没有系统性偏差,但是有随机噪声。
金条就是我们所关心的系统,金条的重量就是该系统的状态。该系统的动态模型是恒定的,因为我们假定金条的重量(在短时间内)不会发生变化。
为了估计出该系统的状态(金条重量),我们可以对其进行多次称重,然后取多次测量结果的平均值。
把上述求平均的表达式在数学上等效变换一下,可以得到:
上式即为卡尔曼滤波的五个方程之一。称为状态更新方程。其意为:
系数 1/n 是本例特定的。后面会具体谈到这个系数的重要性,但此刻可以先指出,在卡尔曼滤波的语境中,这个系数被称作 卡尔曼增益,符号为 Kn,其具有下标 n, 意味着卡尔曼增益随着每次迭代都会改变。
Kn 的提出是Rudolf Kalman重要的贡献之一。
在进展到卡尔曼滤波之前,我们先不用 Kn,而是用希腊字母 αn 来表示这个系数。
所以状态更新方程可以写作:
在进行第一次测量之前,我们可以根据金条上的钢印来猜测(或粗略估计)金条的重量,这是 初始估计,是算法的第一个估计值。
卡尔曼滤波需要一个初始估计作为初始值,这个值可以非常粗略。
注:初始估计可以是任何值,由于 α1=1,初始值在第1次迭代的时候将被抵消。
估计算法
下图描述了本例中所使用的算法。
现在,可以开始具体测量和估计的过程了。
将10次可能的测量过程总结如下表:
增益随着每次测量而减小,故后面的测量对估计值的贡献总小于前面的测量。当测量次数不断增加,估计值将越来越接近真实值。
结果分析
下图中列出了测量值、估计值以及真值。
这个估计算法对测量值有平滑的效果,并且能够收敛到真值。
示例 2 - 跟踪直线匀速运动的飞行器
是时候考虑一下状态随时间变化的动态系统了。本例中,我们尝试用 α−β
滤波器 对一个直线匀速飞行中的飞行器进行跟踪。
假设一个只有一个维度的世界中,有这样一个飞行器在往远离雷达的方向飞行(或者靠近雷达)。因为是一维空间,飞行器到雷达的角度是恒定的,其高度也是恒定的。
xn 表示 n 时刻飞行器的距离。飞行器速度可以近似用距离差分法得到 - 计算距离随时间的变化率。
因此,速度是距离的导数:
根据这些方程,下一个采样周期时的飞行器距离等于当前飞行器距离加上目标速度乘以采样间隔时间。由于我们假设飞行器的速度不变,下一时刻的速度等于当前时刻的速度。
上述方程称为 状态外插方程 (也叫 转移方程 或 预测方程)。
在上个示例中我们已经用过状态外插方程了,只不过上个例子中这个方程是个恒等式,即下一时刻的状态等于当前时刻的状态。
状态外插方程依赖系统动态模型,因此不同的示例中这个方程也不同。这个方程有一个以矩阵形式给出的更加一般的形式,后续会讲到。上述方程的形式是本例特有的。
α−β 滤波器
哪个原因是正确的呢?
我们把速度的状态更新方程写下来:
- 如果 𝛽=0:不相信观测,速度不变
- 如果 𝛽=1:完全根据观测调整速度
- 一般取 𝛽∈[0,1]:在预测和观测间折中
飞行器位置的状态更新方程与上一个例子里的方程类似:
注:在其他的书中,α−β 滤波器又叫 g-h 滤波器,字母g代替了希腊字母 α,字母h代替了希腊字母 β。
估计算法
下图描述了本例所使用的估计算法。
与上一个示例不同,增益(α 和 β)的值在本例里是给定的。在卡尔曼滤波里,α 和 β 会被卡尔曼增益代替,并且每个采样周期会重新计算。
数值示例
考虑一个在一维世界里正在向雷达靠近(或远离)的飞行器。
α−β 滤波器的参数为:(假设雷达是个低精度雷达,追踪的飞行器是架低速飞行器。现实中的雷达精度一般都更高,飞行器也更快)
- α=0.2
- β=0.1
- 测量周期是5秒。
假设进行十次测量和估计,总结表如下:
结果分析
下图中列出了测量值、估计值以及真值。
我们的估计算法对测量值有平滑效果,并且能收敛到真值。
此外,更改两个增益参数,用较大的 α 和 β。
下图描述了 α=0.8、β=0.5 时的真值、测量值和估计值。
滤波器的平滑效果降低了很多。当前估计值非常接近测量值,预测的误差也相对较高。
那么我们应该一直选取较低的 α 和 β 吗?
答案是否定的。α 和 β 的值应该依测量精度而定。如果测量设备精度很高,例如激光雷达,较高的 α 和 β 会比较好,会更信赖测量值,对于本例则滤波器对飞行器速度的变化响应更快;如果测量设备精度很低,应该用较低的 α 和 β,会更信赖预测值,对于本例则滤波器对测量不确定性(误差)的平滑效果会更好,但滤波器对飞行器速度的变化响应就会慢得多。
α−β−(γ) 滤波器小结
有许多种 α−β−γ 滤波器,这些滤波器基本上都遵循同样的原理:
- 当前状态估计是基于状态更新方程的。
- 下一个时刻的状态预测是基于系统动态模型的。
主要区别在这些滤波器对权重系数(α−β−γ)的选择上。有些滤波器使用恒定权重,有些每次迭代会重新计算权重。
参考
1、卡尔曼滤波教程