楊廣峰
垃圾分類搬運是垃圾分類中的一項重要的工作,其中不同垃圾桶的分類識別是一個重要內容,它屬于物體檢測,是計算機視覺中的經(jīng)典問題之一。其任務是用方框去標出圖像中物體的位置,并給出物體的類別。
本文中借助物體檢測,打造出一個基于樹莓派的智能垃圾識別搬運機器人,智能識別垃圾筒,自動計算機器人與垃圾筒的距離,從而實現(xiàn)智能搬運的功能。
樹莓派六足機器人一套(六足機器人一個,樹莓派4B一塊,古德微擴展板一塊,電機驅動板一個,USB攝像頭一個),目標物體兩個(紅色、藍色海綿正方體各一個,邊長為10厘米)(如圖1)。
登錄網(wǎng)站,開始“物體檢測”。首先,訪問古德微機器人網(wǎng)站(http://www.gdwrobot.cn),登錄進入自己的賬號后點擊“設備控制”進入“積木”界面;接著,點擊“更多功能”按鈕,再點擊左下角的“機器學習”項,頁面顯示有“圖片分類”“物體檢測”和“聲音檢測”三類功能應用,點擊“物體分類”中的“遠程使用樹莓派攝像頭進行物體分類”按鈕(如圖2)。
通過拍照采集并標注目標訓練機器人。我們進入“機器學習—物體檢測訓練(遠程采集樹莓派圖片)”頁面,點擊頁面左側的“拍照”按鈕即可進行數(shù)據(jù)的采集。不斷變換機器人的位置與角度,分別點擊“拍照”按鈕進行目標圖片的添加(如圖3)。
接下來,對采樣的圖片進行物體的標注。選擇第一張圖片,拖動光標對紅色物體進行框選,輸入物體的分類名稱“紅色”,再拖動光標對藍色物體進行框選,輸入物體的分類名稱“藍色”,點擊“保存并切換下一張圖片”,完成第一張圖片的標注,并開啟第二張圖片的標注(如圖4)。
全部標注完成后,點擊“開始訓練”按鈕對采集的圖片進行訓練。
訓練結束后即可再將機器放置在任意位置,對其預覽圖片中的物體進行分類驗證,預覽圖像中顯示目標物體檢測框,同時還顯示目標物體的分類與置信度百分比:“紅色:87.79%、藍色:79.09%”(如圖5)。
拍照采集與訓練驗證均完成之后,點擊右下角的“下載樹莓派上使用的模型”按鈕,很快就會有“模型轉換下載完成”的提示,這時,相關文件已被下載到樹莓派的/home/pi/model/object_detection目錄下,模型文件為model.tflite,對應標簽文件為labels.txt。通過Windows的遠程桌面連接進入樹莓派進行查看,labels.txt的文件內容包含兩行內容,依次對應訓練模型的分類名稱:“紅色、藍色”(如圖6)。
本例中,指定將地圖前方的目標物體(不可回收垃圾,用紅色物體代替)智能搬運到地圖左方的目標物體(不可回收垃圾,用紅色物體代替)存放區(qū)。編程可分為兩步,第一步是機器人獲取當前距離(機器人與物體之間的距離),第二步是根據(jù)當前距離計算步數(shù),前進并夾取物體。其中第一步獲取當前距離用到了攝像頭拍照、物體檢測、讀取檢測結果、計算距離與步數(shù)。
使用機器人攝像頭對前方拍照,調用物體檢測模型對照片進行檢測,返回檢測結果列表(如圖7)。
這個函數(shù)是從檢測結果列表中找到我們的目標(紅色物體)的名稱和置信度。
通過判斷檢測結果列表的長度是否大于0來區(qū)分有沒有檢測結果,沒有檢測結果則需要跳出判斷重新檢測;如果有檢測結果,則對檢測結果進行下一步的處理。首先,循環(huán)讀取檢測結果列表中的每一個檢測結果字典,分別讀出這個檢測結果字典中的置信度和物體名稱。然后判斷物體名稱為否是紅色物體,如果符合條件,則找到了我們的目標名稱和置信度,中斷循環(huán),準備下一個環(huán)節(jié)(如圖8)。
本函數(shù)根據(jù)物體檢測中所獲取的矩形檢測框的長度來推算機器人與目標物體的當前距離,其中使用的公式為:140×300÷檢測框長度,這里的140是機器人的最佳夾取距離,300是機器人在最佳夾取距離時所拍攝的照片中檢測框的橫向長度。
首先,從檢測結果字典中獲取檢測框的位置列表,這個位置列表中記錄了檢測框的左上和右下兩個點的橫、縱坐標值。然后,分別獲取兩個點的橫坐標值,計算出檢測框的物體橫向像素大?。M向長度),根據(jù)計算公式得到機器人與目標物體的當前距離。接著計算出機器人到達物體所需要的前進步數(shù),計算公式為[(當前距離-140)÷50 ]+1。這里的140仍然是機器人的最佳夾取距離,50為步幅,計算步數(shù)的基本公式為:步數(shù)=(當前距離-夾取距離)÷步幅,最后的1是為配合取整而使用的修正值(如圖9)。
首先,控制機器人向前運動至最佳夾取位置,并夾取物體。然后,控制機器人先向后移動,再左轉90度,再向前,到達指定的投放位置。最后,控制機器人放下物體完成垃圾的智能搬運工作(如圖10)。
為了調整攝像頭的最佳拍攝姿態(tài),我們分別對控制攝像頭的兩個舵機做了下面的設置,完成對機器人的初始化。然后,將上面的分步函數(shù)組合,完成主程序(如圖11)。
經(jīng)過多次測試,機器人均成功夾取了目標物體,實現(xiàn)了垃圾的智能搬運。本次我們通過物體檢測識別目標物體,并借助程序返回的物體檢測方框數(shù)據(jù)進行距離的測算,實現(xiàn)了機器人的智能搬運。大家也可以結合其他場景,給物體檢測賦予更多的實際意義。