マルチセンサーキャリブレーション
現代のSLAMシステムが単一のセンサーだけに頼ることはほとんどない。カメラ-IMUリグ、カメラ-LiDAR車両、あるいはカメラ-IMU-LiDAR-車輪を備えたフルプラットフォームは、センサー同士がどのように関係しているかを正確に知っていなければ機能しない。マルチセンサーキャリブレーションは次の2つを推定する。
- 外部パラメータキャリブレーション(Extrinsic calibration):センサーAとセンサーBのフレーム間の剛体変換 (例えばカメラがIMUに対してどこに位置しているか)。
- 時間キャリブレーション(Temporal calibration):センサークロック間の時間オフセット。センサーはそれぞれ異なる遅延でデータにタイムスタンプを付けるため、高速に動くプラットフォームではわずか数ミリ秒のオフセットでも致命的になる。
最も一般的な組み合わせとツールは以下の通り。
| 組み合わせ | 典型的な手法 | ツール |
|---|---|---|
| カメラ-IMU | 連続時間B-splineの軌跡を画像と慣性データに同時にフィットさせる;外部パラメータ、時間オフセット、IMUの雑音/バイアスパラメータを推定する | Kalibr(Furgale et al., 2013) |
| カメラ-LiDAR | ターゲットベース(両センサーに見えるチェッカーボードのコーナー)またはターゲットレス(画像と点群間で平面や辺などを揃える) | Autowareのキャリブレーションツール、および多数の研究用ツールキット |
| マルチカメラ | キャリブレーションターゲット(AprilGrid/チェッカーボード)を複数の視野で重複させて撮影 | Kalibrのマルチカム |
いくつかの実務的な注意点。カメラ-IMUキャリブレーションには*励振(excitation)*が必要である:外部パラメータと時間オフセットが観測可能になるように、リグをすべての軸に沿って積極的に回転・並進させなければならない。カメラ-LiDARキャリブレーションはより難しい。なぜなら、2つのセンサーは同じ基本要素を直接観測しないからである — LiDARは形状を見て、カメラは見た目を見る — そのため手法は平面、辺、反射ターゲットなどの共有される構造を揃える。最後に、キャリブレーションは一度限りの出来事ではない:マウントはたわみ、温度は変化する。良いVIO/SLAMシステム(例えばVINS-Mono、OpenVINS)は外部パラメータと時間オフセットをオンラインで洗練させる。
推定の実際の仕組み
ハンドアイ形式。 古典的な出発点はハンドアイキャリブレーション方程式である。リグを一連の姿勢を通して動かし、センサーAは自身の相対運動 (例えばチェッカーボードから得られるカメラ姿勢)を計測し、センサーBは自身の相対運動 (例えば積分されたジャイロの回転)を計測する。 が固定された未知の外部パラメータであれば、すべての運動対は以下を満たさなければならない。
なぜなら、「Aの運動を通ってからリグを横断する」ことは「リグを横断してからBの運動を通る」ことと等しくなければならないからである。多数の運動対を積み重ねると解ける系が得られる — まず回転(クォータニオンまたは回転行列形式の線形問題)、次に並進を解く。これが励振が重要な理由でもある:すべての運動が純粋な並進であれば、 の回転部分は方程式に一度も現れず、単一軸周りの回転は1つの自由度を観測不能にしてしまう。
連続時間の同時最適化(Kalibr)。 離散的な姿勢対は情報を浪費し、非同期のセンサーをうまく扱えない。Kalibrはリグの軌跡を連続時間B-spline として表現する。これは任意のタイムスタンプで評価でき — 微分することで角速度と加速度も得られる。すると一つの大きな非線形最小二乗問題が、以下を同時に最小化する。
- 各画像タイムスタンプにおけるキャリブレーションターゲットのコーナーの再投影誤差、
- スプラインから導かれた加速度と計測された加速度(重力とバイアスを含む)の間の加速度計残差、
- スプラインから導かれた角速度と計測された角速度の間のジャイロスコープ残差、
これらをスプライン、外部パラメータ 、重力方向、IMUバイアス、そして時間オフセット にわたって最小化する — は単純にスプラインを で評価することで入る。これが、連続時間の定式化が時間キャリブレーションを自然に処理できる理由である。
キャリブレーションの検証。 確認していないキャリブレーションを決して信用してはならない。有用な健全性チェック:キャリブレーションレポートの再投影/残差プロット(残差は構造を持たずホワイトであるべき);LiDAR点を画像に投影し、深度エッジが輝度エッジと揃っているか確認する;自分のVIOを実行し、推定器のオンライン外部パラメータ/時間オフセットの状態がキャリブレーション値からずれていくかどうかを観察する;そして、物差しでリグを物理的に測定する — 5cmのリグでカメラ-IMU並進が30cmも長く返ってくるなら、オプティマイザが何を言おうと間違っている。
よくある落とし穴
- 励振不足 — なめらかで遅く平面的な動きは、外部パラメータと時間オフセットの観測可能性を弱くする。Kalibrはそれでも数値を返すが、楽観的な共分散を持つ悪い数値になる。
- 不十分な時刻同期の仮定 — ハードウェアトリガーと共有クロックはどんなソフトウェア的な対策にも勝る。ソフトウェアタイムスタンプを使わざるを得ない場合は をキャリブレーションし、ドライバ/OSの負荷によってそれが変わることを想定しておく。
- ローリングシャッターの無視 — 読み出し中の速い回転は特徴を歪める。キャリブレーションにはグローバルシャッターカメラを使うか、ローリングシャッターを考慮したモデルを使う。
- 一度だけキャリブレーションし、そのまま使い続ける — 振動、熱サイクル、再取付けは外部パラメータを変化させる。機械的な変更の後は再キャリブレーションし、推定器にオンラインで洗練させる。
- ぼやけた、あるいはたわむターゲット — キャリブレーションはターゲットの質に依存する:AprilGridを剛体(ガラス/アルミ)に取り付けて印刷し、常に完全に見えてピントが合った状態を保ち、画像全体を観測でカバーする。
SLAMにおける意義
VIO、LiDAR-ビジュアル・インナーシャルオドメトリ、RADARフュージョンなど、すべてのセンサーフュージョンSLAMの定式化は、測定値が共通のフレームと共通の時刻で表現できることを前提としている。外部パラメータや時間オフセットの誤りは、オプティマイザが姿勢やバイアスに吸収しようとする系統的でモデル化されていない残差として現れ、どれだけチューニングしても直らないドリフトと不整合を生む。キャリブレーションを正しく行い(そしてそれを検証する方法を知っていること)は、通常、実世界でのSLAM展開における最初の一歩である。