• 締切済み

C#でWiiリモコンの3軸の回転角度の取得方法

卒業研究でWiiリモコンを使用しています。 そこで、Wiiリモコンの3軸の静止状態からの回転した角度を取得したいため、 Wiiモーションプラスを使用しているのですが、 どのようにすれば正確に求めることができるでしょうか? ライブラリにはWiimotelibの1.8Beta1を使用して、 C#でコーディングを行っています。 Wiimotelibの1.8Beta1 : http://wiimotelib.codeplex.com/releases/view/30401 現在、モーションプラスの3軸の生データ値を求めることができますが、 この生データは各軸の角速度なのでしょうか?(大体各軸7000後半の値を取っています) 私はこの値を角速度(rad/s)だと思ったため、 モーションプラスの各軸の静止状態の生データ値と 動かした時の生データ値の差分を取って、 その差分と、差分を取る処理間の時間(s)を掛け合わせ ラジアンを求めて、角度に直しているのですが、 Wiiリモコンを動かしている間にどんどん角度がずれていってしまいます。 もともと私の認識や計算の仕方がいけないのでしょうか? わかりづらい質問だと思いますが、 わかる方がいましたら、回答お願いいたします。

みんなの回答

回答No.3

Wiimotelibの1.8Beta1についてはまったく知りませんが、ジャイロの生データ(WiiMotion+からの信号のジャイロの出力電圧に対応するところ)が読めるのでしたら、それは角速度を0~16383の間の値で表したものです。(ジャイロのデータは14ビットなので) 参考URLによると、静止状態ではジャイロの出力電圧は1.35Vでデータは8192らしいです。 WiiMotion+には2種類のジャイロセンサが入っていますが、そのそれぞれについて何mv/deg/secの感度のものなのか分かればデータから対応する角速度が分かります。それについては知りませんが。 そして角速度を積分してやれば角度が求まります。 ジャイロセンサには特性上、温度ドリフトが存在し、ゼロ点が勝手に移動しますので積分していくとずれがでてきます。 しかしwiimotion+では使われているセンサが良いのか、周辺の回路によるものなのか知りませんが、温度ドリフトが少ないことが知られています。

参考URL:
http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus
すると、全ての回答が全文表示されます。
noname#137556
noname#137556
回答No.2

> Wiiモーションプラス だから、ジャイロセンサなのですね。 #1 の回答は素の wii リモコンと勘違いしてました。 で、モーションプラスの生データが角速度だとしても、 いろんな誤差に対する補正が必要だと思います。 積分すればどんどん誤差が積もっていきます。 場合によっては、加速度センサの方を使って、重力加速度の方向を見たほうがいいかも。

usewiimote
質問者

補足

回答ありがとうございます。 やはり補正が必要ですか・・・ どのような補正を行えばよいのでしょうか?

すると、全ての回答が全文表示されます。
noname#137556
noname#137556
回答No.1

生データなら、各軸の「加」速度ではないでしょうか?

参考URL:
http://hikakeya3.blog68.fc2.com/blog-entry-47.html
すると、全ての回答が全文表示されます。

関連するQ&A