Mac+Kinect+Processingで遊んでみる

2017/05/08 2017年度版のセットアップ方法へのリンクを追加

2017年度版のセットアップ情報

 結構検索で来る方がいるようなので、情報が古くてガックリされるのも申し訳ないなと思い2017年現在のセットアップ方法の記事を書きました。過去数年変わってないし、今後数年もそんなに変わらないのじゃ無いかなと思っています。もしよろしければ参考にしてみてください。

 以下の内容はもう古くて使えませんが、一応残しておきます(過去はこんなに複雑だったんだよ的な意味で)。

Kinect買った

 最近、トラ技で特集していたり、M野君との会話だったりで、突然Kinect熱が復活してしまったので、勢いでKinectを買ってしまいました。

Xbox 360 Kinect センサー

Xbox 360 Kinect センサー

 知らない人のために説明すると、Kinectはカメラ、距離センサ、マイクがついた凄い奴。分かりやすく言うと、高級Wiiリモコン(変なセンサーバーとかリモコン無しで自分の動きを認識してもらえる)です。
 元々はXboxってゲーム用のデバイスなのですが、パソコンでも色々遊べることで話題になっています。Windowsだと専用の開発環境があるのですが、Macでも偉大な先人がフリーでオープンな環境を提供してくれています。
 ただ、情報が古かったりするものが多く、導入に色々つまずいたので自分のメモ用として手順を記載します。最も簡単かつ深くKinectをHackできると考えられるProcessing+OpenNI(NITE)の組み合わせです。一応それぞれの作業の意味も自分でわかる範囲で記載しています、理屈がないとすぐ忘れてしまうので。初心者向けですが、一部Unix系OSの基礎知識は前提です、これの説明は辛いので勘弁して下さい。

 環境は、Mac book pro Retina(Core i7 2.3GHz) + OS X 10.8(Mountain Lion) + Kinect Xbox360用。KinectはWindow用というのもありますが、個人で使う分にはXbox360用がよいです。詳しく知りたい人は「Kinect for Windows と Kinect for Xbox 360 の違いについて」をみて下さい。あと、Xbox360同梱版を買うと電源がついてないらしいので、単体で買うのがよいみたいです。

Mac+Kinect+Processingセットアップ

 具体的なセットアップ方法です。

1.ダウンロードしたアプリケーションの実行許可を与える

Macのシステム環境設定→セキュリティとプライバシー→ダウンロードしたアプリケーションの実行許可:に対してすべてのアプリケーションを許可にチェック

おいおい、ここからかよという感じですが、ここからですw
これをやらないと、ダウンロードしてきた野良pkgや野良dmgをインストーラーで実行しようしようとしても「ファイルが壊れている」とエラーが出続けます。でもこれはエラーメッセージがよくないですよね、別にファイルは壊れてないじゃん…

2.Xcodeをインストール

App Storeを起動して、Xcodeで検索してインストール。

Macの開発環境で、この後必要なソフトをビルドするのに必要です。Xcodeインストール後は、起動させて、Xcode→PreferencesのdownloadタグからCommand Line Toolsをインストールして下さい、Installというボタンを押すだけです。
これをすることで、この後MacPortsというアプリで必要なソフトを半自動でダウンロード、ビルドできるようになります(やらないとmakeできねぇよ!というエラーがでる)。

3.MacPortsインストール

macports.orgから、必要なパッケージをとってきて下さい。自分の場合は、Mountain Lionって書いてあるところクリックしてダウンロード、あとはインストールするだけ、ダブルクリック連打です。楽勝だね!

MacPortsというのは、Macのアプリのパッケージ管理をしてくれるソフトで、登録されているアプリのインストール、アンインストールがほぼ自動化できる便利ソフト。非公式のApp Storeをイメージするとわかりやすいかな?

4. libtoolインストール

ターミナルを起動、コマンドラインで以下を実行
$sudo port install libtool

libtoolってのはあんまよくわからないけど、これ入れたらperlとかgdbmとかautoconf, automakeやら開発に必要そうなものがわらわら入ったので、最初に入れとかないといけないのでしょう。
インストールにかなり時間かかる(20分くらい?)ので、お茶でも飲みながらゆっくり待つとよいです。

5.usbドライバをインストール

ターミナルで以下を実行
$sudo port install libusb +universal

usbのドライバをインストールしているみたいです。
他のサイトみると「$ sudo port install libusb-devel +universal」だ!と書いてあるのですが、何故かエラーがでるので、エラーメッセージを元に恐る恐るこれを入れてみた。一応動作するので、問題ないみたいです。

6.OpenNIのインストール

http://openni.org(リンク切れ)」のダウンロードから「OpenNI Unstable Build for MacOSX …」というやつをダウンロード。
 解凍したフォルダを適当な位置に移動して、ターミナルでそのフォルダに移動→「$sudo ./install.sh」。全部OKが出たらインストール完了です。

Kinectから簡単に情報取得できるようなライブラリという位置づけ(多分)。OS X 10.8用は無かったのでとりあえず最新版を入れておきました。今のところMacはstableバージョンは無いみたいです。

7.SensorKinectのインストール

https://github.com/avin2/SensorKinect」からダウンロード。これも同じく、フォルダに移動して→「$sudo ./install.sh」でインストール。

Kinectのドライバで、Kinectとパソコンの橋渡しをするような位置づけかな、多分。

8.NITEのインストール

http://openni.org(リンク切れ)」のダウンロードから「PrimeSense NITE Unstable Build for for MacOSX …」というやつをダウンロード。他と同様「$sudo ./install.sh」でインストール。

これはOpenNIのミドルウェア。機能拡張的な意味合いです。多分。これがあるとスケルトン情報が取得できて、人間の骨格をなんとなく認識できます。つまりホネホネ遊びができます。レッツ ホネホネー☆

9.Processingのインストール

processing.org」でMac OS X版をダウンロード&インストール。

自分は既にインストール済みだったので、このステップは省略

10.SimpleOpenNIのインストール

simple-openniからダウンロード。解凍したファイルをProcessingのライブラリのフォルダに移動してやります。「/Applications/Processing.app/Contents/Resources/Java/modes/java/libraries」以下に優しく置いてやってね。

こいつはprocessingとOpenNIの橋渡しをしているものです、多分。こういうのをラッパーといったような気がします(遠い目)。包む方のラップね、rapじゃなくてwrap。

セッティング完了

 以上でセッティングは完了。Processing起動して、File→Examplesを選択したら、SimpleOpenNI以下にサンプルがたくさんあるはずなので一通り実行してみて下さい。後は、サンプルを元に手を加えていけばKinectは君のもの!多分。

まとめ

 セッティング思ったより大変でした。何回か挫折しそうになりましたが、Kinect買ったお金が無駄になるのでがんばりました。誰かワンパッケージのインストーラーとか作ってくれないかな。
 とりあえずサンプルコードで、スケルトン情報や3D情報取得できること確認した程度ですが、結構認識率高くてびっくりしました。そして、距離センサとして、赤外線ライトと赤外線カメラを使っているみたいで、赤外線カメラを使うと部屋真っ暗にしてもはっきり見えるから結構驚きました(監視カメラみたいな感じ)。Kinect凄い!

今後の予定

 とりあえず光学迷彩がインパクトありそう、かつキレイに見せるのにテクニック要りそうなので、チャレンジしてみる予定です。以下みたいなのが目標です。

 追記、やってみました