Kinectに関するメモとか
これからしばらくKinectをやります。
実際はKinectをやるという表現は正しくなくて、センサーストリームを統合的に制御してインターフェースに反映する何かをやるわけですが、Kinectはほぼマストな要件として入っているので、まあKinectです。
自分が考えている範囲ではなんかサーバーっぽいものがあるといいなあと思っているので、Kinectを使ったストリームサーバーの実装を幾つか調べてみました。
要求としては以下のような感じ
- いろんな処理系に同じストリームを渡したい
- ストリームに情報を付加した上で渡したい
- 複数のストリームを束ねられるとなお良い
- スケールする
- シンプルでわかりやすい
MissingLink/KineticSignege
UDP portから同一ネットワーク内にMessagePackのデータをブロードキャストする漢らしいスタイル。シンプルで良い。
MessagePackはまだよくわかんないけど、バイナリっぽい何かにシリアライズすることでJSONより効率的にデータを伝送するための実装…っぽいです。
UDPなので
- 情報が欠損する可能性がある
- 受け取り側で欠損や時系列の前後に気づくことはできない
arcatdmz/kinect-thrift-server
作者の解説ブログ
http://junkato.jp/ja/blog/2013/02/22/kinect-for-java-via-thrift/
Thriftというプロセス間通信のためのフレームワークを使ってサーバー・クライアントでデータ通信するスタイルです。知的なかほりが漂う感じ。
ThriftはFacebookが作成したフレームワークで、まさにプロセス間通信のためのブツなので目的にはあってそう。あと、作者の方いわくドキュメントはそれなりに充実してそう。
Thriftの仕様が理解しきれてないレベルではハマると死ぬかもしれない。
AIR SHODOUのエンジン - KINECT開発を加速するライブラリ
(たぶん)TCPソケットサーバーのフレームワーク。Githubとかでは見つけられなかった。公開されてないっぽい?思想的には近そうだしあれば便利そうだけど無いからどーしよーかなー感が漂うひと品。
Kinect + OpenNIを使用して取得した「空間の使用頻度」をsocket.ioを利用してリアルタイムに確認する
Kinect SDK 1.8 から Webserver for Kinect Data Stream がAPIとして提供されており、WebSocketで簡単にデータをぽんぽん飛ばせるようになっている。
この例はデータ自体はJSONで受け取っていて、クライアントへの描画をWebSocketでやっている感じなので例としては微妙かも。あとでアップデートする。
(追加)Kinect Research Framework
TPC or UDPでデータ転送しているっぽい。
動作するプラットフォームや対応する言語は幅広く定義されている。
転送できるデータは以下の様な感じで
The array holds both the 3d world coordinates and flatten 2d coordinates of all joint positions, internal references, and external references
Internal referencesというのは2つのjoint間の距離および角度、external referencesというのは空間上に定義した点からの距離および角度が格納されているようです。
なんかソースが見当たらない(Downloadsにバイナリらしきブツは存在する)のがちょっと不安。
まとめ
まだよくわからない。
KINECT for Windows SDKプログラミングC#編
- 作者: 中村薫,宮城英人,田中和希
- 出版社/メーカー: 秀和システム
- 発売日: 2012/03
- メディア: 単行本
- 購入: 1人 クリック: 7回
- この商品を含むブログ (16件) を見る
- 作者: 中村薫,新里祐教,鷲尾友人
- 出版社/メーカー: 秀和システム
- 発売日: 2013/08/31
- メディア: 単行本
- この商品を含むブログを見る