Thanks Driven Life

日々是感謝

Tython 開発環境構築 with Homebrew on OS X Lion

MacBookPro を Lion でクリーンインストールしたので、Kinect の環境も当然消えました。
ということで、これを見れば今日からあなたも Tython 開発者っていう気持ちで
手順書をまとめてみました。主に自分の為に。いつも忘れる。

Tython じゃなくても、OpenNI を Mac で使いたい人はこれでイケルと思いますきっとたぶん信じてる。

下準備その1 (libfreeenct、libusb)

後述する OpenNI で必要となるライブラリです。
公式では MacPorts によるインストールを薦めています*1が、
せっかく Homebrew を入れてあるのと、親切にも GitHub - OpenKinect/libfreenect: Drivers and libraries for the Xbox Kinect device on Windows, Linux, and OS X
Homebrew のレシピがおいてあるので、これを使っていきます。

$ cd `brew --prefix`/Library/Formula
$ curl -O https://raw.github.com/OpenKinect/libfreenect/master/platform/osx/homebrew/libfreenect.rb
$ curl -O https://raw.github.com/OpenKinect/libfreenect/master/platform/osx/homebrew/libusb-freenect.rb
$ brew install libfreenect

参考
http://d.hatena.ne.jp/ke_takahashi/20110529/p1

下準備その2 (OpenNI インストール先)

後述する OpenNI や SensorKinect、NITE はデフォルトで /usr/local とかにインストールされます。
それはそれで問題ないんですが、せっかくなのでインストール先を好きなところにやってみたくなりました。
Homebrew は $HOME/.homebrew とかにしたので、Kinect のライブラリは $HOME/.kinect にやってみます。

1. インストール先ディレクトリの準備(インストーラーが作ってくれないので自分で)

$ mkdir -p $HOME/.kinect/usr/{lib,bin,etc/primesense,include/ni}
$ mkdir -p $HOME/.kinect/var/lib/ni
$ mkdir -p $HOME/.kinect/usr/share/java

2. 場所が決まってるやつをシンボリックリンクで補う

$ sudo ln -s $HOME/.kinect/usr/etc/primesense /usr/etc/
$ sudo ln -s $HOME/.kinect/var/lib/ni /var/lib/

3. DYLD_LIBRARY_PATH の設定
Homebrew や OpenNI のインストール先がデフォルトであれば
/usr/local 以下にライブラリが置かれるため問題ないんですが、
私の環境では

という構成ですので、自前でパスを通しておく必要があります。

# .zshrc にでも書いておいてください
### OpenNI + SensorKinect 
    export DYLD_LIBRARY_PATH=$HOME/.kinect/usr/lib:$HOME/.homebrew/lib:$DYLD_LIBRARY_PATH

Install OpenNI

Apple から

OpenNI Unstable Build for MacOSX 10.6 Universal x86/x64 (32/64-bit) v1.3.2.3

をダウンロードします。
SnowLeopard 用に見えたので、最初は github からソースコードを持ってきて自前コンパイルしてたんですが
ビルド済みのもので特に問題なかったので使わせてもらいます。

ダウンロードした OpenNI-Bin-MacOSX-v1.3.2.3.tar.bz2 を適当な場所に解凍しつつインストールします。
インストール先は、前述した通り $HOME/.kinect です。

$ mkdir OpenNI
$ tar jxf OpenNI-Bin-MacOSX-v1.3.2.3.tar.bz2 -C OpenNI
$ cd OpenNI 
$ ./install.sh -i -c $HOME/.kinect

インストールは成功すると、$HOME/.kinect 以下にいろいろファイルが置かれてると思います。

SensorKinect

こちらは、openni.org にあるものは使わず、GitHub - avin2/SensorKinect: PrimeSensor Modules for OpenNI を使用します。

$ git clone git://github.com/avin2/SensorKinect.git SensorKinect-git
$ mkdir SensorKinect
$ tar jxf SensorKinect-git/Bin/SensorKinect-Bin-MacOSX-v5.0.3.4.tar.bz2 -C SensorKinect
$ cd SensorKinect

ここで、ほんの少しだけ install.sh を修正。

117d116
<     chown root $INSTALL_BIN/XnSensorServer
  1. /usr/local 以下にインストールされるため、通常は sudo install.sh とかする
  2. でも今回は $HOME/.kinect なので sudo じゃない
  3. sudo じゃないので chown root とかすると怒られる

という理由で一行削除しました。別に owner が root じゃなくても問題なかったです。

$ ./install.sh -i -c $HOME/.kinect

あと今更ですが、git clone したものの branch が unstable か確認してください。

$ git branch          
* unstable

NITE

再び openni.org からとってきます。
Apple から

PrimeSense NITE Unstable Build for MacOSX 10.6 Universal x86/x64 (32/64-bit) v1.4.1.2

をゲット。

$ mkdir NITE
$ tar jxf NITE-Bin-MacOSX-v1.4.1.2.tar.bz2 -C NITE
$ cd NITE

NITE の install.sh は、インストール先が完全に /usr/local 以下固定なので、編集しました。Gist に書いてあります。
NITE の install.sh を、好きな場所にインストールするために少しだけ編集 · GitHub
要は /usr/local の前に $HOME/.kinect 付け加えただけです。

そんなわけでインストールします。
実行すると、License Key を聞かれるので、Apple にあるフリーライセンスを使用します。

$ ./install.sh
Please enter your PrimeSense license key: 0KOIk2JeIBYClPWVnMoRKn5cdY4=

インストール完了!

お疲れ様でした。

まあ Tython はコンパイルできると思います。がんばってください。
Makefile.def でライブラリの設定したりインクルードパスを変えれば動きますきっとたぶん。

気になることやら

1. コンパイル時、 include/ni/*.h で warning 出まくる
まあこれは #pragma warning 使っててその他ほげほげだからでしょう。うざいから後ほど自分で書き直す。
2. Tython起動時に「INFO Filter Info - minimum severity: ERROR, masks: NONE」みたいなのが出る
動作に問題ないし今は気にしてないけど気になる。

最後に

これであなたも Tythonista !!

最後はめんどくさくなったので、ちゃんと説明してませんが
なんとか動くと思います。動かないという報告お待ちしております。
あと、もっと楽なのあったらお願いします。誰か Homebrew でレシピ書いてくれないかなー(ちらっちらっ