本を読む

読書やコンピュータなどに関するメモ

LinuxでWiiリモコン

 先週、WiiリモコンでLinuxを操作できるかなと試して、週末に仲間にデモした。すでに内容が古くなっている気もするけど、古くなりすぎる前にメモとしてまとめておく。


 WiiリモコンでWindowsを操作するためのプログラム「WiiRemote」が窓の杜などで紹介され、インターネット上で話題になった。

窓の杜 - 【NEWS】“Wiiリモコン”をパソコンの無線マウスとして使えるようにする「WiinRemote」

 Linuxでもできないだろうかと思っていたところ、WiiリモコンでLinuxのX.orgを操作するためのプログラムが公開された。以下、試した結果をレポートする。

 なお、以下の内容は2006年12月9日時点のもので、wiimotulator.pyのバージョンが0.0.3.9のときの記録だ。wiimotulator.pyは毎日バージョンアップされているようなので注意。

Wiiリモコン

 ユーザーからは、以下の3つの系統で入力を受け取る。

ボタン
方向ボタンや「A」「B」ボタンなどのボタン。
加速度センサー
CMでやっているアレ。
ポインタ
ディスプレイのところにセンサーバーを付けて、リモコンが画面上を指している位置を検出。実はセンサーバーには2か所に赤外線LEDがあるだけなので、ピンポイントの赤外線源が2つあればよい。

 本体とはBluetoothで通信する。ボタンなどの指示を本体に送るほか、本体からバイブレーターのオンオフなどのコマンドを受け付ける。

wiimotulator.py

 ブログのエントリーに案内があり、wiimotulator.py.txtがダウンロードできる。これをwiimotulator.pyにリネームして使う。ちなみに、12月7日に、私もこのブログにコメントしてる。

Robots w/Lasers Control X.Org cursor with Wiimote

 と思ってたら、その後、公式サイトもできた模様。

WMD FTW

 「ドライバ」とうたっているが、実際はbluetoothからの情報を受け取ってLinuxやXのイベントを発生させるユーザープログラム(Pythonで書かれている)。bluetoothを扱うにはPyBluez(bluetooth.py)を、LinuxやXのイベントを発生させるにはuinput(/dev/input/uinput)とpython-xlibを使う。

 ボタンとポインタに対応している。加速度センサーは、読み取るところまではできているが、LinuxやXのイベントへの割り当てはされていない。

 ちなみに、個人的に、加速度センサーのデータを調整してX.orgのマウスポインタを動かす改造までは試して、デモした。ただ、すでに古いのでここでは割愛する。

試した環境

  • PC:ThinkPad X60s
  • OS:Ubuntu Linux 6.06
  • USB接続のBluetoothアダプタ:PLANEX BT-01UDE

インストールしたパッケージ

 Ubuntuの以下のパッケージをあらかじめインストールした。

  • libbluetooth1-dev
  • python-dev
  • python-xlib
  • python-xlib-doc
  • gnome-bluetooth

 そのほか、bluez-utilsやlibbluetooth1などが入っていなければそれらも必要。

PyBluezをインストール

Wiiリモコンのbluetoothアドレスを調べる

  • $ hciutil scan
  • リモコンの電池蓋の中にある同期ボタンを押す
  • ここでNintendoの名前が入ったデバイスが表示されるので、そのアドレスを記録

wiimotulator.pyの設定

  • スクリプトをエディタで開く
  • MY_WIIMOTE_ADDR=""の行(56行目)で右辺にWiiリモコンのアドレスを指定
  • UINPUT_DEV = "/dev/misc/uinput"の行(59行目)をコメントアウト
  • #UINPUT_DEV = "/dev/input/uinput"の行(60行目)をコメントから出す

実行

  • $ sudo python wiimotulator.py
  • 「Now trying to discover a willing Wiimote」とメッセージが表示されたら、リモコンの電池蓋の中にある同期ボタンを押す
  • ボタンを押したり、リモコンを振ったりすると、ターミナルにログが表示される
  • geditなどを開いてボタンを押すと、wiimotulator.py中で設定されているキーが押されたのと同じ動作になる
  • 「1」ボタンが左クリック。「2」ボタンは右クリックのはずだが中クリック扱いになる
  • 「home」ボタンで終了

ポインタを試す

  • 蝋燭を2本用意し、火をつけて、ThinkPadの両脇に立てる(赤外線LEDの代わり)
  • Wiiリモコンを画面に向けてsudo python wiimotulator.pyを実行、同期
  • Wiiリモコンの向きを変えるとX.orgのマウスポインタが動く
  • マウスポインタが思うように動かないのは、蝋燭のせいか?

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/179-cc0fbe95

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad