李祉
(浙江理工大學(xué)信息學(xué)院,浙江 杭州10338)
關(guān)于理療,臨床上最常用的方法有:電療法、超聲波療法、光療法、激光療法、頻譜治療儀、磁療法、蠟療法、中藥離子導(dǎo)入等。理療,一般是使用儀器和人工輔助來(lái)完成。李石林[1]等提出了一種穿戴式遠(yuǎn)紅外理療儀,分析了其應(yīng)用前景。王科[2]等設(shè)計(jì)了一種基于單片機(jī)的超短理療儀,專注于超短波理療的物理療法?!端貑?wèn)·痿論》中提出“宗筋主束骨而利機(jī)關(guān)也”,理療加熱可以促使藥物滲透更持久,提高治療效果[3]。
本文設(shè)計(jì)的自動(dòng)定位加熱系統(tǒng),一方面運(yùn)用計(jì)算機(jī)視覺(jué)相關(guān)原理,在人體身上布置預(yù)先設(shè)定好的識(shí)別點(diǎn),通過(guò)攝像頭模塊來(lái)定位需加熱區(qū)域的位置;另一方面,通過(guò)樹(shù)莓派(Raspberry pi)來(lái)控制含舵機(jī)的機(jī)械臂骨架,結(jié)合攝像頭模塊的定位信息,驅(qū)使機(jī)械臂端的加熱模塊自動(dòng)運(yùn)動(dòng)至目標(biāo)位置處進(jìn)行加熱。同時(shí)輔以超聲波HC-SR04測(cè)距模塊,用以控制對(duì)人體加熱的安全距離,保證整個(gè)流程的流暢和安全性。實(shí)現(xiàn)使用者獨(dú)自就可以完成加熱理療的過(guò)程。
本設(shè)計(jì)利用樹(shù)莓派4B作為總控制器,實(shí)現(xiàn)數(shù)據(jù)處理以及數(shù)據(jù)轉(zhuǎn)發(fā)等功能;USB 攝像頭模組用以獲取圖像信息,以完成為對(duì)目標(biāo)位置的定位;采用亞克力制二軸機(jī)械臂骨架作為整體系統(tǒng)骨架,通過(guò)控制數(shù)個(gè)機(jī)械臂關(guān)節(jié)處的MG90S 舵機(jī)來(lái)實(shí)現(xiàn)機(jī)械臂的各個(gè)方向的運(yùn)動(dòng),以實(shí)現(xiàn)加熱源準(zhǔn)確到達(dá)目標(biāo)位置;HC-SR04超聲波模塊用以實(shí)時(shí)測(cè)量加熱源與目標(biāo)位置處的距離,避免加熱距離過(guò)短造成燒傷的風(fēng)險(xiǎn)。整個(gè)系統(tǒng)的結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
樹(shù)莓派4B 采用的是BROADCOM BCM2711 處理器,內(nèi)核采用四核CORTEX-A72 處理器;4GB 的RAM;內(nèi)置藍(lán)牙模塊為5.0版本[4];具有四個(gè)USB接口,其中二個(gè)為3.0的USB接口,可外接USB插口型外設(shè);具備二個(gè)micro-HDMI 端口,最高可以雙屏4K 顯示。具有40 個(gè)GPIO 引腳,其中包含一組UART,一組I2C及兩組SPI。具有DSI顯示連接器,POE供電功能以及千兆以太網(wǎng)卡[5,6]。樹(shù)莓派是基于Linux 系統(tǒng),支持Java,Python,C++等主流語(yǔ)言,基本具備PC 的功能[7],具有體積小耗能低的特點(diǎn)[8]。
攝像頭模塊采用的是緯視達(dá)WISD-4018-v1.0 的300 萬(wàn)像素同步同幀攝像頭,USB2.0 接口與樹(shù)莓派適配,符合標(biāo)準(zhǔn)UVC 協(xié)議,具有最高分辨率2176*1520的雙鏡頭,30FPS 以及兼容Windows 多種系統(tǒng)及Linux,Ubuntu,Android4.0 等。一個(gè)設(shè)備輸出雙拼接畫面,硬件幀同步,雙畫面一致。
測(cè)距模塊采用的是HC-SR04超聲波測(cè)距,測(cè)距的距離范圍可達(dá)2cm-400cm,具有非接觸式距離的感測(cè)功能,精度為3毫米。組成部分包含了超聲波發(fā)射器,接收器,控制電路。圖2為其超聲波時(shí)序圖。
圖2 HC-SR04時(shí)序圖
圖2 說(shuō)明:發(fā)射器首先提供一個(gè)10us 以上的脈沖觸發(fā)信號(hào),器件用IO 口觸發(fā)測(cè)距,給出相應(yīng)的高電平信號(hào),之后器件自動(dòng)發(fā)送八個(gè)40khz 的脈沖方波,檢測(cè)信號(hào)是否可以返回,一旦檢測(cè)到有返回的波形信號(hào)則輸出回響信號(hào)?;仨懶盘?hào)的脈寬與所測(cè)距離成正比。距離公式為:距離=高電平時(shí)間*聲速/2。
實(shí)現(xiàn)思路:先給TRIG 引腳高電平信號(hào),之后再判斷ECHO引腳是否為高電平。若為高電平則開(kāi)啟定時(shí)器,變?yōu)榈碗娖胶?,再獲取計(jì)數(shù)器的值;或者開(kāi)啟外部中斷,將ECHO 配置上升沿中斷,中斷開(kāi)啟時(shí),在中斷函數(shù)里開(kāi)啟定時(shí)器,再將其配置為下降沿中斷,等待下降沿中斷來(lái)臨時(shí),再獲取計(jì)數(shù)器值。兩種思路都是通過(guò)計(jì)算定時(shí)器的counter 值來(lái)計(jì)算距離。
本設(shè)計(jì)的支撐骨架采用亞克力制三自由度機(jī)械臂,關(guān)節(jié)部位采用的是MG90S數(shù)字舵機(jī)來(lái)控制機(jī)械臂的運(yùn)動(dòng)。MG90S具有2.0kg/cm(4.8V),2.8kg/cm(6V)的扭矩,轉(zhuǎn)動(dòng)速度可達(dá)0.11 秒/60°(4.8V),0.09 秒/60°(6V)。本設(shè)計(jì)采用的是360 度舵機(jī),工作電壓一般為4.8V~6V,MG90S 舵機(jī)有三條引腳線,分別為GND,VCC(5V),PWM 信號(hào)線,舵機(jī)的伺服系統(tǒng)的控制交由可變寬度的脈沖,控制線傳送脈沖。
脈沖的參數(shù)包含最小值,最大值、頻率這幾項(xiàng)。一般舵機(jī)的基準(zhǔn)信號(hào)的周期為20ms,寬度為1.5ms。定義這個(gè)基準(zhǔn)信號(hào)的位置為中間位置。中間位置的定義是指從中間位置到最大角度與最小角度的量相同。角度是控制線的發(fā)出持續(xù)的脈沖決定。即脈沖調(diào)制。舵機(jī)轉(zhuǎn)動(dòng)角度取決于脈寬。如果控制系統(tǒng)不停的發(fā)出脈沖穩(wěn)定舵機(jī)的角度,舵機(jī)的角度就會(huì)一直不變。當(dāng)舵機(jī)接收到一個(gè)小于1.5ms 的脈沖時(shí),輸出軸就會(huì)以中間位置為標(biāo)準(zhǔn),逆時(shí)針旋轉(zhuǎn)一定角度。一般而言,最小脈沖為1ms,最大脈沖為2ms。脈沖寬度與轉(zhuǎn)動(dòng)角度對(duì)應(yīng)關(guān)系如圖3所示。
圖3 脈寬與轉(zhuǎn)動(dòng)角度關(guān)系圖
機(jī)械臂其具有超高的操作靈活性,從而在工業(yè)、醫(yī)學(xué)、物流等領(lǐng)域得到廣泛應(yīng)用。為使機(jī)械臂的作用得以最大限度地發(fā)揮,需要對(duì)機(jī)械臂的位置進(jìn)行精確控制,在這一過(guò)程中,可以應(yīng)用PID控制器[8]。
在工程實(shí)際中,PID 控制是應(yīng)用最為廣泛的控制方式。PID是比例(proportion)、積分(integration)、微分(differentiation)的縮寫。當(dāng)被控制系統(tǒng)的結(jié)構(gòu)和參數(shù)不能完全確定時(shí),或得不到精確的數(shù)學(xué)模型時(shí),控制理論的其他技術(shù)難以采用時(shí),系統(tǒng)控制器的結(jié)構(gòu)和參數(shù)必須現(xiàn)場(chǎng)調(diào)試或者多次試驗(yàn)驗(yàn)證來(lái)確定,這時(shí)PID 控制技術(shù)就非常適用。PID 控制器就是根據(jù)系統(tǒng)的誤差,利用比例、積分、微分計(jì)算出控制量來(lái)對(duì)系統(tǒng)進(jìn)行控制。PID原理圖如圖5所示。
圖4 系統(tǒng)軟件流程圖
圖5 PID原理圖
比例(P)部分
輸入值一旦與目標(biāo)值產(chǎn)生偏差e(t),就需要縮小偏差,P 部分的作用是縮小偏差,使控制量向減少偏差的方向改變,由于是比例關(guān)系,因此P 的指數(shù)越大,偏差縮小的速度就越快,P 部分的作用就是使控制部分更快地接近目標(biāo)值。
積分(I)部分
當(dāng)偏差存在時(shí),積分結(jié)果會(huì)不斷增加,即控制作用會(huì)不斷增加;只有當(dāng)偏差值為0時(shí),結(jié)果就成為一個(gè)常數(shù),此時(shí)控制作用才可能是一個(gè)穩(wěn)定的值。積分的作用是消除靜態(tài)偏差,同時(shí)拉低系統(tǒng)的響應(yīng)速度,因此I部分作用與P部分是沖突關(guān)系。
微分(D)部分
微分D 的作用會(huì)根據(jù)偏差e(t)的變化趨勢(shì)提前糾正,通過(guò)微分,可以對(duì)偏差的變化進(jìn)行預(yù)判地抑制,防止矯枉過(guò)正。微分的部分,可以幫助系統(tǒng)減小震蕩,使系統(tǒng)趨于穩(wěn)定,D越大,抑制P的效果就越強(qiáng)[9-11]。
在本設(shè)計(jì)中,首先進(jìn)行了誤差值的處理,誤差值pid_thisError_x=pid_x-160和pid_thisError_y=pid_y-120;其中160 與120 是攝像頭顯示分辨率320*240 的中值,目的是使標(biāo)注的目標(biāo)識(shí)別點(diǎn)始終在攝像頭捕捉畫面的位置。若其不在中心位置,即通過(guò)PID 來(lái)控制舵機(jī)運(yùn)動(dòng),通過(guò)加入PID 控制參數(shù),加上迭代誤差值的操作,得到最終PID值,同時(shí)限制舵機(jī)在一定范圍內(nèi)即轉(zhuǎn)動(dòng)角度范圍內(nèi),避免出現(xiàn)舵機(jī)脫機(jī)的情況,此時(shí)載臂端攝像頭調(diào)整至識(shí)別點(diǎn)正上方,進(jìn)而實(shí)現(xiàn)機(jī)械臂端準(zhǔn)確定位的功能。
3.2.1 圖像預(yù)處理
RGB 的模型可以視為在三維坐標(biāo)軸中建立的一個(gè)立方模型,原點(diǎn)到白色頂點(diǎn)的中軸線是灰度線,r、g、b 三分量相等,強(qiáng)度可以由三分量的向量表示。用RGB來(lái)理解色彩、深淺、明暗變化。
而HSV 模型是倒錐形,這個(gè)模型是由色彩、深淺、明暗這三個(gè)元素來(lái)表現(xiàn)的。H 是色彩,S 是深淺,S=0時(shí),只有灰度V是明暗,表示色彩的明亮程度。
RGB 模型與HSV 模型從模型構(gòu)造來(lái)看,將RGB三維坐標(biāo)中軸立起并扁化,即形成HSV 錐形模型,RGB到HSV的轉(zhuǎn)換為:
對(duì)于本設(shè)計(jì)采用HSV 空間而不用RGB 空間的理由,是因?yàn)镽GB 空間并不能很好地反映出物體具體的顏色信息,該設(shè)計(jì)著力于實(shí)際應(yīng)用場(chǎng)景,日常光照的對(duì)攝像頭捕捉的圖像的影響因子很大。而HSV 空間能夠非常直觀的表達(dá)色彩的明暗、色調(diào)、以及鮮艷程度,方便進(jìn)行顏色之間的對(duì)比。RGB 空間受光線影響很大,HSV可以得到合適的二值圖。
3.2.2 特征點(diǎn)定位
在圖像處理中常常需要提取目標(biāo)圖像中的ROI區(qū)域或這是某個(gè)形狀,需要觀察對(duì)象的特征,根據(jù)它的特征去提取。本設(shè)計(jì)最終采用的是以紅色圓形貼紙作為特征點(diǎn)來(lái)進(jìn)行位置標(biāo)識(shí)。
對(duì)于本設(shè)計(jì)中,對(duì)于輸入圖像的相關(guān)處理操作,做出了基于形態(tài)學(xué)處理:首先調(diào)用opencv 庫(kù)進(jìn)行高斯濾波,高斯濾波是矩形窗口內(nèi)所有像素點(diǎn)的像素值的加權(quán)和,高斯濾波的權(quán)重服從二維正態(tài)分布,越靠近窗口中心點(diǎn),權(quán)重越大。對(duì)于(2n+1)*(2n+1)窗口,權(quán)重計(jì)算公式如下:
其中,σ 為標(biāo)準(zhǔn)差,σ 越大,權(quán)重分布越均勻,濾波效果越好,圖像越模糊。
光做色彩空間的轉(zhuǎn)化,轉(zhuǎn)化為HSV 的色彩空間;然后進(jìn)行圖像的掩模處理,腐蝕操作與膨脹操作。先腐蝕再膨脹,目的是為了開(kāi)運(yùn)算,消除小物體、在纖細(xì)點(diǎn)處分離物體、平滑較大物體的邊界的同時(shí)并不明顯改變其面積。去除噪點(diǎn)。對(duì)于定位點(diǎn)的確定,是采用霍夫變換檢測(cè)圓的方法:霍夫變換圓檢測(cè)是基于圖像梯度實(shí)現(xiàn),首先查找待測(cè)圖像中圓的圓心位置和半徑,圓心是圓周法線的交匯處,設(shè)置一個(gè)閾值,在某點(diǎn)的相交的直線的條數(shù)大于這個(gè)閾值就認(rèn)為該交匯點(diǎn)為圓心。圓心到圓周上的距離〔半徑)是相同的,設(shè)置一個(gè)閾值,只要相同距離的數(shù)量大于該閾值,就認(rèn)為該距離是該圓心的半徑。
檢測(cè)圓形樣點(diǎn)效果如圖6、圖7所示。
圖6 檢測(cè)效果圖(一)
圖7 檢測(cè)效果圖(二)
當(dāng)出現(xiàn)圖7 所示情況時(shí),明顯看到識(shí)別點(diǎn)不在顯示界面中心,在預(yù)設(shè)坐標(biāo)時(shí),將機(jī)械臂頂端即攝像頭放置位置,設(shè)為圓心坐標(biāo),此時(shí)機(jī)械臂會(huì)根據(jù)偏離位置坐標(biāo)與中心坐標(biāo)的誤差值進(jìn)行位置調(diào)整,輔以預(yù)設(shè)PID 算法,不斷調(diào)整誤差值直至誤差值為零,此時(shí)識(shí)別點(diǎn)會(huì)重新調(diào)整至界面中心,即完成了對(duì)識(shí)別點(diǎn)的位置追蹤及位置調(diào)整,當(dāng)位置再次調(diào)整后,即會(huì)進(jìn)行預(yù)設(shè)動(dòng)作組的下一步加熱動(dòng)作和調(diào)整動(dòng)作等一系列操作。
該系統(tǒng)采用樹(shù)莓派作為硬件平臺(tái),具有體積小、成本低、操作簡(jiǎn)便,縮短了系統(tǒng)開(kāi)發(fā)時(shí)間的特點(diǎn)。本文設(shè)計(jì)了圖像的采集存儲(chǔ)及預(yù)處理,完成了機(jī)械臂骨架組裝與配置,運(yùn)用輪廓檢測(cè)以及結(jié)合PID算法,實(shí)現(xiàn)了對(duì)特征點(diǎn)的定位以及控制擁有加熱模塊的臂端精確運(yùn)動(dòng)至特征點(diǎn)位置,另外設(shè)計(jì)了完整的加熱動(dòng)作組實(shí)現(xiàn)完整的定點(diǎn)加熱流程,其效果經(jīng)過(guò)多次測(cè)試已經(jīng)得到了驗(yàn)證。