Kinect for Windowsで機器を作るヒント(7) ―― 実験でもっと深くKinectを理解する

茂出木 裕也

tag: 組み込み Interface

技術解説 2012年9月18日

●Kinect for Windows Developer Toolkit Ver1.5.2

 第5回目の記事「Kinect for Windowsで機器を作るヒント(5)」では,Developer Toolkitのバージョン1.5.1を紹介しましたが,その後,8月にToolkitのバージョンが1.5.2にアップデートされました.そこで,まずはV1.5.2の変更内容を紹介します.

 Developer Toolkit v1.5.2 は次のURLから入手可能です.
http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx

 図1の「DOWNLOAD TOOLKIT」のボタンをクリックして,KinectDeveloperToolkit-v1.5.2-Setup.exe をダウンロードし実行します.

図1 Developer Toolkit v1.5.2の入手

 今回のバージョンアップもDeveloper Toolkitのみのアップデートで,Kinect for Windows SDKについてはv1.5からの変更はありません(Kinectセンサーのデバイス・ドライバやランタイム・モジュール類はv1.5のまま利用できます).
また,今回からリリースノートがバージョンごとに用意され読み易くなりました.リリースノートには,新しく追加された機能の説明のほか,既知の問題などの情報もありますので,内容を確認することをお勧めします.

・Release Note V1.5.2 Toolkit Release
 http://msdn.microsoft.com/en-us/library/jj591489
・Release Note V1.5.1 Toolkit Release
 http://msdn.microsoft.com/en-us/library/jj572481
・V1.5.0 SDK and Toolkit Release
 http://msdn.microsoft.com/en-us/library/jj160161

●Toolkit v1.5.2の変更点
 今回のToolkit v1.5.2では,次の2つの変更がありました.
(1)新しいサンプル「WPFD3Dinterop」の追加
 Developer Toolkit Browserに「WpfD3DInterop」という名前で新しいサンプルが追加されています(図2).このサンプルは,C#/WPF(Windows Presentation Foundation)のコードから,DirectX 11のレンダリング機能を利用するC++のコードを呼び出して利用するサンプルです.WPFでユーザーインターフェイスを設計しながら,Direct3Dによる高度なグラフィックス処理を実装できます.

図2 新しく追加されたサンプル「WPFD3Dinterop」

 このサンプルを実行するには,DirectX End-User Runtimesをインストールする必要があります(ソースコードをビルドするには,DirectX SDKが必要).Developer Toolkit Browser からダウンロードページに移動できるので,入手してインストールします(図3).

図3 DirectX SDK や End-User Runtimes のインストール


(2)Kinect Studio の再生機能の改善
 SDK v1.5で追加されたKinectアプリケーションの開発支援ツール「Kinect Studio」(図4)も変更されています.使い方は第2回目の記事「Kinect for Windowsで機器を作るヒント(2)」でも紹介していますが,Kinect Studio を利用すると,Kinectセンサーの深度カメラとカラーカメラから取得したストリームデータを記録し,後から再生する事ができるようになります.
 記録したデータは.XEDファイルとして保存され,このファイルを別のPCにコピーしても再生できます. Kinect Studio V1.5.1では,.XEDファイルを再生する際に,記録時に利用したKinectセンサーと同一のKinectセンサーが無ければ,深度カメラとカラーカメラ間の正確な同期が取れないといった問題があったようですが,今回のアップデートではこの問題が解決され,記録時と同一のKinectセンサーが無くても正しく再生できるように改善されています.

図4 Kinect Studio

 

====

●Kinectセンサーをより深く理解するための実験

 ここからは,Kinectセンサーを活用する上でのヒントとなるような情報を紹介します.

●Kinectの赤外線投影パターンを見てみる
 Kinectは深度センサーを搭載しているので,対象の物体までの距離(奥行)を測定することができるのが特徴です.Kinectを利用した装置の開発として筆者が相談を頂く中には,Kinectを使わずに一般的なWebカメラでも十分実現できるような内容もありますが,この深度センサーをいかに活用するかが,Kinectを利用する判断基準になると考えています.
 Kinectの深度センサーの認識範囲は,水平方向に57.7°,垂直方向に43.5°とされています.また,上下に角度を変えることができるチルト・モータが付いているので,-27°から+27°までの範囲で稼働します(図5).

図5 Kinectの深度センサーの認識範囲 (Kinect for Windows HUMAN INTERFACE GUIDELINES より引用)

 Kinectが奥行を測定する詳しい仕組みは公開されていませんが,赤外線プロジェクタから照射されたパターンを赤外線カメラで読み取り,そのパターンの変化から物体の奥行を測定しているようです.
 赤外線は肉眼で見ることができませんが,今回はSONYのナイトビジョン機能搭載カメラを使い,Kinectが出力している赤外線の投影パターンを撮影しました(写真1).

写真1  Kinectが照射する赤外線のドット・パターン

 Kinectの赤外線プロジェクタからは,赤外線の無数のドット(点)が照射されています.照射された赤外線のドットは壁より手前にいる人物に当たり,その後ろの壁の所で陰になっています.Kinectは自身が投影したドットパターンの変化を読み取り,人物が壁より手前にいることを認識するようです.
 実際にこのような形で赤外線パターンが照射されているという仕組みを知り,Kinectのアプリケーションを開発する際に参考にしてください.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日