【学习笔记】嵌入式技术(10):脑力驱动残疾人轮椅与脑电波图像显示设计
2016年微型机与应用第3期
作者:陶陈逸1, 苏振新2, 丁佳伟2, 黄志成1, 陆文娟2
摘要:结合嵌入式系统和脑机接口技术,构建脑力驱动残疾人轮椅系统。首先利用脑电信号(EEG信号)的采集芯片装置TGAM对脑电信号进行采集;其次通过蓝牙模块将TGAM和计算机相连接,将采集到的脑波原始数据传输到计算机上,利用eSense算法将脑电数据进行量化;然后再通过蓝牙无线连接到Arduino轮椅控制平台,通过I/O控制口实现脑力对轮椅的控制;最后提出采用多语言混合编程的方法实现脑电信号的图像显示,相比单一语言编程的图像显示,多语言混合编程法更好地显示了脑电信号的三维图像。
0引言
人类的每一闪思维、每一种情绪、每一个想法,在大脑中都会产生特定的脑电信号,脑电信号反映出大脑皮层不同区域的活动状态,通过对脑电信号的分析和处理,可以有效地从脑电信号中提取可靠的特征参量来反映脑的功能状态[1]。不同思维情况下产生的神经元放电活动信号表现出不同的时空变化模式并导致EEG信号的不同。
随着全球各国生活水平以及医疗水平的提高,人口老龄化逐渐成为大部分国家需要认真考虑的问题,赡养老人也成为下一代很严重的压力问题。因此智能生活的需求十分迫切,身体的不健全导致的一些生活的不便利可以通过大脑活动来弥补。智能轮椅的发明为现代人们提供了一种新的思路。
对于严重神经或肌肉伤残的人来说,可以利用大脑的信息与计算机或其他设备进行通信,因此在脑电信号的提取方面有一定的研究必要。
脑机接口(Brain Computer Interface,BCI)是在人脑和计算机或其他电子设备之间建立一种不依赖于常规大脑输出通路(外周神经和肌肉组织)的直接信息交流和控制通道,是一种全新的人机交互系统[2]。对于遭受严重神经或肌肉伤残的人来说,可以利用脑机接口技术实现脑电信号与计算机或其他电子设备进行通信。
Mindwave脑电采集装置是一种不依赖于外周神经和肌肉等常规输出通道的信息交流系统。它可为神经肌肉障碍患者提供一条与外界沟通的途径,并在虚拟现实、游戏娱乐和航空等领域具有潜在价值。目前,常用的脑电输入信号包括P300、稳态视觉诱发电位(SSVEP)、皮层慢电位(SCP)以及μ或β节律等。其中,SCP、μ或β节律等自发脑电不依赖于额外刺激的输入,不会产生视觉疲劳,没有适应性的问题,且其神经生理学基础已获得比较深入的研究,因而在Mindwave脑电采集装置中得到了较多的应用。但是,基于自发脑电的脑机接口也存在明显的缺陷,如并非所有个体都适用基于μ节律的脑机接口,基于SCP的脑机接口要经过长时间的训练才能实现等。
本文以此为基础,设计出一种能为手脚不便的残疾人提供一个脑力驱动的轮椅系统,使用者无需手动操作操纵杆便可完成轮椅的前进、转向、停止等动作。本文利用多语言混合编程方法,设计软件编程对脑电信号的三维图像进行显示设计。
1系统结构
本文的研究步骤是按照脑电信号的数据采集和分析数据处理数据输出回馈框架,将脑电信号一路传输到控制端实现轮椅的移动,一路传输到计算机显示端实现脑电信号的图像显示。使用TGAM芯片进行脑电数据的采集和分析,利用蓝牙模块把采集、分析的数据传输到计算机上,计算机进行数据的处理,通过蓝牙模块把处理后的数据传输到Arduino平台,经由数据算法转换成控制信号,对残疾人轮椅进行控制。轮椅的移动状态能够通过人的眼睛器官回馈给大脑,并在控制轮椅移动的同时在计算机上显示脑电信号的三维图像。
脑力驱动残疾人轮椅和图像显示的系统框架图如图1所示。
2系统硬件设计
2.1数据采集模块
头戴式无线脑机接口系统设备[3]采用半导体微加工工艺制作的“干”电极作为采集脑电信号的电极,通过干态电极传感器采集生物电信号,将采集的信号传入到ThinkGear芯片中。
ThinkGear ASIC芯片是一种SoC(Systerm on Chip)。NeuroSky公司的ThinkGear ASIC专用芯片[4]集成了脑电信号的采集、滤波、放大、A/D转换、数据处理及分析等功能,并通过UART标准接口对外输出以下4种参数:
(1)数字化的原始脑电波数据,输出频率512 Hz(每秒512个数据包)。
(2)8个δ、θ、α、β、γ波EEG参数,输出频率1 Hz;δ:1~3 Hz;θ:4~7 Hz;α1:8~9 Hz;α2:10~12 Hz;β1:13~17 Hz;β2:18~30 Hz;γ1:31~40 Hz;γ2:41~50 Hz。
(3)“专注度”、“放松度”两个eSense参数,输出频率1 Hz。
(4)传感器与皮肤的接触良好程度参数,输出频率1 Hz。
该芯片集成的脑电信号分析模块可以输出实验所需的“专注度”和“放松度”两个参数。
2.2Arduino平台
Arduino UNO是Arduino USB 接口系列的最新版本,作为Arduino 平台的参考标准模板。UNO的处理器核心是ATmega328,同时具有14 路数字输入/输出口(其中6 路可作为PWM输出),6 路模拟输入,一个16 MHz 晶体振荡器,一个USB 口,一个电源插座,一个ICSP header 和一个复位按钮。UNO已经发布到第三版,与前两版相比第三版有以下新的特点:在AREF 处增加了两个管脚SDA 和SCL,支持I2C 接口;增加IOREF 和一个预留管脚,将来扩展板将能兼容5 V和3.3 V核心板。这样改进了复位电路设计,USB 接口芯片由ATmega16U2替代了ATmega8U2[5]。
2.3受控模块:电动残疾人轮椅
轮椅的操纵杆控制电路如图2所示,其与机械操纵杆(如图3)连接可对轮椅进行方向控制。轮椅的操纵杆有五个端口,分别为:控制轮椅前进后退的A端口、基准参考电压GND、控制轮椅左右转向的B端口、电源电压VCC(5 V)、反馈调节电压Vref。
轮椅方向的控制需要A端口和B端口的共同作用。由于采用了模糊控制方法,在A端口,电压在2.25 V~2.75 V之间时,轮椅在前进方向是停止的;当电压低于2.25 V时,轮椅会后退,由于电路内部的保护机制,后退速度是固定且缓慢的;当电压高于2.75 V时,轮椅的转速会随着电压的变大而变大。
同样在B端口,电压在2.25 V~2.75 V之间时,轮椅不进行左右转向;当电压大于2.75 V时,轮椅通过右电机转速大于左电机转速的方式实现左转,且左转的幅度大小随B端口输出电压的上升而上升;当电压小于2.25 V时,轮椅通过左电机转速大于右电机转速的方式实现右转,且右转的幅度大小随B端口输出电压的降低而降低。可以通过控制电压的大小来实现移动的前进、后退、转向和停止。
3系统软件设计
3.1脑电信号的采集与分析
脑电信号的采集与分析采用NeuroSky公司的ThinkGear ASIC芯片,脑电信息是非平稳随机连续的信息,以512 Hz的采样率采集脑电信号[6]。脑电信号采集频段在0~100 Hz之间。
脑电数据分析是由eSenseTM算法来完成,eSenseTM是NeuroSky用于以数字化参数方式对人的当前精神状态进行度量的专利算法[7]。首先对采集的原始脑电信号进行放大,并消除噪声和肌电信号的干扰,然后利用eSenseTM算法对去除干扰的信号进行计算,得到量化的eSense参数值。
eSense算法主要是先对原始脑波数据进行FTT变换[8],然后进行频率滤波,得到α波和β波,并进行功率谱分析,选定基本参考值,进行归一化。
3.2Arduino平台轮椅控制系统实现
TGAM无线脑电采集设备可以采集多个值,如poorsignal、attention、meditation以及Blink信号。
poorsignal主要反应的是传感器芯片上生物信号的强弱,值为0时表示生物传感器接收到的信号很好,没有任何明显的问题;值在1~199区间时,值越高说明生物传感器检测到的问题越多;值为200时说明传感器可能没有接触到导电体。一般在poorsignal参数值保持为0时,采集到的其他参数值才具有时效价值。
脑电采集装置采集到的原始脑电信号,经过计算机的处理后可以得到所需的“专注度”与“放松度”两个数值。这两个数值在0~99之间。正常人平时的“专注度”数值在30~60之间,当人在高度集中时,“专注度”数值会大于60。同样地,正常人的“放松度”在30~60之间,当人在闭眼放松或放松全身肌肉时,“放松度”会高于60[9]。
选用“专注度”作为控制轮椅前进、停止的信号,此时给定B端口固定为2.5 V电压值,系统将收到的相关参数值转换为控制轮椅移动的对应电压值,attention值小于60时,A端口电压值固定为2.5 V,保持停止状态;attention值在60~70之间时,A端口电压值固定为3 V,轮椅前进;attention值在70~80之间时,A端口电压值固定为3.5 V,轮椅前进;attention值在80~90之间时,A端口电压值固定为4 V,轮椅前进;attention值在90~100之间时,A端口电压值固定为4.5 V,轮椅前进。
Blink信号是肌电信号,用来控制轮椅的转向,眨眼信号是由rawdata原始数据计算得出,此时给定A端口固定为2.5 V电压值,系统检测到右侧眨眼信号时,B端口给定电压1.5 V,实现右转向;当检测到左侧眨眼信号时,B端口给定电压3.5 V,实现左转向。
3.3脑电信号的图像显示
在图像显示方面,综合考虑多种问题因素,提出采用多语言混合编程[10]的方法。所谓多语言混合编程,是指使用两种或两种以上的程序设计语言来开发应用程序的过程。源文件无论使用何种语言编写,最终编译的结果都是机器码。函数调用在机器码中是很简单的一步,按照参数表的要求把参数值放入堆栈,然后使用jmp指令跳转到要调用的函数的函数地址即可,程序不管如何实现,只要知道参数表和函数地址就能调用,所有程序最终都是机器码,自然也符合这个规则。所以实现互调,只要将对方的接口程序文件映射到自己的进程中,预先知道它的参数表,得到它的接口函数地址,将参数放入堆栈,然后跳转到函数地址,就能实现调用。
本文提出通过C++语言与MATLAB语言混合编程[11]的方法实现脑电信号的图像显示,并成功通过编程读取脑电采集芯片输出的相关数值,实现了简单的信号二维图形显示,如图4所示。
在脑电信号的三维图像显示上采用的解决方案是以MATLAB语言为主,C++语言辅助,通过MATLAB相关的GUI设计[12],并结合移动端的显示,实现各频段脑电波的三维图像实时显示,如图5所示。
4结论
本文利用脑电信号的“专注度”参数,通过Arduino平台的转换操作,得到有效控制命令电压值,完成了轮椅的前进和停止控制,但在轮椅的后退控制上还未解决。轮椅的左右转向是通过眨眼信号来控制完成的,但是由于多种噪声的干扰,导致转向的精确度不高,提高精确度的方法是尽可能滤除噪声影响。通过采用MATLAB语言和C++语言混合编程的方法,成功地实现了脑电波的三维图像显示。
参考文献
[1] VELUVOLU K C, WANG Y, KAVURI S S. Adaptive estimation of EEG rhythms for optima band indentification in BCI[J]. Journal of Neuroscience Methods,2012,203(1):163-172.
[2] WOLPAW J R, BIRBAUMER N, HEETDERKS W J, et al.Braincomputer interface technology: a review of the first internationl meeting [J]. IEEE Trans Rehabil Eng, 2000, 8(2):222-225.
[3] 王三强.脑电信号采集系统设计及在脑—机接口中的应用研究[D].重庆:重庆大学,2006.
[4] 张军.ASIC技术的特点与应用[J].信息技术,2001(9):1-3.
[5] 程晨.Arduino 开发实战指南[M].北京:机械工业出版社,2012.
[6] 杨帮华,颜国正,丁国清,等.脑接口关键技术研究[J].北京生物医学工程,2005(4):308-310.
[7] NeuroSky.Mindset Instruction Manua[Z].神念科技有限公司,2009.
[8] 胡广书.数字信号处理(第2版)[M].北京:清华大学出版社,2011.
[9] 史小华,王洪波,王建军.电动轮椅控制器的设计与实现[J].电子测量技术,2013(1):65-69.
[10] 左艳丽.C语言和汇编语言混合编程的方法和实现[J].职教与经济研究:娄底职业技术学院学报,2008(3):60-62.
[11] 陈建平, 罗先启.MATLAB与C/C++、FORTRAN语言混合编程[J].三峡大学学报(自然科学版),2005,26(6):547-551.
[12] 邓昌瑞.基于MATLAB GUI的多功能计算系统设计及实现[D].南昌:南昌大学,2012.