陳家熙,劉建豪,張海博,范潔潤,李樂怡,李振華
(廣東海洋大學,廣東 湛江 524088)
隨著科技水平的提高,科技代替人類完成許多工作。例如,當下發展比較迅猛的無人運輸技術。在餐廳中,它們可以準確將菜品運送到對應客人的桌子上,減緩了餐廳服務員的工作量。在小區里,快遞站使用無人運輸小車派送快遞,可以有效分擔快遞員的工作壓力。無人運輸小車的出現,可以有效地幫助減緩服務、運輸等行業的工作人員工作壓力,在夏天高溫時,能有效防止工作人員中暑。但現在市面上大部分的無人運輸小車外形都比較大,只適用于某些開闊的場地。針對這種現象,本文提出一種小型運輸車。此款運輸車體積較小,可以用于在一些相對狹小的地方運輸小型物品,如在樓道內運輸藥品或零食等。該車具有識別門與自動避障功能,能實現精準派發與自動避障等功能,實用性較強,且成本相對較低,開發周期較短。
該小型智能運輸車主要由單片機主控芯片、電源模塊、攝像頭識別模塊、電機驅動模塊、避障模塊5部分組成。考慮到小車的程序復雜程度和工作效率,該智能運輸車使用STM32F103ZET6作為主控芯片。該芯片擁有較多功能管腳以及5個串口,便于后續可以對小車的功能進行升級與擴展,電源模塊由12 V可充電電池、AMS1117芯片和LM2596S芯片組成;驅動模塊采用L298N以及普通步進電機組成;避障部分由超聲波測距模塊HC-SR04與紅外對管避障模塊共同組成,完成對障礙物的測距和避障工作。小車整體模型采用3D打印模型作為支撐。
本文的機器視覺模塊設計中重點為深度神經網絡模型,還含有樹莓派、攝像頭。深度神經網絡模型采用YOLOv5進行訓練,使用OpenCV部署訓練得到的模型,即可用攝像頭識別出門。
YOLOv5有4個子版本分別為s、m、l和x,本文選用YOLOv5s來訓練數據集。YOLOv5s相較于其他的版本具有更快的速度和更小的網絡,AP精度也最低的特點。在本文以門為檢測的目標,追求速度,所以本文深度神經網絡采用YOLOv5s模型進行訓練。模型參考2019年末提出的CutMix數據增強法的Mosaic數據增強對數據集合隨機縮放、裁剪和排布,以及自適應圖像縮放、錨框計算等操作,不僅能豐富數據集,提高數據集的復雜度,減少GPU,還能大大提高模型的分類和訓練效率能力。
與以往對圖片進行翻轉、放大、縮小進行的數據增強不同,Mosaic 數據增強是將多張圖片進行隨機縮放、裁剪、排布并拼接到一張圖片上,減少訓練過程中出現非信息像素,以及混合后圖片不自然的情況,提高了模型的訓練效率和分類能力[1],特別是對于隨機的所發性能的小目標,自適應錨框計算和自適應圖像縮放以豐富數據集,提高魯棒性和提升推理速度[2];自適應錨框計算是將通過訓練得到的輸出預測框和真實框進行對比,求差再反向更新,迭代網絡參數以得到最佳的錨框值。
算法模型的Backbone主要采用Focus和CSP結構。Focus結構是以32個卷積核的卷積操作進行關鍵的切片操作。本文的YOLOv5s模型即是由CSP1_X的結構應用于Backbone主干網絡,神經網絡模型獲取特征的能力獲得了極大的提高;而Neck則采用了FPN+PAN的結構,PAN是借鑒了圖像分割領域PANet的創新點。一般目標檢測任務的損失函數分為Classificition Loss(分類損失函數)和Bounding Box Regeression Loss(回歸損失函數)兩部分。損失計算采用GIoULoss進行計算,GIoULoss的計算公式為:
(1)
(2)
利用GIoULoss可以解決單純IOULoss計算時無法反映兩個框不相交的情況。
YOLO處理流程:(1)將圖像test到 800×600作為神經網絡的輸入;(2)將圖像過YOLOv5模型;(3)進行利用NMS,篩選Boxes。
本小車主控芯片選取了STM32F103ZET6,該芯片在STM32F103 系列里配置相對較高,能很好實現本小車的基本功能,同時豐富的接口以及外設可以用于對小車現有功能進行升級完善以及后續功能增加,而且成本較低。它擁有的資源包括:64 KB SRAM、512 KB FLASH、2個基本定時器(TIM6、TIM7)、4個通用定時器(TIM2-TIM5)、2個高級定時器(TIM1、TIM8)、2個DMA控制器(共十二個通道)、3個 SPI串行外圍設備接口、5個串口、1個 USB、1個 CAN、3個12位Analog-to-Digital Converter模數轉換器、1個12位數字/模擬轉換模塊、1個 SDIO 接口、1個 FSMC 接口以及112個通用 GPIO接口。
本小車驅動采用了普通步進電機,驅動步進電機采用L298N模塊,2個L298N模塊分別驅動前端和后端的電機,L298N模塊內部為雙H橋電路,含有4通道邏輯驅動電路,可使用1個模塊就非常方便的驅動2個電機。1個H橋電路主要由4個MOS管組成,MOS管的導通狀態決定了電機的轉動方向。電機通過單片機輸出PWM波,再通過L298N的PWM輸出通道來進行調速。一個電機由兩個引腳來操控其工作狀態。單片機通過操作IO口的輸出,即可讓小車實現前進、后退、轉向、停車、剎車等功能。
因為小車各模塊所需的額定電壓都不相同,所以主控電路板上需要有電壓轉換芯片以及電壓轉換電路。小車的驅動模塊采用12 V可充電鋰電池供電,12 V可以為L298N提供正常工作電壓,但對于其他電子模塊12 V電壓過大,針對此問題主控電路板上有12 V轉5 V與5 V轉3.3 V的降壓電路,分別通過LM2596S-5.0與AMS1117-3.3V芯片完成降壓,降壓完成后即可對單片機、超聲波模塊等電子元器件進行正常供電。
3.4.1 超聲波避障模塊
HC-SR04測距模塊可以進行2~400 cm范圍內非接觸式距離測量,測量距離誤差在3 mm左右。此模塊由3部分組成,分別是超聲波發射器、接收器與控制電路。該模塊基本工作原理是首先讓超聲波發射器向一個特定的方向發射超聲波。在超聲波發射出去同一時刻開始計時,超聲波通過空氣傳播;當超聲波在傳輸途中碰到障礙物就馬上反射回來;當超聲波接收器接收到反射回來的超聲波就馬上停止計時。本次測試的測試距離可以由以下公式得出:測試距離=(計時時間×聲速)/2。對于本模塊的時序分為以下幾點:首先,模塊采用TRIG管腳來觸發測距功能,最少需要給模塊傳輸10 μs的高電平來作為觸發信號。其次,模塊會自動發送8個40 kHz的方波,并開始自動檢測是否有接收到反射信號。若模塊檢測到了反射信號,會控制ECHO管腳輸出一個高電平,而這個高電平持續的時間就是超聲波從發射到接收到反射波時間。最后,測試距離通過公式:測試距離=(高電平時間×聲速)/2計算可得[3]。
3.4.2 紅外對管避障模塊
本小車采用的紅外避障模塊為TCRT5000模塊,采用這個模塊的原因是該傳感器模塊對環境光線適應能力比較強。此模塊具有紅外線發射與紅外線接收管,紅外線發射管可以對外發射出紅外線。當紅外線傳播的方向遇到阻礙物(或者稱為反射面)時,紅外線會被反射回來然后被紅外線接收管接收,經過模塊內部的比較器電路處理過后,模塊上的綠色指示燈會被點亮,同時信號輸出接回輸出數字信號(一個低電平信號)。本模塊可以通過扭動電位器旋鈕來調節對障礙物的測量距離大小,可調節的有效距離為2~30 cm,工作電壓為3.3~5 V。當發射出的紅外線沒有被反射面反射回來或被反射回來但反射波強度不夠大時,紅外接收管會一直處于關斷狀態。此時,模塊的OUT管腳輸出為高電平,模塊上的綠色指示燈不會被點亮。當障礙物(反射面)出現在模塊的檢測范圍內時,且紅外線被反射回來且強度足夠大,紅外接收管飽和,此時模塊的管腳輸出為低電平,模塊上的綠色指示燈會被點亮。
本小車的主程序主功能分為避障和識別兩部分。當程序開始運行時,單片機對所用到的模塊以及外設進行初始化,初始化完畢后開始運行小車的驅動程序,驅動小車開始工作,同時小車進行對門識別與避障檢測兩個功能。小車的識別程序實現是通過攝像頭與單片機的通信。單片機通過串口與樹莓派進行通信。當識別到門的出現時,樹莓派會傳遞一個信號給單片機,單片機接收信號后,執行一個停車函數讓小車停在門前,小車可通過喇叭播放提示語音提醒門外居民出門領取物品。避障程序則是在小車運行的過程中,當小車的紅外避障模塊檢測到有障礙物時,超聲波模塊可以檢測出小車距離障礙物的距離,然后根據距離結合小車的大小,控制小車通過左轉或右轉或后退進行避障[4]。
在設計本小車時,筆者同時設計了一個對小車功能進行擴展的小程序。該小程序可以通過二維碼與小車運輸的物品進行綁定,通過綁定物品信息,用戶可以在手機端查看關于物品的信息以及狀態,方便對小車上的物品信息進行遠程觀測。主程序流程如圖1所示。
圖1 主程序流程
本項設計基于STM32,結合人工智能識別、軟件編程、硬件設計、模型設計,最終實現小型智能運輸小車。該小車不僅可以滿足一般的小型運輸需求,還可以實現精準派發,自動避障等功能。該小車成本相對較低,易于組裝,編程難度相對較小,可以為以后智能運輸車的研發提供一定的參考。