陳志鵬,徐廣淶,陳顯揚,陳韻律,陳西明,李德榮*
(1.廣東海洋大學 電子與信息工程學院,廣東 湛江 524088;2.廣東海洋大學 機械與動力工程學院,廣東 湛江 524088)
在生產制造業中,物料分揀機器人成為了產業中承擔物料分揀任務的重要一環。機器人所執行的物料分揀任務是將生產線上傳輸的產品或原材料通過機器視覺或傳感器等方式加以分類或甄別[1]。
該文在2019年廣東省工科大學生實驗綜合技能競賽的背景下,設計出一種基于OpenCV的物料分揀搬運機器人,可通過視覺算法識別出賽場元素,自主拾取物料并以特定方式投放至儲存區,任務執行高效而準確。
(1)機器人須有手爪且為整體制作。
(2)機器人需完全自主運行,不得與外界通訊。
(3)比賽場地設有機器人出發區、物料投放區、物料儲存區、物料發射區。物料投放區為地面上白色正方形區域,物料儲存區為粉紅色收集筐,物料發射區為三個400 mm大小的圓形區域,與發射區距離相同。場地示意圖及具體尺寸如圖1所示。
(4)物料為紅色或藍色直徑為40 mm的乒乓球,在比賽開始前從物料投放區被放出,隨機滾到場地任意位置。機器人從出發區出發,在給定時間內進行特定顏色的物料抓取,并移動至發射區將物料投入物料儲存區中,過程中不得儲存球。其中藍球與紅球各20個。

圖1 場地示意圖
物料分揀搬運機器人的結構設計上包含行走結構、圖像采集結構、物料發射結構、機械臂。結構各部分協調配合,使得機器人工作穩定高效。物料分揀搬運機器人三維建模圖如圖2所示。

1、直流電機; 2、電機驅動; 3、機械臂 4、樹莓派; 5、集球漏斗;6、攝像頭;7、數字舵機; 8、摩擦輪; 9、全向輪
(1)行走裝置。
裝有全向輪的電機在底盤上呈圓周分布,能實現原地旋轉與全方位移動,旋轉角度控制精度高,能夠完成復雜的路線。
(2)圖像采集結構。
攝像頭通過3D打印件進行開槽限位和壓蓋連接的方式安裝在可兩個自由度的攝像頭云臺上,云臺安裝于由鋁棒作為支撐的亞克力平面上,保證了攝像頭充足的視野以及攝像頭轉動的流暢性。
(3)物料發射結構。
采用一對摩擦輪電機組與水平面成一定角度,當其以不同速度轉動時,可將從集球漏斗中滑出的球形物料射出到不同位置。
(4)機械臂。
由于規則要求手爪設計一體化,基于球形物料形狀,采用包夾式的結構,由齒輪直接與爪子相連構成一體化手爪,通過齒輪副轉動來實現夾持動作。小型大扭矩舵機連接U型支架,使機械臂能夠翻轉,便于機器人對物料進行顏色復查以及將物料放入漏斗進行物料發射。機械臂設計如圖3所示。

圖3 機械臂設計
選用STM32F407ZGT6芯片及相關器件構成主控制系統,眾多IO口便于驅動機器人外設。主控系統支持多種通信接口,便于與樹莓派交互數據。
采用樹莓派4B與120 fps攝像頭構建識別系統。樹莓派4B是一款微型單板計算機,具有多種通信接口以及豐富的網絡功能,方便與主控制系統進行通信連接;高性能博通A72處理器以及4 GB的運行內存為基于OpenCV的實時圖像識別功能奠定了基礎;樹莓派一般搭載Linux系統,適合嵌入式開發[2]。綜合考慮樹莓派的運算能力及圖像質量,選用幀率為120 fps的USB攝像頭,圖像尺寸480×320像素。
機器人首先在場地的任意位置自轉尋找物料,如果發現目標則靠近并抓取。抓取之后檢驗顏色是否正確,若正確則自轉尋找物料發射區,找到發射區并移動至發射區,此時再自轉尋找物料收集區,找到并對準物料收集區進行物料發射動作。執行完以上步驟則為一個流程,重復該工作流程直至場地無物料或既定時間結束,則流程結束。控制程序流程如圖4所示。

圖4 控制程序流程
OpenCV是Intel公司開發的開源計算機視覺算法庫[3],擁有豐富的函數功能以及強大的圖像和矩陣運算能力,且具有平臺無關性和程序運行的實時性,因而成為了機器人實時識別算法庫的最佳選擇[4]。
識別系統在硬件上包含樹莓派4B與120 fps攝像頭,軟件部分上則為基于OpenCV設計面向具體任務的識別算法。識別系統的運行受主控制系統控制。
為滿足機器人的功能要求,識別任務有四種,分別是識別球型物料、識別物料發射區、識別儲存區和顏色復查。由于目標的主要特征之一是顏色,所以所有識別任務的第一步都是經顏色分割生成二值圖。對于不同的任務,第二步一般有所不同,但輸入均為二值圖,除了“顏色復查”外,輸出均為坐標值。識別算法可能的執行路徑如圖5所示。
在如今的顏色分割算法的設計上,往往將灰度圖像分割方法應用于不同的顏色空間,并且可直接應用于每個顏色分量上,其結果再通過一定的方式進行組合,即可獲取最后的分割結果[5]。

圖5 識別算法整體流程
采用顏色閾值二值化的方法對彩色圖像進行顏色分割。在三維直角坐標系中,由一組顏色閾值上下限包圍的空間是一個長方體,長方體內每個點的坐標對應一組顏色值[6-7]。HSV或Lab顏色空間用于描述人眼對顏色感受,由閾值上下限形成的長方體中更多地包含了目標的顏色,且更少地包含了其他的顏色。相對于RGB顏色空間,由于在實際中操作中,RGB顏色表示容易受到強光、弱光、陰影等因素的影響,因而選擇在HSV或Lab顏色空間中進行顏色分割[8]。
由于OpenCV默認采用BGR顏色空間,所以讀取圖像后先將圖像轉換到HSV或Lab顏色空間,并使用inRange函數將圖像二值化,最后經形態學操作去除噪聲,完成顏色分割。對于各識別任務,轉換到HSV還是Lab空間由實驗效果確定。物料顏色分割效果如圖6所示。

圖6 物料顏色分割效果
顏色分割將具有特定顏色的區域篩選出來,對于這些區域,提取輪廓并考察其幾何特征進行進一步篩選,從而識別出目標。
輪廓檢測是基于在區域邊緣上的像素灰度變化比較劇烈,試圖通過檢測不同區域的邊緣來解決圖像分割問題[9]。
利用findContours()函數提取出二值圖中的所有輪廓,然后用相關函數求出輪廓的幾何參數[10]。二值圖中尺寸最大的區域往往就是目標,則輪廓的最小外接圓半徑最大的區域就是目標。對于球型物料來說,由于近大遠小,輪廓的最小外接圓半徑最大的區域往往是最近的球型物料。于是,利用輪廓的幾何特征即可將目標識別出來。如果識別到目標,輸出的坐標為目標最小外接圓的圓心坐標,如果沒有識別到目標,輸出的坐標為(-1,-1)。
對于識別球型物料的任務,由于場地上存在多個目標,所以一經識別立即通過CAMshift跟蹤算法將其“鎖定”,直到物料跟蹤任務完成;若跟蹤過程中目標“丟失”,便重復識別到跟蹤的步驟。
mean-shift算法的思想是,任意給定一個初始窗口,使目標的部分區域落在窗口內,然后逐步移動窗口,直到窗口中心與目標的質心重合(在給定精度內)[11]。由于運動可能導致物體大小的改變,因此衍生出CAMshift算法[12],該算法在mean-shift的基礎上,可以自動更新窗口的大小和朝向以適應物體的變化[13]。

圖7 窗口尺寸對跟蹤效果的影響
為達到更好的目標跟蹤效果,需要進一步調整窗口的尺寸。為了說明這個問題,考察如圖7所示的運動。第一幀中,物料位置如圖(a)所示,使用CAMshift算法計算左側物料所在的窗口,將其在圖中畫出,可知窗口尺寸正好貼合目標。將第一幀得到的窗口作為第二幀輸入跟蹤算法的初始窗口。第二幀的情形如圖(b)所示,如果運動速度過快,則物料可能運動到窗口之外,導致目標跟蹤失敗。而如果將第一幀得到的窗口尺寸擴大為原來的1.6倍,再作為第二幀的初始窗口,則第二幀中左側物料仍有一部分落入其中,如圖(c)所示。畫出第二幀中擴大后的初始窗口和CAMshift算法給出的新窗口,可看到,實現了良好的跟蹤效果。若目標附近存在其他物體,過大的窗口尺寸又容易導致最終窗口中心與二者共同的質心重合,造成“連體”現象。如圖(d)所示,第二幀中,初始窗口尺寸擴大為原來的2.1倍,結果附近的物料也有部分落入其中,導致計算出的新窗口將兩個物料都包含在內。經過試驗,窗口尺寸擴大為原來的1.2至1.5倍為宜,同時限制窗口的最大尺寸。
為了判斷是否抓取到正確的物料,由主控制系統發送一條指令和物料的坐標,識別系統檢查該坐標附近的顏色。采用前一識別任務的閾值作顏色分割,因此對于正確顏色的物料,二值圖中該坐標附近的像素應為白色。實際做法是計算給定坐標周圍一定區間內,白色像素點所占的比例,以應對因二值圖質量不佳的情況。
機器人通過網頁實時顯示機器人在工作時對目標的識別效果以及實時參數信息,方便在調試時進行參數的調節;機器人的主從通信即為以STM32為核心的主控制系統與作為從設備的樹莓派之間的通信[14],主要為指令以及坐標的收發。
在OpenCV項目開發中,將圖片用imwrite()函數保存,經服務器程序可在網頁上顯示出該圖片。
采用Flask框架編寫服務器程序[15],響應靜態頁面。利用HTML和JavaScript構建網頁,每隔20 ms至50 ms向服務器請求圖片并顯示。局域網內的設備均可通過瀏覽器看到實時圖像。
實際運行時,樹莓派與手機或電腦通過連接同一Wi-Fi而處于同一局域網,啟動服務器程序后,使用手機或電腦的瀏覽器內訪問微型網站,即可看到實時圖像。。
機器人識別系統與主控制系統通過串口交互[16]。基于分層的思想,設計了兩層通信協議。底層采用串口通信協議,用于收發ASCII字符。在ASCII可見字符的基礎上,約定數據幀的格式為:
在實驗場地模擬實際比賽環境,機器人在場地內分揀與搬運隨機灑落在場地的紅色與藍色物料,并定時2分鐘,計算機器人在此時間內分揀并投入的到物料收集筐中的物料數目。首先對藍色物料進行分揀搬運實驗,實驗結果如表1所示。

表1 藍色物料識別搬運數目情況
同樣,在相同環境下,對紅色物料進行同樣的分揀搬運實驗,實驗結果如表2所示。

表2 紅色物料識別搬運數目情況
從以上的實驗記錄可以觀察出經過多次實驗并針對機器人自身痛點進行不斷優化,機器人識別精度達到97%,在效率上平均每個球形物料分揀搬運時間為7.64秒,足以滿足比賽精度及效率需求。機器人實物如圖8所示。

圖8 機器人實物
文章以大學生學科競賽為背景,提出了一款基于OpenCV的物料分揀搬運機器人的設計。該機器人的主要核心技術是對物料以及場地環境的識別。在識別算法開發上,花費的時間最多,從簡單的物料分揀到物料發射,整個識別流程的算法改進許多遍,從光流跟蹤到CAMshift算法,經過了許許多多科學的計算,深刻明白了機器人自動化一切源自數學物理方法。該機器人在物料分揀搬運的任務中,準確率較高,在特定場合下加以改造,便可應用于各種工作環境的各種物料分揀與甄別工作。所設計的基于OpenCV的物料分揀搬運機器人在2019年工科大學生實驗綜合技能競賽中,榮獲一等獎。