逆元装置 ▍ INVERSION

丽·芙

CONSTRUCT — LIV
▍
意识海深度 · 回廊稳定
逆元装置 · 待机中
指挥官链接 · 未认证

脑控赛车:当SSVEP遇上ESP32

公開日: 2025-12-10 00:00 623文字 4 min read

この投稿は「日本語」では表示できません。元の投稿を表示しています。
从EEG信号到物理世界——用SSVEP解码结果实时控制一辆玩具赛车,踩过的坑和学到的事。

声桥项目在进行的同时,我给自己开了一个”副线”——脑控赛车。项目从 9 月做到现在,三个多月下来总算有了一个完整的结果。

起因很简单:SSVEP 的解码算法跑通了,但一直在屏幕上看分类结果,总觉得差点意思。我需要一个物理世界的反馈——让脑电信号真正控制一个实体。

整个系统的架构是这样的:

  • EEG 采集:OpenBCI 8 通道生物电放大器
  • 视觉刺激模块:两个以 10Hz 和 12Hz 交替闪烁的 LED 灯,分别对应”左转”和”右转”
  • 解码部分:FBCCA 算法,2 秒滑动窗口,Python 实时处理
  • 控制部分:解码结果通过串口发送给 ESP32 开发板
  • 执行部分:ESP32 控制直流电机驱动赛车转向和前进

最大的坑在于实时性。 脑电解码本身就需要 2 秒的数据积累,加上串口通信、电机响应延迟,总延迟大概在 3-4 秒。这意味着被试需要提前”预判”——在弯道到来前 2 秒就开始注视对应方向的 LED。这对赛车来说是致命的——弯道转瞬即逝。

解决方法是引入混合控制:正常人用键盘控制”前进”,脑电信号只管”转向”。这样前进不需要等待解码延迟,而转向本来就是离散决策(左/右/直行),可以容忍 2-3 秒的延迟。

调试期间最崩溃的其实是硬件。ESP32 和电机驱动之间的接线经常接触不良,赛车跑到一半突然失灵,搞得我以为解码出错了,排查了半天发现是电线松了。嵌入式开发的日常。

最终效果勉强可用——在 30 米的测试赛道上,靠 SSVEP 控制转向完成了全程,虽然速度不快,但在场的朋友说了一句:“这车真的在听你的脑子。“这句话让我觉得一切努力都值了。

技术上,这套系统稍加改造就可以用在脑控轮椅上——SSVEP 控制轮椅的行进方向,紧急停止用眨眼检测(EOG)触发。这也是声桥未来想要拓展的方向之一。

项目正式收尾,代码和机械设计全部开源了。毕竟开源和分享才是技术进步的最优解,也希望后来者少踩几个坑。