RealSense R200,Mac OSXで動作確認

f:id:gt1000:20160111040544p:plain

忘れていた.


入手自体は 1stロットで手に入れていたのだが,すっかり忘れていた.

が,F200に関して質問が来ていたのを機に取り組んでみた.

やったこと


一言で言えば,前回の改変.

gt1000.hatenablog.com

F200に対応した,と言っているが上手く動いていない libuvcを持ってきて,改変して F200を動かしたのだが,コレに R200の制御を盛り込んだ.

手順


1.Product IDのチェック

オプションキーを押しながらメニューバー左端のリンゴマークをクリックして一番上のシステム情報を選択.USB3.0に R200が繋がっていることを確認し,製品 IDの項目を調べる.R200は 0x0a80.ちなみに F200は 0x0a66.

2.フォーマットのチェック

VendorID (Intelは 0x8086)と ProductID (R200は 0x0a80) で uvc_find_deviceして見つけたデバイスを uvc_open2して手に入れたハンドラで uvc_print_diagを呼んでフォーマットを調べる.uvc_open2の最後の引数 camera_numberは 0:IR 1:Depth 2:RGBの模様.GUID (フォーマットID),size (解像度),interval (fps)くらい把握すれば OK.ちなみに uvc_open2はググっても出てこないので,コレがカスタム libuvcのキモの一つと考えられる.

3.うまいとこ組み込む.

上記で調べたフォーマットの情報を,既にあるフォーマット情報の羅列に並列して記述する.

4.呼び出す.

Depthは camera_number 1で,GUIDは Z16 (というアスキーデータで始まるバイナリ列).名前の通り 16bit値のようだが,ダイナミックレンジは調べていない,というかどうも小さいので生値を 32倍させたのがサムネイルに使ったスクショ.ただし 32倍は少々やり過ぎのようで,遠距離がサチっている.

IR画像は camera_number 0,二つあるうちセンター寄り側の IRカメラの画像.この IR画像モードではレーザープロジェクタは焚かれない.また camera_number 1の Depthとの同時動作はできない (=Depthと IRは排他).GUIDは Y12I,Y16,Y8I,Y8で,おそらく「輝度のみの1ch,ビット数,インターレースか否か」ということだろう,90fpsがある,というのが特記事項か.

RGB画像は camera_number 2で,GUIDは普通の YUY2と,おそらくセンサ生データの RW10 (ただし 8bit表示される.詳細未検討.設定は唯一 2400x1081@30fpsのみ)の二つ.YUY2で 60fpsが使える解像度は 640x480と 320x240のみ,とか画質が低い,とか率直に言って良いところがない.

既知の問題


F200は RGBと Depthの同時呼び出しが問題なく動いたのだが,R200は今のところどちらか片方しか呼ぶことができない.具体的には RGBをスタートさせたあとに Depthをスタートさせてもコールバックが呼ばれない.どうも Depth側がガッツリ刺さっているようで,終了処理自体は普通に抜けているが上手く処理できていない.この状態になると抜き差ししないと再度使用することはできない.

とりあえず動いたので,以上. F200に引き続き,OSXのネイティブで R200を動かした (ことを公表した)のは世界初じゃね?