李世裴, 韓家哺, 路博凡, 錢仲楷
(上海工程技術(shù)大學(xué) 機(jī)械與汽車工程學(xué)院,上海 201620)
根據(jù)“中國(guó)制造2025”規(guī)劃發(fā)展要求,現(xiàn)代化工廠要實(shí)現(xiàn)自動(dòng)化、數(shù)字化、無(wú)人化。在工廠中的生產(chǎn)作業(yè)如物品搬運(yùn)、碼垛、抓取等要實(shí)現(xiàn)全自動(dòng)化作業(yè),尤其目前在抓取作業(yè)方面在工廠作業(yè)大量存在,且大部分的抓取生產(chǎn)工作需要機(jī)器人自主完成工件識(shí)別和定位及抓取工作,并與人類協(xié)作完成任務(wù)[1]。但在目前工業(yè)生產(chǎn)的過(guò)程中,絕大多數(shù)的工業(yè)機(jī)器人是依靠示教再現(xiàn)的方式進(jìn)行固定的位置上的工件抓取和放置,如果外界環(huán)境或工件的狀態(tài)發(fā)生改變將導(dǎo)致抓取任務(wù)中斷或失敗。一些學(xué)者對(duì)此類問(wèn)題展開(kāi)研究,張弛[2]等利用一臺(tái)ABB機(jī)器人和相機(jī)基于VS軟件開(kāi)發(fā)的自主抓取平臺(tái),可以實(shí)現(xiàn)工件的隨機(jī)位置抓取,但此平臺(tái)擴(kuò)展性弱,生產(chǎn)環(huán)境無(wú)法與人共融。徐博凡[3]等利用FANUC Robot Interface開(kāi)發(fā)的視覺(jué)引導(dǎo)抓取系統(tǒng),此平臺(tái)同樣生產(chǎn)環(huán)境無(wú)法與人共融并且只適用于FANUC 機(jī)器人,代碼無(wú)法拓展應(yīng)用。
為了提高復(fù)雜多目標(biāo)抓取場(chǎng)景自動(dòng)化作業(yè)程度,利用監(jiān)督學(xué)習(xí)算法實(shí)現(xiàn)對(duì)隨機(jī)待抓取物的精準(zhǔn)識(shí)別與定位,基于ROS 框架搭建抓取系統(tǒng),控制機(jī)器人進(jìn)行避障及運(yùn)動(dòng)規(guī)劃實(shí)現(xiàn)精準(zhǔn)抓取動(dòng)作,并提高機(jī)器人開(kāi)發(fā)研究的代碼復(fù)用率,而且大大提高系統(tǒng)的集成性、可移植性。
抓取系統(tǒng)由基于ROS框架的機(jī)器人控制模塊和視覺(jué)模塊構(gòu)成,控制模塊以包含ROS框架的上位機(jī)為控制核心,實(shí)現(xiàn)機(jī)器人的運(yùn)動(dòng)規(guī)劃、避障檢測(cè);視覺(jué)模塊負(fù)責(zé)待抓取物的圖像信息采集,并利用監(jiān)督學(xué)習(xí)算法實(shí)現(xiàn)物體特征識(shí)別與定位。抓取系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 協(xié)作機(jī)器人智能抓取系統(tǒng)整體結(jié)構(gòu)Fig. 1 Overall structure of cooperative robot intelligent grasping system
通過(guò)相機(jī)采集待抓取物體的圖像信息并安裝機(jī)器人上方的實(shí)驗(yàn)平臺(tái)橫柱上,利用監(jiān)督學(xué)習(xí)算法進(jìn)行待抓取物圖像信息訓(xùn)練以及經(jīng)圖像處理,完成目標(biāo)的特征識(shí)別與得到空間位置信息,將得到的待抓取物體信息通過(guò)通信協(xié)議傳輸?shù)絉OS系統(tǒng)轉(zhuǎn)化為協(xié)作機(jī)器人6個(gè)關(guān)節(jié)上的轉(zhuǎn)角信息,并通過(guò)Ethernet協(xié)議的將信息發(fā)送到下位機(jī)(機(jī)器人控制器),從而驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)相應(yīng)的角度,使得末端執(zhí)行器以預(yù)定的姿態(tài)到達(dá)目標(biāo)物的位置,末端執(zhí)行器最終完成抓取與移動(dòng)目標(biāo)物的工作。系統(tǒng)抓取原理如圖2 所示。
圖2 智能抓取系統(tǒng)原理圖Fig. 2 Schematic diagram of intelligent capture system
整個(gè)機(jī)器人控制模塊和視覺(jué)模塊中的標(biāo)定部分是基于ROS系統(tǒng)實(shí)現(xiàn)的,ROS系統(tǒng)主要的功能是通過(guò)對(duì)機(jī)器人、相機(jī)等硬件進(jìn)行抽象描述和加載其相應(yīng)的驅(qū)動(dòng)程序,并為程序間的消息傳遞提供多種通信機(jī)制[4],實(shí)現(xiàn)多模塊之間分布式計(jì)算和通信連接的架構(gòu)。主要實(shí)現(xiàn)三大功能:相機(jī)標(biāo)定、手眼標(biāo)定和基于ROS-Moveit!的運(yùn)動(dòng)規(guī)劃及避障。其中通過(guò)調(diào)用camera_calibration相機(jī)標(biāo)定功能包和eye_handeye手眼標(biāo)定功能包進(jìn)行相應(yīng)標(biāo)定工作,物體特征識(shí)別借助監(jiān)督學(xué)習(xí)算法訓(xùn)練,得到目標(biāo)物體位置后,通過(guò)ROS-Moveit!完成機(jī)械臂末端從起始點(diǎn)到目標(biāo)點(diǎn)的軌跡規(guī)劃。系統(tǒng)工作流程如圖3所示。
圖3 智能抓取系統(tǒng)流程圖Fig. 3 Flow chart of intelligent capture system
首先進(jìn)行相機(jī)標(biāo)定獲得相機(jī)內(nèi)參和外參,并將內(nèi)外參導(dǎo)入相機(jī)驅(qū)動(dòng)文件中并在參數(shù)服務(wù)器中進(jìn)行調(diào)用,然后利用手眼標(biāo)定方法將相機(jī)坐標(biāo)系與機(jī)器人基座坐標(biāo)系建立轉(zhuǎn)換關(guān)系,得到待抓取物在基坐標(biāo)系下的位姿信息。相機(jī)獲取的圖像經(jīng)過(guò)濾波、訓(xùn)練與特征提取等一系列圖像處理的任務(wù),即可確定待識(shí)別目標(biāo)物特征,利用手眼標(biāo)定技術(shù)獲得相機(jī)與機(jī)器人的空間坐標(biāo)變換關(guān)系,即可獲取目標(biāo)物體在機(jī)器人坐標(biāo)系的空間位置信息,將物體信息通過(guò)ROS的通信機(jī)制傳到ROS系統(tǒng)中進(jìn)行任務(wù)規(guī)劃,根據(jù)規(guī)劃任務(wù)使用ROS-Moveit!中的運(yùn)動(dòng)學(xué)庫(kù)、運(yùn)動(dòng)規(guī)劃庫(kù)、避障算法分別進(jìn)行逆運(yùn)動(dòng)學(xué)求解、運(yùn)動(dòng)軌跡規(guī)劃和避障運(yùn)動(dòng)[5]。最后將運(yùn)動(dòng)規(guī)劃所獲得的機(jī)器人運(yùn)動(dòng)規(guī)劃信息隊(duì)列通過(guò) Ethernet通信方式傳遞給下位機(jī),下位機(jī)接收到機(jī)器人運(yùn)動(dòng)信息隊(duì)列并解析,同時(shí)驅(qū)動(dòng)機(jī)器人按照規(guī)劃的路徑執(zhí)行運(yùn)動(dòng)和抓取動(dòng)作,并將機(jī)器人的實(shí)時(shí)位置和姿態(tài)信息傳遞給上位機(jī),最終實(shí)現(xiàn)目標(biāo)物的準(zhǔn)確抓取和機(jī)器人狀態(tài)監(jiān)控。
在整個(gè)機(jī)器人抓取系統(tǒng)中,手眼標(biāo)定作為抓取操作的必要條件,在進(jìn)行抓取操作之前,系統(tǒng)需要求解像素坐標(biāo)系和機(jī)器人末端坐標(biāo)系的關(guān)系,進(jìn)而完成機(jī)器人手眼標(biāo)定[6]。
根據(jù)相機(jī)安裝位置的不同,手眼標(biāo)定有兩種方式,基于場(chǎng)景需要,實(shí)驗(yàn)平臺(tái)使用eye-to-hand的手眼標(biāo)定,如圖4所示。
圖4 手眼標(biāo)定模型示意圖Fig. 4 Schematic diagram of hand-eye calibration model
棋盤格固定安裝在協(xié)作機(jī)器人末端,使用ROS控制協(xié)作機(jī)器人多次變換姿態(tài),相機(jī)采集不同位子的標(biāo)定板圖像來(lái)求手眼標(biāo)定轉(zhuǎn)換矩陣。Cc代表攝像機(jī)坐標(biāo)系,Cb代表棋盤格坐標(biāo)系,Ce代表機(jī)器人末端坐標(biāo)系,Cr表示機(jī)器人基坐標(biāo)系。手眼標(biāo)定主要目的即求解相機(jī)坐標(biāo)系Cc和基坐標(biāo)系Cr之間的轉(zhuǎn)換關(guān)系,這也決定了手眼標(biāo)定的本質(zhì)就是數(shù)學(xué)問(wèn)題。
圖5 坐標(biāo)轉(zhuǎn)換關(guān)系示意圖Fig. 5 Schematic diagram of coordinate transformation relationship
機(jī)器人拖動(dòng)棋盤格變換n次的過(guò)程中,相機(jī)、棋盤格、機(jī)器人基坐標(biāo)和機(jī)器人末端隨之發(fā)生n次變換,可以得到轉(zhuǎn)換方程:
X矩陣需要機(jī)器人的兩次相對(duì)位置變換求解得到,位置變化中旋轉(zhuǎn)軸不是平行的,易出現(xiàn)偶然誤差,為了消除這種誤差,在手眼標(biāo)定實(shí)驗(yàn)過(guò)程中對(duì)機(jī)器人的位姿進(jìn)行了17次變換,并用相機(jī)采集17次圖像。
在基于ubuntu系統(tǒng)中,使用ROS中的標(biāo)定函數(shù)包Easy_handeye完成手眼標(biāo)定的程序,程序首先會(huì)進(jìn)行棋盤格的角點(diǎn)檢測(cè)提取棋盤格的圖像特征,完成攝像機(jī)坐標(biāo)系和末端坐標(biāo)系的位姿轉(zhuǎn)換,計(jì)算得到旋轉(zhuǎn)矩陣和平移矩陣。實(shí)驗(yàn)中具體手眼標(biāo)定的流程為:把攝像機(jī)安裝在機(jī)器人工作空間正上方,給定足夠的光源條件,打印棋盤格并將其安裝到機(jī)器人末端,在機(jī)器人位姿變換過(guò)程中相機(jī)要始終可以采集到包含棋盤格的圖像,實(shí)驗(yàn)中需要多次計(jì)算手眼變換矩陣,最后取得數(shù)據(jù)的平均值從而以提高標(biāo)定的質(zhì)量,詳見(jiàn)圖6。
圖6 手眼標(biāo)定實(shí)驗(yàn)圖Fig. 6 Experimental diagram of hand-eye calibration
使用ROS系統(tǒng)中,usb_cam節(jié)點(diǎn)負(fù)責(zé)開(kāi)啟相機(jī)并采集圖像,采集的圖像經(jīng)過(guò)ROS-Opencv節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)完成圖像處理,提取圖像特征,使用ROS中的機(jī)械臂運(yùn)動(dòng)規(guī)劃模塊ROS-Moveit!使用該模塊采集不同位姿的標(biāo)定板圖像,使用Easy_handeye功能包,采集各個(gè)圖像的角點(diǎn),計(jì)算棋盤格相對(duì)于相機(jī)坐標(biāo)系的位姿,獲得手眼變換矩陣進(jìn)行標(biāo)定,在可視化模塊RViz中顯示,如圖7所示。
圖7 手眼標(biāo)定結(jié)果Fig. 7 Hand-eye calibration results
監(jiān)督學(xué)習(xí)的主要目的是通過(guò)樣本集數(shù)量和標(biāo)記圖片,通過(guò)設(shè)置參數(shù)來(lái)調(diào)整分類器。支持向量機(jī)(SVM)是一種線性分類器,它是基于圖片二元類的廣義分類器。方向梯度直方圖(HOG)是一種特征描述子,在得到圖像的方向梯度直方圖后,這種描述子可以很快地提取直方圖中的圖像特征。HOG通常用于計(jì)算機(jī)視覺(jué),它計(jì)算圖像的局部梯度,統(tǒng)計(jì)所有局部梯度形成特征圖。由HOG和SVM建立起監(jiān)督學(xué)習(xí)模型[7]。
2.2.1 方向梯度直方圖和支持向量機(jī)
計(jì)算機(jī)視覺(jué)領(lǐng)域中,方向梯度直方圖(HOG)是一種用于目標(biāo)檢測(cè)定位的特征描述器,它是一種圖像特征。相機(jī)在采集圖像的時(shí)候,難免會(huì)受到光照等環(huán)境條件的影響,為了減少這種情況帶來(lái)的影響,首先使用Gamma校正法完成歸一化,這種歸一化是針對(duì)圖像的顏色的。在圖像歸一化之后,HOG需要計(jì)算圖像的邊緣部分,遍歷所有像素點(diǎn),同時(shí)計(jì)算每個(gè)像素點(diǎn)的梯度,梯度包含數(shù)值和方向,是一種向量,其中:
Gx(x,y)=I(x+1,y)-I(x-1,y)
Gy(x,y)=I(x,y+1)-I(x,y-1)
Gx(x,y)和Gy(x,y)分別表示輸入圖像中,每個(gè)像素點(diǎn)(x,y)的水平方向梯度與垂直方向梯度。計(jì)算像素點(diǎn)的梯度幅值和像素點(diǎn)的梯度方向,可以得到:
在邊緣計(jì)算梯度完成之后,直方圖同樣需要計(jì)算,圖像可以被劃分為多個(gè)小細(xì)胞單元(cell),并統(tǒng)計(jì)梯度直方圖,梯度直方圖中包含細(xì)胞單元的描述符,幾個(gè)細(xì)胞單元構(gòu)成一個(gè)空間(block),每個(gè)空間塊中細(xì)胞單元的描述符串聯(lián)起來(lái)就可以得到一個(gè)空間塊的HOG描述符。每個(gè)細(xì)胞單元可以被劃分為9個(gè)梯度方向塊(bin),這種方式下9個(gè)方向塊就可以統(tǒng)計(jì)整個(gè)圖像的特征信息,對(duì)每個(gè)相鄰的方向快加一,便可將每個(gè)細(xì)胞單元中的像素用梯度方向在直方圖中進(jìn)行加權(quán)投影,數(shù)值為方向梯度的幅值,將其作為權(quán)重,使那些比較明顯的邊緣的方向信息對(duì)特征表達(dá)影響增大,HOG特征采用的主要是邊緣紋理,相鄰的方向塊的中心之間需進(jìn)行方向和位置上的雙線性插值。在此之后,需在空間上進(jìn)行歸一化。通常HOG特征有3種:矩形HOG、圓形HOG、環(huán)繞型HOG,HOG特征的單位是block。環(huán)形HOG的效果明顯不如矩形HOG和圓形HOG。在收集完所有樣本的HOG特征后,將它們結(jié)合成最終的特征向量送入分類器。
2.2.2 樣本的收集
收集樣本的過(guò)程中,選用水果作為待抓取物體,為了采集水果在不同的現(xiàn)實(shí)環(huán)境下的圖像,逐次對(duì)環(huán)境進(jìn)行改變。在相機(jī)采集圖片時(shí)時(shí)刻改變環(huán)境,改變光照強(qiáng)度、待抓取物的位置、添加干擾物來(lái)改變樣本的環(huán)境,收集樣本過(guò)程中,把樣本按照比你分為正、負(fù)樣本,正樣本為待抓取物體的圖像,改變光照環(huán)境,待抓取物體擺放的位置也改變,這就證明了HOG特征抗干擾能力強(qiáng),魯棒性高,可以在不同位姿反復(fù)提取梯度特征并統(tǒng)計(jì)。此外,實(shí)驗(yàn)需要采集足夠的負(fù)樣本來(lái)進(jìn)行試驗(yàn)。采集后的圖像無(wú)法直接使用戶,使用opencv中的resize函數(shù)處理圖像,將樣本中的圖像大小控制在128*64。
2.2.3 物體的識(shí)別
樣本制作完成后,在ROS中編寫opencv的程序,程序會(huì)自動(dòng)將正樣本負(fù)樣本的HOG特征提取的3780維度的特征向量送入SVM,并進(jìn)行訓(xùn)練,得到3781維度的檢測(cè)器,最終通過(guò)回歸框完成檢測(cè),返回向量。如圖8所示,向量中的兩個(gè)點(diǎn)分別代表回歸框左上角和右下角A、B點(diǎn),將其輸出得到。
圖8 識(shí)別效果Fig. 8 Identification effect
UR5協(xié)作機(jī)器人運(yùn)動(dòng)規(guī)劃及避障運(yùn)動(dòng)采用ROS-Moveit!功能模塊實(shí)現(xiàn),模塊中集成了許多優(yōu)秀開(kāi)源的機(jī)器人控制功能包包括正逆運(yùn)動(dòng)學(xué)計(jì)算、含約束的軌跡規(guī)劃,三維視覺(jué)感知和導(dǎo)航算法等,并且提供友好的GUI界面,通過(guò)Moveit!配置助手(MoveIt Setup Assistant Tool)調(diào)用所創(chuàng)建的URDF機(jī)械臂模型文件,然后依次進(jìn)行碰撞檢測(cè)配置、虛關(guān)節(jié)配置、運(yùn)動(dòng)規(guī)劃關(guān)節(jié)組配置、機(jī)器人初始位姿配置、末端執(zhí)行器配置、被動(dòng)關(guān)節(jié)配置,生成 Semantic Robot Description Formt(SRDF)文件,運(yùn)動(dòng)學(xué)配置文件和運(yùn)動(dòng)規(guī)劃庫(kù)配置文件以及相應(yīng)的啟動(dòng)文件,在進(jìn)行任務(wù)規(guī)劃時(shí)加載相應(yīng)的配置文件,完成機(jī)器人的運(yùn)動(dòng)規(guī)劃、可視化和仿真等工作[8]。Moveit!運(yùn)動(dòng)規(guī)劃流程如圖9所示。
圖9 Moveit!運(yùn)動(dòng)規(guī)劃流程圖Fig. 9 Moveit! flow chart of motion planning
根據(jù)相機(jī)獲得工況信息、機(jī)械臂狀態(tài)進(jìn)行機(jī)械臂抓取任務(wù)規(guī)劃,執(zhí)行任務(wù)過(guò)程中加載相應(yīng)的Moveit!配置助手生成的配置文件,利用開(kāi)源的運(yùn)動(dòng)學(xué)庫(kù)、運(yùn)動(dòng)規(guī)劃庫(kù)完成運(yùn)動(dòng)學(xué)計(jì)算和運(yùn)動(dòng)規(guī)劃,并將規(guī)劃的機(jī)械臂運(yùn)動(dòng)信息發(fā)布到關(guān)節(jié)服務(wù)器,進(jìn)一步上位機(jī)通過(guò) Socket通信將運(yùn)動(dòng)信息發(fā)送給機(jī)器人控制器并進(jìn)行運(yùn)動(dòng)信息解析,驅(qū)動(dòng)機(jī)械臂按照規(guī)劃動(dòng)作執(zhí)行抓取動(dòng)作。在執(zhí)行規(guī)劃動(dòng)作的同時(shí),機(jī)械臂上的位置傳感器將機(jī)械臂的實(shí)際位姿通過(guò)Socket發(fā)送給上位機(jī),如圖10所示。
圖10 抓取實(shí)驗(yàn)Fig. 10 Capture experiment
通過(guò)利用監(jiān)督學(xué)習(xí)算法對(duì)待抓取目標(biāo)圖像的處理獲得抓取特征信息及待抓取物上表面中心的圖像像素坐標(biāo),然后經(jīng)相機(jī)標(biāo)定和手眼標(biāo)定技術(shù)將目標(biāo)物位姿信息轉(zhuǎn)換到機(jī)器人基座標(biāo)系下,完成待抓取物體的定位工作。根據(jù)機(jī)械臂末端起始點(diǎn)與目標(biāo)物的坐標(biāo)位置點(diǎn)利用ROS-Moveit!進(jìn)行運(yùn)動(dòng)規(guī)劃器得到軌跡參數(shù),將軌跡參數(shù)通過(guò)socket通訊發(fā)送到機(jī)器人控制器并解析,驅(qū)動(dòng)機(jī)械臂按照預(yù)定動(dòng)作完成抓取。將待抓取物體隨機(jī)擺放在相機(jī)視角區(qū)域內(nèi)的不同位置,經(jīng)多次實(shí)驗(yàn)結(jié)果表示,抓取系統(tǒng)都可以穩(wěn)定的完成物體識(shí)別和抓取動(dòng)作。實(shí)驗(yàn)數(shù)據(jù)如表1 所示。
表1 實(shí)際位置與視覺(jué)定位結(jié)果對(duì)比 m
對(duì)實(shí)驗(yàn)數(shù)據(jù)分析可得,通過(guò)這種方法得到的抓取中心的抓取成功率很高,同時(shí)抓取的中心坐標(biāo)和實(shí)際坐標(biāo)誤差非常小,抓取質(zhì)量相對(duì)于傳統(tǒng)的抓取方法更具有魯棒性,收到環(huán)境、抓取姿態(tài)等條件的影響很小。經(jīng)誤差分析,系統(tǒng)的誤差主要是相機(jī)標(biāo)定和手眼標(biāo)定過(guò)程中,標(biāo)定板的測(cè)量誤差以及人為安裝時(shí)造成的位置誤差的影響;同時(shí),其優(yōu)越的抓取精度仍然值得進(jìn)一步開(kāi)發(fā),并可從抓取流程中進(jìn)行進(jìn)一步優(yōu)化。
(1) 基于監(jiān)督學(xué)習(xí)搭建了一套視覺(jué)系統(tǒng),針對(duì)不同環(huán)境下的工件,在opencv中使用HOG+SVM算法,完成對(duì)目標(biāo)工件的定位;通過(guò)手眼標(biāo)定和相機(jī)標(biāo)定,獲得目標(biāo)在機(jī)器人基座坐標(biāo)系下的精準(zhǔn)坐標(biāo)。
(2) 利用ROS系統(tǒng)控制協(xié)作機(jī)器人,并通過(guò)ROS-Moveit!控制機(jī)器人進(jìn)行點(diǎn)到點(diǎn)的運(yùn)動(dòng)規(guī)劃及避障檢測(cè),完成待抓取物穩(wěn)定、快速、安全的抓取動(dòng)作。該控制系統(tǒng)具有一定的移植性,只需修改少量的配置文件,可快速移植到不同類型的ROS支持的機(jī)器人上。
(3) 實(shí)驗(yàn)平臺(tái)可圍繞實(shí)驗(yàn)基礎(chǔ)在抓取系統(tǒng)上在視覺(jué)算法和機(jī)器人運(yùn)動(dòng)控制算法方面進(jìn)一步開(kāi)發(fā)。