徐賢,高小慧,李羽晴,孫婧妍
(三江學院,江蘇南京,210012)
隨著科學技術進步和醫(yī)療水平的發(fā)展,研制智能送藥機器人對提高醫(yī)療服務效率、減輕醫(yī)護人員負擔、提升藥物配送安全性以及優(yōu)化醫(yī)療資源利用方面有著十分重要的現(xiàn)實意義。同時,通過結合物聯(lián)網(wǎng)、人工智能和自動化技術,智能送藥小車展示了未來醫(yī)療領域的創(chuàng)新和前景,對構建智慧醫(yī)療生態(tài)系統(tǒng)起著重要的作用。本設計要求智能小車可在模擬的醫(yī)療區(qū)域內(nèi),根據(jù)走廊上的標識信息自動識別、尋徑、避障,將藥品送到指定病房。
智能送藥小車在單片機控制下可自動實現(xiàn)前進,后退,左轉,右轉等操作,并給出聲或光的信號,完成規(guī)定動作后可自行返回藥房。圖1 為系統(tǒng)工作流程圖。
圖1 系統(tǒng)工作流程圖
針對循跡設計要求,常用的方案有兩種,一種是通過灰度判斷紅線為循跡,用OpenMV 識別數(shù)字到達指定藥房;另一種是通過紅外判斷紅線為循跡,用樹莓派識別數(shù)字到達指定藥房??紤]到灰度傳感器探測范圍廣,干擾容易控制,所以設計中采用了第一種方案。使用灰度傳感器利用光敏電阻對不同顏色的檢測面對光的反射程度不同引起阻值變化,同時攝像頭專注于數(shù)字識別,巡線由灰度傳感器進行,分工明確,調(diào)試簡單。
車體選擇上,設計者們考慮了三種小車。一種是牛眼輪小車,其具有越障能力強、穩(wěn)定性強、轉向靈活、載重能力強和省力高效等優(yōu)點,并且可耐得住油、酸、堿等一些有機溶劑,不易腐蝕,具備良好韌性和可以抗疲勞實用性,經(jīng)久耐用;第二種是三輪小車,雖然機械結構簡單,成本低,但該爬坡和倒退場景不太適用。第三種是采用履帶式小車,這種小車市面上較為常見,稍加改裝即可投入使用??梢哉f三種小車各有優(yōu)勢,本設計采用的是三輪小車。
電源方面,設計者們放棄了鉛酸電池供電的方案,雖然其有著供電電流大的優(yōu)點,但是重量大、攜帶麻煩、不便于安裝。本設計采用的是7.2V 鋰電池組供電,雖然犧牲了續(xù)航時間和成本,但其體積小、重量輕、電壓穩(wěn)定、便于安裝攜帶。應用時,7.2V 電源經(jīng)DRV 模塊轉化可以輸出12V電壓供給直流電機,其他模塊也可用XL4015DC-DC 轉換成5V 后再供電。
根據(jù)設計要求,控制端在單片機控制下,顯示模塊,無線通信模塊協(xié)同配合,共同完成控制端的工作;運動端以STM32F103RBT6 為核心,在控制模塊、循跡模塊和電源模塊的協(xié)同下,讓小車完成行駛、通信、運載藥物等指定動作。
系統(tǒng)硬件框架如圖2 所示,除電源模塊和主控模塊外,還包括循跡模塊、攝像頭模塊、電機驅(qū)動模塊、顯示模塊以及用于檢測小車是否裝載物品的紅外傳感器模塊。
圖2 系統(tǒng)總體框架
該模塊主要作用是將電壓降為5V 和7.2V,用于小車各模塊的供電。
XL4015 芯龍公司生產(chǎn)的一個180kHz 固定頻率PWM降壓DC/DC 變換器,能夠驅(qū)動5A 負載,具有高效率,低紋波和優(yōu)秀的線路和負載調(diào)節(jié)能力。內(nèi)置過流保護功能。當發(fā)生短路保護功能時,操作頻率由180kHz 降至48kHz;同時內(nèi)置一個內(nèi)部補償塊以最小化外部組件計數(shù)。圖3 為電源模塊電路。
圖3 電源模塊
電機驅(qū)動的核心部件是DRV8701E、TPH1R403NL,它通過STM32F103RBT6 的指令直接控制步進電機轉速,從而控制小車的行駛狀態(tài)。
DRV8701E 為德州儀器生產(chǎn)的有刷直流電機全橋柵極驅(qū)動器,支持5.9V 到45V 電壓輸入,支持100%脈寬調(diào)制占空比,采用四個外部N 溝道金屬氧化物半導體場效應晶體管(MOSFET)的單路柵極驅(qū)動器,主要用于驅(qū)動12V 至24V 雙向直流有刷電機。
TPH1R403NL 為東芝公司生產(chǎn)的N 溝道MOSFET,最大電壓值為30V,最大電流值150A,25℃下功率可達64W。
2.3.1 巡線模塊硬件設計
在本次設計中,采用八路的灰度循跡模塊來實現(xiàn)機器人的自主導航功能。該模塊能夠通過感知地面顏色的變化來精確定位機器人的位置和方向,并根據(jù)預設的路徑規(guī)劃算法來控制機器人的移動方向和速度。由于該模塊的工作原理是基于光的反射,因此具有響應速度快的優(yōu)點。
圖4 為灰度循跡模塊電路圖。其中包含兩個部分。第一部分由TCRT5000L 組成的灰度傳感器電路,它是一個發(fā)送管與接收管集成在一起的一體式灰度傳感器。第二部分是由LM393 精密運放芯片組成的比較器電路,能對灰度傳感器采集到的灰度值進行比較,比較電壓可以由R1 進行調(diào)節(jié)。接著,OUT引腳為模塊的輸出引腳,接到單片機的IO 引腳上,使其可以判斷出機器人的位置和方向。
圖4 灰度循跡模塊電路圖
2.3.2 巡線控制算法
圖5 為巡線控制算法流程圖。主要采用比例控制算法,比例控制算法是通過將控制信號與誤差信號的比例相乘來產(chǎn)生輸出信號。這個比例系數(shù)通常稱為“比例增益”,它決定了輸出信號的大小和誤差信號的大小之間的關系。比例增益越大,輸出信號就越大,這意味著控制器將更快地響應誤差信號。但是,如果比例增益過大,控制器的輸出信號可能會變得不穩(wěn)定,導致震蕩或振蕩。
圖5 巡線控制算法流程圖
式(1)為比例控制器的數(shù)學表達式:
其中,u(t) 是控制器的輸出信號,Kp是比例增益,e(t) 是誤差信號。將輸出的信號輸出到電機上實現(xiàn)轉向,最后跟隨引導線行駛。
視覺部分采用K210 芯片搭載MaixBit 進行目標檢測并返回坐標。勘智K210 芯片采用了RISC-V 架構,可根據(jù)業(yè)務場景需求擴展基礎指令,具備較強的可編程能力;同時,該芯片具備機器聽覺與機器視覺兩種能力,可以靈活適配人臉識別、目標檢測、語音喚醒及識別等場景;此外,勘智K210 可在0.3W 的條件下提供1TOP 的算力支持,充分適配在多數(shù)業(yè)務場景中低功耗約束下的算力需求。
本設計中,數(shù)字識別的方案嘗試了以下三種:
(1)用OpenMV 對不同數(shù)字圖像做模板匹配,這種方案最為簡單,用OpenMV 自帶的例程就可以實現(xiàn),缺點在于檢測精度低,幀數(shù)低,經(jīng)常誤判。
(2) 使 用Mnist 數(shù) 據(jù) 集,Lenet-5 網(wǎng) 絡 模 型, 在Jetson Nano 4G 版本上進行訓練,得到參數(shù)模型,缺點是成本較高,經(jīng)常斷貨,且環(huán)境容易崩潰,體積較大,不方便部署在小車上。
(3)用k210 跑YOLOv3 網(wǎng)絡進行檢測,這種方案檢測精度高,檢測速度快,且成本也比前面兩種低。因此,最終本設計中采用了這一方案。
具體實現(xiàn)時,整體的軟件框架包括數(shù)據(jù)集采集和標注、模型訓練、模型轉換和部署以及實時預測和通信等步驟。
(1)數(shù)據(jù)集的采集和標注:將攝像頭固定在小車上,采集包含不同角度和距離的數(shù)字圖片,然后使用標注工具(Labelme)對采集到的圖片進行標注,標注出數(shù)字的位置和邊界框。
(2)模型訓練:使用采集和標注好的數(shù)據(jù)集,采用深度學習框架TensorFlow 訓練數(shù)字識別模型。選擇YOLOv3模型架構作為基礎網(wǎng)絡,在其基礎上進行微調(diào)或遷移學習。訓練過程中定義合適的損失函數(shù)、優(yōu)化器和訓練參數(shù),并進行適當?shù)臄?shù)據(jù)增強操作。
(3)模型轉換和部署:訓練完成后,使用Sipeed 官網(wǎng)提供的Kmodel 工具將其轉化為目標設備可用的格式,而后將轉換后的模型文件存放在SD 卡的根目錄下。
(4)實時預測和通信:在小車上運行程序,通過串口與單片機進行通信。程序從攝像頭獲取圖像,使用模型對圖像中的數(shù)字進行實時預測。預測結果可以通過串口將識別的數(shù)字和位置信息傳送給單片機,用于控制小車的行動。
視覺識別程序流程如圖6 所示。
圖6 視覺識別流程圖
圖7 為模擬場地示意圖——引用2021 年全國大學生電子設計競賽試題(F 題),采用白色啞光噴繪布制作,分為遠端病房、中端病房和近端病房。標識病房的黑色數(shù)字可在紙張上打印,數(shù)值為1~8,每個數(shù)字邊框長寬為8cm×6cm,將數(shù)字標號紙張可由無痕不干膠等粘貼在走廊上。
圖7 場地示意圖
任務一:兩小車相互配合將藥品運送到同一指定的中部病房。小車1 識別病房號裝載藥品后開始送藥,到達指定區(qū)域后等待卸藥,然后,小車2識別病房號裝載藥品后啟動送藥,到達自選暫停點后停車,點亮指示燈,等待小車1 卸藥;小車1 卸藥后返回,同時控制小車2 熄滅指示燈并繼續(xù)運送。
任務二:兩小車相互配合到不同的遠端病房送取藥,小車1 送、小車2 取。小車1 識別病房號裝藥后開始送,小車2 于藥房處識別病房號等待小車1 的取藥開始指令;小車1 到達病房后卸藥并返回,同時向小車2 發(fā)送取藥指令;小車2 收到指令后啟動,到達病房后停止并點亮指示燈。
硬件上主要運用數(shù)字萬用表、示波器等儀器測量智能送藥小車中各主要元器件的狀態(tài),以及系統(tǒng)各個部分的供電電壓是否能夠達到理論計算中所需的預期電壓等詳細參數(shù)。同時,還需對小車的機械結構進行測試,如測試電機的轉動情況等。
使用Keil5 進行單片機程序的編寫和調(diào)試,然后將程序通過STlinK 下載到目標單片機中進行多次運行測試。
為了方便分析和調(diào)試,使用串口實時打印運行時各種參數(shù)信息,配合串口助手在PC 端實時地顯示。
單個小車運送藥品到指定的近中遠端病房并返回到藥房測試結果如表1 所示。
表1 小車運送藥品到指定的近中遠端病房并返回到藥房測試結果
兩輛小車協(xié)同運送藥品到同一指定的中部病房測試結果,即任務一測試結果如表2 所示。
表2 任務一測試結果
兩輛小車協(xié)同運送藥品到同一指定的中部病房測試結果,即任務二測試結果如表3 所示。
表3 任務二測試結果
綜上,系統(tǒng)采用直流減速電機和STM32F103RBT6 芯片控制小車運動,用鋰電池提供7.2V 電壓,用灰度傳感器保證小車能在規(guī)定的區(qū)域內(nèi)正常行駛,通過單片機控制小車的前進、后退、左轉、右轉等功能,并用無線通信實現(xiàn)遠程控制端和運動端之間的交流。兩車之間通信使用無線轉USB/串口模塊,它可以發(fā)射和接收無線信息,從而實現(xiàn)兩者之間的交流。經(jīng)軟硬件聯(lián)調(diào)測試,本設計研制的智能送藥小車能精確且高效地完成既定的各項任務。