您似乎在这里有两个(或三个)单独的问题。
1. 您并不真正了解卡尔曼滤波器和/或它们背后的数学原理。这将使正确实施和使用一个变得非常困难。
2. 你似乎不了解这个问题所涉及的基本物理学。(基础物理是指基础物理,而不是简单物理,因为它并不简单。)
我建议您尝试使用更简单的积分器,例如 Runga-Kutta 4,您可以找到许多书籍,其中包含实现和使用的示例。对于这个问题应该足够了。(如果客户指定卡尔曼,询问原因。)
至于为什么问题受到限制,在我看来,它无法确保设备垂直握持,也无法测量实际方向。暂时忘记陀螺仪,假设设备不能绕垂直轴旋转。您有三个加速度计,大概是为了估计 3D 中的位置。因此,如果您看到 X 方向的加速度,您会增加您在 X 方向的估计值。类似地,如果您看到 Z 方向的加速度(我假设它是“向上”),您会增加您在 Z 方向上的位置的估计值。现在稍微旋转设备,比如绕 Y 轴旋转 30 度。现在,当设备认为您正在沿 X 方向加速时,设备实际上的加速比 X 中指示的要小一些,并且它也在Z方向加速。所以你的位置估计现在是不正确的。
旋转更难积分(方程更“僵硬”,需要更小的时间步来保持精度)。但是如果设备被倾斜,他们将遇到类似的计算错误答案的问题(因为设备无法判断它是否被倾斜)。它会认为绕垂直轴的旋转比实际大或小,因为旋转的一部分实际上是绕着不同的轴(就像加速部分沿着不同的轴一样)。
也许您需要聘请顾问(不,我不是在找工作)来帮助您制定数学。