萬瑞豐,黃景帆,彭浩奇,張元,張宏飛
(杭州電子科技大學(xué) 電子信息學(xué)院,浙江杭州,310018)
在醫(yī)院病房中,大多數(shù)病人每天都需要按時服用藥物,護士有時因事務(wù)繁忙而出現(xiàn)無法及時送藥的情況,這對于行動不便且家屬又不在身邊的病人來說帶來及時服藥的困難?;诖耍軌蛲瓿稍卺t(yī)院藥房與病房間藥品送取作業(yè)的智能小車就具有很大的現(xiàn)實意義[1]。以本文采用以TC377單片機為主控制器的系統(tǒng),通過OpenArt訓(xùn)練識別圖像與OpenMV掃描標(biāo)記線來判斷小車行駛位置和方向使小車沿線行駛、識別停車線,加上直流電機模塊和萬向輪控制小車行進和轉(zhuǎn)變方向,最終結(jié)合PID實現(xiàn)速度的閉環(huán)控制, 使系統(tǒng)能精確控制小車的運行,從而實現(xiàn)高效準(zhǔn)確地運送藥品至病人所在病房。
采用AURIXTMTC377單片機。AURIXTMTC3xx微控制器架構(gòu)具有多達6個獨立的處理器內(nèi)核,2.3DMIPS/MHz,6級流水線,高達300MHz,且所有CPU都有32位浮點單元,符合IEEE-754的單精度,片內(nèi)資源豐富且性能強。
采用深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)[2-4]。因為圖像相當(dāng)于處于一個運動的狀態(tài),采集到的圖像信息較復(fù)雜,此次識別目標(biāo)可以明顯分為十類,即網(wǎng)絡(luò)輸出十種結(jié)果,適合以深度學(xué)習(xí)的方法去處理。
采用紅外反射式光電傳感器。紅外反射式光電傳感器還有價格低廉、應(yīng)用簡便等特點。
用兩輪車配萬向輪搭成的三輪小車。用兩輪車搭配支撐材料和萬向輪自制的三輪小車轉(zhuǎn)彎半徑小,可靈活調(diào)節(jié)機械結(jié)構(gòu)。
測試電路總體設(shè)計如圖1所示。
圖1 測試電路
該系統(tǒng)中含有兩個+5V、一個+3.3V穩(wěn)壓電源。①5V穩(wěn)壓電源模塊設(shè)計如圖2所示。兩個+5V穩(wěn)壓電源分別是開關(guān)電源TPS5450和線性穩(wěn)壓器LT3045。開關(guān)電源TPS5450具有效率高,負載電流大的優(yōu)點,為OpenMV及OpenArt供電。線性穩(wěn)壓器LT3045具有低噪聲的特點,為編碼器和傳感類器件供電。TPS5450輸出電壓,取R2=10kΩ,R1= 3.3kΩ,滿足設(shè)計需求。②3.3V穩(wěn)壓電源模塊設(shè)計如圖3所示。+3.3V由+5V經(jīng)線性穩(wěn)壓電源芯片ADM7172降壓得到,噪聲小,負載電流比較大。
圖2 5V穩(wěn)壓電源模塊
圖3 3.3V穩(wěn)壓電源模塊
電機驅(qū)動模塊設(shè)計如圖4所示。采用柵極驅(qū)動器IR2104和MOS管IRLR7843構(gòu)成的全橋電路,控制電機實現(xiàn)正反轉(zhuǎn)。
圖4 電機驅(qū)動電路
LED燈板設(shè)計如圖5所示,通過IO控制燈的亮滅來顯示小車工作狀態(tài)。
圖5 LED燈板
干簧管模塊設(shè)計如圖6所示。在小車底部放置干簧管,在放置藥品時磁性容器接近干簧管使其導(dǎo)通,單片機檢測到其狀態(tài)變化開始出發(fā)。
圖6 干簧管模塊電路
軟件總體框圖設(shè)計如圖7所示。主體由三部分組成:OpenMV、OpenArt和TC377單片機。
圖7 總體框圖
單片機工作流程如圖8所示。通過接收OpenMV和OpenArt通信的數(shù)據(jù)判定所去的病房號碼。若藥品已裝載,則出發(fā)。途中,根據(jù)兩個攝像頭的數(shù)據(jù)選擇前進方向,最后到達病房前,并停止等待藥品卸載。待藥品卸載后,開始返回藥房。
圖8 單片機工作流程
3.2.1 采集數(shù)據(jù)
采集網(wǎng)絡(luò)上開源的Minist數(shù)據(jù)集、隨機數(shù)字生成集以及實地拍攝的光度不同的數(shù)字圖片,并對圖片進行各種變換,以達到良好的數(shù)據(jù)預(yù)處理目的,為后續(xù)模型的泛化性奠定基礎(chǔ)。
3.2.2 訓(xùn)練模型
采用OpenArt采集并訓(xùn)練數(shù)據(jù),第一種方案是通過tensorflow搭建模型并訓(xùn)練,再根據(jù)tflite量化原則進行模型量化,最后將tflite模型部署到OpenArt中,進行數(shù)字0~9的實時識別[5]。第二種方案是通過NNCU的模型量化工具,將tensorflow訓(xùn)練得到的h5模型量化為OpenArt可用的nncu模型,盡可能減少OpenArt內(nèi)存的占用。根據(jù)實際情況,最終選擇第二種方案來訓(xùn)練模型。
3.2.3 模型應(yīng)用
將模型部署到OpenArt后,還需要對攝像進行一定的光度、高度、角度調(diào)整,并搜索實時拍攝照片中的數(shù)字框,對框中的內(nèi)容進行模型推理,最后的輸出即為識別的結(jié)果[6]。再通過串口通信傳輸給主控以便控制[7]。
3.2.4 環(huán)境亮度適應(yīng)
不同角度導(dǎo)致獲取的圖像亮度不同,如圖9和圖10所示。因此導(dǎo)致雖然模型的訓(xùn)練集準(zhǔn)確率很可觀,但實際使用上卻不盡人意。對此,采取增加訓(xùn)練集的方法,通過對相同圖像進行亮度的調(diào)節(jié),使數(shù)據(jù)集在亮度上更加豐富,以貼合實際使用的情況。從結(jié)果上來看,圖像識別的效果會比原來的有所提升,對不同亮度環(huán)境的適應(yīng)度更加好。
圖9
圖10
3.3.1 二值化區(qū)分
使用OpenMV二值化將標(biāo)記路線與其他干擾元素區(qū)分[8],并對二值化后的標(biāo)記路線進行線性回歸擬合處理[9],得到直線的位置偏差以及角度偏差,再通過串口將偏差傳輸給主控單片機處理,具體是應(yīng)用模糊的PID進行偏差修正[10],根據(jù)PID修正后的結(jié)果控制小車追尋路線[11]。
3.3.2 十字識別
通過OpenMV二值化后閾值的判斷以及OpenArt數(shù)字識別來實現(xiàn)十字的左右轉(zhuǎn)彎,但由于存在類似十字狀元素的T字元素,如圖11和圖12所示,若是要將其識別,必須將OpenMV中的閾值降低,會導(dǎo)致十字元素提前判定,影響小車的循跡,所以必須反復(fù)去調(diào)整閾值以不斷貼近理想效果。
圖11
圖12
3.3.3 路徑規(guī)劃
通過放藥后小車識別數(shù)字一直到達病房的路程,可反向推導(dǎo)出返回藥房的路線規(guī)劃,即可減少返回時數(shù)字角度傾斜難以識別的問題,只需識別十字并結(jié)合推導(dǎo)出的返回藥房的路線規(guī)劃即可實現(xiàn)小車回到藥房的返程。
字模識別測試:進行小車靜態(tài)下單字模和動態(tài)下和多字模的圖像識別測試,將需要識別的字模平放在行駛線上,系統(tǒng)連接電腦進行上位機顯示所識別字模的數(shù)據(jù)。
任務(wù)測試:在特定時間要求下使小車自動行駛,測試小車在關(guān)鍵節(jié)點之間的運行時間,同時觀察小車有無停頓,脫軌,壓線等情況。
字模識別測試情況如表1所示。
表1 小車字模動態(tài)靜態(tài)識別測試情況
小車時間節(jié)點測試情況如表2所示。
表2 小車時間節(jié)點測試情況
結(jié)論分析:①靜態(tài)的識別率較高,但動態(tài)的識別率低了很多。可能原因是由于處于動態(tài)下,攝像頭的幀率有所下降,且加上神經(jīng)網(wǎng)絡(luò)占據(jù)大量內(nèi)存,致使幀率下降很多,各個圖像存在延時,影響數(shù)字識別。②從任務(wù)測試的結(jié)果來看,小車的運行效果較為不錯,但節(jié)點3的時間稍稍偏長。雖然嘗試提高小車運行速度,但由于數(shù)字識別時小車需要減速,故只好提高返程的小車速度,這樣避免了對數(shù)字識別的負面影響。
本文設(shè)計的智能送藥小車系統(tǒng),采用后輪驅(qū)動前輪萬向輪結(jié)構(gòu),小車前端裝有OpenArt進行字模識別,同時裝有OpenMV通過準(zhǔn)確掃描標(biāo)記線來控制電機差速轉(zhuǎn)向?qū)崿F(xiàn)小車循跡。整車系統(tǒng)由各獨立模塊整合而成,其電源來自于動力型鋰電池,具有較高的可靠性、穩(wěn)定性;用干簧管來檢測藥品是否放下,占用空間小且操作簡單;萬向輪搭配后輪驅(qū)動的方案使得車可以實現(xiàn)原地調(diào)頭,簡化了控制;OpenMV和OpenArt的架設(shè)使得小車在精準(zhǔn)尋跡的同時保持較高的字模識別精準(zhǔn)率。但此系統(tǒng)也存在不足之處:采用的OpenArt鏡頭垂直地面的架設(shè)方法需要鏡頭的投影伸出底盤,車模整體邊長,轉(zhuǎn)彎時有壓實線的概率;OpenArt對光線強度的依賴未能有效解決,會出現(xiàn)字模識別錯誤的情況。