カメラデバイス
カメラハードウェアを理解することは、適切なセンサーを選択し、下流のどのアルゴリズムでも修正できない系統的な誤差を認識するために不可欠である。SLAMシステムが見る画像は、特徴点が検出されるより遥か前に、レンズ、センサー、露出設定によって形作られている。
レンズ
レンズは視野角(FoV)、被写界深度、そして歪みを決定する。
- 焦点距離: 焦点距離が長い = FoVが狭い。SLAMでは通常、パララックスを最大化し、回転中も特徴点を視野内に保つために、広いFoVを持つ広角レンズが使われる。テレセントリックレンズはその対極にある特殊用途で、深度に関わらず倍率が一定であり、SLAMではなく計測(メトロロジー)で使われる。
- 絞り(値): 絞りが大きい(F値が小さい)ほど多くの光を取り込め、シャッター速度を速くしてモーションブラーを減らせる一方、被写界深度が浅くなる代償を伴う——異なる深度にある特徴点がぼける可能性がある。
- レンズMTF(Modulation Transfer Function、変調伝達関数): レンズが各空間周波数でどれだけコントラストを保持できるかを定量化する、実質的に光学系の解像力の指標である。高解像度センサーでも低MTFのレンズを通すとぼやけた画像になる。ハードウェアを選定する際はMTF曲線を確認すること。
- フィッシュアイレンズ: 180°を超えるFoVを持つが、特殊な投影モデル(等距離、等立体角)を必要とする。
イメージセンサー: CCD対CMOS
- CCD: 歴史的に画質が高く、ノイズが少ない。より高価で電力消費も大きい。ハイエンドの科学用カメラでは今も使われている。
- CMOS: ロボティクスで主流——低電力、低コスト、オンチップ処理。現代のCMOSはCCDの画質に匹敵する。
グローバルシャッター対ローリングシャッター。 グローバルシャッターは全画素を同時に露光し、幾何学的に一貫したスナップショットを得る。ローリングシャッターは行ごとに順次露光するため、カメラやシーンが速く動くと画像が歪む。低価格のカメラの大半はローリングシャッターであり、動きの速いプラットフォームではグローバルシャッターを購入するか、モデル内で補正する必要がある。
露出、ISO、解像度のトレードオフ
画質は三者間の駆け引きである。
- 露出を長くすると光を多く集められるが、モーションブラーが増える——プラットフォームが速く動くほど、露出は短くする必要がある。
- ISO/ゲインを高くすることで短い露出を補えるが、ノイズが増え、特徴点検出とマッチングを劣化させる。
- 解像度を高くすると詳細が増えるが、フレームごとの処理時間が増加する。多くのSLAMシステムは、センサーがより高い解像度を持っていても640x480や1280x720で動作させている。
自動露出はフレーム間で画像の明るさを変化させ、直接法が前提とする輝度不変性の仮定を破壊する——固定露出や測光的キャリブレーションが助けになる。VIOリグの場合は、カメラがハードウェアトリガー/タイムスタンプをサポートしていることも確認すること。ソフトウェアタイムスタンプはミリ秒単位でジッターし、カメラ-IMUの緊密な融合には致命的である。
深度取得可能なカメラ構成
- ステレオビジョン: ベースラインを持つ2台のカメラ。深度は視差からとして得られる。パッシブなので屋外でも機能するが、テクスチャのない表面では苦労する。であるため、視差誤差が一定でも深度誤差はおおよそに比例して増大する。ベースラインは使用可能な深度範囲を直接決定するが、ベースラインを大きくすると測定可能な最小深度も上がり、マッチングも難しくなる。
- RGB-D/構造化光: IRパターンを投影し、それを三角測量する(例: Kinect v1)。屋内での密な深度が得られるが、太陽光下では失敗する。
- アクティブIRステレオ/Time-of-Flight(ToF): ToFセンサーは、画素ごとに放射されたIR光の往復時間を計測する。コンパクトで高速だが、測距範囲の制限とマルチパスアーティファクトが伴う。
視差マップ——半大域マッチング(SGM)によって計算されるか、RGB-Dセンサーから読み取られる、画素ごとのステレオ視差のマップ——は標準的な中間生成物である。視差を持つ各画素は、ステレオモデルを通して3D点となる。
SLAM用カメラの選定
屋内SLAMにおける妥当な出発点は、広角レンズを備えた640x480または1280x720のグローバルシャッターカメラである。屋外・高速なプラットフォームの場合は、解像度よりもグローバルシャッターとフレームレートを優先すること。その上で、実運用性能を左右する地味な詳細——固定(または制御可能な)露出、ハードウェアタイムスタンプ、剛性のあるマウント、そしてキャリブレーションツールがサポートするレンズ/モデルの組み合わせ——を確認すること。
よくある落とし穴
- ハードウェアのアーティファクトをアルゴリズムのせいにする: ローリングシャッターのスキュー、自動露出のフリッカー、モーションブラーはいずれも「トラッキングのバグ」を装う。
- IR干渉: 同じシーンを観測する複数の構造化光/ToFカメラは、互いのパターンを破壊し合う。
- 緩んだマウントと熱: IMUに対して撓んだり、温まるにつれて内部パラメータがずれたりするカメラは、キャリブレーションを密かに無効化する。
- USB帯域: 1つのバスに複数のカメラを接続すると予測不能にフレームが落ちる。仕様だけでなくトポロジーを確認すること。
SLAMにおける意義
センサーの選択は達成可能な精度の上限を決める。ベースラインはステレオの深度精度を、シャッターの種類はどれだけ速く動けるかを、レンズのFoV/MTFは有効な特徴点の数を決定する。実際には多くの「アルゴリズムのバグ」は、ローリングシャッターのスキュー、自動露出のフリッカー、モーションブラーであることが多く——これらはコードではなくハードウェアと設定のレベルで解決すべき問題である。