Kinect勉強会 vol.3 いってきた。

Kinect勉強会に行ってきたので、書き留めておきます。
今回は品川インターシティの日本マイクロソフト本社のセミナールームでした。
@hagino3000さん曰く、MSのUGSS(コミュニティ支援サービス)で気軽に借りられたとか。

  • エントリ

@harino3000さんの「キネクトハッカーズマニュアル」の解説です。
画像処理初心者、C++初心者、Kinect知らん人、チームラボ入社希望者が対象だそうです(笑)。
トピック:ジェスチャを使ったPCの操作、深度画像をつかった衝突判定、ユーザー検出機能をつかったWEBアプリ。
「〜マニュアル」争奪じゃんけん大会も。毎回、皆さん太っ腹です。

キネクト ハッカーズマニュアル

キネクト ハッカーズマニュアル

日本マイクロソフト太田さんによる解説。
KinectSDKの概要。ライセンスについては何気ちょっと時間さいてた。MSのUXチームはメインC#でやってる。
組み方(C#ベース)。「直感的に組めるよ」っていうコンセプト。ユーザー7人までのトラッキング
"HelloWorld"的なデモ:単色深度画像。複数人もトラッキングしている。
WindowsPhone7との連携デモ:「守衛さん、誰か来ましたよ」。WP7のPushNotificationを用いる。ネットワークの都合で動かず。残念。

  • NUI x Buissiness

@kaorun55さんのKinect商用利用に関する経験談と考察。
イノベーション:「イノベーション」とは「未来には普通にあるものを作ること」だ。NUIはいままでPCを使っていなかったユーザーも使える可能性。これが議論のベース。
ライセンスの問題。ライセンスの復習:Kinect機器=「XBOX以外のデバイスに接続してはいけない」。「デモンストレーションには可」by MSR。この状況でどうするか.. XtionPROを使う。商用利用可=Xtion+OpenNI(MS以外)が「文句を言われない」組み合わせ。XtionにWEBカメラを取り付けてみた:スペックつらい。フレームが合わない。XtionPROLiveが出ます。これでカメラ画像+深度画像をつかって開発ができる。
開発するときの課題。言語:C/C++はハードル高い。NUI:ジェスチャによるパワポ操作でも疲れる。画面が3Dだと馴染むのではないか。
品質の課題。テストはどのように行うか。ONIファイルでデータを流し込む。
でもKinect開発は楽しい。大変だけど、NUIの可能性は魅力的。「未来の普通を先取りしよう」。

  • 最強のNUIをつくる

@nekonomicsさんのLT。Kinectをコントローラとして用いるデモ。ジェスチャでMacのウィンドウ上をかーびぃが動き回るデモ。PC2台(センサーPC:Win+メインPC:Mac)で実施。「NUIはPCと相性がよくない」。
Kinectは"NUI養成ギブス"である。

  • ProccessingでKinect簡単プログラミング

@ksasaoさんのLT。Processingはプログラミング言語。とにかく簡単に記述できるのが身上なので、とっつきにくい初心者に向いてる。ProcessingはArduino等のデバイスでも軽快に動作。

@hirotakasterさん(SIPropの人。じつは昔ちょっとお世話になったな..)のLT。
beegleboard-xM+AndroidからシリアルでKondoAnimalを制御。人に追従して移動する。人追従はシンプルで顔検出して前方4方向のいずれかに向かう。顔検出はOpenCVでやっている模様。

  • 疑問点・所感

太田さん曰く、MSのKinectSDKによって取得できる深度バッファの上位3bitがトラッキングしているユーザーの数(上限7人)。MSRは7人が上限だと仕様を割り切っているのか。それとも後から4bitに仕様変更があるのだろうか。怖いのでハッキリしてほしい。
今日は話題に登らなかったが、MSのKinectSDKには音声認識機能(英語のみ)がついている。NUIにとって音声は欠かせない。身体が疲れるのはKinectのモーションセンサー機能のみを使っているからで、深度情報を使っているかぎりその課題は半永久的に消えない。NUIは音声も含めた大きな概念であることを議論に含めてほしい。
XtionPROにカメラを取り付けるという試みが紹介されてたけど、キャリブレーションしてないからカメラと深度画像の座標が一致しないのは当然。正確に言えば、高剛性のKinectも出荷状態でズレているし経年とともに徐々にズレるはず。物理的にカメラと赤外線センサーが異なる座標上に位置している以上、至近でのズレは否めないが、ステレオキャリブレーションのようなことをすれば、これらは一致する。
そういえば最初にAndroidOpenCVをバインドしたのも日本Androidの会の人だったなぁ。。
思った以上にC/C++への風当たりが強いことが気にかかった。私は短いプログラマ人生のほとんをC++で食べてきたし、OpenCVも長くなってきたので、なんの違和感もないが、毎回勉強会で指摘される点。OpenCVやロボットの世界もまだまだC/C++なのでやめるわけにはいかないが、ずっと気にかかっている。画像や3Dポリゴンを扱うコーディングはどの言語がコーディングしやすいのか、答えが必要。OpenCVはその答えをPythonとしている。MSはC#。OGREはC/C++。さてさて、俺は??
私はKinectを精密センサーとして活用しようとしているので、NUIについて語れる論を持ち合わせていないが、@nekonomicsの仰った「究極のNUIは空気が読める」は至言だと思う。それは世界中のコミュニケーションロボットが目指しているものだから。

Xbox 360 Kinect センサー

Xbox 360 Kinect センサー