Microsoft Cube SDKが公開されました

複数KINECTで発生したデータを複数のPCに公開・ハンドリングさせる機能を持ったMicrosoft Cube SDKが公開されました。ソースコードGitHubに公開されていますがライセンスは明記されていません。

このSDKに含まれているKINECT Transportを利用するとTCPを経由することで最大5台のPC、4台のKINECTを用いたDepthデータ、スケルトンデータの送受信を実現することができます。

Microsoft Cubeってなに?

KINECTを利用したプレゼンテーションの一例として発表されたデモンストレーションです。くわしくは以下の動画を参照してください。


Kinect-Powered Cube Unveiled at Decibel Festival ...

Microsoft Cube SDKの構造

SDKはおおまかに以下のような構成になっています。

SDK
     - Common
     - Kinect Transport
     - Deploy Tool
     - Samples
         - Cinder Sample
         - NodeJS Sample
         - Unity Sample

Common

CommonパッケージはKINECTからのデータ取得、データの変換 *1KINECTのデータをサーバに送信する責務を担っています。

Kinect Transport

Kinect Transportパッケージは複数PC間でのデータ送受信の制御や設定をする責務を担っているようです。以下、READMEから引用します。

KinectTransport is designed to push Kinect2 data from one machine to one or many other machines over a ethernet network.

Kinect Transport自体はSDKとして利用するものではなく、KINECTのデータを送信/受信したいPC上で実行させ、どこに対してどのような情報を送信するかを設定するGUIを提供するためのものになっています。

Deploy tool

Deploy toolパッケージは中央サーバから接続されたクライアントに対して実行可能なプログラムを配布し、プログラムの開始・終了を制御する責務を担っています。こちらもREADMEから引用すると以下のようになります。

Additionally the Deploy Tool provides a method for automatically pushing builds from a centralized server to each side of the cube and starting and stopping the application.

Samples

NodeJS, Cinder, Unityのサンプルがリポジトリに含まれています。詳しく見ていませんが、KINECTのデータを配布するためのTCPサーバはNodeJSで実装されているようです。

早くもGitHub IssueにはUnityのサンプルが動かないバグが公開されていますが、チュートリアルはNodeJSなので大丈夫でしょう…たぶん。

インストール方法

まだ試していませんが、READMEそのままを日本語訳したメモです。

  1. このリポジトリをcloneする
  2. NodeJSをインストールしていない場合はインストールする
  3. NodeJSSample ディレクトリに移動して npm install

サンプルの実行方法

  1. KINECTを接続し、KINECT Transportを実行します
  2. NodeJSSample ディレクトリに移動して server.bat を実行します
  3. ブラウザで http://localhost:8000 を開いてKINECTからデータが送信されていることを確認します

MS Cube SDK雑感まとめ

KINECTのデータをネットワーク越しに利用したい、複数台のKINECTのデータをまとめて制御したいという要望はKINECT v1の時点から多くありました。

ちゃんと調べたわけではありませんが、TCPソケットやWebSocketを利用してネットワーク経由でKINECTのデータを扱う実装はすでに多くあると思われます。 *2

現状で感じられるMS Cube SDKの価値は以下の様な点でしょうか。

  • SDKの形としてまとまっている
  • 複数台でアプリケーションを構成する前提としてバイナリ配布のツール(Deploy Tool)もちゃんと付いている

MS Cube SDK自体は恐らくこの状態から大きく進化することはないでしょうが、このすぐ先には複数KINECTから取得した点群の合成やフレーム合わせが待っているわけです。楽しみですね(だれが実装するかは置いておいて) : )

*1:データを圧縮するためにバイナリに変換しているようです

*2:私も2013年の前半にWebSocketで、2014年にMQTTで実装しています