算法介绍及实现——卡尔曼滤波( 二 )


(回顾:到现在已经学了两个卡尔曼方程 。第一个方程为状态更新方程,他是基于上一个状态对当前状态的预测值和当前状态的观测值实现对当前状态值的估计;第二个方程是预测方程,他是基于当前状态和观测值实现对下一状态的预测 。)
示例:
上述说明,在速度不变的情况下,本次飞机雷达测距为,在时间间隔5s后飞机雷达测距应该为(预测值) 。此番工作就是基于当前状态对下一状态的预测 。
但是,5s后飞机雷达测距为,和预测值存在90m的误差,那为什么会产生误差呢 。有两个可能:要么是雷达测量不准;或者是飞机速度发生了改变 。那究竟是哪一种可能呢?

算法介绍及实现——卡尔曼滤波

文章插图
写出速度的状态更新方程:
我对其解释为:
关于对卡尔曼增益的确定:
雷达误差是一种随机误差服从正态分布,若误差在雷达测量的标准差外,则可能是由速度变化引起的,反之 。卡尔曼增益取决于其雷达的测量精度,若精度越高,则说明残差就越重要,卡尔曼增益就应该越大;精度越低,说明测量的权重不高,没有那么重要,所以残差就没那么重要,卡尔曼增益就应该越小 。
如果飞机速度确实从40m / s变为22m / s,我们在10个循环后看到这一点(运行上面的等式10次β= 0.1) 。如果间隙是由测量误差引起的,则连续测量将在预测位置的前面或后面 。因此,平均而言,目标速度不会改变 。
然后写出距离的状态更新公式 。
此处的参数卡尔曼增益表示雷达的测量精度,是一个常数 。当其为1时,说明测量极其精确,观测值即为估计值;当其为0是,说明测量毫无意义 。
因此,对于飞机的位置和速度,我们都得到一个状态更新公式:
该方程组构成了雷达跟踪器的状态更新方程 。它们也被称为α?β(也称g-h)跟踪更新公式或α?β跟踪过滤方程.
算例:The alpha - beta - gamma()
实现算例:.py (文末获取)
3)引例4——匀加速飞机轨迹预测
若用上式(引例3的模型)进行“先匀速再加速”的轨迹预测,效果如下:
能很明显的发现实际的测量值和估计值之间存在这很大的差距,因为使用匀速运动的模型来预测匀加速运动,所以会导致预测会产生误差,这差距被称为滞后误差或归为系统误差 。
现在我们来讨论匀加速运动模型的建模 。
基于上述所言,我们现在讨论对匀加速直线运动的飞机的跟踪建模 。因运动中引入了加速度,所以状态外推方程(预测方程)即为:
对应即可得到其状态更新公式,回顾上述引例,在黄金称重例子中,我们只有一个状态即黄金的重量,所以状态更新公式和外推(预测)公式相应只有一个;在飞机的匀速运动引例中,飞机的状态包括位移x和速度v,所以其状态更新公式和外推(预测)公式相应的都有两个;依次类推,在匀加速运动中又引入了状态——加速度a,所以在本模型中,外推(预测)公式和状态更新公式都有三个,如下:
方程组中的1式不用解释,2式在引例3中引入速度更新公式时做出了解释 。对3式来说,理解如下:
演算示例:
选取一个场景:一架飞机以50m / s的恒定速度移动15秒,然后以8m / s的恒定加速度加速再延长 35 秒 。参数如下:
。。。
结果图如下:
实现算例:.py (文末获取)
对g-h-(k)滤波器的总结 。
建模步骤总结:
——step1首先基于启动数据,利用状态外推方程(预测方程)获得下一状态预测值 。
——step2基于预测值和观测值,使用状态更新方程获得当前状态的估计值 。