Hatena::Groupsubtech

#生存戦略 、それは

-> 10 { 11 / 24 }

Kinect を Mac OSX から使う / as3 から弄る

22:38 | はてなブックマーク - Kinect を Mac OSX から使う / as3 から弄る - #生存戦略 、それは

エクボ360を持ってる紳士な方々は Kinect を買って Kinect アドベンチャーで一人自分が写るキモイ写真(ナイスショット!)が撮られいったいどうしたら…、と途方に暮れているかと思いますが、いかがお過ごしでしょうか。いやふつうに新感覚デバイスだよね Kinect すごい。

そんな Kinect を USB デバイスとして認識する libfreeconect の開発が盛んで、各種言語から弄れるライブラリ(現在 C/C#/python/as3)も出てきたので、そろそろ弄ってみようかなーと思って Mac OSX ((スノレパ(スノレパって云うとマカーっぽい!!!……ってなんでですか〜))) に入れてみたインストールメモ。

といってもドキュメント通りなんだけど…

  • libfreeconect を落とす
  • libusb の特定バージョンを落として patch を当てる
    • ギッハブ上のドキュメントに書いてあります
  • libusb のインストール
    • ./autogen.sh && ./configure && make && sudo make install でふつうに入りました
  • cmake を入れる
    • 僕は macports 使って、sudo port install cmake で入れました
    • platform/osx.homebrew/
  • libfreeconect のルートディレクトリで cmake . && make && sudo make install
    • cmake . でターゲットディレクトリの指定が必要なの解らず最初ちょっとハマった

で完了。かんたんですね。ここまで書いて platform/osx/homebrew の下に libfreeconect と libusb (パッチもあててくれる)があるので homebrew 使いの人は一瞬で終わる気がします…。

続いて examples に入ってる glview というただのビュアーをコンパイル。examples ディレクトリで cmake . && make すると libfreeconect.h が無くてエラーになるので、適当に include からコピります(本当はどうすればいいの?)

cd examples
cp ../include/* .
cmake .
make
./glview # USB に kinect さした状態で

これで深度マップとキネクトカメラの映像がちゃんと出れば完成です。

AS3 で kinect を利用

続いて僕が言語的に解る as3 で弄ってみます。wrappers/asctionscript に as3 用の socket サーバと as3 のライブラリがあります。

cd wrappers/actionscript/server
cp ../../include/* .
cd ../
cmake .
make

(たぶんこんなかんじ)に make すると as3-server のバイナリができあがるのでこいつを起動します。あとは test_depth.as / test_rgb.as というサンプルがあるので適当に flex4 でコンパイルします。(flex4.1 の mxmlc で難なくコンパイルできた)

コードを見てみると as3-server が深度マップとカメラのRGBデータをそれぞれ6001,6002、6003をデータのやりとりのポート(KinectのLEDや首振りとかかな)として socket サーバを立てて、それを as3 のライブラリが open してます。Kinect からの音声はそのうち対応されそう。

で、現状物体の認識情報(どれが顔だ手だ、など)は送られてこないので、深度マップとRGBデータだけでなんらかの実装を行う必要があります*1。この辺は OpenCV 等での判定等、現在は個人個人で行ってるみたい。

というわけで libfreeconect 自体は簡単に入れて使うことができるので、頭おかしい人が面白いことすると良いと思います!

↓as3でのtest_depth のサンプル。近い物体が濃い寒色(青)で、遠くの物体が暖色で写ってる

f:id:secondlife:20101124223526p:image

*1:MS が別に Kinect のUSBデバイス自体がハックされてもよい理由の一つは XBOX のライブラリ側でのすぐれた個体認識があるのも理由のうちなのかなー

saicologicsaicologic2010/12/15 23:34glviewのインストール時にカレントディレクトリーにlibfreeconect.h をコピーしても、
error: libfreenect.h: No such file or directory
とでてしまいました。
なので、cmake実行後にできる
CMakeLists.txt
の中の
if(APPLE)の中に以下を追加したら、通りました。
include_directories(.)

インストール手順参考になりました:)

トラックバック - http://subtech.g.hatena.ne.jp/secondlife/20101124