Kinect ハック on Mac OS X:(1) OpenKinect サンプルの実行

Kinectとは、11月に発売された、MicrosoftのXbox 360用のデバイス。カメラの他に深度センサーやマイクが付いており、プレイヤーはコントローラを持たずにゲームを操作できます。今までのゲームコントローラとは異なる、最先端のデバイスです。
KinectはXbox用のコントローラなのですが、既にいくつかの機能がハックされ、Windows, Linux, Mac OS X用のドライバが出されています(OpenKinect Project)。こんなデバイスが簡単に使えるようになっているのであれば、色々と試してみる価値はありそうです(※ちなみに価格も11,693円(Amazon)と安価)。
そこで、このOpenKinectを使って、Kinectを使ったプログラムを作ってみようと思います。このブログでは覚え書きをまとめておきます。

目次

  • 環境
  • 事前準備
  • OpenKinectのビルド
  • サンプルプログラムの実行


環境

  • iMac (Early 2006)
  • Mac OS X 10.6.5
  • Xcode 3.2.4

事前準備

  • Xcode(開発環境):
    インストールされていなければ、 Mac OS Xのインストールディスクを挿入し、Optional Install→XcodeToolsと辿り、XcodeTools.mpkgをダブルクリックします。
  • gitとcmake:
    インストールされていなければ、下記のように、MacPortをインストールした後で、git-coreとcmakeをインストールします。
    • http://www.macports.org/install.php からインストーラをダウンロードし、実行
    • ターミナルから、sudo port install git-core を実行
    • ターミナルから、sudo port install cmake を実行

OpenKinectのビルド

基本的にhttp://openkinect.org/wiki/Getting_Started#OS_Xに従って行います。
  1. OpenKinectとlibusbをダウンロード:
    • git clone https://github.com/OpenKinect/libfreenect.git
      git clone git://git.libusb.org/libusb.gi
  2. libusbにパッチを当てた上でインストール:
    • cd libusb
      ./autogen.sh
      patch -p1 < ../libfreenect/platform/osx/libusb-osx-kinect.diff
      ./configure
      make
      sudo make install
  3. OpenKinectをconfigure:
    • まずはccmake (※Xcodeを使いたいため最後のccmakeには "-G Xcode"を渡す):
      • cd ../libfreenect/
        cd c
        mkdir build
        cd build
        ccmake -G Xcode ..
    • 画面に "Required library USB NOT FOUND."と表示されます。キーボードで'e'を押して、編集モードに入ります。
    • カーソルを下に動かし、"USB_INCLUDE_DIR-NOTFOUND" の行に合わせます。
    • Enterを押し、"/usr/local/include/libusb-1.0/"を入力し、再度Enterを押します。
    • キーボードから、'c'を2回押してconfigureを2度実行し、その後'g'を押して設定ファイルを生成します。
    • 最後に cmake:
      • cmake -G Xcode ..
    • "Build files have been written to: (略)"と表示されていれば成功
  4. Xcodeから、buildディレクトリにあるlibfreenect.xcodeprojを開く。
  5. "Build and Run" アイコンをクリックする。 ("Build Succeeded" と表示されていれば成功。逆にErrorと表示されていれば失敗(後注))

サンプルプログラムの実行

  1. ターミナル上からglviewを実行 (もしくはXcode上でglviewをダブルクリック):
    • cd examples/Debug/
      ./glview
  2. 次のように表示されていれば成功:
    • Kinect camera test
      Number of devices found: 0
実はまだKinectが届いていないのですが、プログラム上では問題なさそうなので、後はKinectが届いてからUSBに接続すれば動くはず...です。
次はサンプルプログラムのソースコードを読んで、Kinectからのデータ取得方法を調べてみます。

注: 自分の環境では、最初に実行したときに、エラーが出てビルドできませんでした。そこで以下の方法で暫定的に回避しました。(ビルド時のライブラリへのパスを指定する方法が分からなかったので...汚い方法です)
  • エラーの内容:
    ld: library not found for -lJPEG
    collect2: ld returned 1 exit status
    Command /Developer/usr/bin/gcc-4.2 failed with exit code 1
  • 回避方法:
    • MacPortでjpegライブラリをインストール:
      • sudo port install jpeg +universal
    • /opt/local/lib/libjpeg.* を libfreenect/c/build/lib にコピー。

コメント 1つ:

tomoyo_kousaka さんのコメント...

とても参考になりました!
ありがとうございます!

>>OpenKinectとlibusbをダウンロード
のところ、2つめのgitのアドレスが「~.gi」で終わっているのを発見したので報告しておきますね!