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