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