Nov 30, 2010

[Kinect] MacOS X で Kinect にチャレンジ

Kinect ハックで楽しんでいる人が巷に溢れかえっている昨今。 あんなに楽しそうなことが出来ないのはくやしいので Kinect を購入してマネをして遊ぶことに。 とりあえず今回は MacOS X で Kinect を動作させるところまでの作業メモ。

MacOS X で Kinect を使用するには OpenKinect をインストールすれば良いらしい。 OpenKinect のインストールに関する詳細は以下のサイトを参照のこと。

OpenKinect
http://openkinect.org/
OpenKinect's libfreenect at master - GitHub
https://github.com/OpenKinect/libfreenect
Compiling OpenKinect on a stubborn OSX 10.6.5 (Updated 21/Nov)
http://www.spoofscript.com/blog/?p=327

Kinect を接続する前に

今回使用した MacOS X は Snow Leopard (10.6.5)。予め MacPorts をインストール済み。 まずは OpenKinect のインストールに必要なものを揃える。 使用した環境では git と cmake が足りないので、MacPorts を使用してインストール。

$ sudo port install git-core
$ sudo port install cmake
$ port list git-core cmake
git-core                       @1.7.3.2        devel/git-core
cmake                          @2.8.3          devel/cmake

OpenKinect のソースコードをダウンロード

git で OpenKinect のソースコードをダウンロードする。 libusb も必要となるので併せてダウンロードしておく。

$ git clone https://github.com/OpenKinect/libfreenect.git
$ git clone git://git.libusb.org/libusb.git

libusb のインストール

libusb を configure; make; make install する。 libusb に OpenKinect 用のパッチを当てる必要があるので注意。

$ cd ./libusb/
$ chmod +x autogen.sh 
$ ./autogen.sh 
$ patch -p1 < ../libfreenect/platform/osx/libusb-osx-kinect.diff 
patching file libusb/libusbi.h
patching file libusb/os/darwin_usb.c
patching file libusb/os/darwin_usb.h
patch unexpectedly ends in middle of line
Hunk #2 succeeded at 147 with fuzz 1.
$ ./configure 
$ make
$ sudo make install | tee ./install.log
Password:
Making install in libusb
test -z "/usr/local/lib" || .././install-sh -c -d "/usr/local/lib"
 /bin/sh ../libtool   --mode=install /usr/bin/install -c   libusb-1.0.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libusb-1.0.0.dylib /usr/local/lib/libusb-1.0.0.dylib
libtool: install: (cd /usr/local/lib && { ln -s -f libusb-1.0.0.dylib libusb-1.0.dylib || { rm -f libusb-1.0.dylib && ln -s libusb-1.0.0.dylib libusb-1.0.dylib; }; })
libtool: install: /usr/bin/install -c .libs/libusb-1.0.lai /usr/local/lib/libusb-1.0.la
libtool: install: /usr/bin/install -c .libs/libusb-1.0.a /usr/local/lib/libusb-1.0.a
libtool: install: chmod 644 /usr/local/lib/libusb-1.0.a
libtool: install: ranlib /usr/local/lib/libusb-1.0.a
test -z "/usr/local/include/libusb-1.0" || .././install-sh -c -d "/usr/local/include/libusb-1.0"
 /usr/bin/install -c -m 644 libusb.h '/usr/local/include/libusb-1.0'
Making install in doc
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/local/lib/pkgconfig" || ./install-sh -c -d "/usr/local/lib/pkgconfig"
 /usr/bin/install -c -m 644 libusb-1.0.pc '/usr/local/lib/pkgconfig'

OpenKinect のインストール

libusb がインストールできたら、本命の OpenKinect をインストール。 途中 ccmake 云々のくだりは手順書通りにやっただけで ccmake を知っているわけではないので不要かもしれない。

$ mkdir ./libfreenect/build
$ cd ./libfreenect/build
$ ccmake ..
※ccmake が起動したら、'c' → 'g' をタイプ。
$ cmake ..
-- Operating system is Apple MacOS X
-- Got System Processor i386
-- libfreenect will be installed to /usr/local
-- Headers will be installed to /usr/local/include/libfreenect
-- Libraries will be installed to /usr/local/lib
-- Found libusb-1.0:
--  - Includes: /usr/local/include
--  - Libraries: /usr/local/lib/libusb-1.0.dylib
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/me/libfreenect/build
$ make
$ sudo make install | tee ./install.log
Password:
[ 33%] Built target freenect
[ 66%] Built target freenectstatic
[ 73%] Built target glview
[ 86%] Built target fakenect
[ 93%] Built target record
[100%] Built target freenect_sync
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/lib/libfreenect.0.0.1.dylib
-- Installing: /usr/local/lib/libfreenect.0.0.dylib
-- Installing: /usr/local/lib/libfreenect.dylib
-- Installing: /usr/local/lib/libfreenect.a
-- Installing: /usr/local/include/libfreenect/libfreenect.h
-- Installing: /usr/local/include/libfreenect/libfreenect.hpp
-- Installing: /usr/local/bin/glview
-- Installing: /usr/local/lib/fakenect/libfreenect.0.0.1.dylib
-- Installing: /usr/local/lib/fakenect/libfreenect.0.0.dylib
-- Installing: /usr/local/lib/fakenect/libfreenect.dylib
-- Installing: /usr/local/lib/libfreenect_sync.0.0.1.dylib
-- Installing: /usr/local/lib/libfreenect_sync.0.0.dylib
-- Installing: /usr/local/lib/libfreenect_sync.dylib
-- Installing: /usr/local/include/libfreenect/libfreenect_sync.h

Kinect の動作確認

OpenKinect に添付されているサンプルアプリケーションで Kinect の動作確認をする。 まずはサンプルアプリケーションのビルドから。

$ cd ./libfreenect/examples/
$ cp ../include/* .
$ cmake .
$ make

make が正常に終了したら、Kinect を Mac に接続する。 接続したらサンプルアプリケーションを起動する。
$ ./glview 
Kinect camera test
Number of devices found: 1
GL thread
   (略)

起動すると以下の様に Kinect から取得した画像が表示される。 右側に実際はもっときちんとした画が表示されるが、お見せできるような状況ではないためボカしてある。

[サンプルアプリケーション]

Posted in Kinect | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |

Nov 29, 2010

[Apple] MacPorts の "db46 requires the Java..." エラー

MacPorts でアップデートをしようとしたら以下の様なエラーが発生した。

$sudo port upgrade outdated
   (略)
Error: db46 requires the Java for Mac OS X development headers.
Error: Download the Java Developer Package from: <https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20719>
Error: Target org.macports.configure returned: missing Java headers
Error: Failed to install db46
Log for db46 is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_databases_db46/main.log
Error: The following dependencies were not installed: python26 db46 gdbm rsync popt
Error: Status 1 encountered during processing.
To report a bug, see <http://guide.macports.org/#project.tickets>

メッセージの通り https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20719 から Java for Mac OS X 10.6 Update 3 Developer Package をダウンロード(要 Apple ID)し、インストールして一件落着。

Posted in Apple | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |