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

时间:2015-01-23 08:27:14

标签: javascript kalman-filter

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

我正在尝试使用此处的javascript库:https://github.com/itamarwe/kalman

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

  

x - 这是您尝试估算的矢量。

我认为x将等于[position;速度;加速度]

  

P - 是估计的协方差矩阵,意思是   估计的不确定性。它也在每一步估计   卡尔曼滤波器和x。

我会用[1,0,0; 0,1,0; 0,0,1],我可能知道起始位置和速度真的很好,所以也许这些应该更小。

  

F - 描述X如何根据模型发展。一般来说,   model是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的多元正态分布。

我不知道在这里使用什么。我的模型会受到移动物体的未知外力的干扰。我有很多关于将应用的accerlation / force范围的数据。有没有办法让我用它来制作Q?

  

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

     

z - 这就是你所测量的。

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

  

H - 描述您的模型与观察之间的关系。   Z [k]的= H [K]×[K] + V [K]。

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

  

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

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

我希望非常有用的ita可以提供一些帮助。

非常感谢,

斯科特

1 个答案:

答案 0 :(得分:0)

关于你的问题:

  1. 关于Q - 过程噪音 - 由于加速度从一步到另一步不可预测地变化,Q应代表加速度的标准偏差。我会使用[0 0 0;0 0 0;0 0 sigma^2]之类的东西。您应该尝试使用所拥有的数据来估计加速度从一步到另一步的变化程度。
  2. 如果您在不同时间测量位置和加速度,则应使用2个z向量,从而使用2个不同的H矩阵来更新模型。当加速度测量到达时,您使用与该测量相关的H矩阵更新模型,并对位置测量进行更新。在每个步骤中,dt应表示自上次更新模型以来的时间。
  3. 您对R的猜测似乎正确。