Kuchitama Tech Note

はてな記法がいつまでたっても覚えられないので、はてなダイアリーからマークダウンが使えるこっちに引っ越してきました。

WiiGeeの基本的な使い方

Wiiリモコンを用いて,ジェスチャ認識を行うライブラリ WiiGee をとりあえず動かしてみるサンプルです

サイトのBasicTrainingだけでは,使い方が分かりづらかったので,メモがてらソース貼っつけます.

import org.wiigee.control.WiimoteWiigee;
import org.wiigee.device.Wiimote;
import org.wiigee.event.GestureListener;
import org.wiigee.event.GestureEvent;
import java.io.IOException;

/**
 * ジェスチャを登録するクラス
 * @author Kuchitama
 */
public class WiiGeeSample implements GestureListener{
	public static WiimoteWiigee wiigee;
	public static Wiimote wiimote;
	
	public static void main(String args[]){
		wiigee = new WiimoteWiigee();
		
		try{
			wiimote = wiigee.getDevice();
		}catch(IOException e){
			e.printStackTrace();
			wiimote.disconnect();
			System.exit(1);
		}
		
		// 終了時に自動的にBluetoothを切断するように,シャットダウンフックを設定しておく
		final Wiimote wiimoteF = wiimote;
		Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
    		public void run(){
    			wiimoteF.disconnect();
    		}
    	}));
		
		WiiGeeSample ins = new WiiGeeSample();
		
		// ジェスチャモデルの学習を行うボタンを設定する
		wiigee.setTrainButton(Wiimote.BUTTON_A);
		// ジェスチャモデルの生成を行うためのボタンを設定する
		wiigee.setCloseGestureButton(Wiimote.BUTTON_HOME);
		
		wiigee.addGestureListener(ins);
	}
	
	/**
	 * ジェスチャが認識されたときの処理
	 */
	public void gestureReceived(GestureEvent e){
		if(e.isValid()){
			System.out.println("Recognized Gesture ID is "+ e.getId());
		}else{
			System.out.println("Failed to Recognize!");
		}
	}
}

ジェスチャの登録

このプログラムを実行して,Wiiリモコンの?と?のボタンを同時押しします.
ペアリングが上手くいったら,認識させたいジェスチャをAボタンを押しながら行って下さい.
大体10〜15回ほど,「Aを押しながらジェスチャ→Aを離す」を繰り返します.

その後,Homeボタンを押すと先ほど行ったジェスチャのHMMが生成されます.

この流れを繰り返すことで複数のジェスチャを登録することが出来ます.
登録されたジェスチャは,登録順に0からIDが設定されます.

ジェスチャの認識

ジェスチャの登録が出来たら,認識を試してみてください.

Bボタンを押しながら登録したジェスチャを行います.
きちんと認識されれば,

>| Recognized Gesture ID is 0

の様に,そのジェスチャのIDが表示されます


とりあえず,ここまで
生成したモデルを保存する方法とか,読み込む方法は後日