先日の体重計に引き続き、今度はGlovePIEを使ってバランスボードから一般的なデスクトップの操作ができるようにしてみました。
今回試してみたのは重心移動による上下スクロールとバランスボード前面ボタンによるCtrl+Wです。
これにより、例えばブラウザのタブで読みたいページを開いておけば、足だけで順に閉じながら読んでいくことができるようになります。
GlovePIEでWii Balance Boardの操作
GlovePIEはWiiRemoteの他、データグローブやジョイスティックなどの挙動をコントロールすることができるスクリプティング環境。ver0.30でBalance Boardに対応しました。
以下のような機能が使用できます。(ひとつのWiiリモコンとバランスボードを接続した際、WiiリモコンがWiimote1、バランスボードがWiimote2.BalanceBoardとして認識されます)
rawデータの取得(FrontLeftとBackRightの値が実際と逆):
Wiimote2.BalanceBoard.RawFrontLeft
Wiimote2.BalanceBoard.RawFrontRight
Wiimote2.BalanceBoard.RawBackLeft
Wiimote2.BalanceBoard.RawBackRight
LEDの点灯:
Wiimote2.BalanceBoard.LED = true
ボタンの取得:
Wiimote2.BalanceBoard.A
実はこの他にもKgの取得やJoyPad値の取得なども用意されているのですが、バグにより正しく使用できないようです。
なお、GlovePIEにおけるWiiRemoteの利用方法については「WiiRemoteプログラミング」で詳しく紹介されています。
とりあえずの実装例
スクリプトでは、最初に各センサーの初期値を揃えておく必要があります。やり方はBodySurfのコードを参考にさせてもらいました。
以下をGlovePIE.exeから実行し、ボードに乗らない状態でWiiコントローラのAボタンを押せば、バランスボードによる操作が可能になります。
if not var.init
Keyboard.RepeatFakeKeys = false
var.minForce = 500
var.calibrated = false
var.init = true
endif
//オフセット値を除いたセンサの値
var.FL = Wiimote2.BalanceBoard.RawBackRight - var.BRCompensate
var.FR = Wiimote2.BalanceBoard.RawFrontRight - var.FRCompensate
var.BL = Wiimote2.BalanceBoard.RawBackLeft - var.BLCompensate
var.BR = Wiimote2.BalanceBoard.RawFrontLeft - var.FLCompensate
//debugprint("FL=" + var.FL + ", FR=" + var.FR + ", BL=" + var.BL + ", BR=" + var.BR)
//Aボタンでセンサのオフセット値を取得
if key.c = true or Wiimote1.A = true
var.FLCompensate = Wiimote2.BalanceBoard.RawFrontLeft
var.FRCompensate = Wiimote2.BalanceBoard.RawFrontRight
var.BLCompensate = Wiimote2.BalanceBoard.RawBackLeft
var.BRCompensate = Wiimote2.BalanceBoard.RawBackRight
var.calibrated = true
endif
//上下左右に換算
var.F = var.FL + var.FR
var.B = var.BL + var.BR
var.L = var.FL + var.BL
var.R = var.FR + var.BR
//debugprint("F=" + var.F +", B=" + var.B + "L=" + var.L + ", R=" + var.R)
if var.calibrated
if (var.F - var.B) > var.minForce
Mouse.WheelUp = true
wait 30 ms
Mouse.WheelUp = false
endif
if (var.B - var.F) > var.minForce
Mouse.WheelDown = true
wait 30 ms
Mouse.WheelDown = false
endif
Key.Ctrl+W = Wiimote2.A
endif
ブラウザのスクロール特性を変更できるプラグインがあると読みやすくなります。
できれば今後、タブの切り替えや力のかけ具合による処理の分岐なども試してみたいところです。
参考情報
以下、バランスボードの解析に関連する記事とかツールとか。
ホイール欲しい ハンドル欲しい ≫ バランスWiiボードのメモ
ホイール欲しい ハンドル欲しい ≫ バランスWiiボードの解析メモ 2
ホイール欲しい ハンドル欲しい ≫ バランスWiiボードの解析メモ 3
ホイール欲しい ハンドル欲しい ≫ バランスWiiボードの解析メモ 4
WindowsPC (Win32/Win64) フルパワー全開
小ネタ - Kako Homepage
BalanceWiiBoard to PC
参考書籍
今回もお世話になりました。
ボードのみの販売はないので、ソフトと一緒に買いましょう。
Comments»
no comments yet