Wavelength Range for IR sensor

元ネタ

ちゃんと回答が付いているっぽいスレッド

V1では 827 nm だったようですね。

MSの中の人の回答では 827 nm ~ 850 nm前後だそうです。オフィシャルな情報がない理由は秘密にしているわけではなくて公式な情報ではないから。また、詳細な情報を知らなくてもSDKの利用には支障がないからとのことです。

No secret since it can be measured, just not official. That is operational information that you may want but is internal implementation detail not necessary to the operation and use of the SDK. As a Kinect SDK developer that is abstracted away by the driver/runtime to take care of.

同時に、今後のハードウェアやファームウェアのアップデートで変更される可能性があるため、公式な情報として「xxx nm」と表示することは避けているようでした。

基本的にはSDKを利用している箇所では影響が内容にしていくよ!とのことでしたが、他のセンサーとの兼ね合いで周波数に気を使う必要がある場合にはファームウェアアップデート情報に気をつけておいたほうが良いのかもしれませんね :)

Visual Gesture Builder does not support non-English Path.

元ネタ

VGBで利用するClipを格納するパスに英語以外の文字が入ると正常に動作しない

あ、そーなんだと思ったのでメモ。

VIsualGestureBuilderで利用するClipを格納するパスに英語以外の文字(日本語とか)が入るとVisual Gesture BuilderでAnalyzeを実行した時に空振りのような感じになって正常に機能しないようです。

日本語のユーザ名を使っている場合はマイドキュメントの下にClipを置いておくとマズいということですな。
KinectStudioでClipを作成するとデフォルトでマイドキュメントの下に保存されるので、これはちょっと注意したほうがいいかも。

ちなみにClip自体を日本語にしても問題はないようでした。不思議ですね :)

01 / 2015 Kinect 2 Gesture no longer works

元ネタ

KINECT SDK 2015年問題

KINECT SDKのサンプルやアプリケーションが2015年になってから正常に動作しなくなったという報告が幾つか上がっています。

どうやら public preview が付いている方のSDKでは2015年1月以降正常に動作しなくなる問題がある様子。 既存のSDKをアンインストールした後、最新のSDKをインストールすれば解決します。

SDKのダウンロード

SDKpublic preview 版かどうかの見分け方はSDKのインストール場所 *1 のフォルダ名が

  • v2.0_1409 であれば最新版 (2015/1 現在)です
  • v2.0-PublicPreview1409 であれば public preview 版です

内部的なタイマーが仕掛けられていたのか、Windows Updateに伴う変更なのか分かりませんが、突然こういうことがあるとなかなか困りますね :(

*1:デフォルトではC:\Program Files\Microsoft SDKs\Kinect

Knee and Ankle joint popping

元ネタ

足回りが不安定なの、どうにかならんかね

ボーントラッキングのサンプルなどを動かしているとよく分かるのですが、KINECTの骨格認識は人体の先端部分に行くほど不安定です。 特に足先はKINECTから見えにくくなりがちであることも相まって、断続的に足を曲げたり伸ばしたりしているように認識されることがあります。

これを回避する効率的な方法はない?というのが質問の趣旨ですが、フォーラムではJoint Smoothing codeを使いましょうや…という結論になっています。

センサーに測定の誤差や外れ値はつきものですので、KINECTに限らずスムージングコード(外れ値を無視して動線を滑らかにするようなフィルタコード)を用意することが必要かもしれませんね :)

Known Errors and Future Enhancements

元ネタ

KINECTの既知の問題点リストはないの?

という質問がフォーラムに投稿されていました。現状でKINECTの情報が一番集まっているのがMSDN Forumですが、結構細かい質問が多かったり、ハードウェア関連では質問が重複してたりするのでリストされたものは欲しいところですね。

MSDNフォーラムでピン止めされているものには以下の様なものがあります

また、MSDNにはSDK2.0に関するKnown Issue Listのページがあります

2.0 SDK and Developer Known Issues

一方で今後のエンハンスメントに関する資料は一切アップロードされていないようです。 Microsoftとしても今後KINECTエンタープライズ向けに展開させていくことが可能なのか、ゲームデバイスで終わらせるのか判断しかねているというところでしょうか :(

What's the timestamp actually mean ?

元ネタ

RelativeTime ってなに?

KINECT SDKで取得できる各Frame(body, color, depth, infrared)にはそれぞれ RelativeTime というプロパティが存在するのですが、その説明がbody, color, depthとinfraredでは異なっているので、その違いは何?そもそも the timestamp of the frame ってどういうタイミング?という質問です。

質問者は「MSDNには "Gets the timestamp of the * frame" (body, color, depth フレーム) と "Gets the source of the ** frame"(infrared フレーム)があるよ」と主張しています。 僕がMSDNを確認した限り、RelativeTimeの表記は以下のもので統一されているようでした。

Gets the timestamp of the (body | color | depth | infrared) frame.

確かにどのタイミング?

ですが、確かに the timestamp of the frame と言われてもどのタイミングかはよく分かりません。
KINECTが各フレームの元となる情報を取得したタイミングなのか、それぞれのフレームのインスタンスが作成されたタイミングなのか、もっと別のタイミングなのか…。

中の人の回答はこんな感じです。

The timestamp is just a reference time value for the frame. You cannot deduce anything from it other than it is a uniquely timed value in relation to the Kinect runtime. The value represents a TimeSpan value that is measured in 100ns increments.

Its uses can be to determine delta time between frames to ensure you are getting 30fps(or 15fps color) since the delta should be 33ms. Also, if you are comparing against depth/ir/body data and the color frames if there is a large delta to know if the color frame is ahead or behind the current frame you are analyzing.

うーん、よく分かりませんがそれぞれのフレームの中の異なるタイミングで、それぞれのリソースを取得しているのでどっちが先に取られたものか?を判断するための相対時間だよという感じでしょうか。

ちなみに

完全に同じタイミングで生成されたフレームを取得したい(たとえば、全く同じタイムスタンプをもつColorフレームとDepthフレームのセットがほしい)というのは結構みんな考えるようです。

I want to know the exactly when the Kinect gives depth frame and color frame in a period of one frame

現状では MultiSourceFrame を使うのが一番良い方法といえます。自前でColorとDepthを別々のスレッドにして同期させることも不可能ではないですが、MultiSourceFrame を凌ぐ精度を出すことはかなり難しいとのコメントでした。

How to call my .gdb in the code ?

元ネタ

Visual Gesture Builderのサンプルを動かしたいけど動かない

Visual Gesture Builderは機械学習を利用してジェスチャを登録、認識させることができる機能です。Visual Gesture Builderの情報については以前に書いた記事を参考にしてください。

Visual Gesture Builder関連のリソースとか - ハードコイルド・ワンダーランド

Channel9でも教育用のビデオが公開されているので、喜び勇んで試した人も多いのではないでしょうか。このVisual Gesture Builderですが、SDKに付属しているサンプルはきちんと動作しますが、いざ自分でジェスチャを登録して動かそうとすると以下の様なエラーが発生して実行できません。

"System. InvalidOperationException" type of exception happen in     
Microsoft.Kinect.VisualGestureBuilder.dll , but not handled in the user code

解決方法

これは、、、まあ実にひどいのですが、SDKに付属しているサンプルに答えがあります。

SDK BrowserからGesture SampleのWPF版をダウンロードし、ソリューションを開いてみましょう。
開いたソリューションに格納されている DiscreteGestureBasics-WPF プロジェクトの プロパティ -> ビルドイベント -> ビルド後に実行するコマンドライン を見てみると、以下の様なコマンドが記載されています。

xcopy "$(KINECTSDK20_DIR)\Redist\VGB\$(Platform)\vgbtechs" "$(TargetDir)\vgbtechs" /S /R /Y /I

要は依存関係のあるライブラリをビルド後のイベントでコピーしてきただけというわけですね。
チームの開発メンバが2時間くらい悩んだ後にこのことに気がついてひっくり返っていましたが、Visual Gesture Builderはまだベータなのでこういうことがよくあります。

今回はVisual Gesture Builderで開発する際にサンプルが動かない問題でチェックするべき点について書きました。 これで自分のジェスチャを登録して利用することができますね :)