文獻標識碼: A
文章編號: 0258-7998(2014)05-0014-04
隨著機器人技術(shù)和康復(fù)醫(yī)學(xué)的發(fā)展,康復(fù)機器人已成為一種新的運動神經(jīng)康復(fù)治療技術(shù),通過康復(fù)訓(xùn)練運動療法來維持并改善腦卒中偏癱患者的關(guān)節(jié)活動度[1],可防止肌肉萎縮,促進患肢運動功能的恢復(fù),同時改善運動的協(xié)調(diào)性。利用機器人技術(shù)進行康復(fù)訓(xùn)練,輔助腦卒中引起的上肢功能障礙的恢復(fù),得到了人們越來越廣泛的認可。
上肢康復(fù)訓(xùn)練機器人經(jīng)過二十多年的發(fā)展,已取得了很大的進展。通過對上肢康復(fù)訓(xùn)練機器人發(fā)展現(xiàn)狀的研究[2]可以發(fā)現(xiàn),現(xiàn)有的多種機器人系統(tǒng)在人機交互控制方面仍存在一些不足,人機交互控制系統(tǒng)全部都是基于個人計算機,操作方式主要是通過鼠標與鍵盤[3-4]。一方面這種設(shè)計要求醫(yī)護人員在康復(fù)訓(xùn)練現(xiàn)場操作設(shè)備,降低了工作效率;另一方面,腦卒中偏癱患者的行動能力通常較弱,很難通過傳統(tǒng)的計算機操作方式進行交互,削弱了患者對自身康復(fù)治療過程的關(guān)注程度與參與程度。本文的目標是設(shè)計并實現(xiàn)一個基于嵌入式Linux的上肢康復(fù)訓(xùn)練機器人用戶控制系統(tǒng),利用該便攜式終端設(shè)備的移動處理能力,結(jié)合相關(guān)的無線通信模塊和LCD顯示控制模塊,實現(xiàn)訓(xùn)練時運動關(guān)節(jié)參數(shù)的實時采集、無線傳輸,方便醫(yī)護人員提前設(shè)定針對不同患者的康復(fù)訓(xùn)練計劃,并在離開康復(fù)訓(xùn)練現(xiàn)場進行工作的同時又能監(jiān)控處于運行狀態(tài)的上肢康復(fù)訓(xùn)練機器人,掌握患者的訓(xùn)練動態(tài),適時做出調(diào)整,提高醫(yī)護人員的工作效率。
1 嵌入式系統(tǒng)框架
整個用戶系統(tǒng)的原理框架如圖1、圖2所示。圖1為硬件框圖,圖2為軟件框圖。硬件部分包括ARM主控制器開發(fā)平臺和外圍設(shè)備兩大部分。主控芯片包括串口、以太網(wǎng)口、觸屏接口等各類接口,負責對信號進行處理、存儲,LCD控制器和觸屏接口負責控制信號的傳輸以及顯示,通信模塊依據(jù)SPI通信協(xié)議完成信息數(shù)據(jù)在主控制器與外圍設(shè)備(主要是底層動力控制系統(tǒng))間的傳遞。
1.1 處理器的選擇與開發(fā)環(huán)境搭建
本文選擇了三星公司型號為S5PV210的微處理器作為用戶控制系統(tǒng)的主控芯片。S5PV210基于ARM CortexTM-A8內(nèi)核進行設(shè)計,使用ARM V7指令集。S5PV210的運行主頻高達1 GHz,可以確保嵌入式Linux操作系統(tǒng)及其應(yīng)用程序的及時響應(yīng)并穩(wěn)定運行。本文設(shè)計的嵌入式用戶控制系統(tǒng)硬件基于友善公司推出的mini210開發(fā)板,該開發(fā)板使用了S5PV210微處理器為主控芯片進行設(shè)計,配備7英寸電阻式觸摸屏作為用戶操作的終端設(shè)備。宿主機上搭建的嵌入式開發(fā)環(huán)境包括安裝Linux操作系統(tǒng)、交叉編譯工具以及NFS網(wǎng)絡(luò)文件服務(wù)器的配置和串口調(diào)試終端的選擇等。本文的GUN/Linux操作系統(tǒng)選擇Ubuntu13.04,程序編輯軟件使用gvim,配合gcc/g++編譯器,串口調(diào)試終端使用Minicom,并根據(jù)目標板的配置修改和裁剪了2.6.37版本的Linux內(nèi)核[5]。
1.2 驅(qū)動程序的開發(fā)
基于嵌入式Linux內(nèi)核的應(yīng)用程序無法像普通單片機程序一樣直接操作GPIO、USB、串口等任何系統(tǒng)外設(shè)模塊,需要使用相應(yīng)外設(shè)的Linux設(shè)備驅(qū)動提供的統(tǒng)一函數(shù)接口API。某些特殊外設(shè)需要按照Linux設(shè)備驅(qū)動規(guī)范自行編寫,本文所涉及的驅(qū)動主要是字符設(shè)備的驅(qū)動[6],包括7英寸LCD控制終端的按鍵驅(qū)動、觸摸屏的驅(qū)動以及SPI通信模塊的驅(qū)動。下面僅以SPI通信協(xié)議為例介紹系統(tǒng)通信模塊的驅(qū)動。
無線通信模塊采用SI4432芯片,SI4432通過SPI接口與外界進行通信,因此在嵌入式用戶控制系統(tǒng)中,底層SPI驅(qū)動程序主要完成SI4432與S5PV210間的通信。上層SPI驅(qū)動完成通過主控芯片外設(shè)模塊向SI4432發(fā)送指令和數(shù)據(jù),最終由SI4432芯片控制器控制射頻收發(fā)器完成數(shù)據(jù)收發(fā),實現(xiàn)控制終端與底層動力控制系統(tǒng)相應(yīng)無線模塊之間的無線數(shù)據(jù)傳輸。SPI的驅(qū)動結(jié)構(gòu)可以分為3個層次:SPI 核心層、SPI控制器驅(qū)動層和SPI設(shè)備驅(qū)動層。SPI 核心層由Linux內(nèi)核決定,應(yīng)用程序的開發(fā)無需關(guān)心。SPI控制器驅(qū)動可用數(shù)據(jù)結(jié)構(gòu)spi_master來描述,是與處理器平臺相關(guān)的軟件層,本文中對應(yīng)的是ARM系列處理器。SPI設(shè)備驅(qū)動層為應(yīng)用程序接口層,它提供了通過處理器平臺的SPI外設(shè)模塊訪問具體SPI設(shè)備的接口。SPI設(shè)備驅(qū)動層可以用spi_driver和spi_device兩個結(jié)構(gòu)來描述。這3個重要數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系如圖3所示。
SPI驅(qū)動程序作為字符設(shè)備文件,需要定義SI4432通信芯片的SPI特性參數(shù),并提供S5PV210的SPI控制器對SI4432通信芯片的讀、寫功能函數(shù)接口。本文具體實現(xiàn)的主要函數(shù)接口包括spi_si4432_open(),spi_si4432_read(),spi_si4432_write(),spi_si4432_interrupt(),spi_si4432_ioctl(),spi_si4432_poll(),spi_si4432_
probe(),spi_si4432_message()等。其中最為關(guān)鍵的是讀、寫函數(shù)。讀操作的目的是通過上層SPI驅(qū)動發(fā)送接收指令,然后把接收到的數(shù)據(jù)轉(zhuǎn)存至內(nèi)核緩存區(qū),再由內(nèi)核緩存區(qū)讀入用戶空間數(shù)據(jù)結(jié)構(gòu)中,寫操作與之類似。驅(qū)動程序采用中斷的方式來告訴系統(tǒng)數(shù)據(jù)是否已經(jīng)發(fā)送或者接收完畢。每發(fā)送或接收完一組數(shù)據(jù),中斷信號就被觸發(fā),CPU執(zhí)行中斷處理函數(shù)。
2 嵌入式用戶圖形界面GUI設(shè)計
本系統(tǒng)選用了嵌入式Linux的主流GUI系統(tǒng)之一Qt作為開發(fā)工具[7]。嵌入式GUI要求直觀、可靠、占用資源少且響應(yīng)迅速,與系統(tǒng)硬件資源有限的情況相符。另外嵌入式GUI應(yīng)具備高度的移植性和剪裁性。Qt以面向?qū)ο蟮腃++語言為基礎(chǔ),通過Qt API接口函數(shù)與Linux I/O設(shè)備直接交互,它采用幀緩存(buffer frame)作為底層圖形接口,將外部設(shè)備抽象為鍵盤和鼠標的輸入事件,具有良好的跨平臺移植性以及強大的API支持。
2.1 GUI整體設(shè)計流程
目前實現(xiàn)的嵌入式用戶控制系統(tǒng)主要包括5大部分:用戶注冊和登錄管理,醫(yī)生控制中心、患者控制中心、設(shè)備控制中心以及康復(fù)訓(xùn)練游戲。使用對象包括醫(yī)護人員和康復(fù)患者兩類,醫(yī)護人員更加偏向于對上肢康復(fù)訓(xùn)練機器人的管理、病人訓(xùn)練計劃的安排及監(jiān)測;患者則更側(cè)重于實際訓(xùn)練過程的細微調(diào)整、對訓(xùn)練項目及康復(fù)小游戲的選擇以及執(zhí)行訓(xùn)練計劃等。由此,在用戶登錄界面選擇不同登錄類型時將進入不同的控制中心面板,從而獲得不同的設(shè)備操作權(quán)限。整個用戶控制系統(tǒng)共繪制了12個主要的操作、顯示面板。
整個Qt用戶系統(tǒng)界面的設(shè)計采用了QGraphicsView場景-視圖框架,通過在視窗Viewport加載不同的場景Scene來實現(xiàn)窗口部件的切換。以醫(yī)生控制中心面板的構(gòu)建為例,實現(xiàn)了從視圖(QGraphicsView)->場景(QGra-phicsScene)->自定義窗體部件類(QWidget)->子窗口類(QLabel,QSlider等)->信號與槽函數(shù)鏈接(Singnal & Slots)添加的一整套用戶操作系統(tǒng)界面的設(shè)計,共計12個界面之間的快速鏈接跳轉(zhuǎn),方便醫(yī)護人員及患者對終端設(shè)備的操作。
class DocCtrlCenterView : public QGraphicsView
//自定義醫(yī)生控制中心視圖
{ …
public:
DocCtrlCenterView(QWidget*parent, logInInfo logInInfoIn);
//函數(shù)構(gòu)造
~DocCtrlCenterView();
DocCtrlCenter *docCtrlCenter; //建立場景
private slots:
void UpdateNow(){this->viewport()->repaint();};
//提供實施刷新的槽函數(shù)
};
class DocCtrlCenter : public QGraphicsScene//自定義場景
{ …
DocCard *docCard;//聲明場景中的類
SysCtrlPad *sysCtrlPad;
…
QGraphicsProxyWidget* a;//聲明代理Widget
…
};
2.2 運動參數(shù)存儲與提取
在用戶控制系統(tǒng)中,需要將醫(yī)生設(shè)定的康復(fù)訓(xùn)練計劃轉(zhuǎn)換為機器人各個關(guān)節(jié)的電機驅(qū)動參數(shù)[9]并發(fā)送到底層動力控制系統(tǒng)實現(xiàn)對機械臂運動的實時控制,以及得到反饋信息并繪制康復(fù)機器人機械臂的各項關(guān)節(jié)運動參數(shù)。在計劃設(shè)定階段以及從數(shù)據(jù)傳輸模塊讀取運動參數(shù)后,系統(tǒng)會把數(shù)據(jù)分發(fā)到數(shù)據(jù)庫存儲線程進行存儲,存儲數(shù)據(jù)塊大小由緩沖隊列的數(shù)據(jù)塊大小決定。根據(jù)需求,本文使用QSQLite完成數(shù)據(jù)的操作管理。QSQLite是SQLite數(shù)據(jù)庫提供的一個Qt數(shù)據(jù)庫驅(qū)動,通過該驅(qū)動,所有的Qt應(yīng)用程序可方便地訪問SQLite數(shù)據(jù)庫。數(shù)據(jù)庫的設(shè)計包括多張數(shù)據(jù)表格[8],以康復(fù)訓(xùn)練的被動訓(xùn)練計劃定制為例,實現(xiàn)該計劃的定制涉及到s_Passive_Exercise、s_ScheduleSet兩個數(shù)據(jù)表,如圖4所示。根據(jù)終端用戶的操作實現(xiàn)對數(shù)據(jù)庫條目以及各項參數(shù)的增加、刪除、更新以及查詢。
2.3 各關(guān)節(jié)運動參數(shù)曲線繪制
設(shè)備控制中心提供了關(guān)節(jié)運動參數(shù)曲線繪制功能,該功能通過Qwt(Qt Widgets for Technical Applications)工具庫實現(xiàn)。Qwt提供了一系列GUI組件和曲線繪制的實用類,包括Curves(曲線)、Slider(滾動條)、Dials(圓盤)、Compasses(儀表盤)等。使用QWT繪制數(shù)據(jù)曲線所要用到的主要類包括QwtPlotCanvas與QwtPlotCurve。其中,QwtPlotCanvas類為曲線繪制提供畫板,畫板上則可以繪制曲線、標簽、坐標、網(wǎng)格等組件;QwtPlotCurve類則用于繪制曲線,它由一系列的數(shù)值點組成,有多種顯示方式,包括折線、點狀/平滑曲線等。在程序中,用戶系統(tǒng)定時發(fā)出關(guān)節(jié)運動信息反饋請求,底層動力控制系統(tǒng)收到請求后將檢測到的新的關(guān)節(jié)運動信息反饋給用戶系統(tǒng)。
2.4 康復(fù)訓(xùn)練游戲
“反彈球”游戲是通過對Qt社區(qū)提供的開源游戲QBall移植而實現(xiàn)的[9]。原始的QBall游戲只能使用觸摸屏或計算機鍵盤進行控制。本方案中,利用關(guān)節(jié)的真實運動信息控制游戲中虛擬擋塊的左右移動,將程序移植的工作集中在探究關(guān)節(jié)運動號與擋塊位置之間的關(guān)聯(lián)。該游戲控制一個可左右移動的擋塊,將落下的紅球反彈回去,被撞擊到的上方各色的方塊消失,不同的顏色對應(yīng)不同得分,游戲結(jié)束時將給出最終得分。
3 實驗驗證
用戶控制系統(tǒng)的實驗樣機為上海理工大學(xué)自行研制的3自由度中央驅(qū)動式上肢康復(fù)機器人[10]。樣機的機械部分與底層動力控制部分不在此論述。為了驗證嵌入式用戶控制系統(tǒng)的性能,設(shè)置實驗場景如下:(1)在設(shè)備控制中心界面設(shè)置機器人單關(guān)節(jié)運動參數(shù),利用傳感器采集驅(qū)動電機角速度、角位移,在參數(shù)輸出面板繪制曲線。(2)在主動訓(xùn)練模式下進行康復(fù)訓(xùn)練游戲。
首先使用嵌入式用戶控制中斷在設(shè)備控制中心界面將肘關(guān)節(jié)的速度設(shè)置為300 r/min,運動范圍上下限設(shè)置為-800°~+800°。點擊運行按鈕使肘關(guān)節(jié)對應(yīng)電機旋轉(zhuǎn),觀察實驗過程中角速度的變化情況。電機從靜止開始加速旋轉(zhuǎn)至設(shè)定值300 r/min時,觀察到設(shè)備控制中心繪制的角速度曲線如圖5所示。從圖中的角速度曲線可看出,電機角速度從0加速至300 r/min用時0.1 s。圖中顯示的加速時間還需考慮數(shù)據(jù)傳輸、軟件分析的時間,其真正代表的是兩個角速度數(shù)據(jù)采集點的時間差,而不是實際意義上的0.1 s,當然,由于底層動力系統(tǒng)及用戶控制系統(tǒng)處理性能較強,這個時間差僅會稍微超過0.1 s。
經(jīng)實驗驗證,系統(tǒng)能夠?qū)訖C機械臂的運動速度、活動范圍等參數(shù)進行及時響應(yīng)并實現(xiàn)實時調(diào)正,并可將具體的一個自由度上的角速度或角位移參數(shù)通過曲線方式在面板上描繪。在底層動力控制系統(tǒng)運行在正常工作狀態(tài)的條件下,設(shè)定參數(shù)與反饋參數(shù)匹配度較好,并能實現(xiàn)由患者帶動機械臂主動運動進行康復(fù)訓(xùn)練游戲。
本文通過深入研究嵌入式Linux系統(tǒng)的原理與使用,以 mini210開發(fā)板為硬件平臺完成了一套應(yīng)用于上肢康復(fù)訓(xùn)練的嵌入式用戶控制系統(tǒng)的設(shè)計,實現(xiàn)了使用觸屏終端無線控制上肢康復(fù)訓(xùn)練機器人的運行,并可在終端實時顯示關(guān)節(jié)的角速度、角位移的參數(shù)。同時設(shè)計了名為“反彈球”的康復(fù)訓(xùn)練小游戲,允許患者操作系統(tǒng)樣機來控制游戲,有助于提高其參與興趣,使其主動完成訓(xùn)練任務(wù)。控制系統(tǒng)具備智能化的人機交互方式,允許醫(yī)護人員通過設(shè)定機械臂的各項運動參數(shù)來制定量化的康復(fù)訓(xùn)練計劃,并實現(xiàn)了醫(yī)生與患者之間的遠程溝通以及醫(yī)生與機器、患者與機器間的遠程控制,增強患者對整個康復(fù)訓(xùn)練過程的參與程度。
參考文獻
[1] 劉學(xué)文,陳書江,楊麗,等.關(guān)節(jié)活動度維持及步行訓(xùn)練對腦卒中偏癱患者肌力的影響[J].中國臨床康復(fù),2003,7(5):802-802.
[2] 李慶玲,孫立寧,杜志江.上肢康復(fù)機器人發(fā)展現(xiàn)狀的分析與研究[J].機械設(shè)計,2008,25(09):1-3.
[3] LUM P S,BURGAR C G,SHOR P C,et al.Robot-assisted movement training compared with conventional therapy techniques for the rehabilitation of upper-limb motor function after stroke[J].Arch.Phys.Med.Rehabil,2002,83(7):952-959.
[4] ABDULLAH H A,TARRY C,DATTA R,et al.Dynamic biomechanical model for assessing and monitoring robotassisted upper-limb therapy[J].J.Rehabil Res.Dev.,2007,44(1):43-62.
[5] 周杰,陳偉海,于守謙.基于ARM的嵌入式系統(tǒng)在機器人控制系統(tǒng)中的應(yīng)用[J].機器人技術(shù),2007,23(01-02):271-274.
[6] CORBET J,RUBIN A,KROAH H.Linux設(shè)備驅(qū)動程序(第3版)[M].北京:中國電力出版社,2005.
[7] 陳鯤,陳云秋,劉信新.基于Qt/Embedded的嵌入式Linux應(yīng)用程序的設(shè)計[J].計算機與數(shù)字工程,2009,37(1):156-161.
[8] 劉治國,陳新華.基于Linux和Qt的智能家居系統(tǒng)的設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2012,38(4):23-26.
[9] QBall a simple Breakout clone for Windows and Linux[EB/OL].(2013-xx)[2014-01].http://freecode.com/projects/qball.
[10] 簡卓,易金花,顧余輝,等.索控式三自由度上肢康復(fù)訓(xùn)練機器人[J].中國康復(fù)理論與實踐,2013,19(1):82-85.