Tech Sketch Bucket of Technical Chips by TIS Inc.

Kinect Hack 映像をNode.jsで擬似ストリーミング・・・まだまだだね(1)

Pocket

みなさん、楽しくKinectをHackしていますか?

公式/非公式なデバイスドライバを手に入れた瞬間から、Kinectは単なるゲームコントローラの枠を越え、「シンプルなAPIを持った3Dカメラ」として利用できるようになります。
世界中のハッカーがこぞってKinectをHackしており、 3D Video Capture with KinectKinectでスーパーヒーローに変身Kinectを使ってブラウザのWebGL内を動いてみた など、秀逸な動画がたくさん公開されています。

しかし身に付けて歩けるほどKinectセンサーは小さくないため、Kinectセンサーは固定PCに接続し据え置かざるを得ません。
Kinectセンサーから得て付加情報を重畳した映像を、その固定PC上で表示するだけでなく、Kinectセンサーのターゲットとなっている人物自身へ何らかの手段で遠隔配信できれば、何か面白いことができるのではないでしょうか。

そこで今回は、最近ハヤリのNode.jsのWebsocketを用い、Kinectセンサーで取得された画像をWifi経由でノートPCへ擬似ストリーミング配信してみたいと思います。

kinect_sample01.pngのサムネイル画像

この記事では、株式会社 ゲッシュ 中島 薫さんが書かれた KINECTセンサープログラミング を参考にさせていただきました。
この場を借りてお礼申し上げます。

1. KinectとOpenCVの環境構築

KINECTセンサープログラミングを参考にして、Kinectのドライバ類をインストールします。
本記事は、以下のバージョンのドライバ類で検証しました。

OS Ubuntu 10.10 32bit (2.6.35-30-generic  i686 GNU/Linux)
コンパイラ・リンカ gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
Kinect Driver OpenNI-Bin-Linux32-v1.1.0.37
NITE-Bin-Linux32-v1.3.1.3
avin2-SensorKinect-28738dc
画像処理 OpenCV 2.1.0

2. Node.jsの環境構築

2-1. nvmのインストール
Node.jsは開発速度が高く安定版も頻繁に更新されるため、複数バージョンのNode.jsを安全に切り替えられるようにしたほうが幸せになれます。そのため、nvmの本家 を参考にnvmをインストールし、nvm経由でNode.jsをインストールすることにしました。

2-2. Node.js最新安定版のインストール

というコマンドにより、Node.jsの最新安定版がチェックアウトされ自動的にビルドされます。またnpmというNode.js用パッケージマネージャも同時にインストールされます。

2-3. expressのインストール
Ruby界隈でよく使われているWebフレームワーク Sinatra ライクなWebフレームワーク express を使って、クライアントPCのブラウザからアクセスするWebアプリを作成します。

というコマンドで、expressと依存モジュールを一括でインストールします。
-g オプションは重要です。このオプションをつけることで、expressという(RoRのrailsコマンドのような)scaffoldコマンドが使えるようになります。

2-4. expressでWebアプリの雛形作成

と実行することで、sample01ディレクトリの下にWebアプリの雛形が作成され、必要なモジュールがインストールされます。

2-5. 動作確認

と実行し、 http://localhost:3000 にブラウザからアクセスしてください。
「Express」という文字が表示されれば、雛形は正しく作成されています。

2-6. websocket-serverモジュールのインストール

と実行し、websocket-serverモジュールも導入しましょう。

最終的に、以下のバージョンのNode.js環境を構築したことになります。

Node.js 0.4.11
npm 1.0.27
express 2.4.6
jade 0.15.4
websocket-server 1.4.04

今回はここまで!
次回は、Kinect → OpenNI → OpenCV → C++Addon → Node.js → websocket → HTML5 という一連の流れを構築するソースコードをご紹介します。

エンジニア採用中!私たちと一緒に働いてみませんか?