Emotiv Epoc+/CykitV2/OpenVIBE-最经济的BCI解决方案

医工荟萃,不是萝卜开会,融合创新才是硬道理!

这篇文章将手把手地教会大家如何将你的Emotiv Epoc+和BCI测试平台OpenVIBE进行互联, 一个月$99的官方sdk的确太贵了,学会了它一年可以节省一部2018款的ipad pro哟

Emotiv Epoc+是美国加州旧金山的神经科技公司「Emotiv Systems」开发的一种无线蓝牙脑电EEG记录仪,可采集14通道脑电信号以及惯性传感器信号,其中EEG通道包扩国际通用10-20系统中的AF3、F7、F3、FC5、T7、P7、O1、O2、P8、T8、FC6,F4,F8,AF4。采用基于盐水的电极,使用起来比较方便,荟荟的使用经验来看,信号质量也是不错的,是一种较为廉价的脑电解决方案,可用于常用的脑机接口开发如基于P300, SSVEP、ERD、ERS等的脑机接口。主机售价大约6000~8000RMB,比起动则几十万的脑电图仪确实很便宜。当然羊毛出在羊身上,硬件便宜,软件可就呵呵了,要想获得全部的EEG原始信号,官方Pro版软件最便宜的三年套餐要59美刀一个月,普通的要99刀每月,对于没啥钱又想对脑机接口有个初步认识的童鞋来说,看后还是一身冷汗。本文给出了一个完整的能够通过第三方工具,获得14通道全部脑电数据,并使用开源脑机接口软件OpenVIBE开发Epoc+的教程。也许有的童鞋要说,使用老版的官方sdk也能获得全部数据啊,荟荟试过1.0.0.4的sdk,起码2018年以后所有的数据编码格式加过密,原始数据是拿不到的,不然厂家怎么挣钱啊。。。

数据获取神器Cykit V2

感谢warren大神开发了的开源软件CyKit v2,可以通过TCP socket将原始脑电数据发出来,软件的下载地址是https://github.com/CymatiCorp/CyKITv2

注意CyKITv2才能支持2018年以后生产的Epoc+

点击右侧Clone or download按钮下的Download ZIP,将压缩包下载至本地。

下载解压后发现两个文件夹,Python文件夹中的程序用于从头盔获取数据并发送socket,而Web文件夹中有一个使用Javascript编写的简易用户界面,可以实时观察脑电信号,方便测试设备。

接下来运行Python文件夹下的CyKITv2.py程序,启动socket server获取脑电数据。运行方法如下图所示。注意CyKITv2是用python2进行开发的,所以童鞋的电脑上默认的python版本是python3, 请安装python2后再运行,开发版本是Python 2.7.6, 为保险起见,也建议大家安装该版本。

‍‍‍‍‍打开命令提示符cmd,使用cd命令进入\CyKITv2-master\Python文件夹,输入下面的指令:

py -2 CyKITv2.py 127.0.0.1 12991 6 info+confirm

py -2是用来切换python2版本的;127.0.0.1是socket server 地址;端口号这里设为12991,当然其他的端口号也是可以的;6是设备编号,代表Epoc+ standard版本,如果是5 则代表Epoc+ Research版本; info表示再终端显示相关信息;confirm表示在web客户端点击connect后需要在cmd中进行连接确认。

接下来在Web文件夹下双击用浏览器打开CyKITv2.html, 出现了CyKitv2的界面,在Host中输入socket server的地址,端口号是我们刚才设置的12991,点击Connect注意,由于我们在命令提示符中输入了confirm参数,还需要在cmd中输入y进行确认。接着就可以获得14通道的EEG信号了,由于Epoc的电极位点需要逐个湿润安装,比较费时,这里童鞋们可以进行一个简单的测试,用手指以一定频率轻轻敲击某一电极,看是否在web客户端出现同频率的实时响应,如果出现了就说明信号连接正常。美中不足的是CyKIT v2暂时还不支持惯性传感器数据,据悉warren大神将在下一个版本中加上这一数据的传输。

和OpenVIBE连接

虽然web客户端可以保存数据,但我们尚不能方便地开发实时的脑机接口。最方便的方法当然是可以将数据和现有的开源脑机接口开发工具包(如OpenVIBE, BCI2000,EEG Lab)进行实时连接咯。幸运的是warren大神开发了和OpenVIBE的接口。

OpenVIBE是一个由法国国家信息与自动化研究所Iniria开发的脑机接口开发测试平台,采用类似LabVIEW的图形化开发方式,集成了很多典型的BCI流程和功能模块,此外还可以将用户自定义的Python、C++、Matlab算法程序,包装成子模块加入已有的流程当中,非常适合初学者了解BCI的开发过程。

要让Cykit可以和OpenVIBE进行实时通讯,首先当然是下载并安装OpenVIBE软件,下载地址为http://openvibe.inria.fr/downloads/最新的版本为2.1.0,荟荟还测试过老一点的版本2.0.0和1.3.0,都可以顺利进行通讯,操作步骤如下:

1. 依旧在cmd中进入Cykit v2的python文件夹下,输入以下指令:

py -2 CyKITv2.py127.0.0.1 5555 6 openvibe+generic+nocounter+nobattery+noheader+ovdelay:555+ovsamples:004+integer

最后的integer参数可以不用输入,因为Epoc+支持浮点数据传输,如果你用的是前代产品epoc就可以把它加上。这次的端口号设置成了5555,OpenVIBE支持的端口号是从1024到32768,输入这之间的数字都是可以的。

2.配置Epoc+的发送模式:

由于Epoc+默认发送的数据流中除了有14通道脑电数据外,还有惯性传感器数据,所以如果你不关闭惯性传感器数据的化,OpenVIBE的里EEG和惯传数据就会乱套,这一步巨坑无比,荟荟一开始怎么弄数据波形都是乱的,后来在网上抓到了warren大神本尊,帮我解决了,在此表示感谢!

要配置Epoc+,首先用usb将Epoc+头盔连接到电脑,然后下载一个叫Emotiv Xavier Pure EEG的软件(链接:https://pan.baidu.com/s/15QvjvkTBPKKiKn0zm2xTWg 提取码: xu5x ),打开后点击右侧三横的符号,选择Headset Setting,将EEG sample rate 改为256Hz, Mems sample rate 改为OFF,点击Change就修改好了。当然也可以用官方的软件,只不过需要注册比较麻烦。

3. 配置OpenVIBE Acquisition Server:

windows开始菜单打开Acquisition Server程序,出现如下界面。在Driver中选择Generic Raw Telnet Reader; Connection port框中输入OpenVIBE主程序连接用的端口号,默认的是1024,荟荟这里用的是2222;接下来Sample count per sent block里选择传送缓存中的每通道样本数量,默认的由4,8,16,32等选项。

如果你希望一次只接受Cykit传来的每通道一个数据,则需要在安装目录下(\OpenViBE\share\openvibe\applications\acquisition-server\interface.ui)编辑interface.ui中的第53行加入

1

这一步可选,不添加也没关系。

点击Driver Properties, 打开Device configuration界面,输入如图参数,前三个无所谓,属于实验对象信息。注意,Epoc+的sampling frequency最大为256Hz,如果用Epoc的化请输入128。另外,如果启动cykit时加入了Integer参数,请在Sample type下选择16 bits signed integer选项。

点击右侧Connect和Play按钮,让数据开始传输

4. 配置OpenVIBE Designer:

在开始菜单打开OpenVIBE Designer,创建一个新的Design,在框图中拖入Acquisition client 和Signal display两个模块,将Acquisiton client中的粉色信号流箭头和Signal display中的粉色箭头进行连接。双击Acquisition client模块打开配置,在Acquisition server hostname方框中输入localhost;在Acquisition server port中输入我们前面配置的connection port端口号2222,配置完毕后点击Apply。再在控制调中点击播放三角按键,就可以看到14通道的EEG信号了。

至此,我们完成了cykit v2和openVIBE的数据连接,接下来小伙伴们就可以测试openVIBE提供的BCI范例,并进行修改开发属于自己的BCI应用咯。

这么算下来我们一年至少节省了$59*12=$708,一台2018款ipad pro有木有。。。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181101G17KF000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券