ROG-Map:一种高效的大场景 LiDAR 运动规划网格地图方案
在自主飞行和机器人导航领域,如何在有限算力下构建大场景、高分辨率的局部地图一直是个挑战。本文深入解析 ROG-Map(Robocentric Occupancy Grid Map),这是一种专为激光雷达设计的均匀网格占用地图方案。它通过零拷贝滑动策略和增量障碍膨胀算法,在保证精度的同时显著降低了内存消耗和计算负载。
核心创新点
- 以机器人为中心的局部地图:地图随机器人移动,仅维护周围区域,大幅降低大场景下的内存成本。
- 增量障碍膨胀方法:将膨胀计算复杂度优化至 O(N),遍历网格数量减少 70%~97%,显著提升实时性。
- 零拷贝滑动策略:通过循环缓冲区复用内存,避免大规模数据搬运。
该方案特别适用于对计算效率要求极高的避障场景,如四旋翼无人机的高速飞行。
一、基础理论:占据栅格地图更新
1. 问题定义
当激光雷达扫描环境时,我们需要判断某个栅格是否被占据。这本质上是一个概率估计问题:基于历史测量数据,计算栅格 $n$ 被占据的概率 $P_{1:k}(n)$。
2. 贝叶斯概率更新
由于传感器存在噪声,单次扫描不足以定论。我们采用马尔可夫过程进行迭代更新。经典的二元贝叶斯公式如下:
$$P_{1:k}(n) = [1 + P]^{-1}$$
其中 $P$ 是几率的比值。直接连乘会导致浮点数运算缓慢且容易下溢,因此引入对数几率(Log-odds)。
3. 对数几率的优势
对数几率将乘法转化为加法:
$$L_{1:k}(n) = L_{1:k-1}(n) + L_{k}(n)$$
这意味着当前时刻的状态等于上一时刻状态加上本次观测带来的变化。这种形式不仅计算快,而且只需要保存 $L_{1:k}(n)$ 的值即可还原概率。
4. 截断策略与状态判定
为了防止动态环境中障碍物移除后概率无法回退,论文采用了截断策略,限制对数几率的上下界 $l_{min}$ 和 $l_{max}$。这样即使障碍物消失,地图也能迅速更新。
最终根据阈值将栅格分为三类:
- KnownFree(已知空闲):确定无遮挡。
- Occupied(已被占据):确认有障碍。
- Unknown(未知区域):尚未探测到。
这里引出了两个关键概念,为后续膨胀算法做铺垫:
- 上升栅格 (Rising Grid, RG):从 Unknown/Free 变为 Occupied。
- 下降栅格 (Falling Grid, FG):从 Occupied 变为 Unknown/Free。
二、ROG-Map 核心机制
A. 机器人中心局部地图 (Robocentric Local Maps)
解决的核心痛点是:无人机内存有限,但世界无限。如果存储全局地图,几公里外就会崩溃。
ROG-Map 采用了一种'跑步机'式的思路:地图始终罩在机器人周围,超出范围的旧数据被丢弃,新数据补入。这依赖于循环缓冲区(Circular Buffer)的概念。
坐标转换流程如下:
- 全局坐标 -> 全局索引:根据分辨率 $r$ 取整。
- 全局索引 -> 中间索引:对地图长度 $s_k$ 取余,实现循环。
- 中间索引 -> 局部索引:归一化处理负数,确保数组下标合法。
- 局部索引 -> 1D 内存地址:通过展平公式映射到连续内存空间。
最核心的魔法在于Zero-copy(零拷贝)滑动策略。传统方法在地图滑动时需要清空并重新填充内存,而 ROG-Map 只是将淘汰区域的内存清零,这些空间立即被前方新探测的数据复用。数据格子物理位置不变,仅逻辑索引偏移,极大节省了开销。


