Please click the flag when you prefer English information
Up:Tutorial? Previous:眼球運動 Next: HMD+KINECT
※このチュートリアルはv2.1.0以降で動作します。
キネクトを使ってSIGVerseの人間エージェントの体の動きを操作する方法を紹介します。
※すでにOpenNIがクライアントpcにインストールされていて、サンプルコードNiUserTrackerが動作可能であることを前提条件とします。
キネクトにより骨格を抽出するサンプルプログラムを利用し、関節の回転データ(クオータニオン)を計算し、SIGVerseサーバにデータを送信します。
KINECTサービスからSIGNiUserTracker_<version>.zipをダウンロードします。
ダウンロードしたzipファイルを展開しSIGNiUserTracker.sigをOpenNIサンプルの実行ファイルがあるフォルダに置きます。デフォルトでは以下のフォルダです。
C:\Program Files (x86)\OpenNI\Samples\Bin\Release (※Windows7 64bitの場合)
この状態でクライアントpcにキネクトを接続しておけば準備完了です。
コントローラで関節データを受信し、関節を回転させます。
まずコントローラを作成します。
$ emacs kinectController.cpp
kinectController.cpp
このコントローラではキネクトからデータを受け取り関節を回転させます。
コンパイルします。
$ ./sigmake.sh kinectController.cpp
※準備中
次に世界ファイルを作成します。
$ emacs kinectWorld.xml
kinectWorld.xml
人間のみが登場するシンプルな世界ファイルです。このサンプルではキネクトで操作できるエージェントは人間エージェントのみです。
それでは実行してみましょう。
まずシグバースサーバを起動します。
$ sigserver.sh -w ./kinectWorld.xml
次にSIGViewerで起動したサーバに接続します。接続すると人間が立っているのが見えます。
SIGViewerにサービスを登録します。左上のメニューのServiceのAddを選択します。
すると以下のようなウィンドウが立ち上がるのでAddボタンを押して先ほどダウンロードしたSIGNiUserTracker.sigを読み込みます。
Service listにSIGNiUserTracker.sigが登録されたらOKボタンを押してウィンドウを閉じます。
次にメニューのService→Startをクリックし、先ほど登録したSIGNiUserTracker.sigをクリックします。
キネクトの深度画像ウィンドウが立ち上がり、サーバ側で
[SYS] Service: "SIGKINECT" is available
と表示されればキネクトサービスの立ち上げに成功です。 それでは"START"ボタンを押してシミュレーションを開始してみましょう。
キネクトの前で体を動かすと骨格が検出され、人間エージェントを操作することができるようになります。
次にクライアント側ので動くKINECTサービスのソースコードをコンパイルする方法を説明します。コンパイルする環境はVC++2008を前提としています。
KINECTサービスからソースコードを取得します。
展開したフォルダの中に入っているSIGNiUserTrackerフォルダをOpenNIのサンプルコードがおかれた以下のフォルダに移動します。
C:\Program Files (x86)\OpenNI\Samples
次にSIGNiUserTrackerフォルダの中のソリューションファイルをダブルクリックして起動します。(※このとき必ず管理者権限で実行します)
※バージョン1.0.0の場合はコンパイルにはboostライブラリのインストールが必要です。 boostのインストール方法とVC++の設定方法は省略します。
VC++が起動したらソリューションエクスプローラの中のソリューション名を右クリックしてビルドを選択します。ビルドが成功すると以下に実行ファイルSIGNiUserTracker.exeが作成されます。
C:\Program Files (x86)\OpenNI\Samples\Bin\Release
拡張子を.exeから.sigに変えることによりSIGViewerに登録可能となります。
Up:Tutorial? Previous:眼球運動 Next: HMD+KINECT