我正在获取 Grove pi 模块的 3 维值, acc_vector = (accX, accY, accZ) 每 100 毫秒。 我想要的是,使用java,显示我用模块所做的运动......但我的问题不是如何显示它:p
为此我需要计算位置的值 位置 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);
最佳答案
这取决于您想要如何插值加速度。最简单(但可能最不准确)的是假设样本之间的加速度恒定。在这种情况下,x
组件的代码应类似于
position[0] += velocity[0] * timeStep + 0.5 * acceleration[0] * timeStep * timeStep;
velocity[0] += acceleration[0] * timeStep;
您必须对 y
和 z
组件执行相同的操作。
为了获得更准确的结果,您可能需要更复杂的技术。您可以查找数值方法,例如 Runge-Kutta .
关于java - 给定加速度计的加速度,如何对模块的空间位置进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40743266/