Thanks Driven Life

日々是感謝

MacOSX と Kinect をつないでみた

昨日、Amazon から Kinect が届いたので遊んでます。
なんか・・いいですね。地味に。シンプルに。体力不足が伺えるよいツール。
キネクトアドベンチャー楽しんでます。


で、少し前から Kinectオープンソースなドライバー libfreenect が公開されており、
Mac OS X でも問題なく使えるっぽいので、さっそく入れてみました。

ソースコードもってくる

  $ git clone git://github.com/OpenKinect/libfreenect.git

このままコンパイルしていってもいいんですが、
実は Homebrew の Formula も同梱されているので
せっかくだからそれらを使わせていただきましょう。

  # Formula の置き場所は環境に合わせて調整してください
  $ cp libfreenect/platform/osx/homebrew/{libfreenect,libusb-freenect}.rb /usr/local/Library/Formula/

少し手直し

2010/11/30現在
すでに改善されてるんで手直しの必要はないです。

このまま brew install libfreenect とかすると失敗します。
単に Formula の書き間違いなので、それとなく修正しておきます。
おそらく近いうちに直されると思いますけどね。

*** libfreenect.rb.orig	2010-11-23 19:59:39.000000000 +0900
--- libfreenect.rb	2010-11-23 19:59:42.000000000 +0900
***************
*** 10,19 ****
    depends_on 'cmake'
  
    def install
!     cd "c"
!     mkdir "build"
!     cd "build"
!     system "cmake .. #{std_cmake_parameters}"
      system "make install"
    end
  end
--- 10,16 ----
    depends_on 'cmake'
  
    def install
!     system "cmake . #{std_cmake_parameters}"
      system "make install"
    end
  end

大した修正でもないんですが gist にも上げておきました。

https://gist.github.com/711607

インストール

Homebrew に任せましょう

 $ sudo brew install libusb-freenect
 $ sudo brew install libfreenect

libusb は既に入ってるよ!っていう方もいるかもですけど、
libfreenect 用の patch があたってるバージョンらしいですね。

実行

example を実行しましょう。
さっきのインストールでうまくいっていれば、/usr/local/bin 以下に あるはずです。

実行前に以下を確認

  1. Kinect の AUX コネクタが、Kinect 付属の AUX-USB 変換を介してマシンにつながってるか
  2. AUX-USB 変換の AC アダプタがちゃんとコンセントに刺さってるか (私は最初さしてなかったので反応せずにびびった)
  $ sudo /usr/local/bin/glview

実行すると以下のような Window が出てくるはずです。

部屋とMBPとコーラと私 with Kinect

右が Kinect のカメラの映像、左がおそらく解析状態でしょう。まだあまり踏み込んでないんでわかんない。

ちなみに glview の実行結果は以下な感じに

Kinect camera test
Number of devices found: 1
GL thread
Write Reg 0x0006 <= 0x00
Write Reg 0x0012 <= 0x03
Write Reg 0x0013 <= 0x01
Write Reg 0x0014 <= 0x1e
Write Reg 0x0006 <= 0x02
Write Reg 0x0005 <= 0x00
Write Reg 0x000c <= 0x00
Write Reg 0x000d <= 0x01
Write Reg 0x000e <= 0x1e
Write Reg 0x0005 <= 0x01
[Stream 70] Invalid magic ffff
[Stream 70] Invalid magic ffff
[Stream 70] Invalid magic 7acf
[Stream 70] Expected 1748 data bytes, but got 1908. Dropping...
[Stream 70] Invalid magic 576a
[Stream 70] Lost 244 packets
[Stream 70] Lost too many packets, resyncing...
Write Reg 0x0047 <= 0x00
'w'-tilt up, 's'-level, 'x'-tilt down, '0'-'6'-select LED mode
[Stream 70] Invalid magic c7ff
[Stream 70] Invalid magic c9ff
[Stream 70] Invalid magic cbff
[Stream 70] Lost 249 packets
[Stream 70] Lost too many packets, resyncing...
 raw acceleration:   -4  813 -118  mks acceleration: -0.047896 9.734806 -1.41292
 raw acceleration:   -4  813 -134  mks acceleration: -0.047896 9.734806 -1.60450
 raw acceleration:   -4  813 -110  mks acceleration: -0.047896 9.734806 -1.31713

途中の "Invalid magic xxxx" うんたらは適当に削りました。もっとあったんですけどね。
一番したの "raw acc〜" が実際に解析値でしょう。加速度とかかな?


そんなわけで無事 Kinect -> MacOSX が確認できました。
すでに libfreenect を使っていろいろ作ってる人が多いです。
あそこ前はいかなくとも何かしら面白いものができたらいいかなと思います。