Microsoft Kinect For Windows SDK – V1.0 リリース ノート
こんにちは。日本マイクロソフトの我孫子です。Kinect For Windows SDK のリリースノートが現状で英語版のみであることから国内の開発者様にはご迷惑をお掛けしています。今回、当部門にて日本語訳を作成いたしました。ご参考になれば幸いです。
-------------
Microsoft Kinect For Windows SDK – V1.0 リリース ノート
最終更新日: 2012 年 1 月 31 日
Microsoft Kinect for Windows SDK へようこそ。Microsoft Kinect for Windows SDK では、Kinect for Windows アプリケーションの開発に必要なネイティブ API、マネージド API、そして各種ツール類を提供します。Microsoft Kinect for Windows センサー テクノロジーを使用することで、開発者は Windows 7 および Windows 8 デベロッパー プレビュー (デスクトップ アプリケーションのみ)、Windows Embeddedデバイスが動作するコンピューター上でリッチなエクスペリエンスを実現することができます。Kinect for Windows アプリケーションの開発は基本的に他の Windows アプリケーションと同じですが、Kinect for Windows SDK は Microsoft Kinect for Windows センサーの機能 (カラー イメージ、深度イメージ、音声、骨格データ等) のサポートを提供するという点が違います。
目次 :
1. 使用許諾契約
2. システム要件
3. インストール
6. 既知の問題
1. 使用許諾契約
Microsoft Kinect for Windows Software Development Kit (SDK) をダウンロード、インストール、アクセス、利用したユーザーは、Microsoft Kinect for Windows SDK の契約条項に同意したと見なされます。Microsoft Kinect for Windows SDK の契約条項については End User License Agreement を参照してください。
2. システム要件
対応オペレーティング システム
· Windows 7、Windows Embedded Standard 7。Windows 8 Developer Preview* でもテスト済み。
* ただし、Windows 8 はまだ最終版ではないため、Windows 8 の Kinect for Windows サポートは実用化の段階ではありません。
ハードウェア要件
· 32-bit (x86) または 64-bit (x64) プロセッサ
· デュアルコア2.66-GHz 以上の高速プロセッサ
· 専用 USB 2.0 バス
· 2 GB の RAM
· Microsoft Kinect for Windows センサー
ソフトウェア要件
· Microsoft® Visual Studio® 2010 Express またはその他の Visual Studio 2010 エディション
· スピーチ機能対応の Kinect for Windows アプリケーションを開発する場合は、Microsoft Speech Platform SDK v11 をインストールする必要があります。
3. インストール
重要 :
· セットアップを実行する前に、Kinect センサーがコンピューターの USB ポートに接続されていないことを確認してください。
· 本 SDK のプレリリース版からアップグレードする場合は、セットアップの完了後にコンピューターを再起動することを推奨します。
· Microsoft Server Speech Platformコンポーネントがインストールされている場合は、本 SDK をインストールする前にすべてアンインストールしてください。これには Beta 2 で使用していた 10.2 ランタイム コンポーネントおよび/または最新の 11.0 ランタイムを含みます。アンインストールしていないと、セットアップはエラーを表示します。
SDK をインストールするには:
1. Kinect センサーが PC の USB ポートに接続されていないことを確認します。
2. Microsoft Kinect for Windows SDK の以前のバージョンがインストールされている場合は、あらかじめアンインストールしておきます。
3. Kinect センサーのドライバーがインストールされている場合はすべて削除します。
4. Microsoft Server Speech Platform Runtime および SDK コンポーネントをすべてアンインストールします (x86、x64 ビット版、Microsoft Server Speech Recognition Language – Kinect 言語パックのすべてのコンポーネントをアンインストールします)。
5. Visual Studio を終了します。SDK をインストールする前に一旦 Visual Studio を終了し、セットアップの終了後に再度 Visual Studio を起動し、SDK が必要とする KINECTSDK10_DIR 環境変数を取得します。
6. ダウンロード サイトで、KinectSDK-v1.0-Setup.exe をダブルクリックします。32ビット、64ビット Windows のいずれの場合もこのインストーラーを使用します。
7. SDK のインストールが完了したら、Kinect センサーを外部電源に接続した上で PC の USB ポートに Kinect を接続します。ドライバーは自動的にロードされます。
8. これで Kinect センサーは正しく動作しているはずです。[スタート] – [すべてのプログラム] – [Microsoft Kinect SDK v1.0] – [Kinect SDK Sample Browser] とクリックし、Kinect センサーが骨格やカラー イメージ、深度イメージ、オーディオデータをストリーミングしていることを確認します。
ドライバーが正しくインストールされていることを確認する :
1. Microsoft Kinect for Windows センサーで LED が緑色に点灯していることを確認します。
2. Microsoft Kinect for Windows センサーは、デバイス マネージャーの [Microsoft Kinect] の下に以下のノードとして表示されます:
· Microsoft Kinect Audio Array Control
· Microsoft Kinect Camera
· Microsoft Kinect Security Control
3. Microsoft Kinect for Windows センサーのマイク配列は、デバイス マネージャーの [サウンド、ビデオ、およびゲーム コントローラー] の下に以下のように表示されます。
· Microsoft Kinect USB Audio
Kinect for Windows センサーあるいは SDK がうまく動作しない等の問題が発生した場合は、SDK ドキュメントの "Resources for Troubleshooting" というページで "Driver Installation" というセクションを参照してください。SDK ドキュメントは、SDK をインストールすると、[スタート] メニューのリンクからまたは Sample Browser を実行するとアクセスできます。
4. ヘルプおよび関連ドキュメント
SDK ドキュメントは [スタート] メニューからオープンできます。ドキュメントの Programming Guide セクションに、C++ やマネージド コード プロジェクトから API にアクセスする方法、Natural User Interface API や Audio API の理解、共通タスクの実行方法等、開発者に役立つ情報が多数収録されています。また、SDK ドキュメントでは API リファレンスも提供しています。
Kinect for Windows のオンラインデベロッパー リソースでは以下の情報を提供しています:
· Technical Resources on the Kinect for Windows Website
· Kinect for Windows SDK Forums
Windows に関する基本的な開発上の質問については、以下をご利用ください:
· Microsoft Developer Network (https://msdn.microsoft.com): Windows 用アプリケーションの作成に必要、役立つ最新の開発関連のドキュメントを提供しています。
· Microsoft TechNet (https://technet.microsoft.com): Windows オペレーティング システムの管理に役立つ最新の管理者用ドキュメントを提供しています。
5. Kinect for Windows SDK Beta 2 リリースからの変更点
· 最大 4 台の Kinect センサーのサポート: 同一 PC に最大 4 台までの Kinect センサーを接続することができます。ただし、各センサーがそれぞれ独立した USB コントローラーに接続できるだけの性能を持つ PC であることが前提。(これまで通り、骨格追跡は1 プロセスにつき 1 台の Kinect でしか使用することができませんが、開発者は使用する Kinect センサーを選択することができます。)
· 骨格追跡 : Kinect for Windows の骨格追跡システムは、2011 年 11 月リリースの Xbox 360 Development Kit で入手可能な Skeletal Tracking ライブラリと同じレベルで対象をトラッキングすることができるようになっています。
· 近接モードの利用が可能 : ただし、Kinect for Windows のみの限定です。詳細については、Kinect for Windows のブログ記事を参照してください。
· ドライバーの安定性、ランタイムおよびオーディオ関連の修正等、安定性を実現する改善。
· API のアップデートと機能拡張
o Beta 2 から v1.0 への移行については、次のブログ記事を参照してください: Migrating from Beta 2
o 一貫性と開発のし易さを考慮し、マネージドおよびネイティブ API の両方に対して名称に関する変更が行われています。主な変更点として:
-
- マネージド コンポーネントとネイティブ ランタイム コンポーネントを整理して、最小セットの DLL に集約。
- 製品チームのデザイン ガイドラインに合わせる形でマネージドおよびネイティブ API の名称を変更
- ヘッダー、ライブラリおよび参照アセンブリの名称を変更
o 重要マネージド API の改善点:
-
- 名前空間を Microsoft.Kinect に集約
- DepthData オブジェクトの改善
- 骨格データのシリアル化が可能に
- オーディオ API の改善 (複数台の Kinect が接続されている PC 上で特定の Kinect に接続する機能等)
- エラー処理の改善
o 初期化 API の改善 (Status プロパティおよび StatusChanged イベントに Initializing というステータスを追加等)
o ネイティブ コード、マネージド コードの両方で Tracked Skeleton API をサポート。開発者はこの API を使用することで、6 つの選択肢から 1 つまたは 2 つの骨格データでロックオンすることができます。
o マッピング API: KinectSensor のマッピング API は深度ピクセルからカラー ピクセルへのマッピングを可能にする API です。今回の改善により使いやすさが向上し、320x240 深度フォーマットの制限がなくなりました。
o 1280x1024 の高解像度 RGB カラー モードが同等の 1280x960 モードに代わっています。1280x960 は Kinect for Windows オフィシャル ハードウェアでサポートするモードです。
o フレーム イベントの改善。開発者は Xbox 360 と同じ順番 (カラー、深度、骨格、さらにすべてのデータ フレームがそろったタイミングで AllFramesReady イベント) でフレーム イベントを受け取るようになりました。
o マネージド API の更新
高解像度モードのための正しい FPS
ColorImageFormat.RgbResolution1280x960Fps15 から ColorImageFormat.RgbResolution1280x960Fps12
Enum Polish
ColorImageFormat および DepthImageFormat、KinectStatus といった Enum の値に未定義の enum 値を追加。
深度の値
DepthImageStream では IsTooFarRangeEnabled の値はデフォルトで True になっています (また、プロパティは削除しています)。
リターンが可能な深度値 (DepthRange.Default は 800-4000、DepthRange.Near は 400-3000) を超えた場合、次の値を返します:
DepthImageStream.TooNearDepth (DepthImageStream.MinDepth 未満と分かっているもの)
DepthImageStream.TooFarDepth (DepthImageStream.MaxDepth より大きいと分かっているもの)
DepthImageStream.UnknownDepth (分からないもの。)
骨格データのシリアライズ化の有効化
Skeleton の SerializableAttribute、JointCollection、Joint および SkeletonPoint を追加しています。
マッピング API
既存の per pixel API のパフォーマンスの改善。
フルフレーム変換を実行するための新しい API の追加:
public void MapDepthFrameToColorFrame(DepthImageFormat depthImageFormat, short[] depthPixelData, ColorImageFormat colorImageFormat, ColorImagePoint[] colorCoordinates);
Added KinectSensor.MapSkeletonPointToColor()
public ColorImagePoint MapSkeletonPointToColor(SkeletonPoint skeletonPoint, ColorImageFormat colorImageFormat);
その他
Skeleton.Quality から Skeleton.ClippedEdges への名称変更
SkeletonFrame.FloorClipPlane から Tuple<int, int, int, int> へのリターン型の変更。
SkeletonFrame.NormalToGravity プロパティの削除。
オーディオ & スピーチ
· Kinect SDK には最新の Microsoft Speech コンポーネント (V11 QFE) が収録されています。本 SDK のインストーラーは適切なランタイム コンポーネント (32-bit Windows 用 32-bit スピーチ ランタイムと、64-bit Windows 用 32-bit と 64-bit それぞれのスピーチ ランタイム) をチェーンインストールします。この他に認識精度がアップした更新済み English Language パック (en-us ロケール) もインストールします。
· アコースティック モデルのアップデートにより、スピーチ API が返すコンフィデンス ナンバーの精度がアップしています。
· Kinect の Speech Acoustic Model には、他の Kinect コンポーネントと同じアイコン、同等の説明が用意されています。
· エコー キャンセレーションでは、システムのデフォルト スピーカーを認識し、エコーキャンセレーションが有効になっている場合はスピーカーからのノイズを自動的にキャンセルします。
· AEC が有効になっている Kinect Audio はスピーカーから音声が入ってこない状態でも動作します。この状況は以前は問題の原因となっていました。
· オーディオ初期化の変更:
- C++ コードはオーディオ ストリームを使用する前に NuiInitialize を呼び出す必要があります。
- マネージド コードは KinectAudioSource.Start() を実行する前に KinectSensor.Start() を呼び出す必要があります。
- 初期化後、オーディオ データの配信が開始されるまで約 4 秒かかります。
- 現在、オーディオ/スピーチ サンプルでは、Kinectデバイスが音声の録音あるいはスピーチの認識のスタンバイ状態に入るまで 4 秒待機しています。
サンプル
· サンプルの検索、参照を簡単に行えるサンプル ブラウザーが追加されています。サンプルブラウザーへのリンクは [スタート] メニューに追加されています。
· ShapeGame および KinectAudioDemo (新しい KinectSensorChooser コンポーネントを使用) では、Kinect Status の処理方法さらにユーザーに Kinect for Xbox 360 センサーを使用していることを通知する方法等を紹介しています。
· Managed Skeletal Viewer サンプルは、オーディオ ビーム アングルやサウンド ソース アングル/コンフィデンスの表示の追加、カラーモード、深度モード、骨格追跡オプション、モーター コントロールの追加コントロール オプションを提供する、Kinect Explorer に代わっています。これらについては、画面下の "(click for settings)" をクリックしてください。
· Kinect Explorer (改善された SkeletonViewer コンポーネントを使用) では骨格と関節を別々に表示し、ハイコンフィデンスで追跡されている関節はどれで、追跡されていない関節はどれかが明確に分かるようになっています。
· KinectAudioDemo は未認識の発声ファイルを temp フォルダーに保存しなくなっています。
· KinectAudioDemo アプリケーションに AEC と Beam Forming の用例が追加されています。
Kinect for Windows ランタイムの再配布可能パッケージ
· 再配布パッケージは、SDK のインストール フォルダーの redist サブディレクトリにあります。この redist はインストーラーの .exe ファイルで、アプリケーションのセットアッププログラムに含めて、Kinect for Windows のランタイムとドライバー コンポーネントをインストールすることができます。
6. 既知の問題
.Net
StatusChanged イベントが発生する場合、KinectStatus.Connected へのトランジションで kinectSensor.Start() を呼び出していることを確認してください。kinectSensor.Stop() は、KinectStatus.Connected から離れたすべてのトランジションで呼び出します。(プラグの取り外し、電源のオフ、マシンのスリープ/ハイバーネーションをテストしてください。) KinectSensorChooser およびKinectExplorer サンプルは、スリープ/ハイバーネーション ケースの処理は行っていません。この処理については、将来リリースのサンプルで対応の予定です。
kinectSensor.Stop() を実行後 (あるいは、アプリケーションの実行中にセンサーの取り外しを行った後) に KinectSensor.Map* および DepthImageFrame.Map* を呼び出すと失敗することがあります。このような場合に備えて、上記の Map* API の呼び出し前後に try/catch を使用するなど、対策を講じるようにしてください。
C++
SkeletalViewer サンプル (C++/Direct2D+GDI) は、CPU に負荷がかかると骨格の描画に失敗することがあります。利用可能なフレームの通知を受けた場合のベストプラクティスは、ペンディングになっているすべてのストリームで新しいフレームがないかどうかをチェックすることです。
C++ コードがアプリケーションのライフタイムを通じて NuiInitializa/NuiShutdown を複数回実行する場合、これらの呼び出しの実行前に、SetDeviceStatusCallback を一回呼び出すようにしてください。
USB ホスト コントローラーの互換性
Kinect for Windows ドライバーでは、様々な PC 構成で動作検証を行ったところ、一部の USB ホスト コントローラーで互換性の問題がいくつか確認されています。問題が確認された USB コントローラーには、AMD Fusion A75 USB2.0 コントローラー、Etron USB 3.0 Extensible Host Controller、Renesas Electronics USB 3.0 Controller 等があります。これらのコントローラーで使用した場合、RGB フレーム レートの低下や Kinect の抜き差し時の Not Ready 状態等の問題が発生することがあります。こうした互換性上の問題は、Windows 8 Developer Preview が動作する PC 上、あるいは複数のデバイスを繰り返し抜き差しした場合に発生頻度が高くなるようです。このような現象が発生したら、アプリケーションを再起動するか PC をリブートする必要があります。あるいは、別の USB 2.0 コントローラーにデバイスを接続しなおしてみてください。
Kinect for Windows スピーチ文法における数字および日付の正規化
現在、Kinect for Windows は Microsoft Speech Platform Version 11 (Beta 版の Version 10.2 からアップグレード)と連携しています。Kinect for Windows Speech Language Pack と併用することで、このバージョンでは Kinect for Windows で高度な音声認識機能を使用することができます。
ただし、このバージョンには標準 TN/ITN (数字と日付の正規化) のサポートが提供されていないため、Beta 版の上に構築された文法 (文章) に変更が必要になります。具体的には、文法 (文章) 上の数字と日付をスペルアウトする必要があります。たとえば、"Play song number 5" ではなく、"Play song number five" とする必要があります。
マイク配列のデフォルト ゲイン設定はサブオプティマル (準最適)
Kinect センサーのマイク配列によって録音される音声に適用されるデフォルトゲインの値はオプティマル (最適) よりも高くなり、ユーザーが Kinect センサーの近くで声を出した場合、音声認識品質に影響することがあります。
アプリケーションで Kinect 音声信号が途切れるあるいは Speech Platform SDK から AudioSignalProblemOccurred イベントが TooLoud 音声入力を使用しているとエラーが通知された場合は、マイクのゲイン レベルを 3 から 100 の間で調整してください。
正しいゲイン値を設定するには:
· [コントロール パネル] をオープンし、[サウンド] アイコンを選択し、[録音] タブを選択します。
· [Kinect Microphone Array] を選択して、[プロパティ] ボタンをクリックし、続いて [レベル] タブを選択します。
· デフォルトでは 100 に設定されている、Microphone Array のゲイン レベルを 3 に設定します。[OK]、[OK] と続けてクリックします。
オーディオ キャプチャの開始後に骨格ストリームを有効にした場合にオーディオが処理されない
バグのため、SkeletonStream を無効または有効にすると、Kinect センサーから AudioSource ストリームが返らなくなります。
次の手順を実行するとオーディオストリームが停止します:
· kinectSensor.Start();
· kinectSensor.AudioSource.Start(); // --> オーディオ ストリームを作成します。
· kinectSensor.SkeletonStream.Enable(); // --> 不要なサイド エフェクトとしてオーディオストリームを停止します。
対処方法は、呼び出し順の入れ替えあるいは SkeletonStream のステータス変更後の AudioSource の再開です。
対処方法 #1 (骨格処理の後にオーディオを開始する):
· kinectSensor.Start();
· kinectSensor.SkeletonStream.Enable();
· kinectSensor.AudioSource.Start();
対処方法 #2 (骨格処理の後にオーディオを再開する):
· kinectSensor.Start();
· kinectSensor.AudioSource.Start(); // --> オーディオ ストリームを作成します。
· kinectSensor.SkeletonStream.Enable(); // -->不要なサイド エフェクトとしてオーディオストリームを停止します。
· kinectSensor.AudioSource.Start(); //--> 新たなオーディオ ストリームを作成します。
SkeletonStream エンジンの状態リセットは負荷の高い呼び出しであるため、アプリケーションの機能として Skeletonのオン・オフという必要性が特にない限り、アプリケーションの起動時にのみ行うようにしてください。
サンプル
マシンによっては、C++ Skeletal Viewer サンプルで、ちらつきや表示できない等、Skeleton が正しくレンダリングされない問題が発生することがあります。これはサンプルの既知の不具合で、将来のバージョンでの対応を予定しています。
以上