キネクトによるエージェントの操作 †キネクトを使ってSIGVerseの人間エージェントの体の動きを操作する方法を紹介します。 ※すでにOpenNIがクライアントpcにインストールされていて、サンプルコードNiUserTrackerが動作可能であることを前提条件とします。 OpenNI動作確認バージョン †
クライアント側の準備 †キネクトにより骨格を抽出するサンプルプログラムを利用し、関節の回転データ(クオータニオン)を計算し、SIGVerseサーバにデータを送信します。 ダウンロード †まず、以下の実行ファイルをダウロードします。 (※2012/2/8更新 人間モデルMan-nii-v2.xmlに対応) ソースコードはこちら インストール †ダウンロードした実行ファイルをOpenNIサンプルの実行ファイルがあるフォルダに移動します。デフォルトでは以下のフォルダです。 C:\Program Files (x86)\OpenNI\Samples\Bin\Release (※Windows7 64bitの場合) この状態でクライアントpcにキネクトを接続しておけば準備完了です。 サーバ側の準備 †サーバ側で関節データを受信し、コントローラで関節を回転させます。 コントローラ †まずコントローラを作成します。 $ cd ~/sigverse-<version>/bin/NewWorld $ emacs kinectController.cpp kinectController.cpp このコントローラは人間エージェントを操作するためのものです。 次にMakefileを修正してコンパイルします。 (※動作手順省略) 他のモデルのコントローラサンプル †他のモデルを使う場合はこちらを参照してください。
世界ファイルの作成 †次に世界ファイルを作成します。 $ cd .. $ emacs xml/kinectWorld.xml kinectWorld.xml 人間のみが登場するシンプルな世界ファイルです。このサンプルではキネクトで操作できるエージェントは人間エージェントのみです。 実行 †それでは実行してみましょう。 SIGVerse起動 †まずシグバースサーバを起動します。 $ ./sigserver.sh -p 9001 -w xml/kinectWorld.xml 次にSIGViewerで起動したサーバに接続します。接続すると人間が立っているのが見えます。"Send"ボタンを押しシミュレーションを開始します。 関節データの送信 †次に先ほどダウンロードしてOpneNIサンプルの実行ファイルフォルダの中に入れたSIGNiUserTrackerをダブルクリックして実行します。 すると以下のようなコンソール画面が立ち上がります。 接続するSIGVerseサーバのホスト名、ポート番号、操作するエージェント名の順に入力していきます。 深度画像が表示されたらキネクトの前で以下のようなポーズをとると骨格が検出され、人間エージェントを操作することができるようになります。 一つのキネクトに対して操作できるエージェントは1エージェントのみです。 複数人数の骨格を抽出した場合2人目以降は無視されます。 ソースコードのコンパイル †次にクライアント側のソースコードをコンパイルする方法を説明します。コンパイルする環境はVC++2008を前提としています。 ソースコード取得 †以下からソースコードを取得します。 (※2012/2/8更新 人間モデルMan-nii-v2.xmlに対応) 展開したフォルダの中に入っているSIGNiUserTrackerフォルダをOpenNIのサンプルコードがおかれた以下のフォルダに移動します。 C:\Program Files (x86)\OpenNI\Samples コンパイル †次にSIGNiUserTrackerフォルダの中のソリューションファイルをダブルクリックして起動します。(※このとき必ず管理者権限で実行します) VC++が起動したらソリューションエクスプローラの中のソリューション名を右クリックしてビルドを選択します。ビルドが成功すると以下に実行ファイルSIGNiUserTracker.exeが作成されます。 C:\Program Files (x86)\OpenNI\Samples\Bin\Debug |