楊曉峰 柳笑辰 王佳奇
(遼寧大學(xué),遼寧沈陽(yáng) 110031)
在全球疫情日益嚴(yán)峻的背景下,傳統(tǒng)的人工藥品運(yùn)輸方式愈加難以適應(yīng)疫情防控與救治所需求的非接觸式醫(yī)療,智能化、小型化的配送藥品系統(tǒng)成為實(shí)現(xiàn)非接觸式醫(yī)療的重要環(huán)節(jié)。在智能車(chē)設(shè)計(jì)方面,李婕提出了一種基于STM32的無(wú)線視頻監(jiān)控智能小車(chē)的設(shè)計(jì)方案[1],張磊設(shè)計(jì)了一種智能小車(chē)控制系統(tǒng)[2],潘元驍對(duì)基于Arduino的智能小車(chē)自動(dòng)避障系統(tǒng)進(jìn)行了設(shè)計(jì)與研究[3]。本文介紹了一臺(tái)可以實(shí)現(xiàn)自動(dòng)識(shí)別、取藥、送藥的智能送藥小車(chē),可以成為一種非接觸式醫(yī)療的解決方案。
本方案對(duì)小車(chē)的電路系統(tǒng)、軟件系統(tǒng)進(jìn)行了設(shè)計(jì)與制作,并進(jìn)行實(shí)際測(cè)試與分析。
設(shè)計(jì)并制作智能送藥小車(chē),模擬完成在醫(yī)院藥房與病房間藥品的送取作業(yè)。院區(qū)結(jié)構(gòu)如圖1所示。藥房和近端病院房號(hào)(1、2號(hào))位置固定不變,中部病房和遠(yuǎn)端病房號(hào)(3~8號(hào))測(cè)試時(shí)隨機(jī)設(shè)定。
圖1 院區(qū)結(jié)構(gòu)示意圖
工作要求:使用者手動(dòng)將小車(chē)擺放在藥房處(車(chē)頭投影在門(mén)口區(qū)域內(nèi),面向病房),手持?jǐn)?shù)字標(biāo)號(hào)紙張由小車(chē)識(shí)別病房號(hào),將約200 g藥品一次性裝載到送藥小車(chē)上;小車(chē)檢測(cè)到藥品裝載完成后自動(dòng)開(kāi)始運(yùn)送;小車(chē)根據(jù)走廊上的標(biāo)識(shí)信息自動(dòng)識(shí)別、尋徑將藥品送到指定病房(車(chē)頭投影在門(mén)口區(qū)域內(nèi)),點(diǎn)亮紅色指示燈,等待卸載藥品;病房處人工卸載藥品后,小車(chē)紅色指示燈自動(dòng)熄滅,開(kāi)始返回;小車(chē)自動(dòng)返回到藥房(車(chē)頭投影在門(mén)口區(qū)域內(nèi),面向藥房)后,點(diǎn)亮綠色指示燈。
根據(jù)設(shè)計(jì)目標(biāo)與任務(wù),提出以下兩種方案:
方案一結(jié)構(gòu)框圖如圖2所示。該方案采用STM32F103C8T6作為主控芯片,整車(chē)的電路基于萬(wàn)用板連接,利用一個(gè)OPENMV H7 PLUS進(jìn)行圖像處理(包括數(shù)字圖片識(shí)別、紅線循跡、停車(chē)點(diǎn)識(shí)別等),與STM32使用UART通信協(xié)議進(jìn)行通信,使用TB6612FNG驅(qū)動(dòng)兩部直流電機(jī),使用OLED屏幕顯示操作提示,OLED與STM32采用IIC通信協(xié)議進(jìn)行通信,加之HWZ020型舵機(jī)實(shí)現(xiàn)轉(zhuǎn)向功能,采用按鍵(6×6×4.3直插型)檢測(cè)藥品是否放置。
圖2 方案一結(jié)構(gòu)框圖
本方案使用一片OPENMV H7進(jìn)行紅線循跡,使用一片OPENMV H7 PLUS進(jìn)行數(shù)字圖片識(shí)別,使用亞博智能出品的三路尋跡模塊識(shí)別停車(chē)點(diǎn),利用TCRT5000紅外傳感器檢測(cè)判斷藥品是否放置[4],其余設(shè)計(jì)與方案一相同。其結(jié)構(gòu)框圖如圖3。
圖3 方案二結(jié)構(gòu)框圖
方案一的優(yōu)勢(shì)在于所用元器件數(shù)量少,在硬件電路設(shè)計(jì)與實(shí)現(xiàn)方面易于設(shè)計(jì)與實(shí)現(xiàn),減輕了整車(chē)機(jī)械結(jié)構(gòu)的復(fù)雜度,更易于加工。另外,由于元器件數(shù)量少,成本較低。
然而其缺點(diǎn)為OPENMV承擔(dān)了數(shù)字識(shí)別、紅線循跡、停車(chē)點(diǎn)識(shí)別等多種功能,由于其算力有限,而數(shù)字識(shí)別又需要占用大量算力資源,所以容易導(dǎo)致OPENMV運(yùn)行時(shí)卡頓嚴(yán)重、幀率降低。且由于巡線、數(shù)字識(shí)別所需要的角度與位置存在區(qū)別,在攝像頭位置、角度調(diào)節(jié)問(wèn)題上會(huì)存在較大困難。由于小車(chē)顛簸干擾,使用按鍵識(shí)別藥品可能會(huì)發(fā)生藥品掉落的情況。
方案二的優(yōu)點(diǎn)在于使用兩片OPENMV分別解決巡線、數(shù)字識(shí)別需求,用三路巡線模塊解決停車(chē)點(diǎn)識(shí)別問(wèn)題,大大地降低了單一模塊的工作量,有足夠的算力來(lái)處理數(shù)字識(shí)別。且由于多模塊的使用,使得整車(chē)更模塊化,可替代性極高。另外,使用TCRT5000紅外傳感器,配合定制的配件可以解決檢測(cè)藥品是否放置的問(wèn)題。
方案二的缺點(diǎn)在于整車(chē)使用多種不同的模塊,在設(shè)計(jì)電路時(shí),需要設(shè)計(jì)多種供電電壓,還需考慮各模塊的實(shí)際位置與方向,以便于萬(wàn)用板焊接與模塊之間接線。模塊與MCU之間需使用不同的通信接口,也加大了程序設(shè)計(jì)的難度。
綜上所述,認(rèn)為方案二更適合本題目需求,故擇之。
方案二涉及的理論包括:采用何種方法解決數(shù)字識(shí)別問(wèn)題、采用何種方法解決自動(dòng)巡徑問(wèn)題。
利用Keras建立NN模型進(jìn)行數(shù)字識(shí)別,采用機(jī)器學(xué)習(xí)建立模型的方法進(jìn)行數(shù)字識(shí)別。使用在線建模網(wǎng)站Edge Impulse建立模型,只需要用OPENMV采集一定數(shù)量的數(shù)字照片上傳至網(wǎng)站進(jìn)行監(jiān)督學(xué)習(xí),將經(jīng)訓(xùn)練的機(jī)器學(xué)習(xí)模型置于OPENMV中,測(cè)試識(shí)別準(zhǔn)確率,對(duì)準(zhǔn)確率較低的數(shù)字加大采樣量再次上傳,得到新的模型。
在十字路口同時(shí)識(shí)別4個(gè)數(shù)字時(shí),利用OPENMV,根據(jù)返回圖像的橫縱坐標(biāo),以110%的誤差余量確定劃分區(qū)域作為感興趣區(qū),劃分出4個(gè)數(shù)字的大概位置,對(duì)每個(gè)感興趣區(qū)內(nèi)的內(nèi)容進(jìn)行識(shí)別。
使用OPENMV官方提供的例程文件中的線性回歸算法,在調(diào)整顏色閾值后,將目標(biāo)顏色調(diào)整為紅色即可實(shí)時(shí)得到當(dāng)前畫(huà)面中路徑的斜率,然后通過(guò)串口將信息傳至MCU進(jìn)行處理,通過(guò)斜率計(jì)算出舵機(jī)需要轉(zhuǎn)向的角度并換算為對(duì)應(yīng)的PWM波占空比,從而改變小車(chē)前進(jìn)方向。
電源設(shè)計(jì):采用LMS2596模塊作為整車(chē)電源,將電池提供的12 V電壓通過(guò)BUCK電路、LDO電路降壓至5 V、3.3 V供各個(gè)模塊使用。由于本電路不涉及高頻成分,所以未設(shè)置數(shù)字電源與數(shù)字地。接地方面本板采用了混合接地的方式[5]。原理圖如圖4。
圖4 電源模塊原理圖
電機(jī)驅(qū)動(dòng)模塊TB6612,可以同時(shí)控制兩個(gè)直流電機(jī),STM32通過(guò)向其輸出不同的0、1組合控制電機(jī)正轉(zhuǎn)反轉(zhuǎn),通過(guò)調(diào)節(jié)輸出PWM波占空比調(diào)節(jié)電機(jī)轉(zhuǎn)速[6]。原理圖如圖5。
圖5 電機(jī)驅(qū)動(dòng)模塊原理圖
OLED模塊通過(guò)IIC協(xié)議與STM32進(jìn)行通訊,其中SCL為時(shí)鐘,SDA為數(shù)據(jù)線。三路巡線模塊是亞博智能出品的模擬量紅外巡線模塊,集成了三路紅外傳感器,可以返回0~125的模擬值。HWZ020型舵機(jī),5 V供電,最大轉(zhuǎn)角在45°到135°,通過(guò)調(diào)節(jié)PWM波占空比改變角度。OPENMV是由星瞳科技代理的帶有攝像頭的單片機(jī),可以進(jìn)行簡(jiǎn)單的圖像處理,H7 PLUS以上版本可以裝載神經(jīng)網(wǎng)絡(luò)模型進(jìn)行機(jī)器學(xué)習(xí)??刂坪诵碾娐愤B接如圖6[7]。STM32引腳連接情況見(jiàn)表1。
表 1 STM32引腳連接情況
圖6 控制核心電路原理圖
OPENMV巡紅線程序利用一個(gè)無(wú)限循環(huán)抓取圖像,并逐幀計(jì)算斜率發(fā)送至控制核心[8]。程序流程圖如圖7。OPENMV數(shù)字識(shí)別程序利用一個(gè)無(wú)限循環(huán)抓取圖像,若為初次識(shí)別,則利用神經(jīng)網(wǎng)絡(luò)更新窗口數(shù)組元素,將結(jié)果發(fā)送給MCU。若非初次識(shí)別,則將捕捉的圖像按照感興趣區(qū)進(jìn)行分割處理,結(jié)果傳送給MCU[9]。程序流程圖如圖8。程序共四個(gè)進(jìn)程,分別為取藥、送藥、卸藥、返回。主程序程序流程圖如圖9。
圖7 OPENMV巡紅線程序流程圖
圖8 OPENMV數(shù)字識(shí)別程序流程圖
圖9 主程序程序流程圖
整車(chē)如圖10所示。
圖10 整車(chē)圖
測(cè)試目的:測(cè)試OPENMV識(shí)別數(shù)字成功率。
測(cè)試條件:OPENMV H7 PLUS連接PC機(jī)。
測(cè)試內(nèi)容:使用OPENMV H7 PLUS對(duì)放置于地面的數(shù)字圖片進(jìn)行識(shí)別。
測(cè)試步驟:
(1)連接PC機(jī),將訓(xùn)練成功的模型程序下載至OPENMV H7 PLUS;
(2)將OPENMV H7 PLUS放置在攝像頭上端點(diǎn)距地面10 cm處,與水平面呈30°角位置,點(diǎn)擊運(yùn)行程序;
(3)記錄返回PC的數(shù)字,重復(fù)上述步驟100次(不重復(fù)點(diǎn)擊運(yùn)行程序);
(4)更換數(shù)字0~9,重復(fù)上述步驟。
測(cè)試結(jié)果如表2所示。
表2 數(shù)字識(shí)別測(cè)試結(jié)果
結(jié)果分析:1、3、4、6、8識(shí)別成功率較高,2、5、7識(shí)別成功率較低,原因?yàn)?、5、7這三個(gè)數(shù)字與其他數(shù)字存在普遍的共同特征,OPENMV算力有限,在幀率降低到一定程度下,仍然無(wú)法準(zhǔn)確識(shí)別。
安裝 OPENMV H7,未安裝OPENMV H7 PLUS,小車(chē)可獨(dú)立運(yùn)行時(shí)。
測(cè)試目的:測(cè)試巡線算法在實(shí)際場(chǎng)地的應(yīng)用效果。
測(cè)試條件:OPENMV H7脫機(jī)運(yùn)行,小車(chē)可獨(dú)立運(yùn)行。
測(cè)試內(nèi)容:在安裝OPENMV H7后,使小車(chē)在場(chǎng)地上循跡。
測(cè)試步驟:
(1)將循跡并向左轉(zhuǎn)的程序下載至OPENMV H7中,閾值設(shè)置為180,斷開(kāi)與PC的連接;
(2)在最近的路口處放置X個(gè)數(shù)字圖片;
(3)將小車(chē)放置在場(chǎng)地的“藥房”處,打開(kāi)開(kāi)關(guān),讓小車(chē)啟動(dòng);
(4)觀察小車(chē)轉(zhuǎn)彎情況,若不壓線,則記錄本次舵機(jī)轉(zhuǎn)向閾值,將循跡并向右轉(zhuǎn)的程序下載至OPENMV H7中,閾值設(shè)置為180,斷開(kāi)與PC的連接,重復(fù)2、3、4步驟;若壓線,則減小該值,重復(fù)2、3、4步驟;
(5)令X=0,2,4,重復(fù)上述步驟。
測(cè)試結(jié)果如表3所示。
表3 自動(dòng)循跡測(cè)試結(jié)果
測(cè)試結(jié)果分析:數(shù)字的出現(xiàn)對(duì)巡線用OPENMV的干擾不大,小車(chē)可以在寬30 cm的走廊內(nèi)不壓線地轉(zhuǎn)彎。
從測(cè)試結(jié)果可以看出,對(duì)于智能送藥的要求,本車(chē)都能夠?qū)崿F(xiàn),并且功能完善。在完成基本要求和發(fā)揮部分功能的基礎(chǔ)上,系統(tǒng)還實(shí)現(xiàn)了一些自由發(fā)揮的功能,包括實(shí)時(shí)字符、圖形顯示,藍(lán)牙通信等,可擴(kuò)展性強(qiáng)。
在本設(shè)計(jì)中,楊曉峰提出了整體設(shè)計(jì)方案,柳笑辰、王佳奇參與了方案的討論與分析。柳笑辰編寫(xiě)了STM32的驅(qū)動(dòng)程序、OPENMV識(shí)別數(shù)字、巡徑的程序;王佳奇設(shè)計(jì)并制作了電路部分,組裝整車(chē)。所有人參與了整車(chē)的測(cè)試,共同完成了論文的編寫(xiě)。