Kinect for Windows v2入門 ― C++プログラマー向け連載(6)

Kinect for Windows v2入門 ― C++プログラマー向け連載(6)

Kinect Studioとは?

2014年12月29日 改訂 (初版:2014/04/02)

Kinectアプリ開発支援ツール「Kinect Studio」の機能や使い方を解説する。データを記録/再生できるので、開発&デバッグが簡単に。

杉浦 司(Microsoft MVP for Kinect for Windows)
  • このエントリーをはてなブックマークに追加

 Kinect Studioとは、Kinectアプリケーションの開発者向けに提供されている開発支援ツールである。

 Kinect Studioは、Kinectから取得できる「Color」や「Depth」といったデータをファイルに記録しておくことができる。また、保存したファイルを再生することで、Kinectアプリケーションは特別にソースコードを変更することなく、Kinectから記録したデータを受け取っているように振る舞うことができる。

 この「記録」「再生」機能により、Kinectアプリケーションの開発、デバッグが格段に楽になる。

 「Kinect Studio」はKinect SDK v1でも提供されていたが(以下、Kinect Studio v1)、Kinect SDK v2ではさらに扱いやすくなっている(以下、Kinect Studio v2)。

 今回は、「Kinect Studio v2」を紹介する。

Kinect Studio v2

 Kinect Studio v2の記録、再生の手順を解説していく。

記録手順

1Kinect Studio v2(KStudio.exe)を起動する。
2[RECORD]タブを開き、[Connect/Disconnect]ボタンを押すとKinect Serviceに接続され、ViewエリアにKinect v2が取得しているデータが表示される。
3[Stream Select/Not Select]チェックボックスで記録するデータを選択する。
このときデータの依存関係にある項目(DepthとIRなど)は自動で選択される。
4[Start Recording]ボタンを押すとデータの記録を開始、[Stop Recording]ボタンを押すとデータの記録を終了する。
標準では「C:\User\(UserName)\Documents\Kinect Studio\Repository」に.xefファイルが保存される。

図1 Kinect Studio v2
図2 記録の仕組み

 Kinect Studio v2ではKinect Studio v1では記録・再生できなかったAudioデータも記録・再生できるようになった*1

 これにより、Speech Recognition(音声認識)やBeamforming(水平面音源方向推定)を実装したKinectアプリケーションを、実際に利用する人の音声でデバッグやテストができるなど非常に開発に役立つだろう。

  • *1 Kinect Studio v1ではAudioデータは記録・再生できなかった。Kinect Studio v1による再生時も、Kinect v1がリアルタイムで取得しているAudioデータがKinectアプリケーションに流れ込む。

 Kinect v1では、複数のアプリケーションが同時にセンサーに接続できなかった。そのためKinect Studio v1では、記録時にKinectアプリケーションへの接続(プロセス間通信)が必要だった。

 連載 第1回で紹介したように、Kinect v2ではKinect Serviceを介することで複数のアプリケーションが同じセンサーからデータを取得できるようになった。そのためKinect Studio v2では、記録時にKinectアプリケーションへ接続する必要はなくなった。

【コラム】コマンドプロンプトからKinect Studioを操作する

 Kinect Studio v2にはKSUtilというコマンドプロンプトからKinect Studioを利用できるツールが同梱されている。

 KSUtilを使うと、秒数を指定したデータの記録や、記録したデータの再生、比較などが行える。例えば、以下のようなコマンドを入力すると、指定したデータ(と依存関係のデータ)を10秒間記録できる。

コンソール
mkdir c:\clip
cd %KINECTSDK20_DIR%\Tools\KinectStudio
KSUtil –record c:\clip\clip.xef 10 –stream color depth ir bodyindex body
リスト1 KSUtilでColor、Depth、Infrared、BodyIndex、Bodyを10秒間記録して「c:\clip\clip.xef」ファイルに保存する

 次の画面は、上のコマンドを実際に実行した例だ。

図2 コマンドプロンプトからKinect Studioを操作する

 コマンドプロンプトから扱えるので、一定間隔ごとにデータを記録するなど便利に使えるだろう。詳しい使い方はKSUtilのヘルプ(KSUtil –help)を参照されたい。

再生手順

1Kinect Studio v2(KStudio.exe)を起動する。
2[FILE]タブの[Open (Read-only)]から再生したいファイルを選択する(または、再生したいファイルをダブルクリックで開く)。
3[PLAY]タブを開き、[Connect/Disconnect]ボタンを押すとKinect Serviceに接続される。
4[Stream Select/Not Select]チェックボックスで再生するデータを選択する。
タイムラインで再生する範囲(開始位置、終了位置)やループ回数なども設定できる。
5[Play]ボタンを押すと再生、[Pause/Stop]ボタンを押すと停止される。
データが再生されると、Kinect Serviceにはリアルタイムのデータではなく、ファイルに記録されたデータが入力される。

図3 データをKinectアプリケーションへ流し込む
図4 再生の仕組み

 Kinect Studio v2でデータを再生すると、Kinect Serviceに流れ込むデータが、「リアルタイムで取得しているデータ」から「ファイルに記録されているデータ」に変わる。つまり、再生したデータがKinectアプリケーションに流れ込む。特別にソースコードを変更してリビルドしたり設定を変更したりする必要はない。

 Kinect Studio v1では、記録したデータをアプリケーションに流し込む再生時に、Kinect v1のPCへの接続が必要だった。

 Kinect Studio v2プレビュー版では、Kinect v2プレビュー版がPCに接続されていなくても記録したデータをアプリケーションに流し込み再生できるようになった。

 これにより、あらかじめデータを記録しておけば、開発者はセンサーを接続できる環境がなくてもアプリケーションの開発・デバッグができるようになる。例えば、移動中や外出先などセンサーを携行していない、またはセンサーがあっても電力を供給できないような環境でも、開発環境をセットアップしたPCさえあれば開発・デバッグが可能になる。

まとめ

 今回はKinect Studio v2の改良点とデータの記録・再生方法を紹介した。次回はAudioBeam(=水平面音源方向推定)を取得するサンプルプログラムを紹介する。

※以下では、本稿の前後を合わせて5回分(第3回~第7回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

3. Kinect v2プログラミング(C++) - Depth編

Kinect SDK v2プレビュー版で、Depthデータを取得する方法を説明する(改訂版)。

4. Kinect v2プログラミング(C++) - BodyIndex編

Kinect SDK v2で、BodyIndex(人物領域)を取得する方法を、サンプルコードを示しながら説明する(正式版に合わせて改訂)。

5. Kinect v2プログラミング(C++) - Body編

Kinect SDK v2に実装されている主要な機能の紹介は、一通り完了。今回は、Body(人物姿勢)を取得する方法を説明する(正式版に合わせて改訂)。

6. 【現在、表示中】≫ Kinect Studioとは?

Kinectアプリ開発支援ツール「Kinect Studio」の機能や使い方を解説する。データを記録/再生できるので、開発&デバッグが簡単に。

7. Kinect v2プログラミング(C++) - AudioBeam編

Kinect v2では、Microphoneアレイにより水平面音源方向の推定(AudioBeam)や音声認識(Speech Recognition)などが行える。今回はAudioBeamを取得する方法を解説する(正式版に合わせて改訂)。

サイトからのお知らせ

Twitterでつぶやこう!