FC2ブログ

OpenNIのインストールでつまずいたトコ2つ 

KinectのSDKには
マイクロソフト純正のものと
KinectのOEM先が公開しているOpenNIってのがあります。

OpenNIのほうがwindows7以外にもインストールできるとかのメリットがあるけど、
なにぶんインストールが難しいです。


今回は自宅のWindows Vistaにインストールしましたが、やっぱりつまづきましたのでメモを残しておきます。


ここのサイトの情報が新しいっぽいので、まず参考にしました。
Kinect Wiki

手順に沿ってファイルをダウンロードしてインストールしていきます。
全部インストールしてサンプルプログラムを実行すると。


OpenNI.dllがみつかりません(つまづきポイント①)


やはり順調にはいかないようです。

結果的に
→サンプルプログラムと同じディレクトリにOpenNI.dllをコピーして解消しました。

C:\Program Files\OpenNI\Bin\OpenNI.dll
  ↓(こっちにコピー)
C:\Program Files\OpenNI\Samples\Bin\Release






The environment variable could not be found(つまづきポイント②)


ぬぬ。まだ上手くいきません。
翻訳すると環境変数ですね。

結果的に
こちらのページを参考に環境変数を3つ設定して解消しました





変数名変数値
XN_HOST_PROTOCOL_ALGORITHM_REGISTRATION0x40
XN_SENSOR_PRODUCT_ID0x02AE
XN_SENSOR_VENDOR_ID0x045E

スポンサーサイト



[Kinect Hack 2]シェーを認識する 

待ちに待った休日、Kinectいじりをしましょー。

今日は簡単なサンプルプログラムを作ってみようと思います。

まずは、Visual Studio 2010 Experessをインストール。言語はUIとか簡単に作りたいのでC#でいきます。

そしてネットでわかりやすそうなサンプルプログラムを検索、、、

■STEP1
Kinectを使ってC#で「バイバイ」を検出する
これが親切に手順を書いていたので試してみます。

うむ、なにやら手を振ると検出してるぽい。
しかしイマイチ、コンソール画面だと動いてる感じがしません。。。

■STEP2
続いて、画面に画像を出したいと思い、こちらのサンプルコードを試す。
Hacking Kinect with C# using OpenNI: Basic Depth Viewer

WPFを使ってKinectから取得して深度情報画像を表示します。
若干unsafeコンパイルなどでつまづいたものの、丁寧な解説のおかげでサンプル実行DONE。


■STEP3
その後は、開発環境のOpenNIに付属しているサンプルを参考にして、骨格検出にトライ。
付属のプロジェクトをそのままコンパイルしようとすると、エラーが出てうまくいかなかったので、
自分で新規にプロジェクトを作成して、コードをコピペコピペでなんとか動くように。

だんだんわかってきました。
Kinectの骨格認識は、各関節の3D座標を求めてくれます。

そこでその情報から各関節の角度を求めて、以下のサンプルアプリを作ってみました。
シェーのポーズをとると、「シェー!!」と叫んでくれます。

she.png

独自のシェー方程式(?)によって、姿勢がシェーか否かを判定します。



さて、なんかいろいろ出来そうな気がしてきたゾ。

[Kinect Hack 1]KinectをPCに繋いでみる 

会社の勉強会でハッカソン的なのがあり、僕はKinectを使ったアプリケーションを作ろうというチームに。
実務との関連は謎ですが、なんか面白そう、ということで。

KinectというとXboxで身体を使ったゲームするためのセンサーですが、インターフェースがUSBなもんだから、
世界のハッカーたちがその仕組みを解明してしまい、今ではそれがフリーのライブラリとして公開されてます。

さっそく、アマゾンで購入して試す。
ウィンドウズだと割りと簡単に環境構築できます。マックはちょい面倒らしい。

さっそく、マイPCに繋いで認識してみたの図↓


骨格がいとも簡単に認識されちゃってます!
普通のCMOSカメラに加えて赤外線センサーとか組み合わせて3次元情報を認識してるようです。

これはまさに、ちょっと前に描いロボット技術のひとつですね。ゲーム機の世界から家庭やってきたのですねー、、、

さて、なに作るかにー。