体素地图 (Voxel Map)
体素地图将3D空间离散化为规则的立方体网格(“体积元素”),每个体素存储环境的局部属性:占据概率、截断有符号距离(TSDF)、颜色、强度或语义标签。点云是一堆表面采样点的集合,而体素地图则是空间上的一个场——它能表示自由空间和未知空间,而不仅仅是表面,并且它会融合对同一区域的重复测量,而不是累积重复项。
体素中存储什么
- 占据(Occupancy):每个体素的 ,用对数几率贝叶斯规则更新
因此每次新的测量都会增加/减少证据;沿传感器射线的体素被更新为自由,射线终点处的体素被更新为占据。
- TSDF:从体素中心到最近表面的有符号距离,被裁剪到一个截断带 内:
符号用来区分自由侧和占据侧。连续的深度帧通过每个体素的加权滑动平均进行融合(KinectFusion),表面在零交叉处用Marching Cubes提取。
- 颜色/语义:用于语义建图的每体素外观或类别标签。
驯服 的内存开销
在体积 上、以分辨率 建立的稠密网格,内存代价为 ——在厘米级分辨率下对大场景而言代价过高。标准的应对方法:
- 八叉树(OctoMap):递归地细分空间;大片同质区域(自由或未知)用单个粗粒度节点表示,占据的表面用精细叶节点表示。自适应分辨率加上概率占据;是机器人学中事实上的标准3D占据地图。
- 体素哈希(Voxel hashing):只为观测到的表面附近分配体素块(例如 个体素),按其整数块坐标的空间哈希进行索引。可以实现 查找,内存与表面面积而非体积成比例;是大规模实时TSDF融合的基础(Nießner等人的体素哈希、InfiniTAM)。
- 层级化稀疏网格(OpenVDB风格):源自图形学界的”网格的树”结构,用于现代建图后端在精细分辨率下的稀疏存储。
权衡
- 优点:显式的自由/未知空间(对碰撞检测和探索至关重要)、每个区域的内存开销与被重复观测的次数无关(有界)、原理性的概率融合、常数时间的空间查询。
- 缺点:分辨率由体素大小固定(精细细节的内存开销随体素大小三次方增长)、离散化伪影,以及刚性网格使得回环检测后的地图变形变得困难——修正漂移需要重新积分或子地图偏移,这也是可变形surfel地图成为稠密SLAM主要竞争对手的原因。
对SLAM的意义
- 体素地图是SLAM通往地图的机器人学应用的桥梁:路径规划、避障和探索都需要回答”这个区域是自由的吗?“——这是点云无法回答的查询。
- TSDF体素网格是稠密RGB-D SLAM(KinectFusion及其后继者)的基础,提供了通过光线投射进行帧到模型跟踪所用的光滑表面模型。
- 当SLAM系统为导航栈(例如在ROS中)提供输入时,OctoMap风格的占据地图是标准的输出表示。