提问者:小点点

使用带有加速度和位置输入的卡尔曼滤波器


我想使用卡尔曼滤波器来估计基于噪声位置测量和噪声加速度测量以未知方式上下移动的物体的高度和垂直速度。每个测量的噪声与另一个测量无关。我认为/希望这听起来像是卡尔曼滤波器的良好使用。

我尝试使用javascript库,可以在这里找到:https://github.com/itamarwe/kalman

我已经阅读了很多关于卡尔曼滤波器如何工作的信息,我只是在尝试将矩阵与库中的内容匹配时遇到了问题。下面是库中使用的矩阵列表,该矩阵已发布到与此类似的另一个问题中,以及我关于我认为应该使用的内容的注释。

这是你试图估计的向量。

我认为x会等于[位置;速度;加速度]

P -是估计的协方差矩阵,意味着估计的不确定性。它也在卡尔曼滤波器的每一步中与x一起被估计。

我会使用[1,00; 0,1,0; 0,0,1],我可能非常了解起始位置和速度,所以也许这些应该更小。

F - 描述 X 如何根据模型发展。通常,模型为 x[k] = Fx[k-1] w[k]。在您的情况下,F 可能是单位矩阵(如果您希望角加速度相对平滑)或零矩阵(如果您预计角加速度完全不可预测)。在任何情况下,w 都表示您期望加速度随步骤变化的程度。

我认为F=[1,dt,dt2/2;0,1,dt;0,0,1]当你乘以x*F时,如果没有改变,它会给你下一个状态。我在200hz下采样,所以我想我应该用.005代替dt。

w -描述过程噪声,即模型与“完美”模型的偏离程度。它被定义为协方差矩阵为q的零均值多元正态分布。

我不知道在这里用什么。我的模型将受到移动物体的未知外力的干扰。我有很多关于将要施加的加速度/力范围的数据。有没有一种方法可以让我用它来做Q?

上面的所有变量都定义了您的模型,这意味着您正在尝试估计什么。在下一部分中,我们将讨论观察的模型——为了评估模型,您测量了什么。

这是你测量的。

这将是[测量的高度,测量的加速度]。快速提问,如果这些测量具有不同的频率,通常如何处理?

H - 描述模型与观测值之间的关系。z[k]=H[k]x[k] v[k].

我认为这应该是[1,00; 0,0,1],因为我测量位置和加速度。

v-是测量噪声,假设为具有协方差R[k]的零均值高斯白噪声。在这里,您需要测量加速度计的噪声,并计算噪声协方差矩阵。

不知道如何解决这个问题。我可以找到每个传感器的标准偏差,R是否只是[stdevHeight,0;0,stdevAccel]?这只是我的一个完全猜测。

我希望非常有帮助的ita是周围的帮助一点。

非常感谢,

斯科特


共1个答案

匿名用户

关于您的问题:

    < li >关于< code>Q -过程噪声-由于加速度在不同步骤之间发生不可预测的变化,< code>Q应代表加速度的标准偏差。我会使用类似于< code >[0 0 0;0 0 0;0 0 sigma^2].你应该试着用你所拥有的数据来估计每一步的加速度变化有多大。 < li >如果您在不同时间测量位置和加速度,您应该使用2个< code>z向量,即2个不同的< code>H矩阵来更新您的模型。当加速度测量值到达时,用与该测量值相关的< code>H矩阵更新模型,位置测量也是如此。在每一步中,< code>dt应该表示自上次更新模型以来的时间。 < li >您对< code>R的猜测似乎是正确的。