« WiiAcc完成間近 | トップページ | 自由落下の無重力を見る »

2007年2月18日 (日)

「WiiAcc」Ver.1.0を公開

お待たせしました(かな?)、「WiiAcc」を公開します。

Cimg0902 ニンテンドーWiiのリモコンから、3軸の加速度データを取得するソフトウエアです。

久しぶりにプログラミングが楽しかったです。このところ年に1本ぐらいのペースになってしまっています。今回は平田敦さんのおかげで、ここまできました。ギジュツ・ドット・コムのメーリングリストで「どなたかお助けを・・・」と呼びかけたところ、真打の平田さんが手を上げてくださいました。

Wiiaccv10 プログラミングで楽しんでいられない事情ができましたので、凝るのをやめてここで手を打ちました。

使った感想や、こんなデータが取れた、というような情報を教えていただけるとうれしいです。ダウンロードとREADMEは続きで・・。

その前に、お疲れさんというところでポチット一発。

にほんブログ村 科学ブログへ 1位を維持しています。いつも応援ありがとうございます。

WiiAccのダウンロードはこちらへ

//////////////////////////////////////////////////

Readme

このソフトウエア「WiiAcc」は、ニンテンドーWiiのリモコンに搭載されている3軸加速度センサーの値を取得してパソコン上に表示をさせるものです。

A.このソフトウエアを動作させるには、以下のものが必要です。

1.ニンテンドーWiiのリモコン(Wii本体は必要ありません)
2.Bluetooth-USBアダプタ
3.XP(SP2)以降のOSが搭載されているWindowsパソコン

B.使い方

1.Bluetooth-USBアダプタをパソコンに接続します。
2.Wiiリモコンの電池ケースにある赤いボタンを押します。
3.BluetoothとWiiリモコンを接続します。
(この接続の仕方はBluetoothの説明書をご覧ください)
4.「WiiAcc」を起動します。
5.モニター画面に波形が現れるのを待ちます。
少しの間反応がないことがあります。
Wiiリモコンを振りながら少々お待ちください。パソコンの状態によりますが、数秒から数分で加速度データが表示されます。
6.「時間軸の校正」ボタンをクリックします。
ボタンの色が濃くなるまでの間(20~40秒)待ちます。
サンプリングレートの窓に数値が表示されると「時間軸の校正」終了です。
7.記録開始ボタンをクリックすると、20秒間のデータを記録します。
8.データの記録には、20秒以上かかります。(マージンをとっています)データの記録中はパソコン操作をしないことをお勧めします。
9.精密測定モードで記録すると、モニターには何も表示されません。
10.メニューの「ファイル」から「データの保存」で、記録されたデータを保存できます。
11.保存のファイル形式は、「WIA」(「WiiAcc」専用の拡張子、実質はテキストファイル)と「CSV」と「txt」の3つから選択できます。
12.保存したファイルは「データの読み込み」で、ソフト上で表示することができます。

C.注

1.このソフトで表示されている加速度は、Wiiリモコンからの値を表示しているだけです。-1G、0G、+1G、は確かめていますが、値の直線性についての検証はしていません。あくまで目安とお考えください。
2.このソフトを使うことによるいかなるトラブルにも当方は責任をもてません。お使いの際は自己責任の範囲でお使いください。

D.著作権等

1.フリーソフトにしますが、掲載等の場合は事前に連絡をください。
E-mail  SNA50130@nifty.com
2.このソフトは、以下のソースをベースにしています。

HID sample for wiimote
2007/1/9 tokkyo (http://onakasuita.org/wii/)

上記ソースを平田敦氏が使いやすく整理してクラス化してくれました。

このコードを基にして「WiiAcc」を作りました。

以上

/////////////////////////////////////////////////

|

« WiiAcc完成間近 | トップページ | 自由落下の無重力を見る »

コメント

15時20分にVer.1.0.11にUPしています。

投稿: SUBAL | 2007年2月18日 (日) 15時22分

お疲れ様でした!いやー良かったですね。ソフトウエアという「モノづくり」に参加できて、私も良かったです。

さて、WiiAccで使用しているWiimoteコントロール用のクラスCWiimoteの継続メンテナンスですが、もしSUBALさんの手が入っているようでしたら手の入ったコードを頂けると幸いです。もし、手が入っていないようでしたら、私の手元のコードをリファクタリング&機能付加したいと思います。

ご検討をば。

WiiAccが特に工業系学生のための役に立ちますように。

投稿: 平田敦 | 2007年2月18日 (日) 16時52分

SUBALさま

早速DLして試してみましたが、現時点で私の環境では動いていません。
一応書かれてあるとおりにやったつもりですが、
・5分ほど待っても緑色のラインがグラフ上の一番上に横一直線に線を描くのを繰り返している。
・他の色は見えない。
・グラフの表示は4.85Gとすべて表示されている。
・Wiiリモコンの下の4つのLEDは点滅を繰り返している。

入力値が上限を超えてしまっているようにソフト側が受け取っているのでしょうか?

WiinRemoteではリモコンの動きに追従してグラフが描かれているのでPCとリモコンの接続自体はできていると思うのですが・・・。

こちらの情報は下記のとおりですが、不足している情報がありましたら、教えてください。
OS:WinXP HomeEdition SP2
BT-アダプター:Princeton PTM-UBT2
WiiAcc Ver:1.0.12

投稿: gwing77 | 2007年2月18日 (日) 17時30分

たぶん、現状で答えられることは少ないと思います。

SUBALさん、LOGMODEをTrueにしてログを吐かせるWiiAccを作ってみてはどうでしょうか。

UIにWiimote認識、非認識を示すインジケータがあると良いかもしれませんね。

お忙しければ、私が処理しますが、いかがですか?

投稿: 平田敦 | 2007年2月18日 (日) 19時24分

もしかして、GWING77さんは、WiinRemoteと同時にWiiAccを立ち上げてます?

投稿: 平田敦 | 2007年2月18日 (日) 19時26分

gwing77 さん
書かれている状況は、時に起きるのです。よくわかっていないところです。WiiのリモコンとBluetoothを介したソフトとの通信がうまくつながらないということだと思います。
これまでの経験から言うと、
①接続した状態でリモコンを振る。
②BluetoothとWiiリモコンとの通信をいったん切断してもう一度接続する。
③場所を変える。(ノートパソコンの場合)

まだ確信はないのですが、周りの電波状況が影響しているような気がします。同じパソコンでも場所によってサンプリングレートがずいぶん違います。
WiinRemoteで動く環境でしたら、多分上のいずれかの方法で動くはずです。いったんつながれば快調に走ります。
RAMが目いっぱいになっていると、だめなケースもあります。同時に開いているアプリケーションを閉じてみるのもひとつの手でしょう。
それでもだめなら、平田さん、どうか救いの手を。


投稿: SUBAL | 2007年2月18日 (日) 19時46分

了解でーす。
首を長くして待ってます。

投稿: 平田敦 | 2007年2月18日 (日) 19時51分

平田さま

コメントありがとうございます。
WiinRemoteとWiiAccは同時に立ち上げていません。
WiiAccがうまくいかなかったので、通信自体がうまくいっていない可能性を確認するためにWiiRemoteで確認したという状況です。

SUBALさま
私の環境はデスクトップなので場所を変えることはできないのですが、それ以外は確かめてみます。
電波状態ということでは、無線LANも使っている環境なのでその影響もあるのかもしれません。
もうちょっといろいろ確かめてみます。

投稿: gwing77 | 2007年2月18日 (日) 20時00分

GWING77さま

そうですか、では今のところ出来ることがなさそうですね。

実は、私が参考にしたサイトに記述があるのですが、WindowsのBluetoothドライバにはバグがあるらしく、そのそれをうまく回避しているのがWiinRemoteらしいのです。

WiinRimoteでこの問題をどう回避しているのかがわかり、更にそれがVBで可能ならば、改善できるだろう、というのが今のところ私の言える全てです。

いい答えができず、申し訳ありません。
これは、CWiimoteの今後の重要な課題として、継続して見ていきたいと思います。

投稿: 平田敦 | 2007年2月19日 (月) 09時02分

平田さま

コメントありがとうございます。
その後、家でいくつかやってみたものの変わらず、会社でもやってみたのですが、変わりませんでした。
いずれの環境も無線LANのあるところなので、それが影響しているのかもしれません。

特にサポートを求めているわけではないので、こんな事例がありました程度でお聞き流しください。
(私のうまく行かない報告ばかりで申し訳ないので、どなたか成功した事例を報告してくださいね。)

データの取り込みだけに限定すればWiinRemoteCSVというのをWiinRemoteの掲示板で教えてもらいまして、数値の取り込み自体はできるようになりました。
スタートダッシュの動き出しを取り込んでみましたが、腰につける分にはレンジは十分入りそうでした。
(一人で昼休みにやったのですが、Wiiリモコンの固定の方法がネックでした・・・)
選手の優劣を区別できるようなデータが取れるのかどうか、遊び程度にやってみようと思います。

投稿: gwing77 | 2007年2月19日 (月) 13時01分

gwing77 さん
まだ訪問してくれていますか?
多分、不具合解決できました。2月21日付けの記事からダウンロードして試してみてください。
平田さんが解決してくれました。良かった!良かった!

投稿: SUBAL | 2007年2月21日 (水) 22時56分

実はgwing77さんと同じく、私もグラフがまったく表示されなかったのですが、試しにトラックボールをPCから抜いてみたら動作しました。どうも複数のHIDデバイスがあると順序によって初期化に失敗してしまう場合があるようですね。

動かなかったので、私も似たようなソフトを作ってしまいました。
http://d.hatena.ne.jp/yoda-dip-jp/20070318

投稿: yoda-dip-jp | 2007年3月25日 (日) 21時32分

yoda-dip-jp さん ようこそ
なるほど、他のHIDデバイスとのタイミングですか。ヒントをもらいましたので、改良をしてみようかと思います。

yoda-dip-jp さんのソフト、私の環境では問題なく動作しました。
WiinRemoteの加速度以外のデータがどれなのかもわかりました。

投稿: SUBAL | 2007年3月26日 (月) 00時25分

動作確認ありがとうございます。私もいろいろ直さなくては。

初期化するときにすべてのHIDデバイスに対してAPIのCreateFile()とHidD_GetAttributes()を実行していると思われますが、私のトラックボールはHidD_GetAttributes()がfalseを返してきます。かまわず続行してくれれば問題ないのですが、初期化処理自体が終了してしまうとダメです。

不思議なのは、WiinRemoteの方は問題なく動いたということです。このあたりの処理はライブラリの中でやっているので直せないかもしれません。それに、現象が出ないと直しようが無いですよね。うーん。

投稿: yoda-dip-jp | 2007年3月26日 (月) 11時19分

yoda-dip-jp さん こんばんは

>それに、現象が出ないと直しようが無いですよね。

そうなんです。ふときがついたら、私のパソコンでは、その現象は起きていないのです。当初、ワイヤレスマウスやキーボードが邪魔していたのは、解決をしてバージョンを新しくしてあるのですが、それがつながらないことがあるということですよね。
対処方法は考えられるのですが、それが有効か否かを確かめられない。
この手のソフトは、環境がたくさんありすぎて、商売でソフト開発をしている方は大変だろうと想像します。

投稿: SUBAL | 2007年3月27日 (火) 01時16分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/23508/5386615

この記事へのトラックバック一覧です: 「WiiAcc」Ver.1.0を公開:

« WiiAcc完成間近 | トップページ | 自由落下の無重力を見る »