从0开始配置BCI工作环境

2019-04-13 12:03发布

BCI是brain-computer interface,即脑机接口的缩写,这块相应的背景知识,有时间专门来写一写。这篇文章主要介绍如何配置工作环境。
基本的材料: 1. windows7台式机(Intel Core i7-6700K CPU@4.00 Ghz),32G内存; 2. gUSBamp,及16通道电极,电极帽,预放大器等,来自奥地利的g.tec公司; 3. USB2LPT,如果电脑本身有并口(25pin,母口),可不需要这根转接线。
备注,电脑的配置不需要非常好,一般的5年内买的笔记本都足够了,主要的问题不在于计算能力,而在于硬件的兼容性问题。整个开发环境基于Python(2.7,我还是不建议使用3.x的版本。虽然目前已经非常完备),受限于gUSBamp的驱动,没办法在Linux下进行开发。完成BCI开发环境配置的同时,这套环境也满足了基本的机器学习与模式识别的需求,至于最近大热的Deep learning,我正在Ubuntu下进行开发配置,有时间专门来写。涉及到这款设备的驱动,开发等,目前还不确定g.tec方面是否愿意公开驱动,因为脑电设备通常都是软硬件一起销售的,而我们实验室只购买了硬件部分,软件方面由我来编写。谨慎期间,目前暂时不完全公开驱动程序,留一个百度文库的链接:http://pan.baidu.com/s/1boVwPfL,提取密码我目前只限于本实验室来分享,完成相应的测试,等全部工作完成,也获得产品公司的开源授权了,我会把所有的东西通过github发布出来。首先把百度 {MOD}的东西全下载下来,
1.  安装g.USBamp的驱动,g.USBamp_Driver_3.14.00_Win64.rar,最好使用管理员权限。如果是windows10,可能还得切换test mode,同时关闭用户账户控制(UAC),参考一下驱动文件里面的PDF,正常情况下在windows7一键安装;我这里分享的都是win64,需要32位的我再单独发。
2. 安装anaconda,基本作用跟pythonxy,canopy是一样的,如果已经安装了pythonxy等,不要重复安装。anaconda下载起来速度很慢,不知道是服务器不在国内还是带宽不够,索性一并放在文件夹供你下载好了(Anaconda2-4.3.0.1-Windows-x86_64.rar);安装完成之后,做个简单的测试,windows+R, ipython,在弹出的界面输入import numpy, import scipy, import matplotlib, 之后再测试一个 import struct, struct.calcsize("P"), 最后是import PyQt4, PyQt5。如果一切正常的话,那个P的size是8,PyQt4是没有的,而PyQt5是有的。 PyQt是anaconda帮我们装好了的,但新版的anaconda用的是PyQt5,如何downgrade呢,参考这里,https://www.zhihu.com/question/50003671/answer/147180490 除此之外,还需要通过pip install, 安装以下几个包:pip install mne, pyqtgraph, xmltodict, pyserial, colorama。暂时就这么多,需要其他的话再来安装。
3. 配置openCV,直接解压,我放在BCI文件夹下的,opencv.rar, 解压放在某个目录下,比如我放在了D:installopencv,大概3.7G,新版的大概500M,我试了有一些问题,索性就用这个我两年前就在用的版本好了。接下来你要找一个cv2.pyd的东西,我的机器在D:installopencvuildpython2.7x64,拷贝到anaconda的site-packages下面,在我的机器上是,D:installanacondaLibsite-packages。 如果是canopy,我之前的机器上配置过,大致是这样的,还是copy那个cv2.pyd,拷到C:Program FilesEnthoughtCanopyAppappdatacanopy-1.6.2.3262.win-x86_64Lib,  我之前的一些笔记,Copy cv2.pyd  from“D:opencvuildpython2.7x86”, then paste it in “C:UsersXXXAppDataLocalEnthoughtCanopy32Appappdatacanopy-1.5.1.2730.win-x86Lib” 。如果是pythonxy, paste it into, d:python27Lib即可;
接下来做个测试,import cv2,如果没有报错,恭喜了。如果出问题了,别着急,因为我也出问题了,当然的求助于万能的stackoverflow了. http://stackoverflow.com/questions/19019720/importerror-dll-load-failed-1-is-not-a-valid-win32-application-but-the-dlls 如果你的error是no module named cv2,检查上述步骤,这个好解决。如果是DLL load failed,则得好好参考这个帖子了。我尝试了从x86文件夹拷贝cv2.pyd,也尝试了给VS2013装上了2015的配置包,not working,后来从http://www.lfd.uci.edu/~gohlke/pythonlibs/这里下载了opencv_python-2.4.13.2-cp27-cp27m-win_amd64,后缀是whl的文件,通过pip装上,Done,问题解决:)
4. 接下来是pycnbi,下载解压,所需要的视觉刺激界面,训练分类器,测试界面,信号实时显示和信号存储,都在这个文件夹下,回头再来详细说明。
5. 如果台式机有并口,就不需要USB转并口了,如果没有,需要安装usb2lpt的驱动,同时需要给这个驱动签名,也是稍稍有一些麻烦,下面来介绍。我全部放在了usb2lpt.rar里面,解压放好。首先插上USB,设备管理器里面有感叹号,说明没装成功,
我们手动添加驱动,右击这个感叹号的地方,更新驱动程序,在本地来查找,我放在了D:installusb2lpt,这个时候感叹号还没有消失。下一步签名,注意到usb2lpt的文件夹下面有dseo13b.exe,管理员权限打开它,首先enable test mode,然后sign a system file, 找到这两个东西,usb2lpt.dll和usb2lpt.sys, 我的机器上分别在C:WindowsSystem32driversusb2lpt.sys 和 C:WindowsSystem32usb2lpt.dll,之后重启机器,就完成了,如下图:

6. 基本完成了,最后一步,配置一下环境变量。比如,你把pycnbi的文件夹放在了D盘根目录,D:pycnbi,环境变量里面的系统变量,新建,变量名随意,比如,PYTHONPATH,变量,D:pycnbi,另外再新建一个,变量名PYTHONSTART,变量,D:pycnbistartup.py。然后重启一下机器,就好了。这么做的目的是python每次加载,这些最常用的package都自动添加进了工作目录,不用每次逐个的添加。
截止到目前,你已经有了所有的东西,接下来通过创建快捷方式,使你能快速运行以下6个模块:
1. 服务器,D:pycnbiAqcuisitiongUSBampgUSBamp-2010.06.31.cmd 2. eegviewer,D:pycnbiStreamViewer un_stream_viewer - UB-2010.06.31.cmd 3. dataRecord, D:pycnbiStreamRecorder un_stream_recorder - UB-2010.06.31.cmd 4. 训练界面. D:pycnbiProtocolslegoPress un_train_visual_only.cmd 5. 构建分类器, D:pycnbiDecoderscripts un_trainer_legopress.cmd 6. 在线实验, D:pycnbiProtocolslegoPress un_test_visual_bar.cmd 要做的事情很简单,就是把这些cmd文件,发送快捷方式到桌面,做实验的时候,就不用手忙脚乱的去找这些命令所在的位置了。

以上就是16通道脑电采集与控制全部的配置流程,不太容易,有问题求助于google,stackoverflow,或者一些社区,论坛等等。以上data acquisition的部分是基于UCSD的labstreamlayer,可以直接给他们的维护者写信,还可以跟gUSBamp的工程师写信交流。 Have fun。