Raspberry PiでKINECTを使ってみる

Raspberry Pi で KINECTが使えるかどうか調べてみました。

KINECTを一般的にHackするやりかたについてはこちらがまとまっています。

ここでも紹介されている libfreenect は、Kinectのオープンソースドライバで、深度と光学映像が撮影できます。
KINECTといえば骨格映像でモーション判別という印象がありますが、そのようなものをする場合にはOpenNI
などを使うことになります。しかしRasbperry Piで行うとなると相当なHackが必要っぽいです。

今回は、libfreenectに絞って動かして見るところまでやってみます。

以下行う作業は、Tunpixel’s Notes の「Kinect on Raspberry Pi」

http://blog.tunpixel.tn/2014/10/27/kinect-rasp/

に記述しているものほぼそのままです。

なお、ひとつひとつのインストール作業についての解説は上記ページに解説していますので参照のこと。

sudo apt-get install build-essential python-dev ipython python-opencv python-numpy python-scipy git-core git freeglut3 freeglut3-dev libxmu-dev libxi-dev cmake cmake-curses-gui pkg-config libudev-dev

wget http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.19/libusb-1.0.19.tar.bz2/download
tar xzvf download
cd libusb-1.0.19
./configure
make
sudo make install

cd ..
git clone https://github.com/OpenKinect/libfreenect.git
cd libfreenect
mkdir build
cd build
ccmake ..

ここで、EMPTY CACHE という表示が出てくるので 「c」キーを押してconfigureメニューを出し、
「BUILD_EXAMPLES」にカーソルをあわせてエンターを押し、「ON」を「OFF」に変更する。
再度「c」キーを押して、「g」キーで終了。

cmake ..
make
sudo make install

cd ../wrappers/python
sudo python setup.py install

これで、インストール終わりです。
デモを起動してみます。

sudo python demo_cv_async.py

今回試したOSは raspbian-FABLIB-20151106 で、 2015-09-24-raspbian-jessie.zip をベースにしているのですが、

(Depth:13998): GdkGLExt-WARNING **: Window system doesn’t support OpenGL.

と出てしまいました。

sudo apt-get install libgl1-mesa-dri

として、再起動。

cd libfreenect/wrappers/python

として再度

sudo python demo_cv_async.py
で起動しました。

Raspberry Pi 2 Model Bですが、topを走らせると、 load average: 0.8~0.9ぐらいいってします。
なお、このディレクトリに含まれているファイルは以下のようにサンプルプログラムが含まれています。

CMakeLists.txt
README
build
demo_cv_async.py
demo_cv_sync.py
demo_cv_sync_multi.py
demo_cv_thresh_sweep.py
demo_cv_threshold.py
demo_mp_async.py
demo_mp_sync.py
demo_tilt.py
frame_convert.py
frame_convert.pyc
freenect.c
freenect.pyx
setup.py

このうち、
demo_mp_async.py
demo_mp_sync.py
は動きませんでした。
demo_tilt.py は動いているのだか動いていないのだかよくわからない感じです。

ですが Rspberry Pi であれこれ苦労せずにできる範囲がわかりましたので、ここまでで調査は終わりということで。