1

我 每 100 毫秒获取一个 grove pi 模块acc_vector = (accX, accY, accZ)的 3 维值。我想要的是,使用java,显示我使用模块所做的运动......但我的问题不是如何显示它:p

为此,我需要计算 对应于加速度值的位置position_vector = (x,y,z)的值。但我不知道该怎么做。

这是我尝试过的,但它总是给出奇怪的结果(初始位置、速度和加速度是 (0,0,0) ):

  • position_vector = 0.5f*acc_vector*t;
  • position_vector += acc_vector;
  • position_vector = acc_vector*(t-t_just_before);
4

1 回答 1

1

这将取决于您要如何插入加速度。最简单(但可能最不准确)是假设样本之间的加速度恒定。在这种情况下,您的x组件代码应该类似于

position[0] += velocity[0] * timeStep + 0.5 * acceleration[0] * timeStep * timeStep;
velocity[0] += acceleration[0] * timeStep;

您必须对yz组件执行相同的操作。

要获得更准确的结果,您可能需要更复杂的技术。您可以查找数值方法,例如Runge-Kutta

于 2016-11-22T14:18:35.223 回答