2010年12月25日土曜日

[Kinectハック] SD_KinectIO とりあえず公開



[Kinectハック]OpenNI+Flashでマルチユーザー・マルチタッチ」で使っていた
OpenNI解析アプリがexe化できたので、「SD_KinectIO」として公開します
手の情報だけじゃなく、すべてのスケルトン情報を送るように改良しました。
ソケットサーバーの知識さえあれば、これを使って誰でもKinectで遊べますよ。

SD_KinectIO:SD_KinectIO_v0_1.zip
ソケット通信でクライアントにスケルトン情報を送ります。
対応:Window XP 32bitのみ動作確認
[2011/1/6追記]
OpenNIのライセンスがLGPLなので、exeではなくソースを公開します。
OpenNIをインストールして、OpenNI/Samples/に下記のファイルを展開してください。

■ソケット通信仕様
クライアントからは下記に接続します。
IP: 127.0.0.1
TCP Port: 3000


■通信内容
内容はカンマ区切りで送っています。
デリミタはFlashの通信仕様に合わせてNull文字にしています。

"ユーザーID","部位ID","状態","x座標","y座標","z座標" (Null)

(例)
1,1,add,100.223,600.032,1534,302
1,1,update,140.344,632.323,1523,324
1,1,remove,0,0,0

ユーザーID:1~10
部位ID:1~24
状態:add,update,remove

部位の対応リストはこんな感じ。
HEAD   = 1
NECK   = 2
TORSO   = 3
WAIST   = 4
LEFT_COLLAR  = 5
LEFT_SHOULDER  = 6
LEFT_ELBOW  = 7
LEFT_WRIST  = 8
LEFT_HAND  = 9
LEFT_FINGERTIP  =10
RIGHT_COLLAR  =11
RIGHT_SHOULDER  =12
RIGHT_ELBOW  =13
RIGHT_WRIST  =14
RIGHT_HAND  =15
RIGHT_FINGERTIP  =16
LEFT_HIP  =17
LEFT_KNEE  =18
LEFT_ANKLE  =19
LEFT_FOOT  =20
RIGHT_HIP  =21
RIGHT_KNEE  =22
RIGHT_ANKLE  =23
RIGHT_FOOT  =24
 

ただ、OpenNIから値が来ていない部位もあり、
有効な部位だけをまとめるとこんな感じ。


■使い方
[注意] KinectドライバとOpenNIが必要です。
KinectドライバとOpenNIをインストールして下さい。

ダウンロードしたファイルから「SD_KinectIO_.exe」を起動します。

起動すると「クライアント接続」待機状態になります。

ファイアーウォールを有効にしている場合は、セキュリティ警告がでるので、
「ブロックを解除する」を選択します。

クライアント側からSocket通信で上記のIP/ポートに接続します。
接続テストだけならSocketDebuggerがオススメです。

クライアント接続後、しばらくするとカメラウィンドウが開きます。
Kinectの前に立って、手を90度に曲げながら上に上げるとキャリブレーションが始まります。

キャリブレーションが終わるとクライアントへスケルトン情報が送られます。


Flash側の解説はまた今度。

-> [Kinectハック] SD_KinectIOをFlashで受ける

2 件のコメント:

  1. こんばんは。
    SD_KinectIO_.exeを起動して
    「クライアント接続」待機状態になった後、
    カメラウィンドウが開きません。。。
    kinectのドライバ/OpenNIはインストール済みです。
    (kinectのLED操作など行えているので、問題ない状態だと思います)
    何か原因など分かりますでしょうか?

    返信削除
  2. ご指摘ありがとうございます。説明が一部抜けてました。
    「クライアント接続」待機状態でクライアントからSoket通信で接続してください。
    このあたりの説明を記事に追記しています。

    返信削除