閆紀紅, 荊添一, 張宇浩
(1.哈爾濱工業大學機電工程學院,哈爾濱 150001;2.香港科技大學智能建造研發中心,香港 999077)
工業機器人因其高精度以及可重復性的特點,在制造業領域內得到大量使用[1],用以幫助或代替人完成多種工作[2-3]。其中,通過設計工業機器人的抓取系統進而完成對零件的抓取任務是生產制造中一項重要的應用[4]。抓取系統設計的優劣程度,體現了工業機器人的智能化水平。目前許多研究人員采用了機器視覺技術設計工業機器人抓取系統[5-6],但多數是面向本地零件設計的,存在著對新零件識別準確度低與定位精度差的缺點。
云有著強大的存儲能力和計算能力,其出現和發展加速了工業機器人的智能化進程[7-8]。在制造業中,大量的零件數據儲存至云中[9]完成了零件信息的有效存儲和共享,各類智能算法也融入其中為用戶提供云服務[10],實現了存儲資源和計算資源的共享。基于云中存儲的大量零件數據訓練機器視覺算法,可以增強算法中模型輸入的豐富程度,實現對多類零件的準確識別與定位。將該算法應用于設計工業機器人抓取系統,將會有效地提高工業機器人對新零件的抓取能力。
本文基于云邊端架構,設計了一套云環境下的工業機器人抓取實驗系統,構建了機器人、自動導引運輸車(Automated guided vehicle,AGV)、工業相機和云服務器的綜合交互系統,并實驗進行測試,以達到工業機器人能夠對多種零件實現動態抓取的目的。
作為一種新型系統架構,面向工業機器人的云邊端系統架構可以協同云服務、邊緣計算和終端設備共同完成現場任務,提高機器人的智能化水平[11]。該架構共分為3 層:端層、邊層和云層。本系統中,端層中包含各類執行機構和感知設備,包括機器人、AGV 和工業相機,是在工業現場實際完成各項操作的層,同時可以獲取零件信息;邊層是一個數據處理層,是云層與端層交流的媒介,該層既需要將相機采集的零件信息做預處理后上傳到云層,也要將云層下傳的信息轉化為機器人和AGV可以理解的控制命令;云層相當于整個系統的大腦,存儲海量零件信息,以及基于零件信息訓練的機器視覺算法,根據邊層處理后的零件信息得到算法結果,并由邊層解釋后指導終端工作。
本文實驗系統結構如圖1 所示,系統以計算機為邊緣節點,各層之間通過TCP/IP 網絡協議建立連接。系統工作時,AGV承載零件移動至工業相機視野下,相機將獲取到的零件視頻流傳輸至邊層;并進一步轉換為圖片流傳至云上,采用機器視覺算法獲得該零件的相關信息;而后通過網絡下傳至邊層計算機中確定該零件的抓取策略,并實時轉化為機器人和AGV控制命令;利用邊層計算機與機器人和AGV的網絡通信將控制命令實時傳輸至端層設備的控制系統,實現零件的動態抓取。為了更好地體現利用云資源設計抓取系統的優勢,在邊層部署了基于本地零件數據集訓練的機器視覺算法,該算法因為原始數據集的限制而只能實現對本地零件的識別與定位。

圖1 實驗系統結構
端層設備是完成零件抓取任務的硬件基礎,對其進行有序的部署是系統設計中的重要環節。實驗平臺采用Universal Robots公司生產的UR5 機器人,該機器人具有良好的靈活性,支持網絡通信,可以實時地接收計算機下傳的控制命令[12],將UR5機器人固定于空曠位置避免與其他設備干涉。工業相機選用海康公司的MV-CE100-31GM 相機,可通過網絡接口與計算機建立連接。
端層設備部署如圖2(a)所示,系統將AGV 運行路線作為機器人和相機布置的基準,以色帶作為AGV運行導引。在導引上以一定距離間隔設置站點二維碼標簽作為其定位方式,由圖2(a)所示設定站點順序為1 ~6,以站點1 為起始站點,UR5 機器人所處位置為站點5,相機位置為站點3。為建立端層設備與邊層計算機的通訊,需要在局域網下設定UR5 機器人、AGV 和工業相機的靜態IP地址。

圖2 端層設備部署
邊層是介于云層與端層之間的層,是系統中的數據處理層,包含視覺信息處理功能、本地機器視覺算法、零件抓取策略算法和終端控制命令生成。零件抓取策略算法包括零件運動到達抓取點時的工具中心點(TCP)空間位置和TCP姿態[13],由云下傳的零件信息和定位結果確定,算法流程如圖3 所示。

圖3 零件抓取策略算法流程
本文的終端控制包括機器人和AGV的控制,由邊層計算機統一下發控制命令。AGV 由內部的歐姆龍PLC與邊層計算機建立通訊,利用Fins指令[14]實現對AGV的實時控制,并獲取其運行速度以便在零件抓取策略中預測TCP位置。AGV是零件運動的載體,其所處位置反映零件的當前位置,系統通過實時判斷AGV所處站點序號,控制系統執行各項任務。當AGV運行至站點3 時,控制相機開始工作,利用本地或云層視覺算法判斷當前時刻零件與機器人基座的相對位置,經過抓取策略算法生成UR5 機器人控制命令;當AGV運行至站點5 時,將機器人控制命令以UR_Script 腳本形式下傳至UR5 機器人中,在零件運行過程中完成抓取任務。
本地機器視覺算法是基于本地零件數據訓練的,適用于實現對本地原有零件的識別與定位。算法構建方法如圖4 所示,在完成相機標定和獲取零件圖片后,算法分為兩部分:識別零件類別和零件定位。零件類別采用卷積神經網絡模型(Visual Geometry Group 16,VGG16)實現對零件的實時識別,模型包含13 個卷積層和3 個全連接層共16 個權值層[15],可以提取到零件中細微的特征。在訓練模型前需要利用數據增強方法提高數據集的豐富程度,利于提升模型訓練效果。零件定位是基于OpenCV 軟件庫實現,采用特征矩計算的方式獲取零件的外形、質心位置以及旋轉角度。本地機器視覺算法的構建方法同樣可用于云層機器視覺算法的設計,不同之處在于原始零件圖片數據集,云層的算法具有更多的原零件始數據類別。

圖4 機器視覺算法構建流程
在本實驗平臺的云邊端系統架構中,云層依靠其中的零件數據庫和機器視覺算法,以軟件即服務(Software as a Service,SaaS)模式為下層提供云服務。如圖5 所示,本文以本地云為例搭建實驗平臺,在其中部署零件數據集并訓練云層機器視覺算法。以MySQL關系型云數據庫為元數據存儲方式,用于接收在Hadoop中管理的零件數據[16]。為了實現所需零件信息的完備存儲,設計零件信息儲存表,表中包含各類零件的類型名稱、高度和輪廓尺寸等零件信息,數據格式如表1 所示。利用TCP/IP 協議獲得零件信息并下傳至邊層零件抓取策略算法,指導下層工作。云層機器視覺算法訓練方法同邊層機器視覺算法,其中原始零件數據集內含有大量不存在于邊層視覺模型中的零件類型。系統整體布置如圖6 所示。

圖5 云服務器集群

圖6 系統布置

表1 零件信息儲存表數據結構
本實驗的核心內容在于:①利用本地機器視覺算法,完成對本地零件的識別與定位;②采用云視覺系統對不能準確識別的、不在本地算法模型中的零件完成識別與定位。
識別與定位的實驗流程如圖7 所示:①需要將相機連接到邊層計算機中,保證相機獲取到的零件信息可以實時傳輸到計算機中;②給定不同角度擺放的零件,要求分別利用本地視覺算法完成對零件的識別與定位;③對于未在本地視覺模型中的零件,本地視覺算法會出現識別錯誤或無法識別的情況,此時使用云層機器視覺算法,可實現對新零件的識別與定位,突破本地算法對新零件識別錯誤或不準確的局限性,算法結果如圖8 所示。

圖7 零件識別與定位實驗流程

圖8 零件識別與定位結果
本實驗的關鍵在于利用云下傳的零件識別與定位結果驅動機器人和AGV 控制系統完成零件的動態抓取任務。
利用網絡實現云邊端系統中各層之間的互聯是整個實驗的基礎,根據局域網下各設備的IP地址將終端設備連接至邊層計算機上,設置白名單獲取云服務器訪問權限,完成云邊端系統的網絡連接。給定3 種不同的零件,依據云視覺與定位算法的輸出結果與AGV速度擋位,控制機器人和AGV 實現零件動態抓取,驗證該實驗系統有效性。實驗流程如圖9 所示。

圖9 零件動態抓取實驗流程圖
本文在面向工業機器人的云邊端系統架構下,設計了一種云環境下的工業機器人抓取實驗系統,利用云服務資源共享的優勢,解決了傳統基于機器視覺設計的抓取系統難以完成新零件抓取任務的問題。經測試,此系統能夠實現對多種零件的動態抓取,解決了工業現場中本地計算資源和數據資源不足的問題,提高了工業機器人的智能化水平。系統具備一定的可拓展性,可在此基礎上通過豐富云層資源、增設終端設備等方式,適應更多的生產制造場景。同時,該系統已經滿足實驗教學的要求,并已應用于本科生和研究生的實驗教學中,達到了科研反哺教學的目的,也為學生進行科學研究提供了實驗條件。