文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)05-0014-04
隨著機(jī)器人技術(shù)和康復(fù)醫(yī)學(xué)的發(fā)展,,康復(fù)機(jī)器人已成為一種新的運動神經(jīng)康復(fù)治療技術(shù),通過康復(fù)訓(xùn)練運動療法來維持并改善腦卒中偏癱患者的關(guān)節(jié)活動度[1],,可防止肌肉萎縮,,促進(jìn)患肢運動功能的恢復(fù),同時改善運動的協(xié)調(diào)性,。利用機(jī)器人技術(shù)進(jìn)行康復(fù)訓(xùn)練,,輔助腦卒中引起的上肢功能障礙的恢復(fù),得到了人們越來越廣泛的認(rèn)可,。
上肢康復(fù)訓(xùn)練機(jī)器人經(jīng)過二十多年的發(fā)展,,已取得了很大的進(jìn)展。通過對上肢康復(fù)訓(xùn)練機(jī)器人發(fā)展現(xiàn)狀的研究[2]可以發(fā)現(xiàn),,現(xiàn)有的多種機(jī)器人系統(tǒng)在人機(jī)交互控制方面仍存在一些不足,,人機(jī)交互控制系統(tǒng)全部都是基于個人計算機(jī),操作方式主要是通過鼠標(biāo)與鍵盤[3-4],。一方面這種設(shè)計要求醫(yī)護(hù)人員在康復(fù)訓(xùn)練現(xiàn)場操作設(shè)備,降低了工作效率,;另一方面,,腦卒中偏癱患者的行動能力通常較弱,很難通過傳統(tǒng)的計算機(jī)操作方式進(jìn)行交互,,削弱了患者對自身康復(fù)治療過程的關(guān)注程度與參與程度,。本文的目標(biāo)是設(shè)計并實現(xiàn)一個基于嵌入式Linux的上肢康復(fù)訓(xùn)練機(jī)器人用戶控制系統(tǒng),利用該便攜式終端設(shè)備的移動處理能力,,結(jié)合相關(guān)的無線通信模塊和LCD顯示控制模塊,,實現(xiàn)訓(xùn)練時運動關(guān)節(jié)參數(shù)的實時采集,、無線傳輸,方便醫(yī)護(hù)人員提前設(shè)定針對不同患者的康復(fù)訓(xùn)練計劃,,并在離開康復(fù)訓(xùn)練現(xiàn)場進(jìn)行工作的同時又能監(jiān)控處于運行狀態(tài)的上肢康復(fù)訓(xùn)練機(jī)器人,,掌握患者的訓(xùn)練動態(tài),適時做出調(diào)整,,提高醫(yī)護(hù)人員的工作效率,。
1 嵌入式系統(tǒng)框架
整個用戶系統(tǒng)的原理框架如圖1、圖2所示,。圖1為硬件框圖,,圖2為軟件框圖。硬件部分包括ARM主控制器開發(fā)平臺和外圍設(shè)備兩大部分,。主控芯片包括串口,、以太網(wǎng)口、觸屏接口等各類接口,,負(fù)責(zé)對信號進(jìn)行處理,、存儲,LCD控制器和觸屏接口負(fù)責(zé)控制信號的傳輸以及顯示,,通信模塊依據(jù)SPI通信協(xié)議完成信息數(shù)據(jù)在主控制器與外圍設(shè)備(主要是底層動力控制系統(tǒng))間的傳遞,。
1.1 處理器的選擇與開發(fā)環(huán)境搭建
本文選擇了三星公司型號為S5PV210的微處理器作為用戶控制系統(tǒng)的主控芯片。S5PV210基于ARM CortexTM-A8內(nèi)核進(jìn)行設(shè)計,,使用ARM V7指令集,。S5PV210的運行主頻高達(dá)1 GHz,可以確保嵌入式Linux操作系統(tǒng)及其應(yīng)用程序的及時響應(yīng)并穩(wěn)定運行,。本文設(shè)計的嵌入式用戶控制系統(tǒng)硬件基于友善公司推出的mini210開發(fā)板,,該開發(fā)板使用了S5PV210微處理器為主控芯片進(jìn)行設(shè)計,配備7英寸電阻式觸摸屏作為用戶操作的終端設(shè)備,。宿主機(jī)上搭建的嵌入式開發(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ù)目標(biāo)板的配置修改和裁剪了2.6.37版本的Linux內(nèi)核[5],。
1.2 驅(qū)動程序的開發(fā)
基于嵌入式Linux內(nèi)核的應(yīng)用程序無法像普通單片機(jī)程序一樣直接操作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接口與外界進(jìn)行通信,因此在嵌入式用戶控制系統(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è)備抽象為鍵盤和鼠標(biāo)的輸入事件,具有良好的跨平臺移植性以及強大的API支持,。
2.1 GUI整體設(shè)計流程
目前實現(xiàn)的嵌入式用戶控制系統(tǒng)主要包括5大部分:用戶注冊和登錄管理,,醫(yī)生控制中心、患者控制中心,、設(shè)備控制中心以及康復(fù)訓(xùn)練游戲,。使用對象包括醫(yī)護(hù)人員和康復(fù)患者兩類,醫(yī)護(hù)人員更加偏向于對上肢康復(fù)訓(xùn)練機(jī)器人的管理,、病人訓(xùn)練計劃的安排及監(jiān)測,;患者則更側(cè)重于實際訓(xùn)練過程的細(xì)微調(diào)整、對訓(xùn)練項目及康復(fù)小游戲的選擇以及執(zhí)行訓(xùn)練計劃等,。由此,,在用戶登錄界面選擇不同登錄類型時將進(jì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ī)護(hù)人員及患者對終端設(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)換為機(jī)器人各個關(guān)節(jié)的電機(jī)驅(qū)動參數(shù)[9]并發(fā)送到底層動力控制系統(tǒng)實現(xiàn)對機(jī)械臂運動的實時控制,以及得到反饋信息并繪制康復(fù)機(jī)器人機(jī)械臂的各項關(guān)節(jié)運動參數(shù)。在計劃設(shè)定階段以及從數(shù)據(jù)傳輸模塊讀取運動參數(shù)后,,系統(tǒng)會把數(shù)據(jù)分發(fā)到數(shù)據(jù)庫存儲線程進(jìn)行存儲,,存儲數(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類為曲線繪制提供畫板,,畫板上則可以繪制曲線、標(biāo)簽,、坐標(biāo),、網(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游戲只能使用觸摸屏或計算機(jī)鍵盤進(jìn)行控制。本方案中,,利用關(guān)節(jié)的真實運動信息控制游戲中虛擬擋塊的左右移動,,將程序移植的工作集中在探究關(guān)節(jié)運動號與擋塊位置之間的關(guān)聯(lián),。該游戲控制一個可左右移動的擋塊,,將落下的紅球反彈回去,被撞擊到的上方各色的方塊消失,,不同的顏色對應(yīng)不同得分,,游戲結(jié)束時將給出最終得分。
3 實驗驗證
用戶控制系統(tǒng)的實驗樣機(jī)為上海理工大學(xué)自行研制的3自由度中央驅(qū)動式上肢康復(fù)機(jī)器人[10],。樣機(jī)的機(jī)械部分與底層動力控制部分不在此論述,。為了驗證嵌入式用戶控制系統(tǒng)的性能,設(shè)置實驗場景如下:(1)在設(shè)備控制中心界面設(shè)置機(jī)器人單關(guān)節(jié)運動參數(shù),,利用傳感器采集驅(qū)動電機(jī)角速度,、角位移,在參數(shù)輸出面板繪制曲線,。(2)在主動訓(xùn)練模式下進(jìn)行康復(fù)訓(xùn)練游戲,。
首先使用嵌入式用戶控制中斷在設(shè)備控制中心界面將肘關(guān)節(jié)的速度設(shè)置為300 r/min,運動范圍上下限設(shè)置為-800°~+800°,。點擊運行按鈕使肘關(guān)節(jié)對應(yīng)電機(jī)旋轉(zhuǎn),,觀察實驗過程中角速度的變化情況。電機(jī)從靜止開始加速旋轉(zhuǎn)至設(shè)定值300 r/min時,,觀察到設(shè)備控制中心繪制的角速度曲線如圖5所示,。從圖中的角速度曲線可看出,電機(jī)角速度從0加速至300 r/min用時0.1 s,。圖中顯示的加速時間還需考慮數(shù)據(jù)傳輸,、軟件分析的時間,其真正代表的是兩個角速度數(shù)據(jù)采集點的時間差,,而不是實際意義上的0.1 s,,當(dāng)然,由于底層動力系統(tǒng)及用戶控制系統(tǒng)處理性能較強,,這個時間差僅會稍微超過0.1 s,。
經(jīng)實驗驗證,系統(tǒng)能夠?qū)訖C(jī)機(jī)械臂的運動速度,、活動范圍等參數(shù)進(jìn)行及時響應(yīng)并實現(xiàn)實時調(diào)正,,并可將具體的一個自由度上的角速度或角位移參數(shù)通過曲線方式在面板上描繪。在底層動力控制系統(tǒng)運行在正常工作狀態(tài)的條件下,,設(shè)定參數(shù)與反饋參數(shù)匹配度較好,,并能實現(xiàn)由患者帶動機(jī)械臂主動運動進(jìn)行康復(fù)訓(xùn)練游戲。
本文通過深入研究嵌入式Linux系統(tǒng)的原理與使用,以 mini210開發(fā)板為硬件平臺完成了一套應(yīng)用于上肢康復(fù)訓(xùn)練的嵌入式用戶控制系統(tǒng)的設(shè)計,,實現(xiàn)了使用觸屏終端無線控制上肢康復(fù)訓(xùn)練機(jī)器人的運行,,并可在終端實時顯示關(guān)節(jié)的角速度、角位移的參數(shù),。同時設(shè)計了名為“反彈球”的康復(fù)訓(xùn)練小游戲,,允許患者操作系統(tǒng)樣機(jī)來控制游戲,有助于提高其參與興趣,,使其主動完成訓(xùn)練任務(wù),。控制系統(tǒng)具備智能化的人機(jī)交互方式,,允許醫(yī)護(hù)人員通過設(shè)定機(jī)械臂的各項運動參數(shù)來制定量化的康復(fù)訓(xùn)練計劃,,并實現(xiàn)了醫(yī)生與患者之間的遠(yuǎn)程溝通以及醫(yī)生與機(jī)器、患者與機(jī)器間的遠(yuǎn)程控制,,增強患者對整個康復(fù)訓(xùn)練過程的參與程度,。
參考文獻(xiàn)
[1] 劉學(xué)文,陳書江,,楊麗,,等.關(guān)節(jié)活動度維持及步行訓(xùn)練對腦卒中偏癱患者肌力的影響[J].中國臨床康復(fù),2003,,7(5):802-802.
[2] 李慶玲,,孫立寧,杜志江.上肢康復(fù)機(jī)器人發(fā)展現(xiàn)狀的分析與研究[J].機(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)在機(jī)器人控制系統(tǒng)中的應(yīng)用[J].機(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].計算機(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ī)器人[J].中國康復(fù)理論與實踐,2013,,19(1):82-85.