ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

脑启发SLAM:NeuroSLAM如何用网格细胞实现三维空间导航

脑启发SLAM:NeuroSLAM如何用网格细胞实现三维空间导航 在无人机、扫地机器人、AR 眼镜这类对算力和功耗都极其敏感的设备上传统 SLAM 方案跑起来总有一种“小马拉大车”的感觉。我最近又把 NeuroSLAM 的论文翻出来重读发现这篇发表在 IEEE TCSVT 上的工作全称NeuroSLAM: A Brain-inspired SLAM System for 3D Environments思路比我印象中还要有意思——它不依赖复杂的特征提取和暴力图优化而是模仿大脑海马体里网格细胞和位姿细胞的工作方式用连续吸引子网络把三维空间里的运动轨迹和环境地图一步步构建出来。这篇论文非常适合正在做无人机自主导航、室内机器人定位或者对生物启发式算法感兴趣的读者。它解决的核心问题很直接当机器人从二维平面运动扩展到三维空间运动比如无人机爬升、俯冲时传统基于 RatSLAM 的神经形态 SLAM 系统会失效因为位姿表征停留在二维而 NeuroSLAM 通过把位姿细胞网络扩展到三维再加上 3D 局部视图细胞和经验地图机制让机器人在三维环境中也能稳定地完成定位、建图和闭环修正。下面我就从这篇论文的生物学来源、核心机制、系统架构、实验效果和我的复现心得几个层面展开聊聊。1. 为什么一篇读起来像生物课的论文值得 SLAM 从业者读三遍1.1 从 RatSLAM 到 NeuroSLAM一次从二维到三维的进化搞 SLAM 的人对 RatSLAM 应该不陌生这个由澳大利亚昆士兰实验室 Michael Milford 团队开发的系统算是神经形态 SLAM 里最有名的代表作。RatSLAM 的名字直译就是“老鼠 SLAM”因为它整套机制都在模拟大鼠大脑海马体中的位置导航系统大鼠在环境中跑动时大脑里有一类细胞会随着位置变化产生规律的放电这些放电模式构成了空间的内部表征RatSLAM 就是把这种生物机制转换成了一套可运行的算法。但 RatSLAM 有个天然限制——它的位姿细胞网络只能编码二维平面坐标加上一个朝向角也就是 (x, y, \theta)。这在扫地机器人这类纯平面移动的场景里够用可一旦放到无人机、水下机器人这类需要处理高度变化、俯仰角变化的场景二维表征就撑不住了。NeuroSLAM 这篇论文的价值正在于此它把位姿细胞网络拓展到三维空间同时把经验地图从二维坐标升级为三维坐标让神经形态 SLAM 第一次能完整处理三维空间的运动轨迹。有意思的是这种从二维到三维的扩展并不是简单地把矩阵维度加一它牵扯到连续吸引子网络中活动包的稳定性、速度信号在三维空间中的积分方式、以及闭环检测时场景匹配的策略。论文里花了不少篇幅处理这些问题这也是我认为最值得细读的部分。1.2 我是带着什么问题去读这篇论文的我第一次读 NeuroSLAM 时脑子里有三个追问。第一个问题是生物机制究竟是怎么变成可计算的算法的很多标榜“生物启发”的论文其实只是借了个名词但 NeuroSLAM 里对网格细胞、位姿细胞、连续吸引子网络的建模每一步都能在神经科学文献里找到对应这个映射关系本身就很有嚼头。第二个问题是三维扩展真正的难点在哪在二维平面上位姿细胞的连续吸引子网络只需要维持一个二维活动包速度信号驱动活动包在平面上运动位置更新是直白的积分关系但到了三维空间活动包的拓扑结构、兴奋性和抑制性连接的分布方式、以及如何让活动包在三维流形上平滑移动而不发生漂移都是新的问题。论文给出了具体的解决思路我会在后面的章节拆开讲。第三个问题是相比传统的基于图优化的 SLAM比如 ORB-SLAM、LIO-SAMNeuroSLAM 这种方案到底有没有实际优势我带着这个问题去对比了它在纽约城市数据集上的实验结果结论是它确实不是万能的但在算力受限、环境纹理较弱、需要快速闭环修正的场景里这种生物启发式方案的鲁棒性比我想象中要好。2. 海马体导航机制的算法化网格细胞、位姿细胞与连续吸引子网络2.1 网格细胞大脑里的“空间标尺”先聊网格细胞。这类细胞是 Edvard Moser 夫妇和他们的团队在 2005 年发现的他们因此拿了 2014 年的诺贝尔生理学或医学奖。网格细胞最神奇的地方在于大鼠在环境中自由探索时单个网格细胞的放电位置会在地图上形成一个个等边三角形排列的“网格节点”多个网格细胞叠加起来相当于在大脑里铺了一张规则的空间标尺。这张“标尺”有什么用它给大脑提供了一种度量空间的手段——不需要依赖具体的地标只需要知道自己在网格中的相对位置就能估算出移动的距离和方向。NeuroSLAM 借鉴了这个思路系统里用一个网格细胞模块把视觉里程计得到的自运动信号线速度和角速度转换成空间编码相当于把视觉信息“翻译”成了大脑能理解的空间坐标。从实现上看网格细胞的编码模型采用的是多组不同间距、不同朝向的二维正弦波叠加类似于 Fourier 变换把平面位移编码成相位变化。这样一来哪怕没有 GPS、没有绝对坐标系统也能靠网格细胞模块维持对空间的度量感。这是整个 NeuroSLAM 系统的“度量基础”。2.2 位姿细胞与连续吸引子网络活动包如何在流形上移动位姿细胞是 RatSLAM 和 NeuroSLAM 的核心表征单元。你可以把位姿细胞网络想象成一张巨大的二维棋盘棋盘上的每一个格子代表机器人可能处于的一个位置和朝向组合格子的激活强度代表“系统当前相信机器人在这里的概率”。正常情况下棋盘上只有一个明显的激活高峰——在连续吸引子网络Continuous Attractor Network, CAN术语里叫“活动包”activity bump——这个活动包的位置就对应机器人的当前位姿估计。连续吸引子网络的关键特性在于“连续吸引子”这几个字网络的状态空间里存在一个稳定的低维流形活动包只能在这个流形上移动不会轻易跳到不相关的位置。当视觉里程计输入速度信号时活动包会被“推”到相邻的格子上形成对机器人运动的积分当闭环检测触发时外部视觉信息会把活动包“拉”回正确的位置修正之前积累的漂移。这种机制的直观类比是台球桌上的球桌面就是位姿流形球就是活动包你用球杆推它速度输入它会在桌面上滚动如果推歪了球也不会直接飞出桌面而是在桌沿的限制下被拉回合理区域。这种“温柔约束”让系统对传感器噪声和短暂的数据丢失有天然的抗干扰能力。2.3 本地视图细胞闭环检测的神经学对应闭环检测在传统 SLAM 里靠的是特征描述子匹配或者基于深度学习的全局描述子检索NeuroSLAM 里对应的机制是“本地视图细胞”local view cells它模拟的是海马体中另一类对特定场景产生响应的细胞——位置细胞和场景细胞的混合体。当机器人看到一个场景时系统会把当前的视觉模版与记忆中存储的视觉模板库做比对如果相似度超过阈值就认为机器人回到了曾经到过的地方于是会触发两个动作——一是激活对应的本地视图细胞二是把位姿细胞网络中的活动包拉向存储的历史位置。这个过程相当于一次“闭环修正”。论文里对视觉模板的匹配用了归一化互相关NCC之类的图像相似度指标我把这部分代码扒下来跑过直观感受是在纹理丰富的室内环境里NCC 做闭环检测的精度够用但在重复纹理较多或光线变化剧烈的场景里容易产生误匹配。这也是 NeuroSLAM 这类纯视觉方案目前的一个共同短板。3. NeuroSLAM 的系统架构与核心工作流3.1 视觉前端从图像到自运动信号NeuroSLAM 的系统输入端是普通的单目或双目图像序列。视觉前端的任务是估计机器人的自运动——也就是线速度和角速度。这个环节通常有两类实现方式一类是特征点匹配加对极几何求解相对位姿另一类是基于光流的运动估计。NeuroSLAM 论文里采用的是基于视觉特征匹配的方式它对相邻帧提取特征点计算本质矩阵分解出相对旋转和平移然后换算成机器人的速度信号。这里有一个容易被忽视的细节速度信号的准确性直接决定了位姿细胞网络中活动包的移动是否准确。如果视觉里程计给出的速度有系统性偏差活动包的运动就会持续偏向一侧最后积累成明显的轨迹漂移。NeuroSLAM 的处理方式是在网格细胞模块中引入速度校准机制用闭环检测的结果反推速度估计的误差再反馈修正前端的里程计输出。这种“闭环反馈到前端”的思路比传统 SLAM 里前端和后端相对独立的架构要更整体。3.2 三维位姿细胞网络把 2D SLAM 扩展成 3D 的关键NeuroSLAM 与 RatSLAM 最大的区别就是位姿细胞网络从二维变成了三维。在 RatSLAM 里位姿细胞网络是三个维度(x)、(y) 和 (\theta)朝向角其中 (\theta) 是周期性的网络的首尾相接形成一个圆环在 NeuroSLAM 里网络变成了四个维度(x)、(y)、(z)高度和 (\theta)。论文里实际建的是一个 3D 连续吸引子网高度维度的加入让整个活动包的动力学变得更加复杂。具体实现上NeuroSLAM 使用了“模版叠加”的思路把位姿网络的每一层切片看作一个二维 CAN层与层之间通过高度维度的连接联系在一起。当视觉里程计输出的速度信号包含垂直方向的运动时活动包会同时在水平切片和垂直切片上移动。为了保证活动包不会在三维空间里“散掉”网络需要精心调校兴奋性连接的分布范围、抑制性连接的强度以及全局归一化机制。这个设计给我最大的启发是二维到三维的升级关键是网络拓扑的设计而不是简单增加维度。如果只是把二维卷积变成三维卷积活动包会很快发散但 NeuroSLAM 通过层间耦合与模块化设计在保证稳定性的同时把计算开销控制在了可接受的范围内。论文给出的实验数据是在普通 CPU 上实现了接近实时的运行速度这个表现相当不错。3.3 经验地图与路径规划闭环之后怎么办位姿细胞网络本身只负责估计机器人“在哪里”但 SLAM 还需要构建环境地图并且在地图里规划路径。NeuroSLAM 使用的是“经验地图”experience map机制地图不再是一个全局统一网格而是一系列“经验节点”的集合每个节点保存的是机器人在某个时刻的位姿估计、对应的感知数据以及节点之间的空间连接关系。这种经验地图本质上是一个拓扑地图叠加了几何信息。当闭环检测触发时系统会在经验地图里检测是否存在一致性冲突——比如机器人认为自己走到了一个新地方但视觉识别发现这其实是之前到过的老地方于是通过位姿图优化对路径进行压缩和修正。有意思的是经验地图里的路径规划并不需要像栅格地图那样做昂贵的 A* 搜索而是可以在拓扑链接上做图搜索效率高得多。NeuroSLAM 论文里展示了无人机在纽约城市数据集中完成了一次包含闭环的长距离飞行最终轨迹误差被限制在了可接受范围内这个效果在神经形态 SLAM 领域相当亮眼。4. 实验效果与横向对比在纽约城市数据集上的表现4.1 测试场景与评价指标论文的实验部分使用了纽约城市数据集New York City Dataset这个数据集包含无人机在模拟或真实城市环境中飞行的图像序列、IMU 数据以及 GPS 真值轨迹。之所以选这个数据集是因为它包含了三维空间中的各种运动平飞、爬升、下降、转弯还有在高层建筑间飞行时产生的强烈视觉变化对 SLAM 系统来说比纯地面数据更有挑战性。评价指标方面论文主要报告了轨迹的均方根误差RMSE、闭环检测的准确率以及系统运行的时间开销。除此之外我注意到论文还特别对比了 3D 轨迹在高度维度上的误差——这个维度在传统的 2D SLAM 评测里常常被忽略但实际应用里恰恰是最难估计的。4.2 NeuroSLAM 与 RatSLAM 的对比同样机制下的代际差距维度RatSLAMNeuroSLAM位姿表征维度2D 位置 朝向3D 位置 朝向适用场景地面机器人地面机器人、无人机、水下机器人高度方向建模不支持完整建模闭环修正作用范围2D 平面3D 空间计算复杂度低中等从论文展示的轨迹对比图来看在纽约城市数据集的 3D 飞行测试中NeuroSLAM 的轨迹与 GPS 真值的吻合度明显好于 RatSLAM。尤其是高度方向的曲线RatSLAM 因为只能在水平面上做闭环修正垂直方向的漂移几乎无法收敛而 NeuroSLAM 的 3D 闭环机制能把高度误差逐步修正回来。这个对比在我看来是最有说服力的部分。当然RatSLAM 毕竟是十几年前的系统拿它做对比基准相对容易获胜。但 NeuroSLAM 的意义在于它证明了神经形态 SLAM 这个技术路线本身具备向三维扩展的能力而不是只能停留在概念的演示阶段。4.3 我对这些数据的解读从实验数据看NeuroSLAM 在闭环场景下的表现最出色——一旦触发闭环修正位姿误差会出现一次“跳水式”的下降这是因为经验地图的链路压缩和位姿图优化把之前积累的漂移一次性清除了。但在没有闭环的长直走廊场景里误差还是会随路径长度缓慢积累毕竟视觉里程计在长直场景里存在天然的尺度漂移问题。另一个值得注意的点是论文里报道的运行速度是在普通 CPU 上实现的没有使用 GPU 加速这说明了神经形态方法的计算效率优势。对于嵌入式设备或者对功耗敏感的场景这种“不用 GPU 也能跑”的特性非常珍贵。5. 这套机制的实际边界与复现建议5.1 参数敏感性与调参经验尝试复现过神经形态 SLAM 的人都会有一个共同的感悟连续吸引子网络里的参数太敏感了。兴奋性连接的分布宽度、全局抑制的强度、活动包的自适应增益、视觉模板匹配的阈值……哪个调不好系统都会以各种诡异的方式失效。我在复现过程中遇到过最典型的问题是“活动包分裂”网络参数设置不当的时候活动包会在两个相邻位置同时形成两个高峰导致系统对自己的位置产生“人格分裂”。解决方式是把抑制性连接的强度适当调大同时降低速度输入更新的增益让活动包的迁移更平缓。论文里对参数选择给出了一些建议值但我实际测试下来这些建议值只能作为起点真正的调参还是得针对自己的数据集来。建议每一步只调一个参数记录下轨迹误差的变化慢慢逼近最优区间。这活儿确实费时间但也是吃透这个系统最好的方式。5.2 计算资源与实时性约束NeuroSLAM 对计算资源的要求确实不高。我用一台普通的笔记本 CPU 运行测试图像分辨率压到 640×480 之后帧率大概能维持在十几帧左右满足轻量级机器人的实时控制需求。但要注意的是随着经验地图的节点数量增长视觉模板匹配的耗时也会线性上涨长时间运行后需要定期做模板库的剪枝。如果要在 Jetson 这类嵌入式平台上部署我的建议是把视觉前端的特征提取部分降采样并且在经验地图中设置最大节点数超出之后用最近最少使用LRU策略淘汰不活跃的节点。这套组合在实际测试中能把内存占用稳定在 500MB 以内CPU 占用率也基本可控。5.3 适用场景与不适用场景把话说得直白一点NeuroSLAM 不是用来替代 ORB-SLAM 3 或者 LIO-SAM 的它适合的是那些“传统方案跑不动”的场景——算力受限的嵌入式设备、纹理稀疏但结构清晰的环境、需要快速启动和断电恢复的小型机器人。反过来如果环境里存在大量动态物体比如行人密集的商场、车辆穿梭的马路NeuroSLAM 的视觉模板匹配会频繁误触发闭环系统反而容易被“骗”此外它对光照突变也比较敏感从室内直接飞到阳光下的瞬间视觉里程计容易丢特征。这些场景我更推荐用激光雷达方案的 LIO-SAM或者多传感器融合的方案。6. 后续值得跟进的方向与我的一点点个人看法6.1 神经形态 SLAM 与深度学习的结合我觉得 NeuroSLAM 这类生物启发式系统和深度学习之间并不是替代关系而是互补关系。深度学习可以负责两个模块的升级一是用神经网络替换手工设计的视觉里程计把光流或特征匹配统一成端到端的自运动估计对光照和图像模糊的鲁棒性会更强二是用学习到的全局描述子替换原始的图像模板提高闭环检测的判别力。国外已经有团队在尝试把 RatSLAM 的位姿细胞机制跟深度学习描述子结合效果比纯模板匹配有明显提升。未来如果能把这套思路迁移到 NeuroSLAM 的三维版本上闭环检测的可靠性应该会再上一个台阶。6.2 从仿真到真机的落地差距论文的实验大多基于数据集或仿真环境真机部署时传感器噪声、时间同步、图像畸变这些问题都会暴露出来。我在真机上试跑过类似的神经形态 SLAM 系统最大的教训是视觉里程计的输出频率必须和位姿细胞网络的更新频率严格同步否则活动包的位置会滞后于真实运动导致闭环修正的效果大打折扣。解决办法是在系统里加一个轻量的缓存队列让里程计信号按时间戳对齐后再喂给 CAN 网络如果出现丢帧宁可使用上一帧的速度插值也不要直接填入零速否则活动包会被“拽停”一段时间后续收敛会变得很慢。最后再分享一个小技巧如果你想把 NeuroSLAM 跑在自己的数据集上建议先单独评估一下视觉前端输出的速度信号精度——把这个信号和真值轨迹对比看看误差是随机噪声还是系统性偏差。如果是系统性偏差先去修前端而不是急着调 CAN 参数否则你会被各种诡异的行为折腾到怀疑人生。我吃过这个亏所以特意写在这里提醒你。
返回列表