王怡雯 張曉輝



關鍵詞:STM32F407ZGT6;送藥車;K210 攝像頭;圖像
中圖分類號:TP249 文獻標識碼:A
文章編號:1009-3044(2023)10-0025-04
0 引言
送藥車是醫院藥房藥品轉運的設備,適用于藥房和患者之間的藥品傳送。現有的醫用送藥車大多采用手推車,容易造成藥品錯發、漏發的醫療糾紛,無法滿足“未來醫院”患者藥品調劑精細化、智能化管理的需求,給大數據時代的醫院工作帶來各種不方便。
國外公司的送藥機器人基本都是室外送藥機器人,對于室內送藥機器人與國內一樣有許多問題,很多問題都處于研究階段,對于室內送藥機器人的商業化還有非常大的一段距離。在實際的運行過程中,發現了許多的因道路而產生的問題:①當下雨天有人在地上鋪上毯子,醫院或藥房送藥時,送藥機器人對這一路段的通過能力大大降低,有失敗的風險,并且行駛過程中穩定性也下降不少。②多個小車協作運行過程中的相互避障及對路線實時規劃的問題,環境因素(人為或非人為)發生改變后小車的適應性問題和學習能力等,都還需要改善。尤其近年來,疫情反復無常,為了盡量減少醫生、病人等人員之間的直接接觸機會,設計一種送藥智能車,能夠根據藥房、病房號進行自動識別,將藥品及其他檢測樣本進行準確投送。
1 送藥智能車的總體設計
送藥智能車控制系統原理框圖如圖1所示,主要包括核心控制器STM32F407ZGT6、HC-05 藍牙通信電路、K210攝像頭、TB6612驅動電路、TFT顯示屏、減速編碼電機、灰度傳感器、紅外光電感應開關等。
系統工作時,利用紅外光電開關檢測藥品的放置,使用HC-05藍牙模塊實現無線數據交換,傳遞送藥智能車當前位置和任務信息。核心控制器STM32F407ZGT6控制TB6612電動驅動模塊實現送藥車減速編碼電機的驅動,減速編碼電機和萬向輪驅動小車實現行進和轉向,使送藥車自動運行。利用灰度傳感器獲得灰度值,采用七路灰度傳感器高效區分不同灰度(顏色)的尋徑線,實現送藥智能車的尋徑功能。K210攝像頭進行圖像采集,并采用浮雕濾波算法進行預處理,實現圖像識別、顏色、物體識別、MNIST手寫數字識別等多種功能,從而實現對多個病房號碼識別功能[1]。
2 送藥車控制系統硬件電路設計
2.1 供電電路
供電電路采用2路LM2596S-ADJ為核心組成的DC-DC可調降壓電路,LM2596S-ADJ芯片內部有開關頻率150KHz的固定頻率發生器,并具有頻率補償功能,轉換效率達95%以上。供電電路原理圖如圖2 所示:
LM2596S-ADJ芯片只需要4個外接元器件就可以工作,一路將電池輸出電壓穩定在8V供送藥智能車驅動,另一路將電池電壓穩定在5V供各模塊使用。
2.2 電機驅動電路
本系統送藥智能車使用TB6612 驅動電路,TB6612是一種可以同時獨立地控制兩臺直流電動機的新型驅動芯片。它的集成度非常高,且能輸出比較高的電流提供足夠的產能,在運行電動機的性能和能源消耗方面也具有優勢。因此,它可以作為集成、小型電動機的控制系統中非常理想的電機驅動裝置。驅動電路原理圖如圖3所示:
2.3 主控板電路
主控板采用自主設計的集成各功能的PCB電路板,包括鍵盤、TFT顯示屏、電機接口、串口以及LED指示燈等,而且板載的1117芯片可將5V電壓轉降至3.3V 以供應芯片運行。主控板電路如圖4 所示,按鍵、陀螺儀模塊電路如圖5所示,顯示屏、串口模塊電路如圖6所示。
3 送藥智能車的圖像處理
3.1 數字識別方法
送藥智能車駛向目標病房需要攝像頭對病房號碼的準確識別并且對號碼位置的精確判斷,前者可以使用目標分類達到很好的效果,但對目標數字位置識別涉及對圖片內多個數字的處理,存在較大的難度。
YOLOv3采用的one stage目標檢測算法具有較高的運算速度,可以同時檢測多個目標,并對相應的目標值進行標注,獲取目標的各種信息。能夠同時測量多種數據,并對相應的目標值加以標注,從而得到項目的所有特征。可以首先利用特征提取數字的輸入特征,從而獲取一定尺寸的特征圖形輸出。將圖像分為13×13的網格單元,然后假設真實框的一個對象的中心位置落在一個方格上,然后就可以根據這個方格來推測這個對象。如果一個對象中有一定數量的邊界框,在YOLOv3中有三個邊界框,然后通過邏輯回歸可以得到用來推測的回歸框[2]。
要檢測出目標數字在圖像中的位置,就得需要位置信息,也就是bounding box,如圖7中所示需要知道中心點的坐標,框的寬和高,也就是包含4個值:x,y,w,h,(x,y)代表box 的中心,(w,h)代表box 的寬和高。
3.2 預測框回歸
預測框回歸圖如圖8所示:
YOLOv3網絡最終需要通過回歸檢測得到這些信息,回歸思想是指先驗框(anchor box)到真實框(ground truth box)之間是一種回歸關系,先驗框是通過預先選定的一些框,來幫助本系統最終得到真實的框,在代碼中先驗框信息(寬和高)是固定在代碼中的,它包含了三個尺寸,有的大有的小,且橫縱比有一些區別,如圖通過YOLOv3網絡訓練后會得到一種映射關系,先驗框會回歸到真實框,Anchor box 到Ground truth box之間可以通過中心點的坐標的偏移,以及框的寬和高的放縮來最終得到真實框[3]。
系統采用K210采集大量原始數據,進行數據集標注,通過LabelImg工具進行數據集創建與標注,再通過Tensorflow框架訓練YOLOv3模型,本系統將一千兩百張不同角度、不同明暗對比度、不同焦距的圖片傳入框架進行訓練,最終得到滿意的YOLOv3模型,由圖9可以看出,經過9次迭代損失率可以達到較低水平,大于9次迭代后損失率下降不再明顯。
浮雕濾波器是一種常用數字濾波器,能夠給圖像一種3D陰影的效果。只需要用中心這一邊的像素減去另一邊的像素。此時,像素值的正負是不確定的,本系統將小于0當成陰影部分,將大于0當成光影部分,然后對圖像的結果加上偏移。這時候,圖像大部分就變成灰色了。
將訓練的模型YOLOv3.tflite文件轉化為YOLOv3.kmodel 文件,將其放在系統SD卡的根目錄下,通過K210程序調用攝像頭進行數字的實時識別。將識別的結果通過串口通信實時地發送給主控制器。
3.3 自動尋徑方法
本系統采用7路灰度傳感器,裝在送藥智能車車頭下方,用于尋徑和記錄送藥智能車所處位置。灰度傳感器采用光敏二極管,在識別到顏色變化時改變輸出信號。尋跡模塊的7個灰度傳感器檢測道路,根據灰度傳感器的返回的灰度值和邏輯電平信號,判斷送藥智能車相對道路中間所在的位置,調整送藥智能車兩個電機的速度從而改變運行軌跡,使送藥智能車始終沿著軌道行走。根據當前傳感器的返回值,確定智能送藥車所在道路的位置,從而改變車輛的行駛方向的走向,讓車輛一直沿著道路中間的實線運行。送藥智能車的初始位置定在道路的中間,使用最中間的灰度傳感器壓線,送藥智能車將默認以直線方式前進,在前進一段距離后,因為摩擦力和軌道曲線變化及電機的區別等問題,送藥智能車將脫離軌道線而偏向另一方向,這時車輛就必須通過從灰度傳感器中得到的數據進行判別,以實時的方式選擇送藥車輛運行路線[4-5]。
若是七路灰度傳感器檢測不到道路,表明送藥智能車到達了門口區域,這時會自動原地轉向進行藥品裝卸。
根據道路情況,在程序內部建立各個病房位置的絕對坐標系和相對于小車位置的相對坐標系,主控制器根據接收到灰度傳感器的數據和電機編碼器的值進行計算,得出送藥智能車此刻位于道路的位置,通過送藥智能車自身傳感器配以PID算法產生中斷對指令的執行進行微調,更好地完成任務。
4 送藥智能車的控制系統軟件設計
送藥智能車控制系統軟件主要包括主程序、圖像處理程序、數字識別程序、自動尋徑程序、雙車通信程序等,限于篇幅,在此僅介紹主程序。系統程序流程圖如圖10所示。
5 結束語
本次設計的醫用送藥智能車具有自主避障、自動循跡、藥房和病房的自動識別等功能,實現了藥房與病房之間藥品及其他檢測樣本的精準投送,減輕了醫護人員的勞動強度,提高了工作效率。