□朱煒義 王喜社 吳冠林
2016年,中央財經(jīng)領導小組第十四次會議提出“要加快建立分類投放、分類收集、分類運輸、分類處理的垃圾處理系統(tǒng),形成以法治為基礎、政府推動、全民參與、城鄉(xiāng)統(tǒng)籌、因地制宜的垃圾分類制度,努力提高垃圾分類制度覆蓋范圍”。目前垃圾分類方式多為人工分類,由于垃圾分類困難,步驟繁瑣,再加上人們對垃圾分類的意識與自覺性普遍不高,現(xiàn)有的人工分類方法使得垃圾分類制度在我國仍未完全落實。
垃圾分類自動化能大幅度提高垃圾分類效率,使垃圾在投入時就實現(xiàn)分類,便于后續(xù)的投放、轉(zhuǎn)運、回收處理,并且可以降低垃圾分類的人工成本,能夠有效解決人們對垃圾類別判斷困難,垃圾分類實施繁瑣、耽誤時間等問題。但目前垃圾自動分類裝置的設計多為單個垃圾的投放和分揀,故只能應用于理想條件下,和實際應用還有一定的距離。
本設計基于Kendryte k210、樹莓派和Arduino UNO平臺,結(jié)合深度學習領域內(nèi)的MobileNet V1圖像分類算法、opencv圖像處理庫和末端分揀機構實現(xiàn)垃圾的自動識別和分揀,能對投入的單個或者多個垃圾進行自動識別并分揀,與只能分類單個垃圾的同類設計而言,本設計更符合生活中垃圾投放的實際情況,能有效提高垃圾分類的效率。同時又不需要目標檢測算法要求的繁瑣的標注環(huán)節(jié),大幅度減少深度學習模型訓練的工作量,為垃圾分類自動化真正應用到實際生活提供新的思路。
(一)算法設計思路。機器視覺中主流的深度學習算法有圖像分類、目標檢測、語義分割和實例分割等。由于目標檢測、語義分割和實例分割三種算法均需要繁瑣的人工標注過程,而垃圾分類面對的對象是種類繁多的垃圾,采用這三種算法中的任何一種都將消耗較大的人工成本來進行數(shù)據(jù)集標注,并消耗較大的計算資源進行計算,使得對承載平臺的算力要求變高,成本隨之增加。而圖像分類是對圖像數(shù)據(jù)整體進行類別判斷的方法,不需要對采集對象進行標注。但是采用圖像分類算法的弊端是無法確定目標所屬像素點在圖像中的相對位置,不適于多個垃圾同時投入進行分類的情況。為了實現(xiàn)多垃圾自動分類,本設計采用圖像分類算法和opencv圖像處理庫相結(jié)合的設計方案,采用圖像分類算法對垃圾進行識別和分類,再使用opencv對圖像數(shù)據(jù)中的垃圾目標進行框選從而計算垃圾的相對位置,保證采集目標位置精準定位。
(二)機械結(jié)構設計思路。人們在日常生活中投放垃圾時常常有單個垃圾投放或多個垃圾同時投放兩種情況,兩種情況的分揀速度和難度差別較大。為了提高垃圾分揀效率,可以針對單個垃圾投放和多個垃圾投放設計不同的分揀方案。單垃圾分揀投放相對簡單,考慮采用可開合的分揀板和可旋轉(zhuǎn)的子垃圾桶,便于垃圾的投入以及提高垃圾掉入相應子垃圾桶的準確度。多垃圾分揀的關鍵點是將每個垃圾進行分離,考慮采用機械臂抓取的方式進行多垃圾的分離,從而實現(xiàn)點對點的分揀,可以保證穩(wěn)定性和準確度。
(三)垃圾桶工作過程。垃圾桶的工作過程如下:垃圾投放至分揀板上。單垃圾投放時,機械臂旋轉(zhuǎn)到分揀板上方,位于機械臂末端的攝像頭2識別垃圾類別,下方旋轉(zhuǎn)板帶動子垃圾桶旋轉(zhuǎn)使得對應垃圾類別的子垃圾桶旋轉(zhuǎn)至分揀板下方,分揀板打開,垃圾自動掉落,分類完成。多垃圾投放時,位于分揀板正上方的攝像頭1準確讀取垃圾的位置信息,機械臂根據(jù)位置信息依次夾取每個垃圾到識別板,同時攝像頭2對夾到識別板的每個垃圾進行識別,旋轉(zhuǎn)板再帶動對應的子垃圾桶旋轉(zhuǎn)至識別板下方,識別板打開,垃圾自動掉落,分類完成。機械結(jié)構原理圖如圖1所示。
圖1 垃圾桶結(jié)構原理圖
(一)控制平臺選型。目前,市面上可供選擇的控制平臺類型很多,功能各有特點。為實現(xiàn)垃圾桶的目標功能,控制平臺需要完成工作有:對攝像頭采集的圖像數(shù)據(jù)進行圖像分類、用opencv圖像庫實現(xiàn)垃圾的框選、各類傳感器及電機的控制和用PyQt5制作人機交互界面?;诓少彸杀竞鸵瓿傻墓ぷ骺紤],篩選出了以下控制平臺,在控制成本的條件下極大地滿足了產(chǎn)品功能的需求。
Kendryte k210是集成機器視覺定位于AI與IoT市場的的SoC。使用TSMC超低功耗的28納米制程,擁有RISC-V雙核64位處理器,其包含用于計算卷積人工神經(jīng)網(wǎng)絡的KPU。同時k210具備快速傅里葉變換加速器,可以進行高性能復數(shù)FFT計算[3]。對于大多數(shù)機器學習算法,k210具備高性能處理能力,足以承載MobileNet V1圖像分類算法。
需要用到的opencv及PyQt5均需運行在操作系統(tǒng)上。樹莓派(Raspberry Pi)4B是只有信用卡大小的微型電腦,其系統(tǒng)基于Linux,具有CSI攝像頭接口和USB接口,能夠連接各種攝像頭,采用28納米制程的博通BCM2711,內(nèi)置4核Cortex-A72,主頻為1.5GHz,采用雙MICRO HDMI接口,支持4K分辨率。樹莓派4B能在有限的成本中極大滿足本設計的系統(tǒng)及顯示要求。
Arduino UNO是基于ATmega328P的IC。它有14個數(shù)字I/O口,其中6個可用于PWM、6個模擬輸入引腳,一個USB接口,一個DC接口,一個ICSP接口,一個串口[3]。本設計需要用到數(shù)個舵機及步進電機,Arduino UNO具有接口數(shù)量優(yōu)勢。
基于以上平臺特點,選用Kendryte k210平臺承載MobileNetV1圖像分類算法,通過所連的攝像頭采集圖像數(shù)據(jù),并進行識別,樹莓派運行基于opencv的算法及基于PyQt5的UI界面,實現(xiàn)垃圾坐標計算和人機交互的功能。Arduino UNO用來與末端分揀機構直連,保證分揀的機械過程準確實現(xiàn)。
(二)電機選型。電機按電源類型可分為交流電機和直流電機,交流電機結(jié)構簡單、制造成本低、維護維修簡單經(jīng)濟,但其受控性能較差,難以方便實現(xiàn)調(diào)速等功能,且一般交流電機用于功率較大的場合。本設計對電機的要求主要是特性、精度和快速響應等方面,分揀板和識別板的張合以及底盤的旋轉(zhuǎn)均需要能夠旋轉(zhuǎn)一定的角度,而機械臂的移動更是需要電機能夠旋轉(zhuǎn)精準的角度,而直流電機可以平滑調(diào)速、轉(zhuǎn)矩較大且便于移動,故選用直流電機。
舵機是一種位置伺服電機,具有可控性好、穩(wěn)定性高和適應性強的基本性能。在信號到來之前,轉(zhuǎn)子靜止不動。信號到來之后轉(zhuǎn)子立即轉(zhuǎn)動,信號消失時,轉(zhuǎn)子能及時自行停轉(zhuǎn),且其轉(zhuǎn)動角度取決于輸入的PWM信號的占空比,適用于需要變換給定角度并能保持的控制系統(tǒng)。
步進電機是一種將離散的電脈沖信號轉(zhuǎn)化為角位移或者線位移的電動機。根據(jù)輸入的脈沖信號,每改變一次通電狀態(tài),步進電機就前進一定的角度。若不改變通電狀態(tài),則其保持在一定的位置而靜止。其具有精度高、慣性小的特定。在自動化設備中得到廣泛的應用。
因此,本設計選擇舵機和步進電機作為傳動電機。由于旋轉(zhuǎn)底盤承載重量較大,因此選擇360°磁編碼工業(yè)舵機驅(qū)動。而識別板和分揀板選擇常見的MG996R模擬舵機驅(qū)動,價格低廉,性能較為穩(wěn)定,其扭矩能達到9kg/cm。機械臂是多垃圾分揀的關鍵結(jié)構,對精度要求較高,選用NEMA17HS3401S步進電機驅(qū)動。
(三)電源電路。垃圾桶由220V的電源進行供電。220V的電源經(jīng)過開關電源變壓、整流為24V的直流電,再通過XL4015直流變直流降壓模塊將24V直流降為12V、6.8V和5V,分別給不同的部件進行供電。其中步進電機和旋轉(zhuǎn)底盤的舵機采用12V供電,分揀板和識別板的舵機采用6.8V供電,3個主控平臺均采用5V供電。
(四)硬件連接。結(jié)合上述三款主控平臺的特點及分工,為實現(xiàn)垃圾桶的功能要求,為控制平臺設計外圍電路。模塊和器件的選用以及連接方式如下:樹莓派通過CSI接口與攝像頭相連,采集分揀板上的圖像信息,通過HDMI接口與一塊7寸IPS觸摸屏連接通過基于PyQt5的UI界面實現(xiàn)人機交互功能。Kendryte k210連接一塊小型TFT彩屏與一個ov5640攝像頭,通過ov5640采集識別板上的圖像信息,通過SPI接口與TFT彩屏連接獲取實時識別動態(tài)。Arduino UNO作為末端分揀機構的主控板,通過cnc shield v3擴展板與3個NEMA17HS3401S步進電機、4個MG996R舵機和1個360°磁編碼110kg工業(yè)級舵機相連,擴展板設計有A4988步進電機驅(qū)動模塊接口,方便步進電機的驅(qū)動,步進電機控制機械臂的移動,MG996R控制分揀板和識別板的開合,110kg大舵機為旋轉(zhuǎn)板的旋轉(zhuǎn)提供動力。三個控制平臺通過異步全雙工串口進行通信,根據(jù)自身特點及優(yōu)勢進行分工協(xié)作,實現(xiàn)垃圾桶自動分揀的完整功能。硬件連接框圖如圖2所示。
圖2 硬件連接圖
為實現(xiàn)垃圾桶自動分揀功能,在算法方面主要對三個部分進行設計。圖像分類算法實現(xiàn)垃圾類別的判斷。物體框選算法實現(xiàn)讀取每個垃圾在識別板上的坐標,以便進一步驅(qū)使機械臂抓取。坐標轉(zhuǎn)換算法將攝像頭讀取的坐標信息轉(zhuǎn)換為供機械臂執(zhí)行的位置信息,驅(qū)動機械臂準確抓取每個垃圾,達到多垃圾分揀的效果。以下為各部分算法具體實現(xiàn)過程。
(一)圖像分類算法。深度學習模型需要部署于移動端,選用一個體積小、模型參量少的網(wǎng)絡尤為關鍵。MobileNet V1是一種體積較小、計算量較少、適用于移動設備的卷積神經(jīng)網(wǎng)絡,其用深度可分離卷積代替普通的卷積,并使用寬度乘數(shù)減少參數(shù)量[4]。模型訓練過程為:將MobileNet V1預訓練模型部署于Tensorflow框架上,傳入數(shù)據(jù)集,經(jīng)過足夠批次的迭代,loss值趨于0,mAP值趨于1,停止訓練,將訓練得到的ckpt后綴的模型轉(zhuǎn)化為tflite模型再通過NNCase轉(zhuǎn)化為kmodelv3模型即可部署于k210系統(tǒng)板上。傳入攝像頭所采集的圖像數(shù)據(jù)到模型,將會傳出圖像對應的類別以及準確度。
(二)物體框選算法。垃圾桶的識別板背景單一,垃圾所屬的像素點的值與背景差異較大,利用這一特點,通過opencv進行一系列的圖像處理,突出垃圾在圖像中所屬的像素,并且求出最小外接矩形,最小外接矩形對角線中點的坐標即為垃圾中心的坐標,由此可以讀取垃圾的相對位置,便于機械臂的夾取。運算過程為:輸入圖像,用sobel算子求出圖像梯度較大處并突出像素點,用canny算法進行邊緣檢測,將兩步操作得到的數(shù)據(jù)相與后得到粗略輪廓圖,將原圖像轉(zhuǎn)化為hsv色域,設置合適的閾值突出顯示垃圾像素點,將得到的圖像與粗略輪廓圖相與,即可得到較為明顯的輪廓圖,再經(jīng)過多次的腐蝕膨脹,即可將垃圾像素點與背景像素點二值化分離,最后使用opencv的findContours方法畫出垃圾的最小外接矩形,即完整的框選出垃圾??蜻x算法的計算流程如圖3所示。
圖3 框選算法計算流程
(三)坐標轉(zhuǎn)換算法。整套系統(tǒng)擁有3個坐標系,分別是攝像頭采集的圖像坐標系、分揀板的實物坐標系以及機械臂坐標系,要從圖像坐標系映射到實物坐標系最終轉(zhuǎn)化為機械臂坐標系的坐標才能作為機械臂的輸入數(shù)據(jù)供其抓取。
由于攝像頭和分揀板的相對位置固定不變,故選取一為基準點,并設該點為實物坐標系的原點,得到它在攝像頭坐標系中的固定坐標,則垃圾的實物坐標系坐標=(垃圾的圖像坐標系坐標-圖像坐標系基準點坐標)×比例系數(shù)。其中,實物坐標系坐標為垃圾距原點的實際距離,圖像坐標系坐標為垃圾中心點的像素位置。比例系數(shù)為兩坐標系中同一段距離數(shù)值之比。
機械臂坐標系由實物坐標系都是以實際距離為尺度,差別僅在于原點不一致,進行相應的平移即可達到坐標系轉(zhuǎn)換。機械臂的運動行程的求解采用逆向運動學,即在給定末端的空間位置的前提下,求解關節(jié)需要呈多少角度。具體計算公式如下:
θ1=arctan(x/y)-arctan(L2·sinθ2)/(L1+L2·cosθ2)
示意圖如圖4所示。
圖4 機械臂運動算法示意圖
本文提出了一種垃圾自動分類的實施方案,綜合運用了機器視覺和AI技術,使用圖像分類算法進行垃圾的識別以及opencv進行垃圾的框選,為解決使用目標檢測算法時標注數(shù)據(jù)集繁瑣這一問題提供了一條新的思路[5]。在滿足產(chǎn)品功能要求的前提下選用了k210、樹莓派和Arduino三款性價比完美的控制平臺,極大地降低了產(chǎn)品成本,實現(xiàn)了垃圾分類自動化。該設計方案的成功實現(xiàn),有利于自動分類垃圾桶的推廣和普及應用,為推動我國垃圾分類制度的全面實施貢獻力量。