Voxel Map
ボクセルマップ(voxel map)は3D空間を立方体(“volume element(体積要素)“)の規則格子に離散化し、各セルが環境の局所的な性質(占有確率、切断符号付き距離(TSDF)、色、強度、セマンティックラベル)を保持する。点群が表面サンプルの集まりであるのに対し、ボクセルマップは空間上のフィールドである。自由空間や未知空間も表現できる(表面だけではない)し、同じ領域の繰り返し測定を重複として積み上げるのではなく融合する。
ボクセルが保持するもの
- 占有度: ボクセルごとのを、対数オッズによるベイズ更新則で更新する。
したがって新しい測定ごとに証拠が加算・減算される。センサ光線上のボクセルは自由として更新され、光線終端のボクセルは占有として更新される。
- TSDF: ボクセル中心から最も近い表面までの符号付き距離を、切断帯にクリップしたもの:
符号は自由側と占有側を区別する。連続する深度フレームは、ボクセルごとの重み付き移動平均によって融合され(KinectFusion)、表面はゼロクロッシングにおいてMarching Cubesで抽出される。
- 色/セマンティクス: セマンティックマッピングのためのボクセルごとの見た目やクラスラベル。
のメモリ問題への対処
体積を解像度で密な格子として持つと、メモリはかかる。センチメートル解像度の大規模シーンでは実現不可能である。標準的な対策:
- オクツリー(OctoMap): 空間を再帰的に細分化する。大きな均質な領域(自由または未知)は単一の粗いノードで表現され、占有された表面は細かい葉ノードで表現される。適応的解像度と確率的占有を組み合わせたもので、ロボティクスにおける事実上の標準3D占有マップである。
- ボクセルハッシング: 観測された表面付近の、ボクセルブロック(例えばボクセル)のみを確保し、その整数ブロック座標の空間ハッシュでインデックスを付ける。のルックアップと、体積ではなく表面積に比例するメモリを実現する。これは大規模リアルタイムTSDF融合の基盤である(Nießnerらのボクセルハッシング、InfiniTAM)。
- 階層的疎格子(OpenVDBスタイル): グラフィックス分野由来の格子の木構造で、現代のマッピングバックエンドで細かい解像度の疎な格納に使われている。
トレードオフ
- 利点: 明示的な自由/未知空間(衝突チェックと探索に不可欠)、再観測頻度に関わらず領域あたり有界なメモリ、原理的な確率的融合、定数時間の空間クエリ。
- 欠点: 解像度はボクセルサイズに固定される(細かい詳細のメモリコストは3乗で増える)、離散化アーティファクト、そして硬い格子はループ閉じ込み後のマップ変形を扱いにくくする — ドリフトの補正には再統合やサブマップシフトが必要であり、これが密なSLAMにおいて変形可能なサーフェルマップが主要な競合相手となる理由である。
SLAMにおける意義
- ボクセルマップは、SLAMからマップのロボティクス的利用への橋渡しである。経路計画、障害物回避、探索はすべて「この領域は自由か?」という問いを必要とする。これは点群では答えられないクエリである。
- TSDFボクセル格子は、密なRGB-D SLAM(KinectFusionおよびその後継)を支え、レイキャスティングによるフレーム-モデル間トラッキングに用いられる滑らかな表面モデルを提供する。
- OctoMap方式の占有マップは、SLAMシステムがナビゲーションスタック(例えばROS内)に供給する際の標準的な出力表現である。