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で動作確認しているのでどちらかを入手。
ダウンロードして展開したら起動する。
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では動作確認用に簡単なモーフを実装している。
以下のようにして動作を確認する。
- OSCeletonを実行する。Windowsの場合はOSCeleton.exeをダブルクリックして実行すれば良い。
- Initializing…の後、Initialized Kinect, looking for users…が表示されればOK。そうでなければKinectの接続かOpenNIのインストールに問題がある(多分)。
- Pharoを起動して、Workspaceに「KOSampleMorph new openInWorld.」という式を入力し、選択後にDo itする。
- 赤いモーフが現れるが、これはユーザーが認識されていない状態。Kinectの前に立って認識されれば緑色に変化する。
- バルタン星人のポーズを取って骨格が認識されると、モーフに関節が表示され、動きに応じて変化する(はず)。
その他
OSCCeletonは引数に「-a 192.168.254.99」のようにIPアドレスを指定すれば他のPCにデータを送ることもできるので、Kinectに接続するPCとPharoを動作させるPCを分けて使用することができる。結構便利。