hakobera's blog

技術メモ。たまに雑談

Kinect を操作できる Node.js モジュールを作ってみた

Kinect ハッカソン Vol.2 の時に仕上げ損なったやつを GW で時間があったので、完成させました。libfreenect のラッパーなので、ボーンは取れません。

hakobera/node-freenect · GitHub

スクリーンショット (Kinect を WebSocket 経由でコントールしてるところ)
f:id:scalar:20110504135613p:image:w360

前に作った Kinect.js よりは速いのですが、正直、期待したほどの速度は出なかった(深度データのみ取得が MBA13 で 5-8 FPS) ので、実用性の面でお蔵入りしそうですが、全部 JavaScript で書けるのはやはり気持ち良いですね。

以下のようなコードが書けます。

var Freenect = require('freenect');

var kinect = new Freenect.Kinect(),
		ledOption = 0,
		prev = Date.now();

setInterval(function() {
	var now = Date.now(),
			interval = now - prev,
			depth = kinect.getDepth(),
			len = depth.length,
			tiltAngle = kinect.getTiltAngle(),
			i;

	console.log('Interval: %d, Depth Size: %d, LED Option: %d, Tile Angle: %d',
							interval, len, ledOption, tiltAngle);

	// Manupulate depth pixel data like following code.
	for (i = 0; i < len; ++i) {
		depth[i] = 255 - depth[i];
	}

	// Change LED color and blink pattern.
	kinect.setLed(ledOption);

	ledOption += 1;
	if (ledOption > 6) {
		ledOption = 0
	}

	prev = now;

}, 200);