用 JavaScript 进行脑机接口实验
背景故事
首次使用脑传感器进行实验
大脑是如何运作的
脑传感器是如何工作的?
特征
Epoc.js
原型
限制
可能性
下一个
资源
本文最初发表于Medium。
过去几年,我对神经技术越来越感兴趣。这篇博文旨在分享我一路走来所学到的知识,希望能帮助那些想要入门的人!
在深入探讨这个话题之前,我想先简单地谈谈我最初是如何接触到这个领域的。
背景故事
——
我没有计算机科学背景(我学的是广告和市场营销),所以我在 General Assembly 参加了一个沉浸式编程训练营来学习编程。
在我寻找第一份工作期间,我开始摆弄 JavaScript 和硬件,我参与的第一个项目是使用Leap Motion通过我的手部动作来控制Sphero机器人球。
这是我第一次使用 JavaScript 来控制浏览器之外的事物,我立刻就迷上了它!
从那以后,我投入了大量个人时间来制作交互式项目原型,而且每次我都尝试挑战自己,学习一些新东西。
在尝试过几种不同的设备之后,我正在寻找下一个挑战,这时我遇到了我的第一个脑传感器——Neurosky。
首次使用脑传感器进行实验
——
当我开始对脑电传感器实验产生兴趣时,我决定先购买一台 Neurosky,因为它比其他选择便宜得多。
我当时并不确定自己是否有能力为它编写程序(我刚结束编程训练营),所以不想浪费太多钱。幸运的是,Neurosky 已经有一个现成的 JavaScript 框架,所以我可以很轻松地上手。我练习利用自己的专注力来控制 Sphero 和 Parrot AR 无人机。
我很快意识到这款脑电传感器的准确度并不高。它只有三个传感器,所以只能以一种相当不稳定的方式反映你的“注意力”和“冥想”水平。虽然它提供了每个传感器的原始数据,方便你构建可视化工具之类的东西,但三个传感器实在不足以让你对大脑活动做出任何结论。
在研究其他可用的脑机接口传感器时,我偶然发现了Emotiv Epoc。它看起来功能更多,所以我决定买下它,以便继续进行脑机接口方面的实验。
在解释这款耳机的工作原理之前,我们先简单谈谈大脑。
大脑是如何运作的
——
我绝对不是神经科学专家,所以我的解释肯定不完整,但如果你想更好地了解大脑传感器和神经技术,你需要知道一些基本知识。
大脑由数十亿个神经元组成。这些神经元是专门处理信息的细胞,而且我们知道,大脑并非随机分布,而是组织成不同的部分,负责不同的生理功能。
例如,我们来看:搬家。
大脑中负责运动和协调的区域包括初级运动皮层(位于额叶)和小脑。协调运动时,这些区域的神经元被激活,并将轴突向下传递至脊髓。随后,这些轴突会激活运动神经元,进而激活肌肉,最终产生运动。
正如我之前所说,这是一个非常简单的解释,但最重要的是,这些产生的电信号实际上可以通过头皮表面的脑电图 (EEG) 设备进行追踪。
还有其他系统可以用来追踪大脑活动,但它们通常侵入性更大、费用更高,而且需要手术。例如,还有一种叫做脑电图(ECog)的技术,需要将植入物放置在颅骨内。
希望以上解释足够清楚,现在我们可以花些时间讨论一下Emotiv Epoc是如何追踪这些电信号的。
脑传感器是如何工作的?
——
Emotiv目前有3款不同的设备可供选择:
- 情绪洞察
- Epoc Flex
- 情感时代
Epoc 头部周围分布着 14 个传感器(也称为通道)。
10/20国际脑电图系统(如下左图所示)被用作描述和应用头皮电极位置的参考标准。它基于电极位置与大脑相应区域之间的关系。这样,它就能确保不同设备和科学实验之间具有一定的标准性。
在绿色和橙色部分,您可以看到 Epoc(右侧)上使用的传感器。
如您所见,即使 14 个通道听起来很多,但实际上远少于医疗设备上的传感器数量,不过,它们在头部周围的分布似乎相当均匀。
Epoc 的采样率为 2048 内部降采样至 128 SPS 或 256 SPS,频率响应范围为 0.16 至 43 Hz。
这意味着它每秒从连续信号中采集 2048 个样本,其中响应频率从 0.16Hz 到 43Hz 变化。
如果我们观察不同类型的脑电波,就会发现它们的运行频率在 0.5Hz 到 100Hz 之间。
为什么这很重要?因为根据我们想用设备开发的应用类型,我们可能只想关注特定频率的特定脑波。例如,如果我们想开发一款冥想应用,我们可能只想关注频率在 4-8Hz 之间的 theta 波。
既然我们已经了解了该设备的工作原理,接下来让我们谈谈它能让你追踪哪些内容。
特征
——
Emotiv 软件并非开源软件,因此您无法访问每个传感器的原始数据。但它允许您访问以下信息:
- 加速度计和陀螺仪轴。
- 绩效指标(兴奋度、参与度、放松度、兴趣度、压力水平和专注度)
- 面部表情(眨眼、左右眨眼、惊讶、皱眉、微笑、紧握拳头、大笑、冷笑)
- 心理指令(推、拉、举、放、左、右、左转、右转、顺时针旋转、逆时针旋转、反向旋转、消失)
只有心理指令需要用户进行训练。要训练这些“想法”,您需要下载他们的软件。
完成一些训练后,文件会保存到本地或云端。
如果你想编写自己的程序,可以使用他们的Cortex API、他们的社区 SDK (他们在 v3.5 之后停止维护了它) ,或者,如果你想使用 JavaScript,可以使用我开发的框架epoc.js。
Epoc.js
——
Epoc.js 是一个用于在 JavaScript 中与 Emotiv Epoc 和 Insight 进行交互的框架。它使您能够访问上述相同的功能(加速度计/陀螺仪数据、性能指标、面部表情和心理指令),并允许您与模拟器进行交互。
你只需要几行代码就可以开始:
在上面的代码示例中,我们首先引入并实例化了 Node 模块。然后,我们调用 `connectToLiveData` 方法,并将训练后保存的用户文件路径传递给它。我们会收到一个回调,其中包含一个对象,该对象列出了我们可以跟踪的不同属性。例如,如果我们想跟踪用户是否在眨眼,可以使用 `event.blink` 方法。
每个属性的值要么为 0(未激活),要么为 1(已激活)。
完整的可用属性列表可以在存储库的 README 文件中找到。
该框架的底层使用了 Emotiv C++ SDK、Node.js 和 3 个 node 模块:Node-gyp、Bindings 和 Nan。
这是创建节点插件的旧方法,如果您有兴趣了解更多相关信息,我建议您研究一下N-API。
既然我们已经讨论了不同的功能以及如何入门,那么这里展示一下我目前为止构建的一些原型。
原型
——
大脑键盘
我用Emotiv Epoc制作的第一个演示程序是一个脑电键盘。目标是看看我能否构建一个简单的界面,让人们能够通过面部表情进行交流。
通过眼球运动,向右或向左看可以突出显示右侧/左侧的字母,眨眼即可选中该字母并将其显示在输入字段中。
这是一个看起来很简单的原型,但它能用!!
WebVR
我的第二个原型涉及意念控制。我想看看我是否能够仅凭意念在三维空间中导航。
在这个原型中,我使用 Three.js 创建了基本的 3D 场景,使用 epoc.js 跟踪心理指令,并使用 web sockets 将它们从服务器发送到前端。
物联网
我的第三个原型是关于用 JavaScript 控制硬件的。这方面我已经研究了好几年了,所以我很高兴能快速做一个项目,用意念控制 Parrot 迷你无人机!
这些原型都很小。主要目标是验证一些想法,并了解这项技术的可能性和局限性,所以我们先来谈谈它的局限性。
限制
——
这项技术虽然令人兴奋,但仍存在一些重要的局限性。
训练
每个用户都需要接受训练来记录脑电波并将其与特定指令匹配,这虽然在意料之中,但对大多数人来说却是一大障碍。除非某个应用能够真正解决实际需求,并且设备的精度非常高,否则我很难想象人们会花时间去训练脑电波传感器。
延迟
在使用心理指令构建原型时,我意识到,从我开始思考某个特定想法到我能在程序中看到反馈之间存在一些延迟。
我推测这是因为后台使用的机器学习算法会实时接收来自设备的数据,并且需要一定时间的样本才能根据先前训练过的思维对当前思维进行分类。
这确实会影响您可以使用该传感器构建的应用类型。例如,构建冥想应用没问题,因为延迟不会对用户体验造成重大影响;但是,如果您想构建意念控制轮椅,您可以想象延迟会产生多么重要的影响。
侵入性手术与非侵入性手术
脑电图仪的优点在于无需手术;只需戴上头戴式设备,在传感器上涂抹一些凝胶即可!然而,非侵入性意味着传感器必须穿过颅骨来追踪电信号,这使得该方法的效率较低。
由于采样率很高,时间分辨率非常出色,但空间分辨率不太理想。脑电图设备只能追踪头皮表面的脑活动,因此无法追踪大脑深处的活动。
社会接纳
佩戴脑电传感器可不是什么光鲜亮丽的事。只要这些设备的外观还保持现状,我认为消费者就不会接受它们。随着技术的进步,我们或许能够制造出可以隐藏在帽子等配饰中的设备,但仍然存在另一个问题:脑电传感器佩戴几分钟后就会让人感到不适。
由于脑电图设备是非侵入式的,其传感器需要对头皮施加轻微压力才能更好地追踪电信号。可以想象,这种轻微的压力起初可能感觉良好,但随着时间的推移会逐渐变得不舒服。此外,如果设备需要在所有传感器上涂抹凝胶,这无疑会成为人们使用设备的又一道障碍。
即使目前脑电图传感器的现状还不足以让大多数人使用或对其产生吸引力,但未来仍然有一些有趣的可能性。
可能性
——
如果我们思考一下这项技术目前的状况以及它在未来发展中的可能性,我们就可以想到几种不同的应用。
无障碍
我希望脑部传感器能够帮助残疾人士过上更好的生活,更加独立自主。
这就是我制作第一个脑键盘原型时的初衷。我知道这个原型远未完成,但我真的很想看看一款普通的消费级设备是否能帮助到人们。并非每个人都能使用复杂的医疗系统,所以我很高兴地看到,一款可以在网上购买的、更易于使用的设备真的能有所帮助!
正念
一些脑电传感器(例如 Muse)目前关注的应用领域之一是正念。
冥想可能很难。很难知道自己做得是否正确。脑部传感器可以帮助人们直接反馈自己的冥想表现,甚至指导他们如何随着时间的推移而改进。
预防
如果脑部传感器的使用频率能像我们使用手机一样高,我们或许就能开发出一些应用程序,用于追踪某些生理功能何时出现异常。例如,如果我们能基于脑部活动构建检测算法,从而预防中风、焦虑症或癫痫发作,那就太好了。
生产率
就像脑电传感器可以帮助冥想一样,它们也可以追踪你一天中最专注的时间段。如果我们定期佩戴传感器,它最终就能告诉我们何时应该完成某些任务。你甚至可以想象,你的日程安排会据此进行调整,确保你的每一天都更加高效。
艺术
我喜欢科技与艺术的交融,因为它让我有机会探索工作中无法触及的领域。我认为,利用脑电传感器进行创意创作不容小觑,因为它让我们能够在开发更“实用”的应用之前,探索这项技术的各种可能性和局限性。
与其他传感器结合使用
我最近开始思考,大脑的各个传感器不应该被孤立地看待。大脑只能通过身体的其他部分来感知世界,没有眼睛它就看不见,没有耳朵它就听不见,等等……所以,如果我们想要理解脑电波,或许也应该同时追踪其他生理功能。
这样做的主要问题在于,最终我们会得到类似这样的配置:
我们可以肯定,没有人会每天都穿那样的衣服……
下一个
——
几周前,我买了一个新的脑电传感器,OpenBCI。下一步我打算研究原始数据和机器学习,所以我认为这款设备非常适合,因为它完全开源!
我只来得及把它设置好,所以还没有用它做任何东西,但这里可以预览一下设备和界面的样子。
今天就到这里!
我知道这篇文章很长,如果你真的读完了所有内容,非常感谢!
我边做边学,所以如果您有任何意见、反馈或想分享资源,请随时联系我!
资源
——
如果你想尝试一些工具或了解更多信息,这里有一些链接!
框架
Epoc.js — 用于与 Emotiv Epoc 交互的 JavaScript 框架。
Brain bits — 一款适用于 Emotiv 耳机的 P300 在线拼写机制。
Wits—— 一个使用Emotiv EPOC EEG头戴设备读取你思想的Node.js库。
脑电波监测器 ——一个用Node.js编写的终端应用程序,用于实时监测脑电信号。
Ganglion BLE — OpenBCI 的 Ganglion 脑机接口的 Web 蓝牙客户端。
BCI.js — 使用 JavaScript 进行脑电信号处理和机器学习。
实用链接
脑机接口(书籍)
神经科学原理(书籍)
一位科技爱好者的神经科学入门 ——乌里·沙克德
利用脑机接口检测大脑活动状态 ——维亚切斯拉夫·内斯特罗夫
人们
——
文章来源:https://dev.to/devdevcharlie/experimenting-with-brain-computer-interfaces-in-javascript-1bdk












