摘 要: 提出一種基于Android平臺的腦電無線采集與警覺度監(jiān)測終端的設(shè)計。采用Wi-Fi作為無線通信方案,以Android手機作為上位機,在手機上設(shè)計應(yīng)用程序,通過手機應(yīng)用程序可以方便地實現(xiàn)對采集設(shè)備的參數(shù)設(shè)置、無線連接、數(shù)據(jù)接收、波形顯示、數(shù)據(jù)分析和文件存儲。Android手機端通過Wi-Fi與下位機建立通信,實時接收Wi-Fi模塊發(fā)送的腦電數(shù)據(jù),繪成腦電圖,并能通過手機端向下位機發(fā)送控制命令,再將基于極限學(xué)習(xí)機的腦電信號分類算法通過Java編碼移植到手機內(nèi)部,分析腦電信號所攜帶的警覺度信息。立足便攜式腦電信號無線采集系統(tǒng),在系統(tǒng)中加入基于Android系統(tǒng)的傳輸控制方法,并植入訓(xùn)練速度快、分類效果好的算法程序,為便攜式腦電信號采集提供了一個新方案。
關(guān)鍵詞: Android;Wi-Fi;腦電采集;無線傳輸
腦電信號(EEG)是由腦神經(jīng)活動產(chǎn)生的一種電活動,它含有大量的大腦活動信息,隨著社會的快速進步,交通事故在日常傷亡事件中占有較大比重,為此采集腦電信號并實時監(jiān)測駕駛?cè)藛T偏勞狀態(tài)對于預(yù)防由于駕駛員疲勞和警覺度不高造成的交通事故尤為重要。傳統(tǒng)腦電采集設(shè)備大部分被應(yīng)用在醫(yī)院、實驗室等特殊場合,在精度上能夠滿足醫(yī)療和研究的要求,但無法應(yīng)用到日常生活中,尤其是在駕駛活動當(dāng)中,并且成本昂貴、體積較大、移動不便。因此設(shè)計出一款體積較小、便攜性較好的EEG信號采集與監(jiān)控系統(tǒng)具有重要的意義和價值。
移動通信等技術(shù)的發(fā)展為臨床診斷和治療帶來了更多的技術(shù)方法[1-2]。Android手機以其成本低、用戶體驗好等優(yōu)點已經(jīng)在智能手機市場占有90%左右的份額,目前以Android為系統(tǒng)的智能手機、平板電腦等已經(jīng)廣泛應(yīng)用于健康醫(yī)療、遠(yuǎn)程控制等領(lǐng)域,如YUNGKOOK J[3-4]等就將智能手機應(yīng)用到心電信號監(jiān)護系統(tǒng)中,用于對心電信號的實時監(jiān)護、自我診斷等;Song Weibo等[5]設(shè)計了基于Android手機的身體監(jiān)護系統(tǒng),用戶可以通過手機屏幕觀察采集到的人體生理數(shù)據(jù)。大部分Android手機都自帶有藍(lán)牙、Wi-Fi通信功能,如李高尚等人[6-7]使用藍(lán)牙作為無線傳輸方式,取代了傳統(tǒng)有線傳輸方式,實現(xiàn)了無線采集的功能,但存在傳輸速率低和傳輸距離短等缺點,不便于遠(yuǎn)距離采集系統(tǒng)的實現(xiàn)。
本文結(jié)合Android和Wi-Fi兩者的優(yōu)勢,在手機上設(shè)計移動應(yīng)用軟件,通過手機完成對采集前端的控制并接收無線模塊發(fā)送的數(shù)據(jù),最后對數(shù)據(jù)進行算法分析,實現(xiàn)了整個采集過程以及警覺度的監(jiān)控。
1 系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)總體結(jié)構(gòu)如圖1所示,包括ADS1299采集前端[8]、Wi-Fi處理發(fā)送模塊、Android智能手機終端應(yīng)用。前端采集模塊選用TI公司的ADS1299作為腦電采集的模/數(shù)轉(zhuǎn)換器,ADS1299以其便攜性、緊湊性、低功耗性被專門用來進行腦電信號采集。無線傳輸模塊采用Gain Span公司的超低功耗無線芯片GS1011[9],GS1011是1個具有超低功耗的Wi-Fi無線片上系統(tǒng),它包含1個802.11射頻前端、媒體控制器和基帶處理器,片上Flash和片上SRAM,2個ARM7處理器。GS1011的APP CPU將ADS1299轉(zhuǎn)換的腦電數(shù)據(jù)、接收到的AP的信號強度的信息進行處理,然后通過WLAN CPU將數(shù)據(jù)打包成符合IEEE 802.11協(xié)議的數(shù)據(jù)無線發(fā)送出去;在接收端,無線接入點AP接收無線載波發(fā)送過來的數(shù)據(jù),然后傳送給手機控制端,手機對接收過來的數(shù)據(jù)解包并作數(shù)據(jù)處理。
本文主要論述手機移動終端軟件的設(shè)計,手機終端的程序主要包括三個功能:(1)控制下位機采集;(2)接收下位機采集數(shù)據(jù)并作數(shù)據(jù)處理;(3)建立警覺度水平的離線和在線分析系統(tǒng)。控制功能的實現(xiàn)過程為:通過手機發(fā)送帶有控制命令的數(shù)據(jù)包到Wi-Fi模塊,Wi-Fi的WLAN CPU接收數(shù)據(jù),解析自定義數(shù)據(jù)格式數(shù)據(jù)包得到命令,將命令通過SPI接口發(fā)送給ADS1299采集前端。手機接收Wi-Fi模塊發(fā)送過來的數(shù)據(jù)包,解析得到反饋的信息或者有用的EEG數(shù)據(jù),實時處理數(shù)據(jù)。
2 Android終端軟件設(shè)計與實現(xiàn)
Android是一個基于Linux平臺的操作系統(tǒng)[10],主要應(yīng)用于智能手機、平板電腦等手持設(shè)備。Android的架構(gòu)圖如圖2所示,Android的架構(gòu)主要由應(yīng)用程序?qū)?、?yīng)用程序框架層、庫、Android運行時庫、Linux內(nèi)核組成。
Android應(yīng)用程序以Java為開發(fā)語言,以Eclipse作為開發(fā)環(huán)境,并配合Android SDK、Java JDK和ADT插件完成對軟件的開發(fā)與調(diào)試。Android的SDK提供了可視化的模擬器,同時Android平臺提供了2D的圖形支持,在完成程序代碼的編寫后,可以將程序發(fā)布到模擬器上運行,如果應(yīng)用程序涉及藍(lán)牙、攝像頭等操作,此時需要在真機上進行調(diào)試。
2.1 通信協(xié)議設(shè)計
通信協(xié)議是通信雙方進行溝通的語言,協(xié)議的設(shè)計應(yīng)該簡單明了,避免增加冗余度,通信協(xié)議的定義與傳輸?shù)臄?shù)據(jù)被編排成字節(jié)數(shù)組的格式。本設(shè)計規(guī)定手機端為通信的客戶端,GS1011為通信服務(wù)端。表1為定義的數(shù)據(jù)幀格式。
(1)報頭:固定為55AD兩個字節(jié),表示一個幀的開始。
(2)操作指令:是用來區(qū)分控制命令,它與ack組合用來表示各種操作和具體類型。“L”代表連接服務(wù)器;“C”代表配置ADS1299相關(guān)寄存器;“A”代表采集操作,如開始、停止等。協(xié)議的具體內(nèi)容如表2所示。
?。?)數(shù)據(jù)包長度:從報頭到數(shù)據(jù)段的最后一個字節(jié)的總和。
?。?)數(shù)據(jù):代表操作的具體數(shù)據(jù),如往寄存器里寫入的數(shù)據(jù)、采集到的數(shù)據(jù)等,如果沒有數(shù)據(jù)設(shè)為0。
服務(wù)端使用C語言開發(fā),采用結(jié)構(gòu)體封裝數(shù)據(jù),對于Android客戶端,由于Java語言沒有結(jié)構(gòu)體這種類型,因此可以先將各種類型的數(shù)據(jù)進行轉(zhuǎn)換,模擬結(jié)構(gòu)體,然后將數(shù)據(jù)打包發(fā)送。
2.2 界面顯示模塊
界面顯示模塊主要通過Activity嵌套Fragement實現(xiàn)。根據(jù)功能的需求,手持終端應(yīng)用程序設(shè)置了4個主要功能界面:波形顯示界面、Wi-Fi管理界面、ADS1299配置界面、算法分析界面和文件列表界面。(1)主界面主要嵌套了用于波形顯示的SurfaceView以及一些功能按鈕,由于采集頻率較高,一般的ImageView很難滿足實時顯示波形的需求,SurfaceView采用雙緩沖模式,在高速刷新界面方面較其他View有較大優(yōu)勢;(2)采集配置界面用來設(shè)置ADS1299的參數(shù);(3)為了提高系統(tǒng)的集成性,將Wi-Fi管理模塊從手機內(nèi)部集成到采集終端軟件中來,方便對Wi-Fi網(wǎng)絡(luò)的管理;(4)算法分析界面中,第一個Spinner選擇控件用來選擇模擬實時或者實時模式,另一個Spinner控件用來選擇算法,本文中暫時集成了極限學(xué)習(xí)機的分類算法,文件界面用于顯示保存的歷史數(shù)據(jù),主要使用ListView分條展示。整個界面由1個Activity嵌套了4個Fragement來實現(xiàn),使用中可以通過屏幕左右滑動選擇要使用的界面,布局由XML文件完成。
2.3 網(wǎng)絡(luò)通信模塊
本系統(tǒng)采用UDP傳輸協(xié)議,UDP(User Datagram Protocol)是一種無連接的傳輸層協(xié)議,通信流程圖如圖3所示,它不保證數(shù)據(jù)傳送的可靠性[11],也正是由于它的這一特點,使得UDP協(xié)議有著快速、簡單、便捷的優(yōu)點,適于進行實時性要求高、數(shù)據(jù)量大的數(shù)據(jù)傳輸。本文利用UDP協(xié)議傳輸速率快、實時性高的特性,將采集到的腦電數(shù)據(jù)傳輸?shù)缴衔粰C進行數(shù)據(jù)處理。
當(dāng)手機與GS1011處在同一個局域網(wǎng)之后,開始進行數(shù)據(jù)交互。系統(tǒng)利用基于C/S工作模式的Socket通信接口來實現(xiàn)上下位機之間的通信,手機作為客戶端,無線采集設(shè)備作為服務(wù)端,客戶端連接到服務(wù)端至少需要服務(wù)端的IP和端口號,建立UDP Socket連接主要用到兩個類:DatagramSocket(端到端通信的類)和DatagramPacket(通信數(shù)據(jù)的數(shù)據(jù)報類)。DatagramSocket是Android系統(tǒng)提供的一個公共類,它可以和任何可用或者指定的端口進行連接。在兩個端點的通信中需要用到的方法有Receive(DatagramPacket packet)、send(DatagramPacket pack)和close()。在接收和發(fā)送數(shù)據(jù)時,需要構(gòu)造一個DatagramPacket對象,它有幾種構(gòu)造方法,這里用于接收數(shù)據(jù)的DatagramPacket帶有byte[]和int length兩個參數(shù),發(fā)送數(shù)據(jù)時DatagramPacket帶有4個參數(shù):byte[]sendbuff、int length、InetAddress serverAddr和int serverPort。
發(fā)送數(shù)據(jù)主要代碼為:
DatagramPaeket packrSend=new DatagramPacket(sendbuff,
Sendbuff.length,serverAddr,portNumber);
ds.send(packetSend);
接收數(shù)據(jù)主要代碼:
DatagramPacket packRec=new DatagramPacket(recbuffer,recbuffer.length);
ds.receive(packRec);
2.4 算法分析模塊
對于算法模塊,考慮到移動平臺警覺度分析的特殊性,尤其是手機資源和配置還很有限,并且考慮到最終需要實現(xiàn)算法分析和數(shù)據(jù)采集的同步性和實時性,希望算法的運算過程較快速,占有資源較少。為此,本文提出基于極限學(xué)習(xí)機的腦電信號警覺度的分類算法,并將算法進行了Java編碼,移植到手機內(nèi)部,用于對采集到的數(shù)據(jù)進行實時和模擬實時分析。極限學(xué)習(xí)機是根據(jù)單隱含層前饋神經(jīng)網(wǎng)絡(luò)(SLFN)提出的一個新算法[12-13],極限學(xué)習(xí)機令隱含層的激活函數(shù)為無限可微函數(shù),可以隨機選擇和調(diào)整隱含層節(jié)點的參數(shù),使SLFN從復(fù)雜的非線性系統(tǒng)變成簡單的線性系統(tǒng)[14],較好地解決傳統(tǒng)神經(jīng)網(wǎng)絡(luò)訓(xùn)練時間長、參數(shù)難確定等問題。
給定訓(xùn)練樣本:
P={(xi,y)|xi∈Rd,y∈R,i=1,2,…,n}(1)
xi=[xi1,xi2,…,xim]∈R,y=[y1,y2,…,ym]∈R
極限學(xué)習(xí)機分類模型的網(wǎng)絡(luò)結(jié)構(gòu)由輸入層、隱含層和輸出層三部分組成:輸入層的n個神經(jīng)元對應(yīng)n個輸入變量;隱含層p個節(jié)點;本文為單輸出問題,令輸出層為1個輸出變量,輸入輸出變量均有m組數(shù)據(jù),圖4為極限學(xué)習(xí)機網(wǎng)絡(luò)結(jié)構(gòu)圖。
設(shè)輸入層第i個變量與隱含層各個節(jié)點間的連接權(quán)值為wi=[wi1,wi2,…,xia]T,隱含層神經(jīng)元的閾值為b=[b1,b2,…,ba]T,隱含層節(jié)點與輸出變量的連接權(quán)值為,隱含層神經(jīng)元的激活函數(shù)為g(x)。則具有p個隱含層節(jié)點的ELM模型的決策函數(shù)可以表示為:
式(2)還可以表示為:H?茁=T′,H為神經(jīng)網(wǎng)絡(luò)隱含層的輸出矩陣。ELM模型的輸入權(quán)重w和隱含層神經(jīng)元的閾值b可隨機選擇,并且激活函數(shù)g(x)無限可微時,ELM的參數(shù)無需全部調(diào)整。隱含層節(jié)點與輸出節(jié)點的連接權(quán)值β可通過求解以下線性方程組的最小二乘解來獲得:
其中,解β具有唯一性,可使網(wǎng)絡(luò)的訓(xùn)練誤差最小。
2.5 數(shù)據(jù)存儲模塊
采集到的腦電數(shù)據(jù)量比較大,此時可以將腦電數(shù)據(jù)存儲到手機的存儲卡中。點擊保存按鈕,首先使用new File(file)創(chuàng)建一個File對象,形參file指定了文件夾的路徑,再調(diào)用對象的exist()方法判斷文件夾是否存在,如果不存在會調(diào)用File對象的mkdirs()方法在SD卡內(nèi)建立一個文件夾,最后調(diào)用系統(tǒng)的日歷類Calendar類獲取當(dāng)前的時間,以時間作為保存文件的文件名,將接收到的字節(jié)數(shù)據(jù)保存到txt文件中。
2.6 權(quán)限設(shè)置
Android應(yīng)用程序?qū)κ謾C的重要組件的訪問有著嚴(yán)格的限制,當(dāng)涉及如Wi-Fi操作、訪問網(wǎng)絡(luò)、SD卡操作時,必須在Android開發(fā)目錄下的AndroidManifest.xml文件中加入權(quán)限申請。AndroidManifest是Android工程目錄下都有的一個清單文件,它包含了應(yīng)用程序的基本信息,這些信息包括應(yīng)用程序需要的許可、程序運行需要的API級別、程序運行所需要的硬件支持和函數(shù)庫等。由于本文要用到Wi-Fi、網(wǎng)絡(luò)、SD卡的操作,因此要在AndroidManifest.xml文件中加入以下權(quán)限:Wi-Fi、網(wǎng)絡(luò)訪問和外部存儲卡訪問。運行程序,界面如圖5所示。
本文介紹了基于Android平臺下的無線腦電采集與監(jiān)測終端的設(shè)計和關(guān)鍵技術(shù),包括Android系統(tǒng)的架構(gòu),腦電信號采集系統(tǒng)的整體結(jié)構(gòu),應(yīng)用層幀格式的定義,傳輸協(xié)議的設(shè)計,算法模塊的集成,以及軟件的設(shè)計。系統(tǒng)可以克服傳統(tǒng)腦電采集設(shè)備的缺點,應(yīng)用小巧靈活、性能優(yōu)越的手機終端作為上位機,配合PC完成腦電信號的實時采集,并在手機系統(tǒng)中加入極限學(xué)習(xí)機智能分類算法來進行腦電信號警覺度的分析,這個系統(tǒng)的設(shè)計為提高腦電采集設(shè)備的便攜性、可操作性以及未來疲勞駕駛預(yù)測提供了一套可行的方案。
參考文獻
[1] 張嘯飛,胡大一,丁榮晶,等.中國心腦血管疾病死亡現(xiàn)狀及流行趨勢[J].中華心血管病雜志,2012,40(3):179-185.
[2] 薛青.智慧醫(yī)療:物聯(lián)網(wǎng)在醫(yī)療衛(wèi)生領(lǐng)域的應(yīng)用[J].信息化博覽,2010(5):56-57.
[3] 張志軍,王娟,何輝.基于Android的心電監(jiān)護終端的設(shè)計與實現(xiàn)[J].自動化與儀器儀表,2013(5):183-185.
[4] JEON Y, LEE J D, CHOI J. Design and Implementation of a Wearable ECG System[J]. International Journal of Smart Home, 2013,7(2):61-69.
[5] Song Weibo, Yu Hong, Liang Ce, et al. Body monitoring system design based on Android smartphone[C]. 2012 World Congress, Trivandrum: Information and Communication Technologies, 2012:1147-1151.
[6] 李高尚,沈巍.一種應(yīng)用于移動健康醫(yī)療的Android客戶端的研究[J].電子測試,2012(2):64-67.
[7] 張莉,周子龍.基于Android智能手機平臺的便攜式心電監(jiān)護儀的設(shè)計[J].中南民族大學(xué)學(xué)報(科學(xué)版),2012,31(4):88-92.
[8] TI.ADS1299Datasheet[EB/OL].[2013-01].http://www.ti.com.cn/cn/lit/ds/symlink/ads1299.pdf.
[9] 謝宏,董洋洋,姚楠,等.基于ADS1298與WIFI的腦電信號采集與傳輸系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2013,36(6):150-153.
[10] 朱桂英.Android實例開發(fā)完全手冊[M].北京:人民郵電出版社,2012.
[11] 周麗娟.基于UDP協(xié)議的Socket網(wǎng)絡(luò)編程[J].計算機工程應(yīng)用技術(shù),2008(34):1867-1868.
[12] Andrés Bueno-Crespo, Pedro J. García-Laencin, José-Luis Sancho-Gómez. Neural architecture design based on extreme learning machine[J]. Neural Networks, 2013, 48:19-24.
[13] HORATA P, CHIEW CHANWATTANA S, SUNAT K. Robust extreme learning machine[J]. Neurocomputing, 2013,102(15):31-44.
[14] Fre′nay Beno′t, Mark van Heeswijk, et al. Feature selection for nonlinear models with extreme learning machines[J]. Neurocomputing, 2013, 102:111-124.