特集:Kinect開発の選択指針(後編)

Kinect for Windows SDKベータ2とOpenNIの比較

中村 薫
2012/01/24
Page1 Page2

 前回は、Kinectハックの概説と、デバイスの比較を行った。今回は、ライブラリの比較を行う。

ライブラリの種類

 Kinectハックに利用できるソフトウェア・ライブラリはいくつかあるが、その中で活発に利用されている2種類を紹介する。1つはマイクロソフト社が提供している「Kinect for Windows SDK」(以降、「Kinect SDK」とする)。もう1つは、「OpenNI」である。この2大ライブラリについては前編で紹介済みなので、ここでは概略のみ示す。また、Kinect SDKに大きな動きがあったので、その最新情報を紹介する。

2大ライブラリの概要

Kinect SDK

 マイクロソフト社がリリースしている、Kinect専用のSDK。「公式SDK」とも呼ばれる。名前のとおり、Windows専用で、Kinectのほぼ全てのハードウェア機能にアクセスできる。

OpenNI

 Kinectに搭載されているチップの製造元であるPrimeSense社、OpenCVのWillow Garage社、ASUS社などが協力して提供している。Kinectを制御できるライブラリではあるが、Kinectに公式対応したライブラリではない。OpenNIはXtionの公式対応ライブラリである。マルチプラットフォームのライブラリであり、さまざまなOSで利用できる。

商用版のKinect for Windowsと、Kinect for Windows SDK

 前回、「商用版のKinect SDKは5月ごろになるのではないか」と書いたが、1月10日のCES(=米国で開催される家電製品の展示会)においてマイクロソフトより、2月1日に「商用版のKinect for Windows」および「Kinect for Windows SDKの正式版」をリリースするとのアナウンスがあった。

 アナウンスによると、2月1日に日本を含む12カ国でKinect for Windowsとしてデバイスが販売され、同時にKinect for Windows SDKの正式版もリリースされるとのこと。

  • Kinect for Windows(ハードウェア)の価格は「249.99米ドル」
  • Kinect for Windows SDK(ソフトウェア)は無料。しかし、ランタイムの実行環境はKinect for Windowsが必要で、従来のKinect for Xbox 360は使用できない
  • 半年後をめどにアカデミック版もリリースされる予定がある(149米ドル)
  • 新規開発にはKinect for WindowsおよびKinect for Windows SDKを使用すること。従来のKinect for Xbox 360とKinect for Windows SDKベータは使用できない
  • 現在商用利用しているKinect for Xbox 360とKinect for Windows SDKベータの組み合わせの利用は、2016年6月16日まで認める

 ハードウェアについては、40センチメートルの距離から認識可能な「Nearモード」(=近接モード)が搭載されるくらいで、大きな変更はなさそうだ。 引き続き続報を待ちたい。

 Kinect for Windowsの発表により、Kinectハードウェアも従来のKinect for Xbox 360との2種類が存在することになった。本稿では、特に指定がない限りKinectはKinect for Xbox 360、Kiect SDKはベータ2を指す。

ライブラリの比較

 それでは両者を比較してみよう。比較は仕様の面と、機能の面に分けて紹介する。まずは仕様の面から。

 本稿で使用するバージョンは、Kinect SDKが「ベータ2の1.0.0.45」、OpenNIが「1.4.0.2」となっている。なおOpenNIについては、「1.5.2.23」が最新バージョンとなっている。

仕様の比較

 次の表は、Kinect SDKとOpenNIの仕様をまとめた比較表である。

仕様項目 Kinect SDK OpenNI
対応OS Windows 7(x86/x64) Windows XP/Vista/7(それぞれx86/x64)
Windows 8 Developer Preview Windows 8 Developer Preview(個人的に確認)
  Linux(Ubuntu)(x86/x64)
  Mac OS
  Android
開発言語 C++
C#(VB:Visual BasicやF#などの.NET言語)
C
C++
C#(VBやF#などの.NET言語)
Java
対応デバイス Kinect Xtion Pro/Xtion Pro LIVE(公式)
Kinect(非公式)
商用利用 不可(商用版が2012年早々にリリースされるとアナウンス) 可(GPL/LGPLのデュアル・ライセンス)
仮想マシンでの動作 ×
表1 ライブラリの比較(仕様)

 それぞれの項目について詳しく説明していこう。

対応OS

 Kinect SDKはWindows 7(x86、x64ともに)およびWindows 8 Developer Preview(コードネーム)に対応している。Kinect SDKベータ1の時点ではWindows 7のみの対応であったが、ベータ2でWindows 8 Developer Previewにも対応された。ただし、「Kinect SDKの正式版でもデスクトップ・アプリケーションに限られる」とアナウンスされているため、Windows 8の特長であるメトロUIに対応したアプリケーションの開発はできないようだ。

 Windows VistaやWindows XPには対応していないので、注意が必要だ。もう1つの注意点として、Kinect SDKで開発したソフトウェアは物理マシン上でのみ実行でき、仮想マシン(Virtual PCやVMwareなど)上では実行できない(詳しくは仮想マシンの項で触れる)。

 Kinect SDKはほぼWindows 7のみの対応だが、その導入のしやすさが利点だ。Kinect for WindowsのサイトからOSに合ったSDK(32bitまたは64bit)をダウンロードし、手順に従ってインストール。KinectをPCに接続すれば、実行環境が整う。

 OpenNIが公式に対応しているOSは、Windows XP/Vista/7(それぞれのx86とx64)、Linux(Ubuntu 10.10以降:x86/x64)、Mac OS X 10.6以降、Androidである。非公式ではあるが、筆者のWindows 8 Developer Preview環境上での動作も確認している。

 OpenNIのメリットは、何といってもその実行環境の多さだ。現在多く出回っているOSのほとんどを網羅している。Windowsで実装したプログラムをMac OSやLinuxで再ビルドすれば、そのまま実行可能である。Androidにも対応しているため、組み込みの用途にも利用できる。ただし、AndroidではOpenNIは動作するが、NITEがリリースされていないため、ユーザーの認識や、スケルトン・トラッキング、ジェスチャの認識はまだできないもようだ。

 インストールについては、Kinect SDKに比べて煩雑ではあるが、Windowsに限定するとオールインワンのインストーラも提供されるようになり、Kinect SDKと同様、手順に従って進めるだけで環境を構築できる。ただし、この場合にはOpenNIで提供されているドライバがインストールされるため、Xtion用の実行環境となる。OpenNIでKinectを動作させようとした場合は、従来どおり、個別にインストールする必要がある。

開発言語

 Kinect SDK、OpenNIともにC++とC#に対応しており、OpenNIはさらにCとJavaにも対応している。両ライブラリともに、言語ごとの機能に変わりはない。ただし、言語ごとに実装のしやすさが異なることもある。例えばKinect SDKについては、同じ機能をC++とC#で実装した場合、C#の方が簡潔に実装できることが多い。C#について補足すると、ライブラリは.NET Framework上で動作するので、F#やVB、C++/CLIなどでの実装も可能である。 OpenNIのJava対応は、Android対応に付随するものと考えられるが、Windowsなどでも問題なく利用できるため、利用面での幅が広がるメリットもある。さらに非公式ではあるが、ProcessingJavaScriptFlash(ActionScript3.0)などからOpenNIを利用するためのライブラリも存在する。

対応デバイス

 Kinect SDKはもちろんKinectにのみ対応する。 OpenNIは、KinectおよびXtionに対応している。ただしOpenNIからリリースされているのは、Xtion用のドライバ(オープンソース)であり、Kinect用のドライバはリリースされていない。OpenNIのKinect用ドライバは有志によって、Xtion用のドライバをKinectで動作するように手が施されており、さまざまな実装が存在する。有名なOpenNIのKinect用ドライバの1つが、avin2氏によるSensorKinectだ。OpenNIのKinect用ドライバは、Xtion用のSensorドライバに追従する形になっている。

商用利用

 現在のKinect SDKでは商用利用はできない。ただし、企業内のプロトタイプなど、直接的なビジネスにかかわらなければ利用することは可能である。商用利用できるKinect SDKの正式版およびKinect for Windowsが、2012年2月1日にリリースするとのアナウンスがあったので、現在は世界各地でパイロット・プロジェクトが進んでいるようである。

 OpenNIはGPL/LGPLのデュアル・ライセンスとなっており、商用利用について問題はない。

仮想マシン

 開発時の注意点として、仮想マシンでの実行制限が挙げられる。

 Kinect SDKは仮想マシンでの実行はできず、物理マシンでのみ実行が可能である。このことは、ドキュメントにも記載されており、ソフトウェアとして何らかの処置が施されていると思われる。一般的なWindows PCであれば問題はないが、Macを使っているユーザーが開発する場合には、Boot Campで物理マシンを構築し、その上に開発/実行環境を作れば問題なく動作する(もちろんWindows 7のOSライセンスが別途必要だ)。Boot Camp上に構築した環境を、VMware FusionなどMac側の仮想化ソフトから起動した場合にも、アプリケーションは実行できなかったので、完全な物理マシンであることが必要である。

 OpenNIには特にこのような制約はなく、物理マシン、仮想マシンともに動作する。

 続いて次のページでは、機能の面を比較する。


 INDEX
  特集:Kinect開発の選択指針(前編)
  Kinectハック最新動向と、Kinect/Xtionの比較
    1.Kinectハックに関するキーワード/この数カ月のKinectハック界隈の動き
    2.デバイスの比較
 
  特集:Kinect開発の選択指針(後編)
  Kinect for Windows SDKベータ2とOpenNIの比較
  1.ライブラリの比較
    2.機能の比較


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間