WiiAccバージョンアップ
ニンテンドーWiiリモコンに搭載されている3軸加速度センサの値をパソコンに取得するソフトウエア「WiiAcc」をバージョンアップしました。
栃木県総合教育センター研修部の方から、WiiAccを使いたいというお知らせとともに、加速度値のキャリブレーション機能を搭載してほしいとのリクエストをいただいていました。こちら。
計測システムとして使うには当然のことでした。あれこれ迷いましたが、踏ん切りをつけてバージョン2.0として公開することにしました。
当然バージョンアップのメインは「加速度値のキャリブレーション機能」です。Wiiリモコンを衝撃を与えずに静かに3次元的に回転させると、XYZそれぞれの軸の最高値と最低値が取得できます。それが、1Gと-1Gに相当します。1Gと-1G差からスパンを、スパンと1Gの値からゼロ値を計算して、較正値として保存します。
何回か実施してたとえば平均値によって較正値を確定する方法もあるでしょう。このため1Gと-1Gの値を手入力できるようにもしてあります。較正値は保存できるようにしました。
自分でも何度もやってみましたが、上手い下手が出てきそうです。キャリブレーション名人が生まれたりして。
もうひとつ新しい機能を搭載しました。実はこちらのほうが手間がかかりました。
記録したデータを表示するモードで、表示画面上でマウスボタンを押したままドラッグをすると、計測開始からの時間とその時刻に対応した加速度値が表示されるようにしました。
これでWiiAccの画面で時間と加速度値を読み取り色々と検討できるようになりました。こういうのは計算式の組み合わせですから、できるときにはスーとできるものなのですが、一度迷路に入り込むと訳わからなくなってしまいます。今回も、それまでのコードを投げ捨ててやり直したらできました。サンプルに示した画像では、自由落下で加速度が3軸ともゼロになっている時間が9.65秒から10.22秒の間0.57秒であることがわかります。
どうでしょうか、使ってみての感想などお聞かせ願えればありがたいです。
「WiiAcc.zip」をダウンロード←最新バージョン2.0.11
(1)キャリブレーションの式に一部ミスが見つかりましたので改修しました。(5月4日7:02追記)
(2)データ保存の際に、データーを1/100秒ごとの重力加速度値に変換して保存するようにフォーマットを変えました。(以前のバージョンでのデータの読み込みはできなくしました。(5月4日14:11追記)
| 固定リンク
「プログラミング」カテゴリの記事
- 三角関数イメージソフトウエア(2008.04.29)
- WiiAccバージョンアップ(2008.05.03)
- パリス則がわかるソフトウエア(2007.06.18)
- 「応力拡大係数・・」ソフトの注釈(2006.12.16)
- 応力拡大係数と破壊靱性値を理解するソフト(2006.03.24)
「科学技術」カテゴリの記事
- Wiiリモコンで原子間力顕微鏡の原理(2008.05.14)
- 自由落下の加速度値(2008.05.06)
- モバイル機器の落下衝撃対策(2008.05.06)
- WiiAccバージョンアップ(2008.05.03)
- パリス則がわかるソフトウエア(2007.06.18)
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/222291/41074624
この記事へのトラックバック一覧です: WiiAccバージョンアップ:



コメント
バージョンアップ、お疲れさまでした!
ちょっとした機能追加も、きちんと機能させて行くのは楽な仕事ではありませんよね。見事に組み込まれたキャリブレーション機能に大拍手です。
高校物理では、実験としてよく自由落下や放物線運動を用いますから、±1Gの精度を向上したいところですが、機器そのものに10%の誤差があるというのが痛いところ。
この次の懸案は誤差の補正でしょうか?
私の方の機能改善は・・・とほほです。
気長にお待ちいただけると幸いです。
投稿 平田 敦 | 2008年5月 3日 (土) 21時30分
平田さん こんばんは
このキャリブレーション、アイデアとしては当初からのものですが、実際にやってみると色々ありました。たとえばWiiリモコンを回すのですが、これはともかくやさしくゆっくりと、机にコツンとぶつけると±1Gを超えてしまいます。それで、やり直し機能+手動入力機能をつけるべきと判断しました。
当初はくるくる回してボタン一発クリックで終了、と考えていましたが、それよりは操作は複雑になってしまいました。
それでも、くるくると回していると3軸加速度センサの働きは良くわって来ると思うのです。
誤差については、1Gの間を27分割でデータが送られてきていますから、それだけで3.5%あります。ゼロ点のシフトもあるようですからそれを含めると、機器としては10%ということになるのでしょう。
キャリブレーションをしてやってみると、5%以内に収まっているかな、という感じはします。
ブログを拝見すると平田さんのほうはすごい領域に突入していますね。BlueToothのドライバーの中身にまで分け入ろうというわけですね。私にはお手上げの領域ですが、健闘を期待しています。
上手く作り上げてゆけば利用範囲の広いソフトになると思います。
投稿 SUBAL | 2008年5月 3日 (土) 23時10分
おはようございます。息子の発熱で目が覚めました・・・。
さて、現在の機能改善である「複数のWiimoteをハンドリングする」ですが、まだまだ理解が出来ていなくて苦労しています。「複数のWiimoteをハンドルするにはRawInputなAPIを利用すべし」とどこぞで知恵を授かったのですが、Rawとはどのレベルなのか?がわかっていません。今使っているAPIは高次なものなのか、それとも現在使っているAPIが既にRawなもので、プログラムのロジックに問題があるから複数を認識できていないのか・・・と迷い道に入っています。
いろんなソースをもう一度じっくり読んで、それから自分のコードに戻っていくという手順をとっています。
今朝は、そんなひとときとしてじっくりコードに潜っています。
うまくいけば、複数のWiiAccを起動して、それぞれが個別のWiimoteに接続され加速度を検出している、という使い方が可能に。
また、テストをお願いいたしますね。
投稿 平田 敦 | 2008年5月 4日 (日) 03時51分
平田さん おはようございます。
息子さん大丈夫ですか?ソフトより息子さんだと思いますが・・・。こどもの日も近いですし。
といいながら私も、こもりっきりです。なかなか普段はまとまった時間が取れないので、子供たちよ許して頂戴。
キャリブレーションのコードに間違いがありました。状況によっては大きく精度が狂うことがあります。改修しましたので、新しいのをサウンロードして使ってみてください。
このソフトも少し複雑になってきました。やっぱり殴り書きのコーディングはいけませんね。何度目かの反省をしています。
>うまくいけば、複数のWiiAccを起動して、それぞれが個別のWiimoteに接続され加速度を検出している
わお!これはすごいぞ。私のパソコン画面ではWiiaccを4つまで起動できますから、4chの同時計測ができたりして・・・。ちなみに我が家にはWiiリモコン4台あります。一人一台DSとWiiリモコンです。スタンバイOKです。
投稿 SUBAL | 2008年5月 4日 (日) 07時10分