0

私は Wii Motionplus に取り組んでおり、WiimoteLib ライブラリを使用して生の値を抽出しました。ただし、正規化すると、実際に起こっていることと一致しないランダムな値が得られます。

これは私が正規化する方法です:

  1. Motionplus を調整します (つまり、ゼロに対応する生の値を見つけます。これは、ある時点で静止したままにすることによって行います)

  2. 後続の生の値が読み取られるたびに、そこからゼロ値を減算して、「相対的な」生の値を取得します。

  3. 次に、 http: //wiibrew.org/wiki/Wiimote/Extension_Controllersを使用してこの値をスケーリングします(yaw_fast、pitch_fast などをチェックします)。数値は測定値を使用して計算されます (生の値 8192 は 595 度/秒に対応します)。 )

  4. これらすべての値を経時的に合計して (離散積分)、最初の方向に対する Wiimote の角度を取得します。

しかし、これを計算してグラフにプロットすると、軸の 1 つのステップ変化がグラフに反映されません。デジタルコンパスで比較してみたのですが、コンパスは数値を正しく反映しているのに、wiiの数値が全然違います(模様も違います)

正規化のどこが間違っているのか誰か教えてもらえますか?

ありがとう!

4

1 に答える 1

1

送信されている数値は、それ自体に対する xy 軸と z 軸を中心とした回転です。これを x、y、z 座標に関連付けるには、回転行列を使用する必要があります。回転の読み取り値は固定軸ではなく、現在の向きに依存するため、オイラー行列を使用してこれを関連付ける必要があります。固定の x、y、z 座標

言い換えれば、ロール、ヨー、ピッチの速度を受け取っており、オイラー行列を使用してこれをデカルト座標に関連付ける必要があります。最初のロール、ピッチ、ヨーが分かれば、次のロール、ピッチ、ヨーの読み取り値を、その読み取り値が適用される時間間隔の最初の時間に単純に追加できます。

ROLL は y 軸を中心とした回転です。

PITCH は x 軸を中心とした回転です。

YAW は z 軸を中心とした回転です。

于 2011-06-03T01:18:52.087 に答える