ROG-Map: 一种高效的以机器人为中心的大场景高分辨率 LiDAR 运动规划网格地图
本文深入解读了 ROG-Map 论文,这是一种专为大场景、高分辨率激光雷达(LiDAR)运动规划设计的占用栅格地图(OGM)。它通过零拷贝的滑动策略和增量障碍膨胀算法,显著降低了内存消耗与计算负载,非常适合资源受限的自主飞行平台。
核心创新点
- 机器人中心局部地图:维护随机器人移动的均匀网格 OGM,大幅降低大场景下的内存成本。
- 增量障碍膨胀:提出新的膨胀方法,将计算复杂度降至 O(N),在公共数据集上优于现有 SOTA 方案。
- 零拷贝滑动策略:仅维护机器人周围局部地图,无需复制数据即可适应大场景任务。
该方案专注于避障所需的局部地图,追求计算效率的最大化,并已在基于 LiDAR 的四旋翼平台上进行了真实世界测试。
基础理论:占据栅格地图更新
问题定义
当激光雷达扫描环境时,我们需要通过数学计算判断某个栅格内是否存在障碍物。本质上是以测量数据为条件,估计栅格被占据的概率。
贝叶斯概率更新
由于传感器存在噪声,单次扫描不足以断定栅格状态。我们采用马尔可夫过程,结合历史数据推测。经典的二元贝叶斯更新公式如下:
$$P_{1:k}(n) = [1 + P]^{-1}$$
其中 $P$ 是几率(Odds),定义为:
$$P = \frac{P_{1:k}(n)}{1 - P_{1:k}(n)} = \frac{1 - P_k(n)}{P_k(n)} \cdot \frac{1 - P_{1:k-1}(n)}{P_{1:k-1}(n)} \cdot \frac{P(n)}{1 - P(n)}$$
这里涉及多次乘除法,随着扫描次数增加,浮点数运算不仅慢,还容易导致数值下溢。因此,引入**对数几率(Log-odds)**是工程上的关键优化。
对数几率优化
对数几率将乘法转化为加法,极大提升了计算效率:
$$L_{1:k}(n) = L_{1:k-1}(n) + L_k(n)$$
这意味着当前时刻的地图状态等于上一时刻状态加上本次观测带来的变化。系统只需保存 $L_{1:k}(n)$ 的值即可,因为它是双射的。
动态环境截断策略
在动态环境中,如果障碍物移走,概率需要快速下降。为此,论文采用了截断更新策略,限制对数几率的上下界:
$$L_{1:k}(n) = \max(\min(L_t, l_{max}), l_{min})$$
这确保了概率不会无限趋近于 0 或 1,给后续观测留有修正空间。代码中对应的参数配置通常包括 p_min(下限)、p_max(上限)以及命中/未命中的概率阈值。
栅格状态判定
根据设定的阈值,栅格最终被判定为三种状态:
- KnownFree(已知空闲):对数几率低于空闲阈值。
- Occupied(已被占据):对数几率高于占据阈值。
- Unknown(未知区域):介于两者之间。
为了后续膨胀算法做准备,论文还定义了上升栅格 (Rising Grid) 和 下降栅格 (Falling Grid),分别指代从非占据变为占据,或从占据变为非占据的栅格。
ROG-Map 核心机制
A. 机器人中心局部地图 (Robocentric Local Maps)
解决的核心痛点是:无人机内存有限,但现实世界无限。如果存储全局地图,几公里外就会崩溃。ROG-Map 采用'跑步机'式的局部地图,始终罩住机器人,超出范围的旧数据直接丢弃。
坐标转换流程如下:
- 全局坐标 -> 全局索引:通过分辨率 $r$ 进行取整。
- 全局索引 -> 中间索引:利用循环缓冲区概念,对地图长度取余。
- 中间索引 -> 局部索引:归一化处理,确保数组下标为正且合法。


