MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > RatSLAM仿生视觉导航与定位建图系统

RatSLAM仿生视觉导航与定位建图系统

资 源 简 介

本项目实现了一个名为RatSLAM的仿生导航系统,该系统基于啮齿类动物大脑的神经机理,专门设计用于在低分辨率单目图像数据中进行操作。项目核心功能是模拟海马体和内嗅皮层的神经过程来实现机器人的同时定位与地图构建(SLAM)。系统主要包含四个关键计算节点:1. 视觉里程计节点,用于从图像流中估计机器人的运动向量;2. 局部视图细胞(Local View Cells)节点,负责处理视觉输入,将图像转换为神经活动模式以识别特定场景;3. 姿势细胞(Pose Cells)节点,采用持续吸引子网络模型来表示和维护机器人的位置与方向信念;4. 经验地图(Experience Map)节点,将神经状态整合为环境的拓扑度量地图。该项目不仅实现了上述核心算法,还包括了参数整定策略、类图与序列图的逻辑实现、数据回放功能以及可视化工具,能够直观展示大鼠脑部导航细胞的活动状态和生成的环境地图。该系统经过验证,能够映射大规模环境(如整个郊区)并支持长期的机器人自主递送实验,适用于需要轻量级视觉导航解决方案的机器人应用。

详 情 说 明

RatSLAM 仿生视觉导航及 SLAM 系统 (MATLAB 实现)

项目介绍

本项目是一个基于 MATLAB 实现的 RatSLAM(Rat Simultaneous Localization and Mapping)仿生导航系统。RatSLAM 是一套模拟啮齿类动物(如大鼠)海马体和内嗅皮层神经机理的算法,通过模拟大脑中的导航细胞活动来实现机器人的自主定位与地图构建。

该实现专门针对低分辨率单目视觉数据设计,通过计算神经科学模型将视觉输入和运动感知结合,即使在感知模糊或存在漂移的情况下也能构建一致的环境拓扑地图。本项目采用单文件架构,包含完整的仿真环境生成器,无需外部硬件或数据集即可直接运行并观察大鼠脑部导航机制的模拟过程。

功能特性

  • 仿生核心架构:完整实现了局部视图细胞 (Local View Cells, LVC)、姿势细胞 (Pose Cells) 和经验地图 (Experience Map) 三大核心组件。
  • 持续吸引子网络 (CAN):使用 3D 竞争吸引子网络模型来维护机器人的位置和方向信念,具有抗噪声和自动纠错能力。
  • 闭环检测与校正:通过视觉模板匹配识别旧场景,并向姿势细胞网络注入能量以校正由于里程计误差导致的路径漂移。
  • 拓扑-度量地图构建:基于经验地图算法,将神经状态关联为拓扑节点,并通过图松弛算法优化节点间的相对位置。
  • 零依赖仿真:内置仿真数据生成器,自动产生模拟的图像流和里程计数据,无需连接真实摄像头或加载外部日志。
  • 实时可视化:提供动态图形界面,实时展示真实的轨迹对比、当前视觉输入、姿势细胞的神经活动状态以及生成的经验地图。

系统要求

  • MATLAB R2018b 或更高版本
  • Image Processing Toolbox (用于高斯滤波 imgaussfilt 函数)

使用方法

  1. 确保 MATLAB 当前工作目录中包含主程序脚本。
  2. 清理工作区并运行主函数 main
  3. 系统将自动初始化参数,生成仿真数据,并弹出一个名为 "RatSLAM System Simulation" 的可视化窗口。
  4. 控制台将输出系统运行状态,图形界面将展示 SLAM 过程直至 SIM_STEPS (默认500步) 结束。

代码实现与算法原理

本项目的主要逻辑集中在 main 函数及其子函数中,以下是基于实际代码的详细实现分析:

1. 系统参数与初始化

系统首先定义全局配置 PARAMS,确立了神经网络的规模和动力学属性:
  • 姿势细胞维度:定义了 40x40 (XY) x 36 (Theta) 的 3D 神经元阵列。
  • 权重与抑制:设置了兴奋和抑制权重的方差,以及全局抑制常数,确保持续吸引子网络能维持单一能量包。
  • 初始化状态STATE.pose_cells 被初始化为中心点有一个高斯能量包,代表初始位置信念。

2. 仿真主循环

SIM_STEPS 循环中,系统依次执行以下步骤:

步骤 A: 获取传感器数据 调用 DATA 结构体获取当前时间步的模拟图像和里程计数据(线速度 v 和角速度 w)。

步骤 B: 局部视图细胞 (LVC) 处理process_visual_view 函数执行。该模块维护一个视觉模板库:

  • 模板匹配:通过计算当前图像与历史模板的绝对差之和 (Sum of Absolute Differences) 来寻找最佳匹配。
  • 新视图判定:如果最佳匹配的差异分数高于 LVC_MATCH_THRESH,则判定为新场景,创建新的视觉模板 ID;否则复用旧 ID,实现场景再认。
步骤 C: 姿势细胞 (Pose Cells) 更新 这是系统的核心动力学部分,包含三个子过程:
  1. 路径积分 (Path Integration)path_integration 函数根据里程计速度,通过 circshift (循环移位) 操作移动 3D 姿势细胞矩阵中的能量包。先处理方向 (theta) 层的移位,再根据不同角度层计算对应的 XY 位移。
  2. 视觉校准 (View Injection):如果 LVC 识别出旧场景,inject_energy 函数会提取该视图历史上关联的姿势细胞坐标,并在当前网络对应位置注入能量。这实现了闭环校正,将机器人的位置信念“拉”回记忆中的位置。
  3. 吸引子动力学 (Attractor Dynamics)attractor_dynamics 函数模拟神经元的相互作用。通过 3D 高斯平滑 (imgaussfiltsmoothdata) 模拟局部兴奋,随后进行全局归一化和全局抑制 (减去常量),最后再次归一化。这一过程确保能量包不会因为计算误差消散或扩散,始终保持紧凑的“小包”形状。

步骤 D: 经验地图 (Experience Map) 更新update_experience_map 函数管理:

  • 节点创建:当视觉场景发生变化或姿势细胞的能量中心移动超过阈值 (EXP_DELTA_PC_THRESH) 时,创建新的经验节点。
  • 闭环连接:利用 find_node_by_view_and_pc 查找视觉 ID 相同且姿势细胞坐标相近的现有节点。如果找到,说明发生了闭环,建立当前节点到旧节点的边。
  • 图松弛 (Relaxation)relax_graph 函数通过迭代算法优化地图。它遍历所有边,根据边记录的相对位移约束来调整相连节点的空间位置,从而消除累积误差。
步骤 E: 可视化 每隔两帧刷新一次图形,绘制真实轨迹与算法估计轨迹的对比,以便直观评估 SLAM 效果。

关键算法细节

  • 视觉匹配策略:代码采用简单的全图像素差值对比,适用于仿真环境或光照稳定的低分辨率场景。
  • 能量注入机制:在检测到闭环时,并不是直接重置位置,而是通过向网络中注入能量的方式,让吸引子动力学自然地融合“里程计推算位置”和“视觉记忆位置”,体现了生物导航的柔性特性。
  • 3D 卷积模拟:为了提高 MATLAB 中的运行效率,代码使用了 imgaussfilt (XY平面) 和 smoothdata (Theta轴) 的组合来近似模拟 3D 卷积神经网络的兴奋核效应。