tuedaの日記

2010-12-23

[] Ubuntu 10.10 でkinectを動かす。スケルトントラッキングも出来た

(随時加筆・修正予定)

  • 2011.01.08 最新版に合わせて修正
  • 2010.12.23 初出

スケルトントラッキングをするにはOpenNIとkinectが動くだけではダメでPrimeSense社のNITEライブラリが必要。

昨日から超頑張っていたがようやくUbuntu10.10でサンプルが動くようになった。

スクリーンショットはSample-Playersでスケルトントラッキングをやっている所。

f:id:tueda_wolf:20101223173435p:image

結局64bit版のUbuntu 10.10ではどうやっても"illegal hardware instruction"が回避出来なかった。

ハードウェアと手順をまったく同じで32bit版のUbuntu10.10でやったらうまく動いた。

(根本的な原因は64bit版のNITEバイナリがうちのCPU(Athlon X2 5000+)の持っていない拡張命令(SSSE3とか)を使っているからと推測してるが、本当の所はよくわからない。IntelのCPUじゃないとダメ?)

ともかく動いた。

簡単な手順のメモ書き

0. 環境

OS: Ubuntu10.10 x86

CPU: Athron X2 5000+

注意:NITEやavin2/SensorKinctがSSE3を使うのでSSE3に対応したCPUが必要(/proc/cpuinfoにpniの文字があればOK(sse3ではない))。

一応コンパイルオプションを変えればSSE2でもいけるらしい。

0. 下準備

avin2/SensorKinectのコンパイルにlibusb-devとfreeglut3-devが必要なので入れておく。

$ sudo apt-get install libusb-dev freeglut3-dev
1. OpenNIをインストールする

OpenNIのページの「Downloads」のところの「OpenNI Binaries」の「Stable」。

  • OpenNI Alpha Build for Ununtu 10.10 x86 (32-bit) v1.0.0.23

解凍したら./install.shを実行する。

$ sudo ./install.sh
2. avin2/SensorKinectドライバーをインストールする

https://github.com/avin2/SensorKinect/tree/master

(注意:masterとunstableがあって、unstableの方はOpenNIのstableの方と互換性がなくコンパイルエラーが出る。必ずmasterの方を使うこと)

解凍したらREADMEを読んで、/RegistMakeしてから./install.shを実行する。

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

2011.01.07付けでBinディレクトリの下にバイナリパッケージが追加されました。

Ubuntuの場合は上記のソースからコンパイルする方法で問題ないはずですが、

Windowsの場合バイナリパッケージを使った方が簡単かもしれません。

3. NITEをインストールする

OpenNIのページの「Downloads」のところの「OpenNI Compliant Middleware Binaries」の「Stable」。

  • PrimeSense NITE Beta Build for for Ununtu 10.10 x86 (32-bit) v1.3.0.17

解凍したらまず設定ファイルを書き換える(重要)

Dataの下にxmlファイルが3つ(Sample-Scene.xml, Sample-Tracking.xml, Sample-User.xml)あるので3つとも下記の部分を書き換える。

読み込み専用になっているので書き込み許可を与えて、

$ chmod 644 Data/*.xml

書き換える。

		<License vendor="PrimeSense" key="0KOIk2JeIBYClPWVnMoRKn5cdY4="/>
				<MapOutputMode xRes="640" yRes="480" FPS="30"/>

ライセンスキーは当然として解像度はサンプルを動かすのに必要。

書き換えたら./install.shを実行する。

$ sudo ./install.sh

ライセンスキーをもう一度聞かれるのでさっきのキーを再度入力する。

4. kinectをつなぐ

すでにつないであった人はもう一度抜き差しする(これをやらないと認識しない)。

5. サンプルを実行する

Samples/Binの下にいっぱいあるのでお好みで。

とりあえずSmaple-SceneAnalysisあたりがいい。

上のスケルトントラッキングはSample-Playersというアプリ。

すべてのデモのスクリーンショットを取ったので参考にどうぞ。

http://d.hatena.ne.jp/tueda_wolf/20101224

この先

  • 当然自分のプログラムから動かせるようにして
  • 3Dモデルと連動
  • Rubyから使えるようにする

当分遊べるな。Linuxで動くMMDみたいなのを作ろう。

Connection: close