やってみよう!Kinectアプリ開発 - 第1回 Kinect(キネクト)の紹介

2012-05-31 12:54

はじめに

本連載では Kinect™ for Windows® SDK を用いた Kinect™ 用 Windows® アプリケーションの開発を紹介します。コンセプトは、一人でも多くの人が、Kinect (キネクト)を利用したアプリケーション開発を手軽に体験できることを目指します。これまで Microsoft® 社のテクノロジーにあまりなじみがなく、「Visual Studio®は触ったことがない」「C# は書いたことがない」という人も対象とし、適宜必要な説明を加えながら進めます。また、手軽に使い方を理解できるよう、はじめのうちは必要なエラー処理なども省き全体像を把握することを目指します。

図1: Kinect for Windows センサー

 

連載の構成

本連載は以下の構成を予定しています。

  1. Kinectの紹介 (今回)
  2. Kinectおよび開発環境のセットアップ
  3. Kinect for Windows SDK で実現できる機能の紹介 (数回に分けて説明)
  4. Kinect for Windows SDK を使った応用サンプルアプリケーション開発の紹介 (数回に分けて説明)

まずは全体像の把握を目指すので、C#やVisual Studioなどの説明は独立しては行わず、必要に応じて都度行います。

 

なお、本連載では2012年5月21日リリースの Kinect for Windows SDK バージョン 1.5を使用する予定であり、記載された情報はこのバージョン時点のものになります。

Kinectの紹介

Kinectとは

Kinect(キ ネクト)とはMicrosoft社のゲーム機 Xbox 360® 向けの、ナチュラルユーザーインターフェース(NUI:Natural User Interface)デバイスです。 KinectにはRGBカメラ・深度センサー・マイクアレイなどのセンサー類が内蔵されていて、ゲーム機やコンピューターはこれらのセンサーを利用し、プレイヤーやその骨格の検出や音源の方向特定を行います。これによってKinectを使ったアプリケーションでは、プレイヤー自身の動きや声をそのまま入力 とすることができ、コントローラを使わない直観的な操作を可能とするのです。「まるでSF映画のように、自分のジェスチャーで操作をする、そんなおどろきの未来が現実になる」(※1)ことを可能とする新しい入力デバイスがKinectです。
※1: http://www.xbox.com/ja-JP/kinect

 

Kinect は1ゲーム機の周辺機器であったにも関わらず、その先進性や後述する汎用入力デバイスとしての利用方法が確立されたため、発売2か月後の2011年1月に は、販売台数が1,000万台を超え、「家庭用電化製品端末」世界最速の売り上げとギネスブックにも登録される (※2)そうです。
※2: http://community.guinnessworldrecords.com/_Kinect-Confirmed-As-Fastest-Selling-Consumer-Electronics-Device/blog/3376939/7691.html

 

汎用入力デバイスとしての利用方法の確立


Kinect はXbox360用の入力デバイスとして登場したのですが、非常に安価でありながら高機能なセンサーを持つこと、未サポートの使い方ですがUSB機器としてパソコンにも接続できたことから、開発者達の大きな注目を集め、発売直後からゲーム以外への利用が模索されてきました。

有志による OpenKinect の開発から、 PrimeSense™社などによる OpenNI™ の公開を経て、現在ではMicrosoft®社も公式のSDK(Software Development Kit)を公開、 Windows®用のKinectセンサー「Kinect for Windows センサー」を発売しました。

これらを利用することで、開発者は高価な開発環境なしに Kinect用アプリケーションを開発することができるようになり、Kinectは単なるゲームデバイスの枠を超え、より汎用的な入力デバイスとして広がりつつあります。

 

Kinectでできること

Kinectには大きく以下の機能があります。

  • カラー情報取得
  • 深度情報取得
  • プレイヤー・骨格認識
  • 音源方向特定
  • 音声認識
  • チルト角度制御

Kinect for Windows SDK を利用したアプリケーション開発では、これらの機能をアプリケーションから利用できます。また、ジェスチャーの認識や顔検出といった機能は、Kinect for Windows SDK v1.0時点では外部ライブラリの利用や自作が必要でしたが、v1.5からはサンプルにジェスチャーの認識が追加されると共に、Microsoft Face Tracking Software Development Kit for Kinect for Windowsが同梱され、顔の認識や、目や口などの各部位のトラッキングができるようになりました。

 

必要なもの

Kinectを使ったアプリケーション開発には開発環境として以下のハードウェア・ソフトウェアが必要となります。

 

開発環境

Windows® 7

  • 組み込み向けの Windows Embedded Standard 7 も対応
  • リリース・ノートには特に記述がないのですが、ダウンロードページに”.. for using Kinect sensor on a computer running Windows 7, Windows 8 Consumer Preview, …”と記載されているので、Windows 8も対応していると思われます。

 

以下の要件を満たすシステム

※ Windows Virtual PCなどの仮想化環境ではなく物理PCが必要です。
※ 以下は推奨環境であり、用途によって必要なスペックは異なります。

  • 2.66 GHz デュアルコア または、それよりも高速な32-bit (x86) または 64-bit (x64)プロセッサ
  • USB 2.0 ポート

※ いくつかのUSBコントローラとは互換性の問題があるようです。詳しくはリリース・ノート(※ http://www.microsoft.com/en-us/kinectforwindows/develop/release-notes.aspx )をご確認ください。

※ 公式の Programming Guide には「Your Kinect should be the only device plugged into the USB hub it uses on your computer.」という記述があります。コンピューター本体のUSBポートに直接Kinectセンサーを接続した方がよいようです。

  • 2GB 以上のメインメモリ
  • DirectX® 9.0c をサポートするグラフィックス・ボード

 

Kinectセンサー

現在Kinectセンサーには、 Xbox360用である「Xbox 360 Kinect センサー」と、 Windows®用である「Kinect for Windows センサー」があります。

機能面の違いとして、Kinect for Windows センサーは Near Mode に対応し、40cmの距離から認識が可能です(通常モードでは80cmから認識可能) ※ ただし、Near Mode では、骨格の検出など一部機能に制限があります。

またライセンス上の違いとして、Xbox 360 Kinect センサーは商用利用不可という違いがあります。ただし、Kinect for Windows SDK のドキュメントによると、Kinect for Windows SDK を導入した開発端末上で Xbox 360 Kinect センサーを開発用デバイスとして使ってもよいとされています。
※ ただし、Kinect for Windows センサーとの互換性は保証しないと注意書きもあります

以上をまとめたものが以下の表になります。
※ 筆者の調査結果をまとめたものであり、Microsoft社の公式見解ではありません。

 

Near Mode

商用利用

Kinect for Windows SDK 開発時

Kinect for Windows SDK ランタイム

Xbox 360 Kinect センサー

未対応

利用不可

利用可

利用不可

Kinect for Windows センサー

対応

利用可

利用可

利用可

 

ソフトウェア

  • Microsoft Visual Studio 2010 (無償の Microsoft Visual Studio 2010 Express でもよい)
  • .NET Framework 4 (Visual Studio 2010 と一緒にインストールされるので独立してインストールは不要)

また、いくつかのサンプルプログラムには、以下の追加コンポーネントが必要です。

Speechサンプル

  • Microsoft Speech Platform Software Development Kit (Version 11) (サンプルをコンパイルする場合必要)
  • Microsoft Speech Platform Runtime (Version 11) (Kinectランタイムの一部として自動でインストールされる)

Depth-D3DとDepthWithColor-D3Dサンプル

  • DirectX Software Development Kit (サンプルをコンパイルする場合必要)
  • DirectX End-User Runtimes (June 2010)

AvateeringとXNABasicsサンプル

  • Microsoft XNA® Game Studio 4.0 (サンプルをコンパイルする場合必要)
  • Microsoft XNA® Framework Redistributable 4.0

 

まとめ

今回は Kinect および Kinect for Windows SDK の紹介を行いました。次回は「開発環境のセットアップ」をテーマに、いよいよ開発に関する内容に移っていきます。ご期待ください!

 

商標について

DirectX、Kinect、Microsoft、Visual Studio、Windows、Xbox 360、XNAは、米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。

OpenNI、PrimeSenseは、PrimeSense社の商標です。

4件の質問スレッド
  • 記事の並びについて lezi 2012-08-30 11:29 いつも参考にさせていただいてます。
    Contentsの内容には関係ないのですが、記事の並びを「第○回」順に出来ませんか?
    第1回から順を追って勉強している方もいらっしゃるでしょうから
    最新の質問スレ順での並べ方では見にくいと思います。
    3件のコメント (すべて表示)
    • lezi なるほど!これは思いつきませんでした。。。
      ありがとうございます。
      2012-09-06 10:46
    • かおるん 並べてみました
      http://kinection.jp/post/100

      #なければ作るのがプログラマですね
      2012-09-05 09:11
    • 某支配人 右側のバナーエリアの空いてる部分に、各回が順番にリンクされているだけでも助かりますよね。

      質問して順番を変えてしまってる元凶の一人からでした。
      2012-08-31 10:54
  • 開発環境について ファズ 2012-06-06 00:00 開発環境の所でWindows® 7と記載されていましたが、
    それはつまりOSがVistaであると、今回のアプリ開発の企画に参加する事は難しいと捉えてて宜しいのでしょうか?
    Vistaでも開発自体はネットで検索すると可能のようですが、今回の企画での開発環境を満たしていないので応募する事を躊躇っている状況です...
    ご返答をお待ちしております。
    5件のコメント (すべて表示)
    • mkama kinection.jp管理人様
      回答、有り難うございます。
      手元の開発環境が64bitだったので質問させていただきました。
      アイデア浮かんだら、応募してみます。
      2012-06-11 17:48
    • kinection.jp管理人 > mkamaさん
      この制限は、SDKのβ版のころの"Speech Sample"というサンプルアプリケーションの制限のようです。
      v1.5付属のSpeech機能のサンプル("Speech Basics"など)は、64bitでも問題なく動作することを確認しています。
      2012-06-11 10:10
    • mkama 開発環境で32/64bitの区別はありますか?

      @IT「連載:Kinect for Windows SDK(ベータ版)開発入門」には
      「スピーチ(Speech)機能を利用するには、以下が必要である。だが、これらは32bit版のみで利用できる。」
      とありますが、今は64bitでも使えますか?

      Speech関係のサンプルプログラムは、64bit環境で動作しますか?
      2012-06-11 05:30
    • ファズ 迅速なご返答、ありがとうございました。現状で私の環境にはWindows7が無いので今回のレビューへの応募は残念ながら辞退するという結論に至りました。Vistaでの開発手段のレビューなどのアイデアのご提案など親身に答えて下さってありがとうございました。
      レビューへ参加はしませんが手持ちのアイデア等はこちらのサイトに投稿していきたいと思います。
      これから連載される「やってみよう!Kinect(キネクト)開発」や皆様のレビューを楽しみに待ちたいと思います。どうもありがとうございました。
      2012-06-07 08:43
    • kinection.jp管理人 レビューテーマが満たせるのであれば、必ずしもWindows7である必要はありません。しかし、現状Kinect for Windows SDKはVistaのサポート予定はなく( http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/thread/cc371fef-1a8e-4c20-91cf-1ee8a78c02d6 )、VistaにSDKをインストールする手段はあるものの、音声認識など一部の機能は動かないと聞きます。このため、申し訳ありませんが、やはりVistaのみでの参加は難しいと考えていただくのがよろしいかと思います。
      ただし、通常のレビューに加えてVistaでの開発手段のレビューを追加するのであれば、非常に有用なレビューになるのではないかと思います。
      2012-06-06 10:28
  • カメラの映像について ガトー 2012-06-08 11:16 kinectのカメラの映像を作成したアプリ上で表示する事は可能なのでしょうか?
    ゲームのようにモニターの全画面に映像を表示して、それに被せるようにパーツを表示して表示位置にタッチするような動作で操作させてみたいと思っているのですが・・・
    2件のコメント
    • ガトー ご回答ありがとうございます!
      生画像も問題無く取得出来るのですね。色々と面白い使い方が出来そうな気がして来ました!!
      まぁ、私に作れるのかは別の話として・・・・(;・∀・)
      2012-06-08 14:08
    • kinection.jp管理人 Kinectのカメラが撮影した画像はアプリケーションから取得できますので、それをそのまま、あるいは加工して表示することも可能です。
      たとえば http://www.microsoft.com/en-us/kinectforwindows/develop/ こちらのページのノートパソコンに表示されているのは、Kinectセンサーから取得した画像情報・骨格情報・深度情報をそれぞれ表示しているアプリケーションのようです。
      2012-06-08 13:29
  • 素人でも開発できますか? リーダー 2012-06-04 15:32 Visual Studio は触ったことありません。
    C# は書いたことがありません。
    HTML の記述も既存のソースをいじる程度しかできません。
    HTML を抜けば、プログラミングそのものに関わったことがありません。
    そこまでのずぶの素人でも開発できますでしょうか?
    2件のコメント
    • リーダー ご返信ありがとうございます。
      やはり何かしらの言語でプログラミングの経験があることが前提のようですね。
      現時点では開発はとても無理だということがわかりました。
      連載3回を見て、できそうだなと思ったら改めて検討したいと思います。
      ありがとうございました。
      2012-06-07 12:45
    • kinection.jp管理人 本来はJava、Ruby、C言語などの何かのプログラミング言語の経験があることを想定しています。ただ、これから学習するのでも(厳しいとは思いますが)可能かもしれません。
      連載の第3回で実際の開発に入りますので、それを見ていただいて、できそうか判断していただくのもよいかと思います。
      2012-06-05 14:52

ジグソープレミアムレビュー

  • やってみようKinect(キネクト)アプリ開発 - ラボクルー集まれ!