巫傳珺,張 松,胡 正,汪川貴,郭麗芳
(1.成都工業(yè)學院網(wǎng)絡(luò)與通信工程學院,四川 成都 611730;2.成都工業(yè)學院綜合改革與政策法規(guī)處,四川 成都 611730)
在當今的城市生活中,國家通過相應(yīng)的政策督促居民進行垃圾分類,雖然有國家政策的支持,但對于大眾來說,垃圾分類的觀念還沒有深入人心,因此如何更快、更有效地幫助人們進行垃圾的分類,就成了本篇的研究點。
對于市場上流行的掃地機器人,主要功能的設(shè)計在于機器人自主尋路、自動規(guī)避障礙等[1],而對于工業(yè)垃圾分類車,主要采用傳統(tǒng)后裝壓縮式垃圾車或者后高位自裝卸式垃圾車[2],體積龐大,無法在小空間場景內(nèi)使用。本文設(shè)計的垃圾機器人采用視覺處理技術(shù)[3]解決了小場景下的自動垃圾拾取與分類問題。
本文設(shè)計的垃圾分類機械人能夠從指定位置出發(fā),快速搜尋垃圾,對垃圾識別并分類揀送到指定的垃圾堆放地,機械人采用位置式PID 算法對機械人運動進行實時控制,在文獻[4-5]的論文報告中對YOLOv5 模型訓練進行了運用,分別對口罩和動物進行了檢測,筆者們參考了其識別方法,對不同的垃圾進行了模型部署,以高精度識別不同的垃圾,采用OpenMV 攝像頭[6]對分類區(qū)域的分類色塊進行識別,采用機械門夾取方式對垃圾進行拾取,完成機械人從出發(fā)到垃圾搜索、垃圾識別、垃圾拾取、垃圾分類的整個過程。本文通過對小型垃圾分類機械人的設(shè)計研究,為家用生活垃圾處理設(shè)備提供新的設(shè)計思路。
機械人系統(tǒng)主要由STM32 單片機主控系統(tǒng)、Jetson Nano 平臺、OpenMV 平臺組成,其中STM32單片機作為機械人的主控單元,主要負責機械人的移動、機械門的抓取與垃圾的堆放分揀;Jetson Nano 平臺負責垃圾的識別工作,主要進行垃圾的搜尋及對垃圾種類的識別,同時將識別到的垃圾種類信息與目標垃圾位于鏡頭的坐標發(fā)送給STM32 主控;OpenMV 平臺主要負責對垃圾堆放區(qū)的檢測及對不同垃圾堆放區(qū)的識別,同時堆放區(qū)位于鏡頭內(nèi)的坐標發(fā)送給STM32主控,STM32 主控在接收到來自2 個攝像頭的數(shù)據(jù)后作出相應(yīng)的處理,包括移動機械人至目標垃圾點并進行抓取、移動機械人至目標堆放區(qū)、釋放垃圾、退出堆放區(qū),再開啟新一輪的垃圾尋找,其系統(tǒng)架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
Jetson Nano 是英偉達Jetson 系列的一款開發(fā)板,也是性價比最高的一款板子,平臺上提供了現(xiàn)代AI 的強大算力,因此可以在上面進行一些復(fù)雜的AI 計算,YOLOv5 是一種單階段目標檢測算法,該算法在YOLOv4 的基礎(chǔ)上添加了一些新的改進思路,使其速度與精度都得到了極大的提升。
整個訓練過程首先會使用相機對需要拾取的垃圾進行各方位的錄像,再將錄制的垃圾視頻分解成數(shù)據(jù)集相片,通過Labelimg 對數(shù)據(jù)集進行標注,經(jīng)過矩池云平臺將數(shù)據(jù)集轉(zhuǎn)化為模型,最后將模型部署到Jetson Nano 平臺,使用pycuda 運行程序與模型,Jetson Nano平臺通過單目攝像頭對垃圾進行檢測,過程如圖2所示。
圖2 YOLOv5 模型訓練流程
不同版本的YOLOv5 與EfficientDet檢測算法之間的性能也不同,版本主要有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,不同版本YOLOv5 性能對比如圖3 所示。
圖3 YOLOv5 不同版本的對比
圖3 橫軸表示的是該算法在GPU 上對每張圖的推理時間(ms),該數(shù)值越小越好;縱軸表示的是該算法在COCO 測試數(shù)據(jù)集上面的AP 指標,該數(shù)值越大越好。與EfficientDet0 相比,YOLOv5s 不僅可以獲得更高的AP 指標,而且可以獲得更快的推理速度,本項目中的機械人為了更快地部署不同的垃圾模型,采用了YOLOv5s 進行垃圾模型的訓練。垃圾圖片集訓練后的最終模型訓練結(jié)果如圖4 所示。
圖4 YOLOv5 訓練結(jié)果
圖4 分別是對橘皮、紙團、電池、空瓶、紙杯進行模型訓練,可以看出圖集越多,識別精度越高,模型達到飽和后精度可以達到95%以上,滿足了垃圾識別的需要。
tof 測距屬于雙向測距技術(shù),利用數(shù)據(jù)信號在一對收發(fā)機之間往返的飛行時間來測量兩點間的距離。將發(fā)射端發(fā)出數(shù)據(jù)信號和接收到接收端應(yīng)答信號的時間間隔記為Tt,接收端收到發(fā)射端的數(shù)據(jù)信號和發(fā)出應(yīng)答信號的時間間隔記為Tr,如圖5 所示。信號在這對收發(fā)機之間的單向飛行時間Tf=(Tt-Tr)/2,則兩點間的距離d=c×Tf,其中c表示電磁波傳播速度,其測距原理如圖5 所示。
圖5 tof 測距原理
OpenMV 自帶一個Micropython 解釋器和cv 庫,調(diào)用OpenCV 里面的blob 色塊模塊,追蹤終點的顏色,通過這種方式實現(xiàn)垃圾堆放區(qū)分類色塊的識別,實現(xiàn)方法為:首先對分類區(qū)色塊進行拍照取樣,隨后在OpenMV 軟件中通過閾值編輯器改變顏色的閾值來進行色塊追蹤,將顏色加入函數(shù)中再調(diào)用OpenCV 庫,框出鏡頭畫面中滿足顏色閾值的色塊,將信息轉(zhuǎn)化為數(shù)值的形式發(fā)送給主控,主控根據(jù)信息決定運動軌跡。區(qū)分不同種類垃圾堆放區(qū)如圖6 所示。
圖6 區(qū)分不同種類垃圾堆放區(qū)
機械門夾取結(jié)構(gòu):抓取垃圾的方式采用機械門夾取與豎推方式進行,機械門使用舵機與木板的結(jié)合,STM32 主控通過輸出額定PWM 波控制舵機的旋轉(zhuǎn)從而帶動木板旋轉(zhuǎn),實現(xiàn)機械門的張開與閉合,通過此方式將垃圾夾取或者關(guān)在一定空間內(nèi),使用擋板推動垃圾移動。機械門抓取示意圖如圖7 所示。
圖7 機械門抓取示意圖
本次機械人采用增量式PID 算法來控制,通過攝像頭傳回的坐標信息來計算該坐標與攝像頭屏幕中線的偏差,從而實現(xiàn)機械人的精準轉(zhuǎn)向,使之能夠準確地向著目標前進。
PID 算法的主要實現(xiàn)過程如圖8 所示。
圖8 增量式PID 實現(xiàn)過程
從圖8 可以看出,PID 算法實現(xiàn)的影響因素有3個,分別是當前偏差、歷史偏差、近期偏差,與之對應(yīng)的是PID 中的比例控制(P 算法)、積分控制(I 算法)、微分控制(D 算法)。
比例控制:Ek=Sv-Xk,Pout=Kp×Ek+O0。
積分控制:Sk=E1+E2+E3+…+Ek-1+Ek,Iout=Ki×Sk+O0。
微分控制:Dk=Ek-Ek-1,Dout=Kd×Dk+O0。
其中,Ek為當前的偏差值;Kp為將誤差放大或縮小的比例系數(shù);Sk為歷史偏差;Ki為將歷史誤差放大或者縮小的比例系數(shù);O0為確保當誤差為0 時,整個輸出系統(tǒng)不會為0。
機械人對于PID 算法的應(yīng)用:攝像頭是放在機械人車頭的正前方的中間,使機械人與車頭同向,鏡頭的中點也就是機械人車頭中點,當垃圾或者終點出現(xiàn)在鏡頭前方時,攝像頭會識別出垃圾或終點塊在鏡頭x方向的位置并將信息傳遞給主控芯片,根據(jù)垃圾或終點在鏡頭x軸方向的值,計算出與鏡頭中點的差值Ek,因此根據(jù)差值Ek計算出PID 值,根據(jù)PID 值,對左右車輪輸出的PWM 進行調(diào)整,使兩車輪轉(zhuǎn)速不同,使機器人朝垃圾方向行駛。差值越大,偏向速度越大,差值越小,偏向速度越小,當沒有偏差,垃圾或終點在機械人的正前方時,機械人不偏向,這樣就實現(xiàn)了機械人的PID 調(diào)速,控制流程如圖9、圖10 所示。
圖9 駛向垃圾時PID 控制流程圖
圖10 駛向終點時PID 控制流程圖
攝像頭鏡頭內(nèi)有垃圾時,機械人通過Jetson Nano傳回的物體中點位于x軸的坐標,并將坐標信息發(fā)送給STM32 單片機,STM32 單片機通過計算出垃圾中心位于x軸坐標值與鏡頭中點x軸坐標值之差,就可以使用上面講述的PID 差速控制,調(diào)整機械人雙輪的相對速度,讓機械人往物體方向運行,使垃圾始終在鏡頭中心浮動,最后當tof 模塊測試到垃圾與機械人的距離少于20 cm 時,機械門關(guān)閉,垃圾被拾取。在攝像頭鏡頭內(nèi)沒有垃圾時,機械人自身旋轉(zhuǎn)車身,改變Jetson Nano 鏡頭視野,當攝像頭視野內(nèi)再次出現(xiàn)垃圾時,回到剛開始的過程。垃圾在鏡頭的識別顯示如圖11 所示。
圖11 垃圾在鏡頭的識別顯示
當機械人拾取垃圾后,機械人通過調(diào)用OpenMV硬件平臺自帶的OpenCV 庫里面的blob 色塊模塊,追蹤終點的顏色,通過閾值編輯器改變終點顏色的閾值來進行色塊追蹤,實時鎖定終點的位置坐標。
首先機械人將識別到的垃圾種類信息發(fā)送給OpenMV,OpenMV 根據(jù)垃圾種類選擇識別顏色色塊,機械人通過OpenMV 對終點色塊坐標進行識別,將顏色色塊中心在x軸上的坐標值傳遞給單片機,STM32單片機通過判斷其相對于鏡頭中點x方向上的距離,使用上述講述的PID 差速控制,調(diào)整機械人雙輪的相對速度,讓機械人往終點方向行駛。
當機械人行駛到終點附近時,使用TCS34725 模塊檢測終點色塊。TCS34725 模塊是一個顏色檢測傳感器,它集成了紅外阻擋濾光片,可以最大限度地減少入射光的紅外光譜成分,并可精確地進行顏色測量,我們使用它來檢測地面的顏色信息。STM32 主控板通過I2C 通信協(xié)議對其進行通信與控制,當機械人行駛到對應(yīng)的垃圾堆放色塊上時,通過TCS34725 模塊檢測,并將顏色信息發(fā)給主控,主控接收到色塊信息后,判斷顏色信息是否為堆放區(qū)色塊,當判斷為堆放區(qū)色塊時,將機械門打開,將垃圾放下。
本文的垃圾分類機械人基本實現(xiàn)了垃圾搜尋、垃圾識別、垃圾拾取、垃圾堆放的整體過程,實現(xiàn)了小巧化、整體化的設(shè)計,機械人的各個模塊不僅能獨立分工,還能協(xié)調(diào)工作,系統(tǒng)結(jié)構(gòu)緊湊而又靈活,功能強大,具有極大的可擴展性,可以減少人們分類生活垃圾的負擔,提高垃圾分類的效率。設(shè)計雖已完成并且實現(xiàn),但要承認的是設(shè)計中還有很多的不足,比如垃圾誤識別問題、機械人運動規(guī)劃問題、拾取微小垃圾的問題等等,需要不斷優(yōu)化和改進,希望本文能對垃圾分類事業(yè)有所幫助。