特集: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などでも問題なく利用できるため、利用面での幅が広がるメリットもある。さらに非公式ではあるが、ProcessingやJavaScript、Flash(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.機能の比較 | ||
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|