KinectOSCの導入

Pharoを使っていて、Kinectを持っていて、それを繋げようなんて考える人がいるとは思わないんだけど、とりあえず作ったので公開してみた。

http://ss3.gemstone.com/ss/KinectOSC.html

この記事ではその導入方法について説明する。

KinectOSCは、Kinectからの情報をOSC(Open Sound Control)プロトコルを通じて得て、それをMorphicで利用できるようにするためのPharoのクラス群である。サンプルとして簡単なモーフも付けているが、いろんなアプリケーションで活用することを目指している。

KinectOSCは、KinectとPharo以外にもいくつかのツールやパッケージを利用して動作するようになっており、その構成は下の通りである。

Kinect – OpenNI – OSCeleton = (OSCプロトコル) = Pharo – OSCClient – KinectOSC

以下、順に導入方法を説明していく。

OpenNI

KinectをPCやMacで利用するためのドライバなどである。これがないとOSCeletonが動作しない。

インストール方法は適当にググってください。

OSCeleton

OpenNIを利用して、Kinectから得た情報をOSC(Open Sound Control)プロトコルでネットワークに送信するツール。

ソースがGithubに公開されている。

https://github.com/Sensebloom/OSCeleton/

WindowsとMacOSX用のバイナリが以下のページからダウンロードできるので対応する方をダウンロードする。

https://github.com/Sensebloom/OSCeleton/downloads

ダウンロードしたら適当なフォルダに展開しておく。

Pharo

Pharo使いであれば特に説明は不要でしょう。KinectOSCは1.3か1.4で動作確認しているのでどちらかを入手。

http://www.pharo-project.org

ダウンロードして展開したら起動する。

OSCClient

OSCClientはOSCeletonが送信したOSCのメッセージをPharoに取り込むためのクラス群。

KinectOSCではOSCの受信のためにOSCClientを使っているため、以下のようにPharoにインストールしておく。

  • Monticello Browserを開き、+RepositoryでHTTPを選び、以下を入力(コピペ)してOKを押す。
MCHttpRepository
location: 'http://www.squeaksource.com/OSCClient’
user: ''
password: ''
  • 右側のペインで上記のリポジトリを選択してOpenを押す。
  • OSC-Richo.23.mczを選んで、Loadを押す。
  • System BrowserでOSC-Testsクラスカテゴリを選択し、右ボタンでRun Testsを選び、テストが成功することを確認する。

KinectOSC

いよいよKinectOSCをPharoにインストールする。

  • Monticello Browserの+RepositoryでHTTPを選び、以下を入力してOKを押す。
MCHttpRepository
location: 'http://ss3.gemstone.com/ss/KinectOSC’
user: ''
password: ''
  • 右側のペインで上記のリポジトリを選択してOpenを押す。
  • 左側のペインでKinectOSCを選び、右側のペインで一番上のKinectOSC.mczを選んで、Loadを押す。
  • System BrowserでKinectOSC-Testsクラスカテゴリを選択し、右ボタンでRun Testsを選び、テストが成功することを確認する。
  • とりあえずPharoをSave & Quitする。

テストモーフの実行

KinectOSCでは動作確認用に簡単なモーフを実装している。

以下のようにして動作を確認する。

  1. OSCeletonを実行する。Windowsの場合はOSCeleton.exeをダブルクリックして実行すれば良い。
  2. Initializing…の後、Initialized Kinect, looking for users…が表示されればOK。そうでなければKinectの接続かOpenNIのインストールに問題がある(多分)。
  3. Pharoを起動して、Workspaceに「KOSampleMorph new openInWorld.」という式を入力し、選択後にDo itする。
  4. 赤いモーフが現れるが、これはユーザーが認識されていない状態。Kinectの前に立って認識されれば緑色に変化する。
  5. バルタン星人のポーズを取って骨格が認識されると、モーフに関節が表示され、動きに応じて変化する(はず)。

その他

OSCCeletonは引数に「-a 192.168.254.99」のようにIPアドレスを指定すれば他のPCにデータを送ることもできるので、Kinectに接続するPCとPharoを動作させるPCを分けて使用することができる。結構便利。