スポンサードリンク

kinect
kinectを買っちゃいました。

XBOX360のkinect専用ソフトDance Evolutionも一緒に。

ゲームもいいけど、
Mac で 「Kinectを使ってブラウザのWebGL内を動いてみた」- Scalaとlift のはずだった ・・・
これをやってみたいがために。

調べてみるとkinectをPCに繋げるにはOpenKinectというライブラリがあるそうな。
しかし、これはOpen Frameworkというもの(あんまりよくわかってない・・・)用のもので
OpenNIで使うことができないみたいでした。
まぁ、OpenNI自体も良く分かってないのですが・・・(汗

というわけでMacにkinectを繋いでOpenNIを動かしてみたので、その方法を書いておきます。

といっても、OpenNIやらkinectやらは初心者ですので、いろいろ調べながらやってみましたが、間違いもあるかもしれません。とりあえず、動いたということで個人的な備忘録として書いています。


環境

MacBook Pro(early 2011) (13inch, Core i7 2.7GHz, 8GB RAM)
OSバージョン:MacOS X Snow Leopard 10.6.7


1. Xcodeのダウンロード&インストール

http://developer.apple.com/devcenter/mac/index.action
Appleのサイトでデベロッパー登録(登録フォームは英語だけど)をして
Xcode_3.2.6をダウンロード(4.1GBあります)します。
ダウンロードしたファイルをダブルクリックでインストール。

2. MacPortsのダウンロード&インストール

OpenNIをインストールするためにMacPortsを使ってlibusbなどのライブラリをインストールする必要があります。
・MacPortsのインストール
http://distfiles.macports.org/MacPorts/MacPorts-1.9.2-10.6-SnowLeopard.dmg
をダウンロードしてきてダブルクリックでインストール。

3. 必要なプログラムをMacPortsを使ってインストール

ターミナルを開いて以下を実行。

$ sudo port selfupdate
$ sudo port install libtool
$ sudo port install libusb-devel +universal

(補足)
$ port installed
とコマンドを打つとインストール済リストが表示されるので、libtoolとlibusb-devel +universalがあるかどうか確認できます。
libusb-develで+universalがついていないものが既にインストールされていた場合、以下のように一旦libusb-develをアンインストールして再度+universal付きでインストールすればよいようです。

$ sudo port uninstall libusb-devel
$ sudo port install libusb-devel +universal


4. OpenNI 1.xのダウンロード&インストール

OpenNIのサイトの
http://www.openni.org/downloadfiles/opennimodules/openni-binaries/20-latest-unstable
から「OpenNI Unstable Build for MacOSX 10.6 Universal x86/x64 (32/64-bit) v1.1.0.41」をダウンロード。
ダウンロードしたファイルをダブルクリックで解凍する。
解凍したディレクトリにターミナルでcdして

$ sudo ./install.sh

を実行するとインスールできます。

(補足)
3のMacPortsでのライブラリがインストールされていない場合は以下のような表示になってしまいます。

$ sudo ./install.sh
Password:
Installing OpenNI
****************************

copying shared libraries...OK
copying executables...OK
copying include files...OK
creating database directory...OK
registering module 'libnimMockNodes.dylib'...dyld: Library not loaded: /opt/local/lib/libusb-1.0.0.dylib
  Referenced from: /usr/lib/libOpenNI.dylib
  Reason: image not found
./install.sh: line 52:  8262 Trace/BPT trap          niReg -r $INSTALL_LIB/$module

これはOpenNIをインストールに失敗しているので

$ sudo ./install.sh -u

で一旦中途半端に入ったOpenNIのモジュールをアンインストールします。その後3からやり直します。

5. kinectドライバのダウンロード&ビルド&インストール(ros)

OpenNI用Kinectドライバの種類 – TK’s HP
によるとOpenNIに対応したkinectドライバは数種類あるとのこと。
他の方のMacでkinectでOpenNIなブログではavin2ドライバ(SensorKinect)というのを使っているのをよく見かけますがrosドライバ(「OpenNIを出しているWillowGarageのROS系ドライバであることから、ある意味公式ドライバ」とのことらしい)がMacにも対応したようですのでこれを使ってみることにします。

https://github.com/ros-pkg-git/SensorからDownloadボタンを押して.zipでも.tar.gzでも好きな方をダウンロードしてください。

ダウンロードしたファイルをダブルクリックで解凍する。
解凍したディレクトリにターミナルでcdしてさらにそこから以下を実行するとドライバをインストールできる。

$ cd Platform/Linux-x86/CreateRedist
$ ./RedistMaker
$ cd ../Redist
$ sudo ./install.sh

(補足)
https://github.com/ros-pkg-git/Sensor/blob/ros/README
のMacOSX部分に上記に書いた以外のBuildの補足が書かれています。ログファイルの書込み先や手動でのビルドの仕方、設定ファイルの場所など。

6. NITEのダウンロード&インストール

OpenNIのサイトの
http://www.openni.org/downloadfiles/opennimodules/12-openni-compliant-middleware-binaries
から「For NITE, PrimeSense has provided us with this key (you will be asked to enter it during the installation) that everyone can use for free:」の後にある文字列を控えます(2011/06/19時点では「0KOIk2JeIBYClPWVnMoRKn5cdY4=」でした)

さらに「Latest Unstable」のリンク先の「PrimeSense NITE Unstable Build for MacOSX 10.6 Universal x86/x64 (32/64-bit) v1.3.1.5」をダウンロードします。

ダウンロードしたファイルをダブルクリックで解凍する。
解凍したディレクトリにターミナルでcdして以下を実行する。

$ sudo ./install.sh

ライセンスキーを尋ねられるので先ほど控えた「0KOIk2JeIBYClPWVnMoRKn5cdY4=」を入力

環境設定

/usr/etc/primesense/GlobalDefaults.ini
にドライバの動作環境の初期値が書かれていますが、このままだとうまく動かないのでファイルを編集します。
GlobalDefaults.iniはrootでないと編集できないのでsudo viなどでroot権限で編集してください。
編集箇所は以下です。
[Depth]セクション、[Image]セクション、[IR]セクションの

; 0 - QVGA (default), 1 - VGA
;Resolution=1

の部分を

; 0 - QVGA (default), 1 - VGA
Resolution=1

としてVGAの解像度にします。

次にNITEの設定ファイルを変更します。
NiteのディレクトリのDataディレクトリにある3つのxmlを書き換えます。

<License vendor="PrimeSense" key="insert key here"/>

の「insert key here」の部分に先ほど控えていた「0KOIk2JeIBYClPWVnMoRKn5cdY4=」に変更します。


動作確認

kinectをMacに接続してサンプルを実行してみます。
ターミナルからOpenNIディレクトリのSamples/Bin/Release/にcdして

./Sample-NiUserTracker

やNITEディレクトリのSamples/Bin/にcdして

./Sample-PointViewer

を実行して少し待つと新しいWindowが現れてkinectで認識できます。

kinect - OpenNI
↑Sample-NiUserTrackerの画面
kinect - NITE
↑Sample-PointViewerの画面

さーて、何か作るぞ〜。まずはSampleプログラムでOpenNIの使い方から学ばなければ・・・。


参考にさせていただいたサイト(ありがとうございます)

スポンサードリンク