李正芃,鄭 虹
針灸學(xué)是一門古老的學(xué)科,也是一項(xiàng)重要的中醫(yī)治療技術(shù)。在現(xiàn)行教學(xué)過程中,教學(xué)訓(xùn)練方面還存在一些問題。比如,傳統(tǒng)的訓(xùn)練手段使用紙墊或棉團(tuán)等較為落后的教具,指力與速度訓(xùn)練效果不理想;教學(xué)手法標(biāo)準(zhǔn)不統(tǒng)一,行針準(zhǔn)確性難以把握,補(bǔ)瀉手法精確性難以復(fù)制[1],不利于教學(xué)培養(yǎng)人才,也不便于考核教學(xué)成果;目前新興的虛擬現(xiàn)實(shí)教學(xué)方法,教學(xué)過程雖可量化,但無法模擬針灸施針手感,不能還原實(shí)際場景[2]。鑒于以上情況,該文采用Python和傳感器技術(shù),研發(fā)設(shè)計(jì)了一款新型的針灸訓(xùn)練系統(tǒng),彌補(bǔ)了其他針灸仿真訓(xùn)練裝置存在的不足。
1.1 設(shè)計(jì)思路設(shè)計(jì)主要從硬件、軟件兩方面入手:硬件主要包括傳感器、針灸針、仿真皮練針包、導(dǎo)線及上位機(jī)。軟件主要使用Python語言以及基于該語言系統(tǒng)運(yùn)算程序。系統(tǒng)著眼于針灸基本手法中的捻、轉(zhuǎn)、提、插要素,將針灸行針方向、角度、力量、頻率等[3],利用加速度、角度以及角速度傳感器實(shí)時(shí)傳感得到相應(yīng)數(shù)據(jù),計(jì)算得到行針的速度與角度數(shù)值。入針?biāo)俣群徒嵌?、捻針角度以波形形式?shí)時(shí)輸出,捻針?biāo)俣纫詳?shù)值形式實(shí)時(shí)輸出。訓(xùn)練結(jié)束后,將數(shù)據(jù)保存為csv文件,可隨時(shí)查看并分析數(shù)據(jù)(圖1,2)。
圖1 工作流程圖
圖2 實(shí)物構(gòu)成圖
1.2 系統(tǒng)構(gòu)成
1.2.1 傳感器 MPU-6050姿態(tài)傳感器,為整合型六軸運(yùn)動(dòng)處理組件,該傳感器內(nèi)置了三軸MEMS陀螺儀、三軸MEMS加速度計(jì)和數(shù)字運(yùn)動(dòng)處理引擎(DMP)[4]。優(yōu)點(diǎn)是體積小、精度高,可準(zhǔn)確追蹤快速與慢速動(dòng)作。該研究設(shè)計(jì)由設(shè)計(jì)者將MPU-6050加速器計(jì)和角速度計(jì)、角度的數(shù)據(jù)換算為物理量并進(jìn)行解算,傳感器精度為:加速度0.0005 g,角速度0.61度/s,角度0.1度。設(shè)y軸與針灸針平行,針灸針穿過xoz面,計(jì)算x軸角度值為行針角度值、y軸角度值為捻針角度值,y軸速度值為行針?biāo)俣戎怠PU-6050的參考坐標(biāo)系(圖3)。
圖3 MPU-6050參考坐標(biāo)系示圖
1.2.2 Python語言開發(fā) Python語言作為一種編程語言,適用于對數(shù)據(jù)圖形化展示、計(jì)算統(tǒng)計(jì)量,擁有第三方高效數(shù)據(jù)庫[5]。具有開發(fā)代碼量少、速度快、使用便捷、成本低的優(yōu)勢。pyqtgraph庫是一個(gè)強(qiáng)大的Python數(shù)據(jù)可視化庫。該系統(tǒng)語言開發(fā)是利用Python語言pyqtgraph庫進(jìn)行數(shù)據(jù)的可視化實(shí)時(shí)輸出,不僅能夠?qū)崿F(xiàn)基本的折線圖標(biāo)的繪制,還實(shí)現(xiàn)了數(shù)據(jù)交互式的實(shí)時(shí)輸出。系統(tǒng)實(shí)現(xiàn)了計(jì)算結(jié)果與實(shí)時(shí)數(shù)據(jù)的特征波形同步顯示,特征性數(shù)據(jù)見圖4~8。使用csv庫進(jìn)行數(shù)據(jù)的儲(chǔ)存。
1.2.3 特征性數(shù)據(jù)分析 針刺手法的運(yùn)用是針灸技術(shù)的關(guān)鍵環(huán)節(jié),而進(jìn)針破皮速度和捻針轉(zhuǎn)速是針灸練習(xí)的基本功,圍繞上述問題以針灸基本手法和經(jīng)典手法為例進(jìn)行分析:(1)進(jìn)針。進(jìn)針的波形特征呈現(xiàn)尖波曲線,波幅大小與進(jìn)針?biāo)俣日嚓P(guān),當(dāng)前進(jìn)針?biāo)俣葹?2.81494 m/s(圖4)。在臨床應(yīng)用上,針灸進(jìn)針要求迅速,可以減少人體疼痛。提高進(jìn)針?biāo)俣仁呛饬酷樉氖址ㄊ欠癯墒斓闹匾笜?biāo)。(2)捻針。捻針的波形特征是較為規(guī)則的尖波曲線,波幅大小與捻針?biāo)俣日嚓P(guān)。捻針的捻轉(zhuǎn)角度波形特征為較規(guī)則的齒狀波,波幅大小與捻轉(zhuǎn)角度正相關(guān)(圖5)。在臨床應(yīng)用上,捻針是針灸技術(shù)的重要操作,臨床要求達(dá)到每分鐘200次以上,但用傳統(tǒng)方法計(jì)數(shù)比較困難。(3)燒山火(慢進(jìn)快出)。速度波形特征呈現(xiàn)雙相尖波曲線,波幅大小與進(jìn)出針?biāo)俣日嚓P(guān),波寬與進(jìn)出針時(shí)間正相關(guān)。在臨床應(yīng)用方面,燒山火是一種經(jīng)典的針灸補(bǔ)益手法(圖6)。(4)透天涼(快進(jìn)慢出)。速度波形特征呈現(xiàn)雙相尖波曲線,波幅大小與進(jìn)出針?biāo)俣日嚓P(guān),波寬與進(jìn)出針時(shí)間正相關(guān)。在臨床應(yīng)用方面,透天涼是一種經(jīng)典的針灸宣泄手法(圖7)。
圖4 進(jìn)針界面圖
圖5 捻針界面圖
圖6 燒山火界面圖
圖7 透天涼界面圖
1.2.4 數(shù)據(jù)儲(chǔ)存 波形實(shí)時(shí)輸出基于數(shù)組中的數(shù)據(jù),實(shí)時(shí)輸出時(shí)需要不斷更新數(shù)組中的數(shù)據(jù),使用數(shù)據(jù)結(jié)構(gòu)中的隊(duì)列結(jié)構(gòu),隊(duì)尾不斷輸入新的傳感數(shù)據(jù),隊(duì)頭不斷溢出已經(jīng)使用過的數(shù)據(jù),使用定時(shí)器定時(shí)更新數(shù)組。數(shù)據(jù)實(shí)時(shí)儲(chǔ)存,在被插入隊(duì)列之前就已經(jīng)寫入csv文件進(jìn)行儲(chǔ)存(圖8)。
圖8 數(shù)據(jù)輸出和儲(chǔ)存
謝國榮教授指出“所謂的針刺手法技巧,就是針入的深淺、旋轉(zhuǎn)的幅度、行針的速度與時(shí)間、針力的大小、方向的變化等因素巧妙的結(jié)合,其作用于機(jī)體后,便可產(chǎn)生補(bǔ)或?yàn)a的效果”[6],一語道出了針刺過程中所要注意的關(guān)鍵點(diǎn)。目前國內(nèi)外針對針灸訓(xùn)練方法開展了很多研究,主要通過課堂講解、穴位模擬、老師言傳學(xué)生意會(huì)等方法教學(xué)[7],對于針灸力道和旋轉(zhuǎn)幅度等關(guān)鍵問題還缺乏有益的探討。
該系統(tǒng)采用傳感器和針灸針相結(jié)合的方式,運(yùn)用Python語言對傳感數(shù)據(jù)進(jìn)行運(yùn)算儲(chǔ)存,實(shí)現(xiàn)了對針灸基本手法如進(jìn)針、捻針、補(bǔ)瀉的量化曲線輸出和分析,把針灸手法量化為看得到、摸得著的現(xiàn)實(shí)存在,改變了傳統(tǒng)教學(xué)的方式:一是將無法準(zhǔn)確感知的進(jìn)針?biāo)俣取⒛磲樲D(zhuǎn)速等針灸手法進(jìn)行可量化、可視化的數(shù)據(jù)和波形輸出,可自行判斷手法是否達(dá)到標(biāo)準(zhǔn)要求,有效地增加了學(xué)生針灸訓(xùn)練的準(zhǔn)確性。二是將教師的示范手法作為學(xué)生的練習(xí)標(biāo)準(zhǔn),為教學(xué)提供可復(fù)制的操作規(guī)范,增強(qiáng)了學(xué)生練習(xí)的針對性和可重復(fù)性,有利于開展同質(zhì)化教學(xué),也有利于對學(xué)生學(xué)習(xí)成果的考核。