1

Grove pi モジュールの 3 次元値 acc_vector = (accX, accY, accZ) を 100 ミリ秒ごとに取得しています。私が欲しいのは、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;

yおよびzコンポーネントについても同じことを行う必要があります。

より正確な結果を得るには、より高度な技術が必要になる場合があります。Runge-Kuttaなどの数値法を調べることができます。

于 2016-11-22T14:18:35.223 に答える