陳志鵬,徐廣淶,陳顯揚,陳韻律,陳西明,李德榮*
(1.廣東海洋大學(xué) 電子與信息工程學(xué)院,廣東 湛江 524088;2.廣東海洋大學(xué) 機械與動力工程學(xué)院,廣東 湛江 524088)
在生產(chǎn)制造業(yè)中,物料分揀機器人成為了產(chǎn)業(yè)中承擔(dān)物料分揀任務(wù)的重要一環(huán)。機器人所執(zhí)行的物料分揀任務(wù)是將生產(chǎn)線上傳輸?shù)漠a(chǎn)品或原材料通過機器視覺或傳感器等方式加以分類或甄別[1]。
該文在2019年廣東省工科大學(xué)生實驗綜合技能競賽的背景下,設(shè)計出一種基于OpenCV的物料分揀搬運機器人,可通過視覺算法識別出賽場元素,自主拾取物料并以特定方式投放至儲存區(qū),任務(wù)執(zhí)行高效而準(zhǔn)確。
(1)機器人須有手爪且為整體制作。
(2)機器人需完全自主運行,不得與外界通訊。
(3)比賽場地設(shè)有機器人出發(fā)區(qū)、物料投放區(qū)、物料儲存區(qū)、物料發(fā)射區(qū)。物料投放區(qū)為地面上白色正方形區(qū)域,物料儲存區(qū)為粉紅色收集筐,物料發(fā)射區(qū)為三個400 mm大小的圓形區(qū)域,與發(fā)射區(qū)距離相同。場地示意圖及具體尺寸如圖1所示。
(4)物料為紅色或藍色直徑為40 mm的乒乓球,在比賽開始前從物料投放區(qū)被放出,隨機滾到場地任意位置。機器人從出發(fā)區(qū)出發(fā),在給定時間內(nèi)進行特定顏色的物料抓取,并移動至發(fā)射區(qū)將物料投入物料儲存區(qū)中,過程中不得儲存球。其中藍球與紅球各20個。
圖1 場地示意圖
物料分揀搬運機器人的結(jié)構(gòu)設(shè)計上包含行走結(jié)構(gòu)、圖像采集結(jié)構(gòu)、物料發(fā)射結(jié)構(gòu)、機械臂。結(jié)構(gòu)各部分協(xié)調(diào)配合,使得機器人工作穩(wěn)定高效。物料分揀搬運機器人三維建模圖如圖2所示。
1、直流電機; 2、電機驅(qū)動; 3、機械臂 4、樹莓派; 5、集球漏斗;6、攝像頭;7、數(shù)字舵機; 8、摩擦輪; 9、全向輪
(1)行走裝置。
裝有全向輪的電機在底盤上呈圓周分布,能實現(xiàn)原地旋轉(zhuǎn)與全方位移動,旋轉(zhuǎn)角度控制精度高,能夠完成復(fù)雜的路線。
(2)圖像采集結(jié)構(gòu)。
攝像頭通過3D打印件進行開槽限位和壓蓋連接的方式安裝在可兩個自由度的攝像頭云臺上,云臺安裝于由鋁棒作為支撐的亞克力平面上,保證了攝像頭充足的視野以及攝像頭轉(zhuǎn)動的流暢性。
(3)物料發(fā)射結(jié)構(gòu)。
采用一對摩擦輪電機組與水平面成一定角度,當(dāng)其以不同速度轉(zhuǎn)動時,可將從集球漏斗中滑出的球形物料射出到不同位置。
(4)機械臂。
由于規(guī)則要求手爪設(shè)計一體化,基于球形物料形狀,采用包夾式的結(jié)構(gòu),由齒輪直接與爪子相連構(gòu)成一體化手爪,通過齒輪副轉(zhuǎn)動來實現(xiàn)夾持動作。小型大扭矩舵機連接U型支架,使機械臂能夠翻轉(zhuǎn),便于機器人對物料進行顏色復(fù)查以及將物料放入漏斗進行物料發(fā)射。機械臂設(shè)計如圖3所示。
圖3 機械臂設(shè)計
選用STM32F407ZGT6芯片及相關(guān)器件構(gòu)成主控制系統(tǒng),眾多IO口便于驅(qū)動機器人外設(shè)。主控系統(tǒng)支持多種通信接口,便于與樹莓派交互數(shù)據(jù)。
采用樹莓派4B與120 fps攝像頭構(gòu)建識別系統(tǒng)。樹莓派4B是一款微型單板計算機,具有多種通信接口以及豐富的網(wǎng)絡(luò)功能,方便與主控制系統(tǒng)進行通信連接;高性能博通A72處理器以及4 GB的運行內(nèi)存為基于OpenCV的實時圖像識別功能奠定了基礎(chǔ);樹莓派一般搭載Linux系統(tǒng),適合嵌入式開發(fā)[2]。綜合考慮樹莓派的運算能力及圖像質(zhì)量,選用幀率為120 fps的USB攝像頭,圖像尺寸480×320像素。
機器人首先在場地的任意位置自轉(zhuǎn)尋找物料,如果發(fā)現(xiàn)目標(biāo)則靠近并抓取。抓取之后檢驗顏色是否正確,若正確則自轉(zhuǎn)尋找物料發(fā)射區(qū),找到發(fā)射區(qū)并移動至發(fā)射區(qū),此時再自轉(zhuǎn)尋找物料收集區(qū),找到并對準(zhǔn)物料收集區(qū)進行物料發(fā)射動作。執(zhí)行完以上步驟則為一個流程,重復(fù)該工作流程直至場地?zé)o物料或既定時間結(jié)束,則流程結(jié)束??刂瞥绦蛄鞒倘鐖D4所示。
圖4 控制程序流程
OpenCV是Intel公司開發(fā)的開源計算機視覺算法庫[3],擁有豐富的函數(shù)功能以及強大的圖像和矩陣運算能力,且具有平臺無關(guān)性和程序運行的實時性,因而成為了機器人實時識別算法庫的最佳選擇[4]。
識別系統(tǒng)在硬件上包含樹莓派4B與120 fps攝像頭,軟件部分上則為基于OpenCV設(shè)計面向具體任務(wù)的識別算法。識別系統(tǒng)的運行受主控制系統(tǒng)控制。
為滿足機器人的功能要求,識別任務(wù)有四種,分別是識別球型物料、識別物料發(fā)射區(qū)、識別儲存區(qū)和顏色復(fù)查。由于目標(biāo)的主要特征之一是顏色,所以所有識別任務(wù)的第一步都是經(jīng)顏色分割生成二值圖。對于不同的任務(wù),第二步一般有所不同,但輸入均為二值圖,除了“顏色復(fù)查”外,輸出均為坐標(biāo)值。識別算法可能的執(zhí)行路徑如圖5所示。
在如今的顏色分割算法的設(shè)計上,往往將灰度圖像分割方法應(yīng)用于不同的顏色空間,并且可直接應(yīng)用于每個顏色分量上,其結(jié)果再通過一定的方式進行組合,即可獲取最后的分割結(jié)果[5]。
圖5 識別算法整體流程
采用顏色閾值二值化的方法對彩色圖像進行顏色分割。在三維直角坐標(biāo)系中,由一組顏色閾值上下限包圍的空間是一個長方體,長方體內(nèi)每個點的坐標(biāo)對應(yīng)一組顏色值[6-7]。HSV或Lab顏色空間用于描述人眼對顏色感受,由閾值上下限形成的長方體中更多地包含了目標(biāo)的顏色,且更少地包含了其他的顏色。相對于RGB顏色空間,由于在實際中操作中,RGB顏色表示容易受到強光、弱光、陰影等因素的影響,因而選擇在HSV或Lab顏色空間中進行顏色分割[8]。
由于OpenCV默認(rèn)采用BGR顏色空間,所以讀取圖像后先將圖像轉(zhuǎn)換到HSV或Lab顏色空間,并使用inRange函數(shù)將圖像二值化,最后經(jīng)形態(tài)學(xué)操作去除噪聲,完成顏色分割。對于各識別任務(wù),轉(zhuǎn)換到HSV還是Lab空間由實驗效果確定。物料顏色分割效果如圖6所示。
圖6 物料顏色分割效果
顏色分割將具有特定顏色的區(qū)域篩選出來,對于這些區(qū)域,提取輪廓并考察其幾何特征進行進一步篩選,從而識別出目標(biāo)。
輪廓檢測是基于在區(qū)域邊緣上的像素灰度變化比較劇烈,試圖通過檢測不同區(qū)域的邊緣來解決圖像分割問題[9]。
利用findContours()函數(shù)提取出二值圖中的所有輪廓,然后用相關(guān)函數(shù)求出輪廓的幾何參數(shù)[10]。二值圖中尺寸最大的區(qū)域往往就是目標(biāo),則輪廓的最小外接圓半徑最大的區(qū)域就是目標(biāo)。對于球型物料來說,由于近大遠小,輪廓的最小外接圓半徑最大的區(qū)域往往是最近的球型物料。于是,利用輪廓的幾何特征即可將目標(biāo)識別出來。如果識別到目標(biāo),輸出的坐標(biāo)為目標(biāo)最小外接圓的圓心坐標(biāo),如果沒有識別到目標(biāo),輸出的坐標(biāo)為(-1,-1)。
對于識別球型物料的任務(wù),由于場地上存在多個目標(biāo),所以一經(jīng)識別立即通過CAMshift跟蹤算法將其“鎖定”,直到物料跟蹤任務(wù)完成;若跟蹤過程中目標(biāo)“丟失”,便重復(fù)識別到跟蹤的步驟。
mean-shift算法的思想是,任意給定一個初始窗口,使目標(biāo)的部分區(qū)域落在窗口內(nèi),然后逐步移動窗口,直到窗口中心與目標(biāo)的質(zhì)心重合(在給定精度內(nèi))[11]。由于運動可能導(dǎo)致物體大小的改變,因此衍生出CAMshift算法[12],該算法在mean-shift的基礎(chǔ)上,可以自動更新窗口的大小和朝向以適應(yīng)物體的變化[13]。
圖7 窗口尺寸對跟蹤效果的影響
為達到更好的目標(biāo)跟蹤效果,需要進一步調(diào)整窗口的尺寸。為了說明這個問題,考察如圖7所示的運動。第一幀中,物料位置如圖(a)所示,使用CAMshift算法計算左側(cè)物料所在的窗口,將其在圖中畫出,可知窗口尺寸正好貼合目標(biāo)。將第一幀得到的窗口作為第二幀輸入跟蹤算法的初始窗口。第二幀的情形如圖(b)所示,如果運動速度過快,則物料可能運動到窗口之外,導(dǎo)致目標(biāo)跟蹤失敗。而如果將第一幀得到的窗口尺寸擴大為原來的1.6倍,再作為第二幀的初始窗口,則第二幀中左側(cè)物料仍有一部分落入其中,如圖(c)所示。畫出第二幀中擴大后的初始窗口和CAMshift算法給出的新窗口,可看到,實現(xiàn)了良好的跟蹤效果。若目標(biāo)附近存在其他物體,過大的窗口尺寸又容易導(dǎo)致最終窗口中心與二者共同的質(zhì)心重合,造成“連體”現(xiàn)象。如圖(d)所示,第二幀中,初始窗口尺寸擴大為原來的2.1倍,結(jié)果附近的物料也有部分落入其中,導(dǎo)致計算出的新窗口將兩個物料都包含在內(nèi)。經(jīng)過試驗,窗口尺寸擴大為原來的1.2至1.5倍為宜,同時限制窗口的最大尺寸。
為了判斷是否抓取到正確的物料,由主控制系統(tǒng)發(fā)送一條指令和物料的坐標(biāo),識別系統(tǒng)檢查該坐標(biāo)附近的顏色。采用前一識別任務(wù)的閾值作顏色分割,因此對于正確顏色的物料,二值圖中該坐標(biāo)附近的像素應(yīng)為白色。實際做法是計算給定坐標(biāo)周圍一定區(qū)間內(nèi),白色像素點所占的比例,以應(yīng)對因二值圖質(zhì)量不佳的情況。
機器人通過網(wǎng)頁實時顯示機器人在工作時對目標(biāo)的識別效果以及實時參數(shù)信息,方便在調(diào)試時進行參數(shù)的調(diào)節(jié);機器人的主從通信即為以STM32為核心的主控制系統(tǒng)與作為從設(shè)備的樹莓派之間的通信[14],主要為指令以及坐標(biāo)的收發(fā)。
在OpenCV項目開發(fā)中,將圖片用imwrite()函數(shù)保存,經(jīng)服務(wù)器程序可在網(wǎng)頁上顯示出該圖片。
采用Flask框架編寫服務(wù)器程序[15],響應(yīng)靜態(tài)頁面。利用HTML和JavaScript構(gòu)建網(wǎng)頁,每隔20 ms至50 ms向服務(wù)器請求圖片并顯示。局域網(wǎng)內(nèi)的設(shè)備均可通過瀏覽器看到實時圖像。
實際運行時,樹莓派與手機或電腦通過連接同一Wi-Fi而處于同一局域網(wǎng),啟動服務(wù)器程序后,使用手機或電腦的瀏覽器內(nèi)訪問微型網(wǎng)站,即可看到實時圖像。。
機器人識別系統(tǒng)與主控制系統(tǒng)通過串口交互[16]?;诜謱拥乃枷?,設(shè)計了兩層通信協(xié)議。底層采用串口通信協(xié)議,用于收發(fā)ASCII字符。在ASCII可見字符的基礎(chǔ)上,約定數(shù)據(jù)幀的格式為:
在實驗場地模擬實際比賽環(huán)境,機器人在場地內(nèi)分揀與搬運隨機灑落在場地的紅色與藍色物料,并定時2分鐘,計算機器人在此時間內(nèi)分揀并投入的到物料收集筐中的物料數(shù)目。首先對藍色物料進行分揀搬運實驗,實驗結(jié)果如表1所示。
表1 藍色物料識別搬運數(shù)目情況
同樣,在相同環(huán)境下,對紅色物料進行同樣的分揀搬運實驗,實驗結(jié)果如表2所示。
表2 紅色物料識別搬運數(shù)目情況
從以上的實驗記錄可以觀察出經(jīng)過多次實驗并針對機器人自身痛點進行不斷優(yōu)化,機器人識別精度達到97%,在效率上平均每個球形物料分揀搬運時間為7.64秒,足以滿足比賽精度及效率需求。機器人實物如圖8所示。
圖8 機器人實物
文章以大學(xué)生學(xué)科競賽為背景,提出了一款基于OpenCV的物料分揀搬運機器人的設(shè)計。該機器人的主要核心技術(shù)是對物料以及場地環(huán)境的識別。在識別算法開發(fā)上,花費的時間最多,從簡單的物料分揀到物料發(fā)射,整個識別流程的算法改進許多遍,從光流跟蹤到CAMshift算法,經(jīng)過了許許多多科學(xué)的計算,深刻明白了機器人自動化一切源自數(shù)學(xué)物理方法。該機器人在物料分揀搬運的任務(wù)中,準(zhǔn)確率較高,在特定場合下加以改造,便可應(yīng)用于各種工作環(huán)境的各種物料分揀與甄別工作。所設(shè)計的基于OpenCV的物料分揀搬運機器人在2019年工科大學(xué)生實驗綜合技能競賽中,榮獲一等獎。