MATLAB加权平均值滤波原理
MATLAB加权平均值滤波原理
文章目录
- 引入
- 实例
- 状态向量更新
- 状态向量协方差更新
- 状态向量更新
- 转换矩阵H \mathbf{H}H
- 推广
- 参考文献
引入
首先请大家思考个问题,假设你手头有两个传感器A和B,测的是同一个信号。可是由于测量误差的原因它们每次的读数都不太一样,怎样才能获取到更准确的数据?
取平均简单粗暴,直接将两个传感器获得的数据求平均值:
加权平均假设传感器A精度比传感器B高,那么就可以就可以使用加权平均来计算:
。如果你可以想到加权平均,那么恭喜,你已经掌握卡尔曼滤波的核心了,那就是加权平均。
看到这里可能有人懵了,卡尔曼到底是啥?下面进行简单的解释:
以求解小车移动的位置为例,假设你只有一个传感器(GPS),还有一个小车的运动模型。你可以根据运动模型和上一时刻小车的状态计算出下一时刻小车可能在的位置,但也不是那么准。那为了获取小车更精确的位置,下一时刻小车的位置便是把运动模型算出来的值,和传感器测出的值,(就像两个传感器那样),取加权平均,就得到了小车较为精准的位置,这便是卡尔曼滤波要做的事情。
而卡尔曼滤波就是预测 - 测量之间不断循环迭代。当然,对于某些情况,如GPS + IMU,由于IMU 测量频率远比GPS 高,在只有IMU 测量值时,只执行运动更新,在有GPS 测量值时再进行测量更新。
实例
时刻的运动速度为
,控制系统的控制输入为
,所在位置为
。其上携带有GPS,我们可以从中获取智能汽小车所在的位置,切记GPS是有误差的。
图1 应用场景图
由此可得,在
时刻,智能小车的状态我们可以使用一个向量来表示:
而言,这里有两个变量
和
,所以可以使用协方差矩阵
来表示:
时刻对于位置而言,其可能会在红色的线段内部。
图2 t时刻小车可能在的位置
。
图3 位置概率分布图
根据智能小车在直线公路上的运动,我们可以获取其运动方程如下:
其中,
是关于
的函数;
是t时刻的状态向量
是t时刻的控制输入
是预测误差。
假设这里智能小车系统是一个线性系统,则上述运动可以转化为:
(公式1)
其中,
为状态转换方程,将t-1 时刻的状态转换至t 时刻的状态;
是控制输入矩阵,将运动测量值 [公式] 的作用映射到状态向量上;
是预测的高斯噪声,其均值为0,协方差矩阵为
。
根据其GPS的返回值,我们可以获得智能小车的观测方程:
其中,
为传感器的测量值;
为转换矩阵,它将状态向量映射到测量值所在的空间中;
为测量的高斯噪声,其均值为0,协方差矩阵为
状态向量更新
在小车运动过程中,可以通过控制加速度
来调整小车的速度:
假设t和t-1时刻之间的时间差为
,则
那么写成矩阵形式如下:
与之前的运动方程对比,可以发现
状态转移矩阵
,控制输入局矩阵
上式就可以写成
(公式2)
其中
表示通过t-1时刻系统卡尔曼滤波的状态估计值
表示根据t-1时刻的状态估计值,预估出来t时刻的状态预估值
状态向量协方差更新
系统的误差通过协方差矩阵来表示,根据协方差矩阵的性质:
因此在对状态向量更新后,还需要更新状态向量对应的协方差矩阵
,公式为:
其推导过程如下:
假设
为t时刻下状态向量的真值(永远未知),由之前的运动方程(公式1)给出,将(公式1)和公式(2)相减可得:
考虑到状态向量和噪声是不相关的,则
,因此上式可以化简为:
推导完毕。
变大了。这主要是因为在原本不确定的位置上,又加上了速度不确定性导致的位置误差,最终使得位置更加不确定。预测更新实际上相当于“加法”:将当前状态转换到下一时刻(并增加一定不确定性),再把外界的干扰(运动测量值)叠加上去(又增加了一点不确定性)。如下图所示。
状态向量更新
当从智能小车携带的GPS获取到测量值时,那么便可以对状态向量进行更新,也即可以获得t时刻小车最优的状态向量,如下:
其中,
为卡尔曼增益。
推导过程如下:
小车位置1
从t-1时刻起,小车运动后,经过前面所述的预测更新后,我们就得到了t 时刻的小车位置的估计,由于在卡尔曼滤波中,我们使用高斯概率分布来表示小车的位置,因此这个预测的位置可以写为:
为了与前面的通用的推导区别开来,在这个一维的例子中我们使用了新的符号。不过熟悉高斯概率分布的话应该可以马上看出来,
为这个高斯分布的均值,
为方差,而
为小车的可能位置,
为某个可能位置
小车位置2
假设在t 时刻,我们通过GPS或测距仪测得小车距离原点的距离
,由于测量包含噪声(且在面前我们假设了其为高斯噪声),因此该测量值也可以利用高斯概率分布来表示:
除了下标外,其余的字母的含义都和上面的式子一样。
由此我们得到了小车的两个预估模型,一个是通过上一时刻状态量预测得到的预测模型(预测更新),另一个是通过测量得到的测量模型(测量更新)。两个模型虽然使用不同的方法计算所得,但是两者都反应了小车的位置信息,即两者之间存在一定的关联。如下图所示,蓝色区域是两个预估模型的交界处,也就说明小车位于蓝色区域的概率最大。
这也意味着,我们所能得到的关于小车位置的最佳估计,就是将预测更新和测量更新所得的数据融合起来,得到蓝色区域的概率模型。而这里的融合,就是一个简单的“乘法”,并利用了一个性质:两个高斯分布的乘积仍然是高斯分布。
上式可以简化为:
其中
是
和
的加权平均,
是
和
的调和平均的二分之一:
由此我们便可以得到融合后小车位置的高斯分布,如下图中蓝色曲线所示。
转换矩阵
在刚刚的一维情况的小例子中,我们其实做了一个隐式的假设,即有预测更新得到的位置的概率分布和测距仪所得的测量值具有相同的单位 (unit),如米 (m)。
但实际情况往往不是这样的,比如,测距仪给出的可能不是距离,而是信号的飞行时间(由仪器至小车的光的传播时间),单位为秒 (s)。这样的话,我们就无法直接如上面一般直接将两个高斯分布相乘了。
此时,就需要用到转换矩阵
。由于
,
为光速。所以此时
。因此预测值就可以写为:
而观测值则保持不变:
这样,两个高斯分布在转换矩阵
的作用下在同一个空间下。根据前面的
和
,可以得到:
同理可得
推广
因此,在高维空间中,
其中,
为卡尔曼增益。
参考文献
卡尔曼滤波:从入门到精通
轻松理解卡尔曼滤波