卡尔曼滤波器:如何使用它没有“状态转换模型”?

时间:2013-01-22 18:21:48

标签: android filter accelerometer kalman-filter

我正在使用Android手机加速计。我希望过滤加速度计正在返回的可怕噪音,记录手机的动作。

我正在读卡尔曼滤波器,因为低通是不够的。

但是我没有从ACCELERATION(k-1)ACCELERATION(k)的转换模型,因为它是用户的动作。所以我没有状态转换矩阵(H或F在不同的论文中,Xk-1乘以等式Xk = H Xk-1 + B 命令+噪声)

我看到有些人在简单的例子中使用了单位矩阵。它如何适用于动态加速?

我知道卡尔曼滤波器,人们总是产生一些H矩阵,我只是不知道我的情况如何。

4 个答案:

答案 0 :(得分:3)

卡尔曼滤波器通常被认为是一个线性滤波器,其中包含所有模型矩阵,但滤波器的概念及其首次应用来自非线性模型。在这种情况下,您使用函数而不是矩阵。

如果预测和更新功能是高度非线性的,您可以使用统计方法在线估算参数。首先看一下你可以采用unscented kalman filter来恢复确定性抽样技术的均值和协方差 - unscented transformation。我认为在你的情况下,这可能是最好的开始。

卡尔曼滤波器还有其他变种。你可以从wikipedia开始,但如果你谷歌“自适应卡尔曼过滤器”,你可以看到主题的多样性。

如果你想深入研究这个主题,但没有必要从所有数学开始,我建议非常好book: Kalman Filter for Beginners由Phil Kim开始。传感器融合还有其他可能性,但它是另一个广泛的主题。

答案 1 :(得分:2)

给定状态向量[x, v_x, a_x],即位置,速度和加速度 在一个方向上的对象(相同的逻辑适用于另外两个自由度)。 您通常将状态转换矩阵定义为

1   dt   0.5*dt*dt
0   1    dt
0   0    1

如果你写出来,你会得到:

xnew = x+v_x*dt + 0.5*a_x*dt*dt
vnew = v_x + a_x*dt
anew = a_x

这些是以恒定加速度移动的物体的运动方程。

在卡尔曼框架中处理未知用户引起运动的方式是通过工厂噪声项。你假设,加速(而不是状态的其他组成部分)存在未知的随机扰动,而不是继续使用完全相同的加速度。

答案 2 :(得分:2)

您可以使用单位矩阵。

状态转移矩阵用于根据当前状态预测未来状态,在没有任何新测量的情况下。在你的情况下,正如你所说,你没有任何方法可以预测未来状态(加速度) - 因此你最好的猜测是未来状态(加速度)与当前状态相同。这正是单位矩阵的作用。

在许多卡尔曼滤波器中,基于当前状态预测未来状态的某种方式,而这就是非同一性状态转换矩阵将介入的位置。例如,假设您的卡尔曼滤波器基于GPS和速度计估算车辆位置和速度;然后,即使没有新的测量,您也可以通过基于速度改变位置来预测未来位置。 Dave的回答显示了如何使用状态转换矩阵来做到这一点。

答案 3 :(得分:-1)

卡尔曼滤波器的作用是它进行预测,然后根据您的观察来校正您的预测。如果你的模型不是很动态,虽然你的模型假定的位置不变,但根据你的观察,你会得到一些东西。所以身份可以工作。