我想使用Kalman滤波器,根据嘈杂的位置测量值和嘈杂的加速度测量值,以未知的方式估算物体上下移动的高度和垂直速度。每个测量的噪声与另一个测量无关。我认为/希望这听起来像是对卡尔曼滤波器的很好使用。
我正在尝试使用在这里找到的javascript库:https://github.com/itamarwe/kalman
我已经阅读了很多有关Kalman过滤器工作原理的信息,但在尝试将矩阵与库中的内容进行匹配时遇到了一些问题。以下是库中使用的矩阵的列表,该矩阵发布到另一个与此问题类似的问题,以及有关我认为应该使用的内容的注释。
x-这是您尝试估计的向量。
我认为x将等于[position; 速度; 加速]
P-是估计的协方差矩阵,表示估计的不确定性。还在卡尔曼滤波器的每个步骤中与x一起进行估算。
我会用[1,0,0; 0,1,0; [0,0,1],虽然我可能非常了解起始位置和速度,所以也许应该更小些。
F-描述X如何根据模型发展。通常,模型为x [k] = Fx [k-1] + w [k]。在您的情况下,如果期望角加速度相对平滑,则F可以是单位矩阵,如果期望角加速度完全不可预测,则F可以是零矩阵。在任何情况下,w代表您期望加速度逐步变化的幅度。
我认为F = [1,dt,dt2 / 2; 0,1,dt; 0,0,1]当您乘以x * F时,如果没有任何变化,它将为您提供下一个状态。我正在以200hz采样,所以我想只用.005代替dt。
w-描述过程噪声,即模型与“完美”模型有多少差异。它定义为带有协方差矩阵Q的零均值多元正态分布。
我不知道在这里用什么。未知的外力移动对象会干扰我的模型。关于要施加的加速度/力的范围,我有很多数据。我有办法用它来做问吗?
上面的所有变量都定义了模型,即您要估算的模型。在下一部分中,我们将讨论观察的模型-为了估计模型而要进行的测量。
z-这就是您要测量的。
这将是[测得的高度,测得的加速度]。很快的问题是,如果这些测量的频率不同,通常如何处理?
H-描述模型与观测值之间的关系。z [k] = H [k] x [k] + v [k]。
我认为这应该是[1,0,0; [0,0,1],因为我测量位置和加速度。
v-是测量噪声,假定为具有协方差R [k]的零平均高斯白噪声。在这里,您需要测量加速度计的噪声,并计算噪声协方差矩阵。
不知道如何解决这个问题。我可以找到每个传感器的标准偏差,R只是[stdevHeight,0; 0,stdevAccel]吗?那只是我的全部猜测。
我希望这个很有帮助的ita能够为您提供一点帮助。
谢谢一堆
史考特
关于您的问题:
Q
-过程噪声-由于加速度的变化是不可预测的,因此Q
应表示加速度的标准偏差。我会用类似的东西[0 0 0;0 0 0;0 0 sigma^2]
。您应该尝试使用必须估算的数据加速度逐步变化的数据。z
向量,因此应使用2个不同的H
矩阵来更新模型。当加速度测量值到达时,您将使用与该H
测量值相关的矩阵来更新模型,而对于位置测量值也将使用相同的矩阵来更新模型。在每个步骤中,dt
应代表自上次更新模型以来的时间。R
似乎是正确的。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句