センサーからの深度取得
RGB-Dカメラは、カラー画像とピクセルごとの深度画像を同時に取得する。深度をハードウェアから直接得られることは、SLAM問題を根本的に変える。解決すべきスケールの曖昧性が存在せず、マップが有用になる前に視差から点を三角測量する必要もなく、最初のフレームから密な再構成が可能になる。この分野は2010〜2011年頃に安価な民生用深度カメラ(Microsoft Kinect)が登場したことで一気に開花し、KinectFusionを皮切りとするリアルタイム・ボリューメトリック融合システムの波を引き起こした。
2つのセンシング原理(とそのハイブリッド)
支配的なセンシング原理は2つある。
- 構造化光(Structured light): センサーが既知の赤外線ドットパターンをシーンに投影し、IRカメラでその変形を観測する。深度は投影器とカメラ間の三角測量から得られる。Kinect v1(有効範囲はおおよそ0.8〜4 m)とOrbbec Astraがこの方式で動作する。
- アクティブIR Time-of-Flight (ToF): センサーが変調された赤外光を発し、ピクセルごとに反射信号の伝播時間(位相差)を計測する。Kinect v2とAzure Kinectはこの方式を使い、一般に構造化光より高い精度と解像度を実現する。
3つ目の関連する方式としてアクティブIRステレオ(例: Intel RealSense D400シリーズ)がある。これは古典的なステレオペアを投影されたIRテクスチャで補助するもので、テクスチャのない表面でも動作しつつ、日光下では受動ステレオへ緩やかに劣化する。
| 構造化光 | アクティブIR ToF | |
|---|---|---|
| 原理 | パターンの三角測量 | ピクセルごとの伝播時間 |
| 典型的な有効範囲 | 約0.5〜4 m | 最大約4〜5 m |
| センサー例 | Kinect v1, Orbbec Astra | Kinect v2, Azure Kinect |
| 弱点 | 日光、パターン干渉 | マルチパス反射、日光 |
深度誤差の振る舞い
焦点距離、基線長、視差を持つ任意の三角測量ベースのセンサー(構造化光、アクティブまたはパッシブステレオ)では、深度はで与えられる。これを微分すると、こうしたセンサーが距離とともに劣化する理由がわかる。視差誤差は距離に対して二次的に増大する深度誤差を生む。
1 mでミリメートル精度のセンサーでも、4 mでは数センチメートルずれることがある。ToFセンサーはこれとは異なる劣化の仕方をする。ランダムノイズは距離に対してより緩やかに増大するが、代わりに特徴的な系統誤差、すなわちマルチパス干渉(放射された光が2つの表面で反射してから戻ってくることで、角や凹んだ領域にバイアスが生じる)とフライングピクセル(深度の不連続部をまたぐ、実体のない偽の深度値)に苦しむ。これが、RGB-D SLAMシステムが距離に応じて計測を重み付けし、遠方の読み取り値を切り捨て、深度エッジをフィルタリングする理由である。
一般的なデバイス
- Microsoft Kinect v1(2010年): 構造化光、有効範囲0.8〜4 m。民生用RGB-Dの先駆けとなり、KinectFusionの研究の波を可能にした。
- Microsoft Kinect v2(2013年): ToF方式。精度が向上し、有効範囲は最大4.5 m、解像度も高い。
- Azure Kinect DK(2019年): 1MPのToF深度、広視野角のRGBカメラ、内蔵IMUを搭載。AI/エッジアプリケーション向け。
- Intel RealSense Dシリーズ(D415/D435/D455): ステレオベースのアクティブIR方式。コンパクトでUSB給電が可能であり、ロボティクスやドローン研究の多くで既定の選択肢となっている。
- Occipital Structure Core: モバイルフレンドリーなアクティブIRセンサーで、広基線ステレオを持つ。
- Orbbec Astra / Astra Pro: 手頃な構造化光方式。ROSベースの研究で人気。
トレードオフとその注意点
メトリックスケールを無償で得られることのトレードオフは、いくつかの厳しい物理的制約である。有効範囲が短い(数メートル程度)ため、これらのセンサーは屋内向けデバイスである。強い赤外線環境光(日光)は放射信号をかき消してしまう。暗い、吸光性の、透明な、あるいは鏡面反射する材質は、信号をほとんど返さないか、破損した信号を返すため、深度画像に穴ができる。深度ノイズも距離とともに増大する。三角測量ベースのセンサーではおおよそ二次的に増大するため、RGB-D SLAMシステムは遠方の計測を重み付けするか切り捨てる。
よくある落とし穴
- 深度とカラーは別々のカメラである: 深度撮像素子とRGB撮像素子は異なる位置に異なる内部パラメータで配置されている。正確な外部パラメータのレジストレーション(および時刻同期)がなければ、カラー点群は深度エッジをまたいで色が「にじむ」ことになり、測光的+幾何的な手法(DVO、ElasticFusionなど)は静かに劣化する。
- 無効なピクセルは例外ではなく通常のことである: 実際の深度フレームには必ず、吸光性・鏡面性・透明な材質や、投影器のオクルージョンによる影から生じる穴(ゼロ/NaNの深度)が含まれる。トラッキングと融合のコードは、深度の欠落を第一級のケースとして扱わねばならず、エラーとして扱ってはならない。
- 深度の単位とスケール係数を確認する: 生の深度はしばしばミリメートル単位の16ビット整数として得られ、データセットはデータセット固有のスケール係数を持つ深度PNGを保存する。スケール係数を誤ると、他は一見正常に動作していても、マップのサイズが微妙に(あるいは大きく)間違ったものになる。
- 複数センサーは互いに干渉する: 同じ表面を観測する2台の構造化光カメラは互いのドットパターンを破損させる。マルチカメラリグには干渉の緩和(時分割多重化、またはToFの周波数分離)が必要である。
- 速い動きは深度画像自体を破壊する: モーションブラーやローリングシャッターに似たアーティファクトは、トラッキングが目にする前に深度を破損させる。取得時点で誤っていた計測値は、いかなるロバスト推定を用いても修正できない。
SLAMにおける意義
RGB-D SLAMにおけるすべての設計判断はセンサーから流れ出ている。ピクセルごとのメトリック深度は、ICPによる密なフレーム対モデルトラッキングと、ボリューメトリックTSDFまたはサーフェル融合を可能にする一方、センサーのノイズモデル、有効範囲、材質による失敗モードが、それらのシステムがどこで破綻するかを決定する。深度が構造化光、ToF、アクティブステレオのいずれから得られているかを知ることは、そのシステムがどの環境で生き延びられるかを知ることであり、なぜRGB-D SLAMが屋内技術であり、屋外システムがステレオやLiDARに頼るのかを知ることでもある。
関連ノート
- Camera device — カメラセンサーの種類の概観
- KinectFusion — 民生用深度カメラが可能にしたシステム
- Disparity vs Depth — パッシブステレオ三角測量による深度
- Scale ambiguity — 深度センサーが取り除く単眼問題
- Frame-to-model tracking — 密なSLAMが深度ストリームで行うこと
- ICP — これらの計測値を入力とする位置合わせアルゴリズム