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