新型Kinect for Windows v2 Developer Previewプログラミング入門(1)

新型Kinect for Windows v2 Developer Previewプログラミング入門(1)

日本最速レビュー。開発者目線で調査する「Kinect for Windows v2」限定開発者プレビュー版

2013年12月16日

2014年に一般発売が予定されている新型Kinectを早くも先行レビュー。ハードウェアスペックや、新しくなったソフトウェア構成、センサー類の進化について紹介する。

初音 玲(Microsoft MVP for Visual Basic)
  • このエントリーをはてなブックマークに追加

注意事項

 本稿で検証に使用したKinect for Windows v2 Developer Preview(開発者プレビュー版)のソフトウェアやハードウェア、APIは暫定的なものであり、正式版では変更される可能性があります。

 また、本稿は早期提供プログラムの参加規約で公表が許可されている事項について実際に確認した結果に基づき記載していることもあらかじめご了承いただきたい。

Kinect for Windows v2 Developer Previewとは

 Kinect for Windows v2(バージョン2)は、2014年に一般発売が予定されている新型のKinectである。その発売に先行する早期提供プログラムとして「Kinect for Windows v2 Developer Preview」(以下、Kinect2プレビュー版)が2013年11月25日から世界規模で提供された。この早期提供プログラムは事前に募集が行われており、公式ブログによれば「Thousands of developers」(=数千人の開発者)に発送したとあり、届いたキットの内容から感じられる「工場の中での試験に使う」感も合わせて考えると、対象者は数千人といっても1000とか2000とかいう限定規模であると考えられる。

 なお、Kinect2プレビュー版のゼブラ模様はアルファ版ハードに施された個体識別用のマーカーである(Kinect2プレビュー版では全て同じ柄であったが)とのことだ。

Kinect for Windows v2 Developer Preview
図1.1 Kinect for Windows v2 Developer Previewのデバイス

 Kinect2プレビュー版のシステム要件は以下のとおりであり、比較的高スペックなシステム要件が設定されている。

項目スペック
OS Windows 8/Windows 8.1
CPU Core i7 2.5GHz以上の64bitプロセッサ
メモリ 4GBytes以上
GPU DirectX 11対応GPU(例: Intel HD4000、NVidia GeForce GT640など)
USB 内蔵USB 3.0ホストコントローラー(IntelまたはRenesas chipset)
USB 3.0増設アダプターを使用する場合は、Gen-2対応であること
開発環境 Visual Studio 2012、Visual Studio 2013(Expressも可)
表1.1 システム要件

 このシステム要件はあくまでも現状での話であり、チューニングが今後進んでいけば要件も緩和されることが予想される。

 ただし現時点で一番ネックになっているのは、USB 3.0のホストコントローラーにチップセットが指定されている点だ。他のDeveloper Preview参加者も苦労しているようだが、データ転送量を考えると緩和されないような気がするので、来るべきKinect for Windows 2.0の発売に備えてUSB 3.0周りの点検およびリプレイスを計画しておくのがよいだろう。

システム構成

ハードウェア構成

 Kinect2プレビュー版のハードウェアは、新型Kinectデバイスと、電源、そして「電源とUSB 3.0」の分離ボックスから構成されている(次の画像)。

ハードウェア構成
図2.1  ハードウェア構成

 分離ボックスはいかにも製品版ではない工場内試験中の雰囲気を醸し出しているが、だからこそ写真を掲載してよいか判断に迷うため写真は割愛させていただくが、新型Kinectから伸びているケーブルの先、つまり分離ボックスに差し込む部分はKinect for Xbox Oneと(あくまでも現状は)同一になっている(次の写真)。

(参考画像)Kinect for Xbox Oneのコネクター
図2.2 【参考画像】Kinect for Xbox Oneのコネクター

ソフトウェア構成

 Kinect2プレビュー版はv1のころと異なり、SDKとドライバーの間に「Kinect Service」という常駐プログラムが存在していることが大きな特徴だ。

ソフトウェア構成
図2.3 ソフトウェア構成

 この構成はLeap Motionでも採用されている方法であり、Leap MotionではLeap ServiceがWebSocketをサポートすることでブラウザーからもローカル接続してJavaScriptコードからLeap Motionが使えるようになっている。

 新型KinectでもKinect ServiceがWebSocketをサポートするようになるのかは執筆時点では全く公式アナウンスがないが、今後どのようになっていくのか注目していきたい。

インストール

 本稿の執筆時点では、Kinect2プレビュー版のSDKは早期提供プログラム参加者にのみ許可されたサイトからダウンロード提供されている。SDKをダウンロードしてインストール後にKinect2プレビュー版を接続すると、次の画面のようにデバイスマネージャーに「KinectSensor Device」が表示される。

デバイスマネージャー
図2.4 デバイスマネージャー

 デバイスマネージャーに表示されていることを確認したら、ファームウェアアップデートを行う。このファームウェアアップデートで、Kinect2プレビュー版のファームウェアバージョンはKinect for Xbox Oneのファームウェアバージョンとほぼ同じになる。

センサー類の変更点

 以下では、センサー関係の変更点について項目別に簡単に説明していこう。

カラーカメラ

 カラーカメラの最高解像度が1920×1080となった。いわゆる「1080p」とか「FHD」と呼ばれている解像度であり、v1と比較すると、取得される映像の違いは一目瞭然(りょうぜん)だ。

深度センサーの方式変更

 現行v1の深度センサーでは、3Dスキャナーなどでも利用されている、あらかじめ決められた幾何学的ドットパターンを照射して、そのパターンのゆがみで距離を測定していた(参考動画)。この方法は比較的価格も安く、また低消費電力で動作できるという利点がある。

 一方、Kinect2プレビュー版やKinect for Xbox Oneで採用されている深度センサーの方式は、v1と異なり「ToF」(time-of-flight)方式を採用している。ToFは赤外線などを一定間隔でフラッシュのようにパルス照射してその反射光が戻ってくるまでの時間で距離を測る方法だ。イルカやコウモリなどが超音波で行っている方法を、新型Kinectでは赤外線で行っていると想像すると分かりやすい。

 ToFの特徴はv1方式よりも測定できる対象物が小さい点だ。カラーカメラの解像度向上と合わせて、より小さなものも識別できるように深度センサーの方式が変更されたことも、新型Kinectが目指している方向性を端的に表しているといえるだろう。

 センサーの方式が変わったことによる利点のもう1つは、複数台のKinectを使ってセンシングするときなどに、お互いの干渉を受けないような実装ができる点だ。実際に2台のKinectを次の写真のように配置して同一対象に対して深度センサーで距離を測ってみたが、干渉しているようなノイズなどは一切見られなかった。

2台同時実行
図3.1 2台同時実行

SDK 2.0の新機能

 現時点で判明しているKinect2プレビュー版対応SDK 2.0の新機能は以下のとおり。なお、現行のKinect v1をSDK 2.0で利用することはできないので、Kinect2プレビュー版の利用を前提とした新機能である点も覚えておいてほしい。

Kinect for Xbox One対応

 新型XboxであるXbox One添付のKinectをセンサーとして使用できる。ただし、Xbox OneとKinect for Xbox Oneとの接続は特殊な形のコネクターを採用しているため、Kinect2プレビュー版付属のUSB3.0+電源ライン分離ボックスがないとPCとKinect for Xbox Oneを接続できない。そのため、Xbox Oneを入手して何らかの方法でSDK 2.0を手に入れたとしても、Kinect for Xbox Oneを利用することはできないので注意してほしい。もちろん、早期提供プログラム参加者以外がSDK 2.0を入手したりプログラムから利用したりするのは早期提供プログラムの参加規約に抵触する可能性がある。

深度センサーの視野拡大

 具体的な視野角度は公表されていないが、現行のv1と比べると深度データの横方向も縦方向も視野が拡大されていることが分かる。

カラーデータ解像度の1080p化

 カメラ解像度の変更に伴いカラーデータも1920×1080の解像度をサポートした。

Lighting Independent Infrared(30fps)

 毎秒30回の赤外線照射により距離を測定。

Depth fidelity(3x)

 深度データの分解能が(従来の)3倍。

マイクロフォンの改良

 ゼロバランス(音量バランス)の調整が行われたようだ。

骨格データが計測ポイント増大

 骨格データのポイントが、v1の「20カ所」から「25カ所」に増大した。追加されたポイントは、「HandTipLeft(左手指先)」「HandTipRight(右手指先)」「ThumbLeft(左手親指)」「ThumbRight(右手親指)」「Neck(首)」の5カ所。

骨格データの同時取得可能人数の増加

 同時に骨格データが取得できる人数がv1の「2人」から「6人」に増えた(次の画面は実際に6人の骨格を認識している例)。

6人同時取得
図4.1 6人同時取得

手の開閉ジェスチャーを検出

 骨格データの親指(Thumb)がトラッキングできるようになったことに伴い、手の開閉をジェスチャーとして検出可能になった

深度データの測定可能範囲の拡大

 深度データの測定可能範囲は、v1の0.8~4.0m(近接モードに切り替えると0.5~3.0mまで縮まる)から、0.5~4.5mに拡大された。

複数アプリ対応

 Kinect対応アプリを複数立ち上げて同一のKinectセンサーを同時に利用可能になった。これはSDKからデバイスドライバーに直接問い合わせをせずに、間に「Kinect Service」という常駐プログラムか入ったことによる効果だと思われる。

まとめ

 製品版が発売になる前にKinect2プレビュー版は何回かのアップデートが予定されている。それがSDKレベルなのかファームウェアレベルなのか、ハードウェアレベルなのかは分からないが、早く次のアップデートが来ないか、筆者はワクワクしている。なお、SDK 2.0の特徴にKinect for Xbox One対応があったので、手持ちのKinect for Xbox oneを代わりに接続してサンプルを動かしたところ、正常に動作したことを報告して本稿を〆たい。

 なお、次回はSDK 2.0を使ったプログラミング方法について解説したいと思う。

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

1. 【現在、表示中】≫ 日本最速レビュー。開発者目線で調査する「Kinect for Windows v2」限定開発者プレビュー版

2014年に一般発売が予定されている新型Kinectを早くも先行レビュー。ハードウェアスペックや、新しくなったソフトウェア構成、センサー類の進化について紹介する。

2. Kinectプログラマー向け速報第2弾。SDKの相違点から新型Kinectの実力を探る

Kinect for Windows v2 Developer Preview向けのSDKは、以前のv1とどこが異なるのか? その主要な差異を示しながら、v2での基本的なプログラミング方法を紹介する。

3. 新型Kinectの骨格データに関する新機能とは?

KinectSDK2プレビュー版の距離データと骨格データに関する主要な変更点を解説。手の開閉が判定できるようになり、グー、チョキ、パーも判別可能に。

4. 世界最速・最新情報、March SDK Update(Kinect for Windows v2 Developer Preview)の内容に迫る!

本日、SDKの3月更新版が提供された。その更新点として「Kinectファームウェアの更新」「Kinect Serviceの変更は特になし」「Kinect Studioの提供」について紹介。

5. Windowsストアアプリ対応に、Unityサポートも ― 最新April SDK Update(Kinect for Windows v2 Developer Preview)の新機能

4月30日に提供が開始された「April SDK Update」の内容を解説。Windowsストアアプリ対応/Unityサポート/サービス・スピンダウン機能/Audio APIなどの新機能を紹介する。

サイトからのお知らせ

Twitterでつぶやこう!


Build Insider賛同企業・団体

Build Insiderは、以下の企業・団体の支援を受けて活動しています(募集概要)。

ゴールドレベル

  • 日本マイクロソフト株式会社
  • グレープシティ株式会社