黃玲濤 王 彬 倪 濤 繆海峰 李亞男
(吉林大學機械與航空航天工程學院, 長春 130022)
隨著人工智能的快速發展,機器人技術的研究水平得到了飛速的提高,計算機視覺和機器人技術的結合成為當前的研究熱點。受HUBEL等[1]的生物研究啟發,卷積神經網絡(Convolutional neural network, CNN)[2-4]被提出,并在物體識別、物體檢測[5]等領域取得了成功。通過計算機視覺技術[5]對物體進行識別,然后控制機器人實現抓取成為研究的一個重要領域,該技術的實現可以擺脫傳統的示教模式,應對不同的作業環境,并且能夠大大降低人工成本,提高經濟效益。
目前,在物體檢測方面,牛津大學計算機視覺組(Visual geometry group, VGG)提出的VGG模型(Visual geometry group network, VGGNet)[6]成功地構建了VGGNet-11、GGNet-13、VGGNet-16和VGGNet-19等卷積神經網絡模型。VGGNet-16被用在深度學習SSD模型[7-9]中,并能夠使模型獲得較高的運行速度和檢測精度。
在物體定位方面,為了得到物體在三維空間的坐標信息和在圖像中的像素信息之間的映射,可以通過文獻[10-11]方法對相機進行標定,獲得其內參、外參、畸變參數等。文獻[12-15]通過手眼標定將機器人系統和視覺系統連接起來,然后通過坐標變換得到物體在機器人基坐標系中的三維坐標,完成機器人的抓取任務[16-18]。
在機器人抓取方面,LENZ等[19]將深度學習方法引入到機器人抓取中。LEVINE等[20]收集機器人抓取實驗數據用于訓練神經網絡模型,該模型通過卷積神經網絡預測手爪成功抓取物體的概率,并完成抓取動作。
本文提出將Kinect攝像頭作為視覺采集器,對物體識別及機器人的抓取搬運進行研究,利用SSD模型對物體類型進行實時識別,通過張正友標定法[10-11]獲取Kinect內外參并計算物體位置信息,最后控制機器人各關節,以完成機器人對物體的抓取搬運任務。
物體抓取系統結構如圖1所示,Kinect相機與機器人分別固定在工作環境中,相機固定在工作臺,其不隨機械手一起運動。物體抓取系統包括物體檢測系統、物體定位系統和機器人抓取系統。物體檢測系統是基于SSD模型的深度學習方法,通過對20個目標物體采樣、標記和訓練后形成適合本系統的物體檢測模型。物體識別模型在Kinect相機獲得工作場景的實時彩色圖像后,識別出目標物體并顯示物體類別和邊框,同時輸出物體在像素坐標系中的像素坐標。物體定位系統獲得物體在圖像中的像素位置以及對應的深度值后,通過手眼標定方法,得到物體在機器人基坐標下的位置。機器人抓取系統在得到目標物體坐標值后,通過逆運動學求解得到機器人6個關節需要到達的位置,控制機器人及其機械手爪實現抓取搬運動作。

圖1 物體抓取系統結構示意圖Fig.1 Schematic of object grasping system
Kinect相機在采集物體不同位置和姿態下的彩色圖像后,對這些圖像中的物體類別及其在圖像中的像素坐標進行標注,然后將彩色圖像及其標注信息作為訓練樣本,訓練并生成SSD的物體檢測模型,實現目標物體檢測。
以20種物體(易拉罐、礦泉水瓶和紙盒等)作為實驗的目標物體(圖2)。復雜環境背景的圖像會對模型訓練、評價和使用產生很大的干擾,為了減少這些干擾,機器人工作區域設置為淺藍色。

圖2 實驗所用的20種物體Fig.2 20 objects used in experiment
用于訓練模型的物體圖像信息不僅需要物體處在不同位置和姿態狀況下,而且還需要多個物體同時在一幅圖像中。為了充分擴充數據集,對原圖像作順時針旋轉10°,逆時針旋轉10°處理,并對原圖像以及旋轉圖像進行高斯噪聲處理和模糊處理,即一幅原圖像能夠得到8幅擴充圖像(圖3)。實驗共采集了449幅物體圖像,數據集共449×9=4 041幅圖像。

圖3 原圖的增強效果圖Fig.3 Enhancement effect pictures of original image
基于SSD模型的物體檢測技術屬于監督學習,所以需要獲得圖像中所有目標物體的標注信息,包括物體類別id和物體邊框像素位置。
當所有的彩色圖像均標注完畢后,需要將70%的圖像和對應標注文件作為訓練數據集,剩下30%作為評價數據集。雖然Fast R-CNN模型平均精度比SSD模型高一些,但是運行耗時卻比SSD模型高很多,基本無法滿足視頻實時處理的要求,因此本文使用SSD訓練模型,訓練模型的學習率設置為0.000 4,批量大小設置為1,訓練次數設置為40 000。隨著訓練次數的增加,損失函數值隨之減小。SSD訓練完成后,使用評價數據集測試所得到的SSD模型,其檢測精度為81.56%,可以用來作為檢測物體的模型。
使用EPSON A901S型六自由度機器人實現對物體的抓取,其各坐標系如圖4所示。機器人與實驗臺連接處為機器人基坐標系({0}),關節1~3分別作為第{1}~{3}坐標系。由于此機器人的結構特點,以及為了使機器人擁有逆運動學封閉解,第{4}~{6}坐標系置于同一位置,即關節4處。此機器人的特點是前3個關節控制機器人末端的位置,后3個關節控制機器人末端的姿態。此后用{i}表示第i坐標系。

圖4 機器人坐標系簡圖Fig.4 Sketch of robot coordinate system0.基坐標系 1~7.關節坐標系

圖5 機械手爪和Arduino UNO單片機Fig.5 Mechanical gripper and Arduino UNO microcontroller
機械手爪(圖5a)通過連接法蘭固定在機器人末端,用于抓取目標物體。機械手爪由數字舵機驅動完成手爪的張合動作,并由Arduino UNO單片機(圖5b)編程控制。
根據EPSON六自由度機器人、連接器和機械手爪的尺寸以及各個關節坐標系的位置和姿態,機器人D-H參數如表1所示。其中φ1~φ6為機器人關節1~6的關節角,該關節角為EPSON生產廠家定義,與D-H參數中的θi關系見表1。

表1 EPSON六自由度機器人D-H參數Tab.1 D-H parameters of EPSON six-degree-of-freedom robot

如圖4所示,機械手爪末端中心位置為第{7}坐標系的原點位置。當機械手爪安裝在機器人末端時,為實現手爪到達指定的位置和姿態,必須對機器人的逆運動學求解。由于EPSON A901S機器人的結構特點,即第4~6坐標系交于一點滿足PIEPER準則,此機器人具有封閉解。
由于{7}相對于機器人基坐標系的位置和姿態已知,為(px7,py7,pz7,θx7,θy7,θz7)T,故{7}相對于基坐標系的齊次變換矩陣為
其中s表示sin,c表示cos,其下標x表示θx7,y表示θy7,z表示θz7。
{7}相對于{6}僅發生了平移,姿態沒有改變,所以{6}相對于{0}的姿態與{7}相對于{0}的姿態相同,故{6}的齊次變換矩陣為
其中,*表示未計算的值。由齊次變換矩陣的特點可知,矩陣第4列前3個值分別是{6}在基坐標系中的位置。令{6}在基坐標系中的位姿為(px,py,pz,θx,θy,θz)T,其中有

pxcosφ1+pysinφ1=0
(1)

(2)

(3)
3.5.1關節角φ1
根據式(1)可得
(4)
φ1存在多解,其為φ11和φ12,當φ1>0時,φ11=φ1,φ12=φ11-π。當φ1≤0時,φ12=φ1,φ11=φ12+π。
3.5.2關節角φ3
對式(2)和式(3)等號兩邊同時平方再相加,可解得
(5)
其中
每一個φ1對應的φ3有兩個值,即φ31=φ3和φ32=-φ3,因為φ1本身有兩個解,所以φ3有4個值。
3.5.3關節角φ2
將φ1和φ3代入式(2)和式(3)中,求解得
(6)
其中,φ2的正負號與sinφ2的正負號相同。每一個φ3唯一對應一個φ2的值,所以φ2也有4個值。
3.5.4篩選最優關節角φ1、φ2和φ3
由于φ1有兩個解,即φ11和φ12,每個φ1對應兩個φ3,每個φ3唯一對應一個φ2,所以共有4組解:{φ11,φ21,φ31}、{φ11,φ22,φ32}、{φ12,φ23,φ33}、{φ12,φ24,φ34}。雖然前3個關節角有4組解,但是由于機器人各個關節均有旋轉角范圍,故每個關節角必須在此范圍之內,關節角范圍如表1所示。若此時只剩下一組解,則此組關節角為最終的前3個關節角;如仍然剩下多組解,則表示這些角均可使機器人達到期望位姿,此時可依據轉動幅度最小原則篩選出最優關節角。得到的最優關節角φ1、φ2和φ3將用于計算后3個關節角φ4、φ5和φ6。
3.5.5關節角φ5

φ5=arccos(c2+3(sz-1cxsy-cz-1sx)+s2+3cxcy)
(7)
其中下標“2+3”表示φ2+φ3,“z-1”表示θx7-φ1。φ5有兩個解,即φ51=φ5和φ52=-φ5。

(8)
其中g=s2+3cx(cz-1-sz-1cy)+c2+3cxcy
每一個φ5唯一對應一個φ4,因φ5有2個,故φ4有2個值。

(9)

每一個φ5對應一個φ6,因為存在2個φ5,故φ6有2個值。由式(8)、(9)可知,當φ5=0時,關節5處于奇異點位置,相應的雅可比矩陣不可逆,φ4和φ6無解,此時不能使用公式求解關節角φ4和φ6。此時,本文令φ5為一個極小值(0.000 1°),將其代入式(8)、(9)中求解φ4和φ6。
3.5.8篩選最優關節角φ4、φ5和φ6
由于φ5有2個解,即φ51和φ52,每個φ5唯一對應一個φ4和φ6,所以共有2組解:{φ41,φ51,φ61}、{φ42,φ52,φ62}。首先需要判斷2組解是否均在關節旋轉角范圍內,若排除1組解則剩下1組解為最終的后3個關節角;如仍然剩下2組解,則表示這些角均可使機器人達到期望位姿,此時與篩選前3個關節角的方法一樣篩選后3個關節角。
物體檢測系統識別物體時,能生產物體圖像邊框,邊框4點連線交點為中心點,并作為機器人搬運時的抓取點。文中的物體定位是針對物體中心點的定位。由中心點的像素坐標系坐標及其深度值,求其在相機坐標系的位置,然后通過坐標變換將其相機坐標位置轉換到{0}系中的位置(X0,Y0,Z0),通過逆運動學求解,控制機器人各關節角,以實現機器人對目標物體的抓取。
Kinect深度相機與RGB彩色相機安裝位置不同,所以觀察視角也不同,其彩色圖像的分辨率是1 920像素×1 080像素,深度圖像分辨率是512像素×424像素,彩色圖像上的每一個像素(1 920×1 080=2 073 600)并不能在深度圖像上找到一一對應的深度(512×424= 217 088)。Kinect for Windows SDK中提供一個將彩色幀映射到深度空間的函數(MapColorFrameToDepth SpaceUsingIntPtr)。該函數會得到一個長度與彩色幀像素個數相同的一維數組(P[2073600]),數組中的元素表示原深度圖的坐標位置,此坐標位置的值表示相應的深度值,將這些深度依次存放在與數組P相同長度的一維數組(D[2073600])中。最后將數組D轉換成1 920×1 080的矩陣M。彩色圖像的每一個像素都能在矩陣M的相應位置得到其深度Zc,Zc被用來求物體中心點在{0}中的位置信息(X0,Y0,Z0)。
利用張正友標定法對Kinect相機進行標定。影響標定誤差的主要因素為標定板精度及標定照片數量。此外還受光照強度、標定圖片標中定板面積占比、板面平整度等方面影響[21]。實驗標定板采用的是11×8黑白相間的平整正方形棋盤格(圖6),每個正方形邊長為30 mm,其精度為±0.005 mm。

圖6 標定板及其物理坐標Fig.6 Calibration board and its physical coordinates
機器人末端去掉抓手,安裝標定板后,標定板中心為{8}坐標系,標定板坐標系為{e},位于標定板的左上方。標定板中心點與六維力傳感器中心點對齊后,將其固定。在光照充足的情況,移動機器人末端位置和姿態使標定板處于不同位姿,通過Kinect獲得20幅標定圖像,并確保每幅圖像中標定板面積占比超過50%。
4.2.1相機坐標系轉換到圖像坐標系
從相機坐標系{c}轉換到圖像坐標系是將三維點轉換到二維點,假設目標物體在{c}的坐標為(Xc,Yc,Zc),在圖像坐標系上的投影坐標為(x,y)。如圖7所示,根據相似三角形法,整理后{c}到圖像坐標系的轉換關系為
(10)
式中f——焦距
[xy1]T——歸一化后的圖像物理坐標

圖7 物體在相機坐標系和圖像坐標系投影示意圖Fig.7 Projection of an object in camera coordinate
4.2.2相機坐標系轉換到像素坐標系
點K在圖像坐標系中的坐標為(x,y),在像素坐標系中的坐標為(u,v)。圖像坐標系轉換到像素坐標系的轉換關系為
(11)
式中 dx、dy——圖像中單個像素在x、y方向上分別占據的長度單位數
u0、v0——圖像中心像素坐標與圖像原點像素坐標間相差的橫向、縱向像素數
式(11)可以改寫成
(12)
式中K——相機內參,為3×4矩陣
Xc——目標物體在{c}的坐標
4.2.3像素坐標系轉換到基坐標系
從世界坐標系轉換到{c}是將三維點轉換到另一個三維點。在相機標定過程中,將世界坐標系與{e}設置為重合。令目標物體在世界坐標系({e})的坐標值為Xe=(Xe,Ye,Ze)T,{e}到{c}的旋轉矩陣為R,平移向量為t,則{e}到{c}的關系為
(13)
將式(13)代入式(12)整理可得
(14)
其中

O——3×1零向量
由于標定板固定在機器人末端,標定板與機器人之間的位姿關系是確定的,故{e}中的一點可以表示為
(15)
結合式(14),可得像素坐標系到{0}的轉換為
(16)


假設{c}在{0}中的位姿表示為0Pc=(pcx,pcy,pcz,θcx,θcy,θcz)T,可得{c}到{0}的齊次變換矩陣為

4.2.4標定結果
Kinect在獲得20幅棋盤格RGB圖像后,將其轉換成灰度圖;通過亞像素角點來獲得棋盤格角點像素點坐標。因為世界坐標系建立在棋盤格平面上,所以棋盤格角點在世界坐標系的Z軸坐標為零,棋盤格內所有角點在世界坐標系中的坐標值是已知的。由20幅棋盤格圖像獲得的Kinect相機內參矩陣為

將20種目標物體依次隨機擺放在工作臺不同位置上,使用SSD模型檢測這些物體,SSD模型會將每一個物體的名稱及其準確率顯示在物體邊框左上方,并用不同的顏色表示不同的物體類別(圖8)。

圖8 物體檢測結果Fig.8 Object detection results
根據邊框位置可以確定物體中心點在圖像中的準確位置,如圖9所示,圖9a為深度圖像(經彩色圖像映射深度空間處理后圖像),中心點代表物體的深度值,圖9b為彩色圖像,中心點坐標表示物體像素坐標。圖中物體“百事可樂罐”的深度Zc為1 218.75 mm,物體的像素坐標得到后,根據式(16)可計算出物體在基坐標系的準確位置。

圖9 目標物體的像素坐標和深度Fig.9 Pixel coordinates and depth values of target objects
實驗平臺上選擇4個位置,其坐標分別是 (0.8,0.2)、(0.75,0.35)、 (0.5,0.7)、(0.6,0.6),然后將20個物體分別放置在此4個位置上(黑色“+”字標記所在位置),計算得物體位置如圖10中粉色、藍色、紅色和綠色所示的“×”。20組數據所得的平均值及方差如表2所示,物體定位x向平均絕對誤差為5.2 mm,y向為2.8 mm。物體高度(Hr)及測量值的平均高度(Hm)如表3所示,物體高度的平均絕對誤差為4.5 mm。由測量結果可知,物體定位能夠比較準確地測算出物體在平臺的位置,并且絕對誤差較小,能夠滿足抓取任務要求。

圖10 工作臺物體定位實驗結果Fig.10 Experimental results of object positioning on workbench

坐標平均值方差800794.53.5x向750745.43.1500496.311.7600600.42.6200496.311.7y向350350.36.4700695.73.8600600.13.0

表3 物體高度及其測量平均值Tab.3 Object height and measured average mm
為減少背景環境的干擾,實驗臺的背景設置成淺藍色,并在光線充足的條件下進行物體抓取實驗。在實驗平臺上選擇6個區域(圖10),分別將20個物體依次擺放在6個區域內,機器人在每個區域內抓取物體5次,每個物體被抓取次數為6×5=30次;實驗總次數為20×6×5=600次。實驗抓取動作流程如圖11所示。
抓取過程中出現失敗抓取情況,機器人不重新嘗試再次抓取該物體,操控者需將該目標物體移出抓取區,繼續后續其他物體抓取實驗。即使出現抓取失敗物體碰倒其他物體的情況,只需將被碰倒的物體重新放回原位,SSD模型會對物體進行再次識別,程序會重新計算該物體中心點的位置。
表4表示6個區域中20種物體被抓取實驗的成功率,其中區域2和區域4的成功率最高,達到99%,區域6的成功率最低,但是也能夠達到95%。表5表示每個目標物體被抓取的成功率,其中10個目標物體被抓取成功率為100%,物體13的成功率最低,為83%。物體抓取失敗的主要原因是該物體的中間部分形狀不規則,為凹陷彎曲,Kinect在測量此類物體時其深度信息存在較大的誤差,最終導致定位系統所得到的物體位置也存在較大誤差。本實驗的600次抓取中成功次數為582次,總成功率為97%,證明了通過深度學習檢測物體并將位置映射到機器人基坐標系的方法在機器人抓取任務中是有效的。
設計了一個基于Kinect相機的機器人抓取系統,利用該系統可實時對作業環境內的物體進行識別檢查,準確計算物體的定位信息。

圖11 機器人抓取物體動作流程Fig.11 Action diagram of object grasping experiment

項目區域123456成功率/%969996999795
對所構建的系統分別進行了物體檢查、定位及抓取實驗。物體在x向平均絕對誤差為5.2 mm,y向平均絕對誤差為2.8 mm,物體高度的平均絕對誤差為4.5 mm,誤差較小,滿足物體抓取時的定位要求,物體抓取實驗的成功率達到97%。

表5 物體抓取實驗的成功率Tab.5 Success rate of object grasping experiment
實驗結果表明,所構建的機器人系統針對不同目標物體能實時、可靠地完成物體抓取搬運任務。