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