Hotdry.
systems-engineering

大鼠玩DOOM VR系统工程实现:从3D打印到实时数据流的神经科学实验平台

构建低于2000美元的神经科学VR实验系统,实现大鼠在DOOM II环境中的自动化训练,涵盖硬件设计、实时数据流处理与操作条件反射的工程参数。

神经科学实验的传统硬件成本往往高达数万美元,这限制了研究的可及性与创新速度。2021 年,神经科学家 Viktor Tóth 通过一个 DIY 项目展示了另一种可能:用低于 2000 美元的预算构建完整的啮齿动物 VR 系统,并成功训练三只大鼠在 DOOM II 引擎中导航虚拟走廊。这个项目的工程价值不仅在于成本控制,更在于其模块化设计、实时数据处理架构和自动化训练机制的实现。

硬件架构:从 3D 打印到传感器集成的模块化设计

整个 VR 系统的核心是一个 40 厘米直径的泡沫球,表面涂有橡胶涂层以增加摩擦力。大鼠站在这个球形跑步机上,身体通过机械臂固定,形成自然的运动姿态。系统的硬件设计遵循模块化原则,每个组件都可以独立测试和替换。

运动传感系统

运动检测使用了两个经过改造的激光鼠标传感器,分别安装在前方和左侧,覆盖三个轴向的运动数据。激光鼠标的检测范围约为 1 厘米,为了应对泡沫球表面的不规则性,前部轴承安装在可调节的 "魔术臂" 上,确保传感器与球面保持恒定距离。

传感器数据通过 USB 接口传输到主控计算机,使用 Linux 的evdev库实时读取输入事件。这种设计实现了毫秒级的运动数据采集延迟,为实时游戏交互提供了基础。

3D 打印的机械结构

所有定制部件(附件、电气组件支架、机械装置)都在 Blender 中设计,然后 3D 打印。设计过程中测试了数十个版本,最终确定了最优结构。特别值得注意的是,为了支持不同尺寸的泡沫球,Tóth 编写了一个 Blender Python 脚本,根据球的直径、3D 打印机尺寸和轴承规格自动生成支撑臂的 3D 模型。

# 伪代码:Blender脚本自动生成支撑臂
def generate_support_arms(ball_radius, printer_bed_size, bearing_dimensions):
    # 计算支撑臂的角度和位置
    # 确保轴承与球面呈90度接触以最小化摩擦
    # 生成可3D打印的STL文件

反馈机制硬件

正向反馈使用精密电磁阀控制糖水供给,每次剂量控制在数十微升。负向反馈原本计划使用 12V 微型气泵产生空气喷射,但最终出于谨慎考虑未在实际实验中使用。所有电子设备都安装在铝制框架上,框架由 Misumi 预切割并订购,确保了结构的稳定性和可重复性。

软件控制:实时数据流处理与游戏状态同步

系统的软件架构采用分层设计,将硬件控制逻辑尽可能推送到 PC 端,同时保持微控制器的响应时间在可接受范围内。

数据流架构

运动数据流遵循以下路径:

  1. 激光鼠标传感器 → USB 接口 → Linux 输入事件系统
  2. Python evdev库读取原始运动数据
  3. 计算时间序列上的运动速度
  4. 缩放并转发到 ViZDoom 引擎
  5. ViZDoom 将运动转换为游戏内步伐

整个数据流延迟控制在 50 毫秒以内,确保了大鼠运动与游戏反馈的实时同步。

ViZDoom 游戏接口

ViZDoom 原本是为强化学习算法训练设计的 Doom API,但其丰富的游戏状态接口使其成为理想的实验平台。通过 ACS 脚本,系统可以访问玩家位置、怪物击杀数等游戏变量,并将这些信息暴露给 Python 实验脚本。

# 简化的ViZDoom接口代码
import vizdoom as vzd

# 初始化游戏
game = vzd.DoomGame()
game.load_config("experiment.cfg")
game.init()

# 获取游戏状态
state = game.get_state()
player_position = state.game_variables[0]  # 自定义ACS变量
monster_count = state.game_variables[1]

# 发送动作
action = [move_forward, turn_left, turn_right, shoot]
reward = game.make_action(action)

微控制器通信协议

两个 Arduino 微控制器管理所有电子设备:2 个线性执行器 + 电机、2 个气泵、1 个电磁水阀、1 个推拉式电磁铁和射击按钮。PC 通过串口与微控制器通信,使用简单的二进制协议:

  • 第一个字节:消息类型(扩展执行器、分配糖水等)
  • 后续字节:有效载荷(执行器扩展时间、水量等)

这种设计保持了协议的简洁性,同时允许在 Python 端实现复杂的控制逻辑。

训练自动化:操作条件反射的工程实现参数

系统的核心创新在于自动化训练机制,这减少了实验者的人工干预,提高了训练的一致性和可重复性。

2D 运动训练算法

训练大鼠在球形跑步机上行走采用渐进式方法:

  1. 初始阶段:如果大鼠停滞不动,线性执行器将轮子推向球体,电机旋转 2 秒
  2. 适应阶段:大鼠学会利用电机辅助,开始主动行走
  3. 自主阶段:大鼠完全自主控制运动

关键工程参数:

  • 电机推力:通过弹簧调节,保持与不规则球面的恒定接触压力
  • 训练间隔:每次辅助后等待 3-5 秒观察大鼠反应
  • 奖励阈值:连续自主运动 5 秒触发糖水奖励

射击行为训练机制

射击训练设计了一个精巧的机械系统:大鼠的背带连接到一个 3D 打印的臂上,允许垂直运动。推拉式电磁铁作为训练机制,当怪物出现在玩家前方时:

  1. 软件检测到怪物接近
  2. 激活电磁铁,轻微抬起大鼠
  3. 电磁铁轴接触按钮,触发游戏内射击
  4. 释放糖水奖励

理想情况下,大鼠学会在怪物面前抬起身体(一种自然的后仰行为),从而自主触发射击。电磁铁使用脉宽调制驱动,实现更渐进的拉动,避免惊吓动物。

实时行为状态机

整个训练过程由一个不到 300 行的 Python 脚本控制,实现了并发的事件处理:

class RatTrainingStateMachine:
    STATES = ['IDLE', 'WALKING', 'TURNING', 'SHOOTING_TRAINING', 'REWARD']
    
    def __init__(self):
        self.current_state = 'IDLE'
        self.transition_table = {
            'IDLE': self._handle_idle,
            'WALKING': self._handle_walking,
            # ... 其他状态处理函数
        }
    
    def update(self, motion_data, game_state):
        handler = self.transition_table[self.current_state]
        new_state, actions = handler(motion_data, game_state)
        self.current_state = new_state
        return actions

成本效益分析:DIY 系统与商业方案的工程对比

成本分解

Tóth 系统的总成本低于 2000 美元,主要组件包括:

  1. 3D 打印材料:$150-200(PLA/ABS 耗材)
  2. 电子组件:$300-400(Arduino、传感器、执行器、电磁阀)
  3. 机械部件:$500-600(铝框架、轴承、泡沫球)
  4. 显示设备:$800(曲面 Dell 显示器)
  5. 杂项:$100-200(线缆、连接器、工具)

相比之下,商业啮齿动物 VR 系统价格通常在 7 万美元以上,主要差异在于:

工程质量对比

  1. 精度与校准:商业系统提供亚毫米级运动跟踪精度,DIY 系统依赖激光鼠标传感器,精度约为 1 厘米
  2. 可重复性:商业系统经过工厂校准,DIY 系统需要手动校准每个组件
  3. 支持与维护:商业系统提供专业技术支持,DIY 系统依赖社区和自行调试

可扩展性优势

DIY 系统的最大优势在于可定制性。研究人员可以:

  1. 修改硬件配置以适应特定实验需求
  2. 集成额外的传感器(EEG、EMG、眼动追踪)
  3. 开发自定义的软件分析工具
  4. 快速原型化新的实验范式

工程教训:可复现性与扩展性设计

硬件设计的关键参数

  1. 轴承接触角度:必须保持 90 度接触以最小化摩擦,偏差超过 5 度会导致明显的运动阻力
  2. 弹簧刚度:执行器与轮子之间的弹簧刚度需要精确计算,太软无法传递足够扭矩,太硬会过度推动球体
  3. 传感器采样率:激光鼠标的标准采样率为 125Hz,对于大鼠的快速运动足够,但对于更精细的神经相关分析可能需要升级到 500Hz 以上

软件架构的优化空间

  1. 数据流水线:当前的串行处理存在累积延迟,可改为并行流水线架构
  2. 状态管理:使用更正式的状态机实现(如 Python 的transitions库)提高代码可维护性
  3. 配置管理:将所有硬件参数和训练参数外部化为 JSON 配置文件,便于实验复现

实验协议标准化建议

基于此项目的经验,建议未来的神经科学 VR 实验遵循以下工程标准:

  1. 运动数据格式:定义标准的运动数据格式(位置、速度、加速度的时间序列)
  2. 事件标记协议:统一标记行为事件(开始行走、转向、射击尝试)的时间戳格式
  3. 校准程序:制定详细的系统校准步骤,包括传感器零点校准、运动缩放因子测定
  4. 数据同步:实现硬件时钟同步,确保运动数据、游戏事件和神经记录的时间对齐

技术局限与未来方向

已识别局限性

  1. 训练时间不足:11 天的 VR 训练不足以完成复杂的射击行为训练
  2. 系统开发并行性:硬件与软件同步开发导致训练条件不一致
  3. 动物行为变异性:大鼠的个体差异和不可预测行为影响训练效果

工程改进建议

  1. 模块化传感器升级:替换激光鼠标为光学编码器,提高运动检测精度
  2. 分布式控制系统:使用 ROS(机器人操作系统)架构,实现更好的组件解耦
  3. 自动化校准工具:开发软件辅助的校准程序,减少手动调整时间
  4. 实时数据分析流水线:集成在线行为分类算法,实现自适应训练

神经科学应用扩展

此工程平台为多种神经科学研究提供了基础:

  1. 空间导航研究:在复杂虚拟迷宫中研究海马体位置细胞活动
  2. 决策行为分析:在游戏任务中研究前额叶皮层的决策机制
  3. 运动学习:追踪小脑在运动技能获取中的可塑性变化
  4. 多模态集成:结合视觉、前庭和本体感觉输入的研究

结语:低成本神经科学工程的可行性

Viktor Tóth 的 "大鼠玩 DOOM" 项目展示了神经科学研究中工程创新的力量。通过精心的硬件设计、简洁的软件架构和自动化的训练机制,他构建了一个功能完整且成本可控的实验平台。这个项目的真正价值不在于让大鼠玩电子游戏,而在于证明了:

  1. 成本不是创新的障碍:2000 美元的预算可以构建出价值 7 万美元系统 80% 的功能
  2. 开源硬件与软件的潜力:基于 Arduino、3D 打印和 Python 的生态系统足够强大,支持复杂的神经科学实验
  3. 跨学科工程的价值:将游戏开发、机械工程、嵌入式系统和行为科学相结合,创造出全新的研究工具

对于希望进入系统神经科学领域的研究者,这个项目提供了一个完整的工程蓝图。从 3D 建模到实时数据流,从硬件校准到行为训练,每个环节都有详细的技术参数和实现细节。更重要的是,它展示了如何将工程思维应用于生物学问题,创造出既实用又创新的研究工具。

在神经科学日益依赖复杂技术平台的今天,这种 DIY 工程方法不仅降低了研究门槛,更促进了方法的透明度和可重复性。当每个组件都可以被理解、修改和优化时,科学发现的速度和质量都将得到提升。


资料来源

  1. Viktor Tóth. "Rats in Doom VR: Building a rodent VR setup from scratch." Medium, October 2021.
  2. ViZDoom Documentation. Farama Foundation. https://vizdoom.farama.org
  3. Thurley & Ayaz. "Virtual reality systems for rodents." Current Zoology, 2017.

注:所有动物实验均经过 Feinstein Institutes 机构动物护理与使用委员会批准。

查看归档