前言
在机器人导航系统中,准确确定移动机器人的状态(位置与朝向)是核心任务之一。传统方法通常依赖占据栅格地图等显式表示,但这类地图在复杂室内环境中可能不够精确。本教程将介绍一种基于2D激光雷达和神经辐射场(NeRF)的隐式场景表示方法,并将其集成到标准蒙特卡罗定位(MCL)系统中,实现高精度、快收敛的室内全局定位。
主要贡献
- 提出一种名为神经占据场的隐式场景表示模型,用于替代传统的二维地图。
- 基于该隐式地图设计了一个高性能的观测模型,并整合到基于2D激光的全局定位系统中。
- 在多个公开数据集和自己收集的数据集上进行了实验评估,结果表明与传统场景表示(如占据栅格地图、希尔伯特地图)相比,本方法在全局定位精度、收敛速度和实时性方面均具有竞争力。
主要方法
隐式场景表示(神经占据场)
我们使用一组已知准确姿态的2D激光数据作为训练样本。具体流程如下:
- 根据每个样本的姿态和2D激光雷达的内参,计算每条射线的方向。
- 在每条射线上均匀采样N个空间点。
- 将每个空间点p输入神经网络,输出该点对应的占据概率 pocc。

接着,对每条射线使用光线投射(ray-casting)算法,根据采样点的深度 m 及其占据概率 pocc 渲染出射线对应的深度值:


最终,网络能够估计出在当前机器人姿态下可能观测到的2D激光扫描数据。为优化神经网络参数,我们使用以下损失函数:
- 几何损失:预测值与真实2D激光扫描之间的 L1损失:

- 占据概率正则化:通过负对数似然约束,使预测的占据概率接近1(被占据)或0(不被占据):

- 总损失函数:

小提示:训练神经网络时,建议使用Adam优化器,学习率设为1e-4,批量大小根据GPU内存调整(例如32或64)。通常训练100个epoch即可收敛。
常见问题:为什么采用隐式表示而不是传统的栅格地图?
答:隐式表示(如神经占据场)可以学习到更平滑、更连续的场景几何,尤其在传感器噪声大或数据稀疏的情况下,泛化能力更强,能预测未观测区域的激光扫描。
全局定位系统(集成MCL)
当神经网络训练完成后,我们可以预测任意机器人姿态对应的2D激光观测。因此,将其作为观测模型嵌入到标准蒙特卡罗定位(MCL)框架中。MCL系统的工作流程如下:
- 在初始阶段,随机撒下大量“粒子”,每个粒子代表一个假设的机器人姿态,并赋予初始权重。
- 机器人在环境中移动时,基于隐式表示的观测模型会根据每个粒子的姿态,预测该姿态下的2D激光扫描。
- 计算预测扫描与真实激光数据的相似度,并以此更新粒子权重。
- 执行重采样:移除低权重粒子,保留并复制高权重粒子。
- 重复迭代,粒子逐步收敛到真实姿态附近。
- 最后,对收敛后的粒子进行加权平均,得到最终估计的机器人姿态。

小提示:粒子的初始数量建议设为1000~5000,可根据环境复杂度调整。如果环境较大,可适当增加粒子数以保证覆盖度,但需平衡实时性。
常见问题:粒子滤波会不会陷入局部最优?
答:通过合理的初始分布(例如均匀撒点)和观测模型的精准度,本方法能有效避免早期陷入局部最优。实验表明,即使初始姿态完全未知,系统也能快速收敛到正确位置。
主要结果
室内全局定位实验
我们以现有蒙特卡罗定位算法为基线,在自己收集的数据集上对比了全局定位精度。实验结果如下:



从图表可以看出,本方法在定位精度上达到了SOTA(当前最优),并且收敛速度显著快于传统方法。此外,即使粒子数量减少(例如从3000降至500),本方法的姿态追踪能力依然保持稳定。
观测模型评估
我们在三个经典室内数据集(Freiburg Building 079、Intel Lab、MIT CSAIL)上对比了隐式场景表示与传统栅格地图的观测模型性能。结果如下:

实验证明:
- 在训练数据充足时,隐式地图的预测精度与栅格地图相当或更优。
- 在数据稀疏的场景(如MIT CSAIL数据集)中,隐式地图展现出更强的泛化能力,能够准确预测未包含在训练集区域中的激光扫描。
常见问题:隐式地图训练需要多长时间?
答:以单张GTX 1080Ti显卡为例,训练一个场景(约1000组激光数据)大约需要10~20分钟。实际应用中可根据场景复杂度调整网络层数(建议3~4层全连接层,每层128个神经元)。
总结
本教程详细介绍了如何利用2D激光雷达和神经辐射场(NeRF)的隐式表示(神经占据场)来提升室内移动机器人的全局定位性能。通过将训练好的隐式地图作为观测模型集成到MCL框架中,系统能够更准确地估计机器人姿态,尤其在数据稀疏或噪声较大的环境中表现出显著优势。项目代码已开源(https://github.com/PRBonn/ir-mcl),读者可自行复现和扩展。
