鐘 宇,張 靜,2,張 華,肖賢鵬
(1.西南科技大學 信息工程學院,四川 綿陽 621000;2.中國科學技術大學 信息科學技術學院,合肥 230026)
近年來,機器人應用逐漸從工業(yè)領域向國防軍事、醫(yī)療康復、助老助殘、居家服務等領域迅速拓展[1]。RGB-D 相機可采集場景中的彩色圖和深度圖,獲取視野內(nèi)任意目標三維點云,被廣泛應用于智能協(xié)作機器人以感知周圍環(huán)境[2]。智能協(xié)作機器人在進入未知環(huán)境時,依賴視覺系統(tǒng)感知動態(tài)工作空間定位目標,實現(xiàn)機械臂對目標對象的自主抓取回收作業(yè)[3]。獲取機器人坐標系和相機坐標系之間的變換關系,即手眼標定,是機器人進行視覺伺服作業(yè)的前提[4]。關于視覺系統(tǒng)與其他坐標系之間的標定方法,近年來受到了學者們的廣泛關注并取得了一定的研究成果。手眼標定方法主要分為需要標定物和不需要標定物兩類。文獻[5-7]介紹了不需要標定物的手眼標定方法,標定過程復雜、干擾因素多。在基于標定物的傳統(tǒng)方法中,機器人末端攜帶標定物,通過相機拍攝標定物多組不同姿態(tài)獲得標定方程。文獻[8-9]將傳統(tǒng)標定板作為標定件,通過在多個坐標系之間的轉換,求解齊次矩陣方程。在標定時需要高精度的標定板[10-11],且保持標定板位于相機視野范圍內(nèi),但機器人的運動范圍較有限。文獻[12-14]利用激光跟蹤儀或三軸跟蹤儀進行手眼標定,復雜的輔助標定設備增加了手眼標定的難度和成本。文獻[15-17]采用立體視覺獲取空間點坐標計算手眼轉換矩陣,標定精度仍有很大的提升空間。
針對RGB-D 相機與機器人坐標系的手眼標定問題,本文提出基于目標檢測的機器人手眼標定方法,將3D 打印球作為標定件夾持在機械手末端工具中心點(Tool Center Point,TCP),使用改進的yolov3 目標檢測神經(jīng)網(wǎng)絡實時檢測與定位標定球在相機坐標系下的3D位置,計算并得到抓取機器人的末端TCP 在機器人本體坐標系與相機坐標系之間的轉換關系。
RGB-D 相機可獲得彩色圖和深度圖,其中深度圖由物體在像平面的像素坐標u、ν及其到像平面的距離d構成。利用小孔成像原理對相機進行建模[18],根據(jù)其內(nèi)參矩陣k將二維像素坐標系下的點P(u,ν)投影到三維相機坐標系{C}空間中。
其中:f為相機焦距,單位為mm;dx和dy為像元尺寸,單位為mm;u0和ν0表示主點與圖像中心點的偏離程度和;P Dz為P(u,ν)像素點對應的深度值。
若在相機內(nèi)參矩陣k已知的情況下,則將像素坐標系{P}下的點P(u,ν)投影到相機坐標系{C}下的空間點坐標PC=[PCx,PCy,PCz],其中:
在本文方法中,3D 打印球被夾持在機械手末端TCP,如圖1 所示。獲取標定球的彩色圖像后,從彩色圖中檢測并提取標定球的球心位置?;舴蜃儞Q圓形等傳統(tǒng)特征檢測只能從簡單背景中提取圓形特征,不能在實際環(huán)境、機械手夾持遮擋等復雜情況下檢測標定球。基于卷積神經(jīng)網(wǎng)絡的目標檢測網(wǎng)絡能自動學習目標特征,從圖片中提取目標對象[19]。因此,本文利用改進的yolov3 目標檢測神經(jīng)網(wǎng)絡[20]檢測并定位標定球。
圖1 標定球夾持在機械手末端的示意圖Fig.1 Schematic diagram of the calibration ball clamped at the end of the manipulator
基于yolov3 的標定球檢測模型如圖2 所示,作為標定球檢測器實現(xiàn)對標定球的檢測定位,以獲取標定球在像素坐標系下的成像的圓心坐標Pball(u,ν),網(wǎng)絡結構中的DBL 是由卷積層、批標準化層和Leaky ReLu 層組成的模塊。Yolov3 目標檢測神經(jīng)網(wǎng)絡模型的改進主要包括:1)針對本文只檢測標定球這一特定目標,重新設計預設先驗框為1∶1 的比列,使神經(jīng)網(wǎng)絡模型更快速收斂;2)針對標定球成像尺寸變化不大的問題,刪除原yolov3 網(wǎng)絡中大目標檢測支路,只保留對中小目標檢測兩個尺寸的支路輸出,以提高檢測速度。
圖2 基于yolov3 的標定球檢測模型Fig.2 Detection model based on yolov3 for calibration ball
采集150 張不同尺寸的標定球夾持在機械手末端的圖片,制作單一類別球的小規(guī)模數(shù)據(jù)集。利用數(shù)據(jù)增強方式擴增數(shù)據(jù)集訓練神經(jīng)網(wǎng)絡可增強網(wǎng)絡模型的泛化能力與魯棒性。通過在一定范圍內(nèi)隨機改變圖像亮度、對比度和色域度,以及在一定范圍內(nèi)隨機對圖像進行縮放、寬高扭曲和水平翻轉,對采集的150 張圖像的數(shù)據(jù)集通過數(shù)據(jù)集擴充10 倍后進行訓練,部分數(shù)據(jù)集圖像如圖3 所示。采用PASCAL VOC 格式標注數(shù)據(jù)集,左上角(x1,y1)與右下角(x2,y2)兩點標注格式如圖4所示,標注中心點(xP,yP)為左上角和右下角兩點的中點,計算公式如式(4)所示:
圖3 部分數(shù)據(jù)集圖像Fig.3 Part of the dataset images
圖4 數(shù)據(jù)集標注格式Fig.4 Dataset annotation format
訓練改進的yolov3 模型,將數(shù)據(jù)增強后的數(shù)據(jù)集隨機按8∶2比例分成訓練集和測試集,訓練時Batch size設置為8,初始學習率設置為0.001,每一輪衰減系數(shù)設置為0.95,共訓練50 個epoch。訓練完成后將網(wǎng)絡權重模型在測試集中進行測試,若預測并輸出標定球的定位框與標簽框的交并比(Intersection over Union,IOU)大于0.5,則為檢測成功,在測試集中得到98.3%的檢測成功率。
在實驗過程中,正常的室內(nèi)光照強度為150 Lux,對采集的圖片加入干擾處理,測試檢測模型的魯棒性。對正常情況下采集的多組圖片,調(diào)節(jié)亮度變化范圍為[-70%,+70%]、對比度變化范圍為0.0~0.3、三通道色域扭曲范圍為[-30%,+30%]以及隨機縮放范圍為0.2~2.0。經(jīng)過處理后得到100 組帶干擾的圖片送入模型進行標定球檢測,標定球檢測成功率為98%,部分檢測結果如圖5 所示。通過網(wǎng)絡輸出定位框,由式(4)計算標定球成像的圓心像素坐標。
圖5 部分標定球檢測結果Fig.5 Part of the detection results of the calibration ball
標定球被夾持在機械手末端的中心,即球心與機械手末端的TCP 重合。使用訓練后的改進yolov3 目標檢測神經(jīng)網(wǎng)絡模型檢測提取標定球在像素坐標系下的球心坐標,結合RGB-D 相機獲取的球心像素點對應的深度值,由式(3)計算得到標定球球心在相機坐標系下的三維坐標,將手眼標定問題轉換為求解相機坐標系與機器人基坐標系之間的映射矩陣。相機坐標系與機器人基坐標系之間的映射矩陣計算如下:
其中:為相機坐標系{C}與機器人坐標系{B}之間轉換的旋轉矩陣;為平移向量;[P Bx,P By,P Bz]T為點P(u,ν)在機器人坐標系{B}下的坐標向量;[PCx,PCy,PCz]T為點P(u,ν)在相機坐標系{C}下的坐標向量。
在標定時,控制機械臂在相機視野中隨機移動n個點,利用上述方法獲得標定球在相機坐標系的三維坐標和對應點在機器人基坐標系下的坐標。記錄標定球在相機坐標系和機器人坐標系下一一對應的點集:相機坐標系Ci={c1,c2,…,cn}和機器人基坐標系Bi={b1,b2,…,bn}。使用奇 異值分 解(Singular Value Decomposition,SVD)方法求解兩個坐標系之間轉換矩陣的最小二乘解[21]。計算相機坐標系{C}到機器人坐標系{B}映射的旋轉矩陣和平移向量(如式(7)所示)的具體步驟如下:
1)計算標定球在相機坐標系和機器人坐標系下的兩個點集的重心,如式(8)所示:
2)計算兩個點集中的每個點減去重心后的平移數(shù)據(jù),如式(9)所示:
3)計算X和Y的協(xié)方差矩陣S,其中X和Y由向量xi、yi構成,如式(10)所示:
4)對S進行奇異值分解,計算出旋轉矩陣,如式(11)所示:
5)由旋轉矩陣計算平移向量,如式(12)所示:
通過仿真實驗驗證本文提出的基于目標檢測的機器人手眼標定方法的有效性。實際的機器人坐標系{B}與相機坐標系{C}之間的手眼變換關系是未知待求的,但仿真實驗可人為設定標定量的真實值,以及末端機械手TCP 在機器人坐標系下的坐標點,從而檢驗并標定結果精度。
在仿真實驗中,設定機器人坐標系{B}和RGB-D相機坐標系{C}之間的剛體旋轉Rx(45°)、Ry(-30°)、Rz(60°)和平移X(850 mm)、Y(1 200 mm)、Z(1 350 mm)。Rx、Ry、Rz分別表示繞x軸、y軸和z軸旋轉,因此兩個坐標系的轉換關系旋轉矩陣和平移向量如式(13)和式(14)所示:
在仿真過程中,設定3D 打印球在機械手末端的夾持誤差為-5~5 mm 的隨機誤差,相機坐標系{C}下TCP 在X、Y、Z各個方向的檢測誤差是均值為0、標準差為1.5 的正態(tài)隨機誤差。在機器人坐標系{B}下隨機采集100 個標定點作為TCP 在機器人坐標系下的點集,利用設定的手眼轉換矩陣式(13)和式(14),將點集代入式(6)中得到TCP 在相機坐標系下理論坐標點集。理論點集中的每個點加入上述夾持誤差和檢測誤差,模擬真實情況下RGB-D 相機坐標系{C}對TCP 的測量,得到相機模擬檢測點集。
利用在機器人坐標系{B}下采集TCP 的點集和在相機坐標系{C}下測量TCP 的點集,由奇異值分解方法求解式(7)~式(12)得到相機坐標系{C}與機器人坐標系{B}之間的標定結果和,如式(15)和式(16)所示:
圖6 給出了在相機坐標系{C}下的標定球理論點集分布位置和檢測TCP點集分布位置,其中,圓圈為標定球在各個標定點上的真實位置,十字為標定球加入檢測誤差后模擬RGB-D 相機真實情況提取標定球球心在相機坐標下各點分布位置。圖7 給出了在機器人坐標系{B}中機械手末端TCP 真實位置點集和計算位置點集分布,其中,點集是利用標定結果式(15)和式(16)將相機坐標系{C}下檢測點集由式(6)轉換到機器人坐標系后得到,圓圈為機器人機械手末端TCP 在機器人坐標系{B}下的真實位置,十字表示通過標定結果將相機坐標系下的點轉換到機器人坐標系下的各點分布位置。
圖6 相機坐標系中的標定結果Fig.6 Calibration results in the camera coordinate system
圖7 機器人坐標系中的標定結果Fig.7 Calibration results in the robot coordinate system
從仿真結果可看出,通過奇異值分解得到旋轉矩陣和平移向量與標定量設定值基本一致。為進一步分析標定精度,定義標定誤差:利用求得的標定結果,將相機坐標系下的點轉換到機器人坐標系下,轉換后的點與對應機械手末端TCP之間的歐氏距離為標定誤差。該定義沒有去除TCP 在相機中的檢測誤差和標定球在機械手末端的夾持誤差,因此為復合誤差,用于間接分析標定精度。仿真實驗得到的標定誤差分布如圖8 所示,標定誤差整體成正態(tài)分布,誤差均值為2.63 mm,誤差方差為0.92 mm,驗證了本文提出的基于目標檢測的機器人手眼標定方法的有效性。
圖8 標定誤差分布Fig.8 Calibration error distribution
利用末端安裝有Robotiq85 機械手的6 自由度UR5 機械臂和Intel RealSense D415 深度相機搭建手眼系統(tǒng),如圖9 所示。算法運行環(huán)境為Windows10、Pytorch1.4.0、Python3.7,CPU 為i5-6200,GPU 為GeForce 940M 2 GB 顯存。上位機通過網(wǎng)口與UR5控制機箱通信與機械臂運動,獲取機械手末端TCP在機器人坐標系下的坐標,利用Intel RealSense D415 的PyRealSense2 包,獲得相機內(nèi)參矩陣k信息,通過USB 接口讀取相機的彩色圖和深度圖。
圖9 手眼標定實驗設置Fig.9 Experiment setting of hand-eye calibration
使用直徑為3 cm 標定球夾持在UR5 機械臂Robotiq85機械手末端,控制機械臂在相機視野中移動。在移動過程中,利用改進的yolov3 網(wǎng)絡從RGB-D 相機返回的彩色圖中檢測標定球的球心坐標Pball(u,ν)并獲得球心點深度值。利用式(3)計算標定球心在相機坐標系下的三維坐標,實現(xiàn)對標定球的空間定位。在機械臂運動空間內(nèi)隨機采集標定點,記錄機器人機械手末端TCP 在機器人坐標系下的三維坐標(從機器人控制器中獲?。┖蜋z測得到的標定球球心在相機坐標下的三維坐標,使用奇異值分解方法求解相機坐標系與機器人坐標系轉換關系的旋轉矩陣和平移向量。隨著標定點數(shù)量的增加,標定誤差的均值逐漸減小,當采樣點數(shù)量大于30 時,標定誤差均值逐漸趨于穩(wěn)定,如圖10所示。標定錄像文件見https://share.weiyun.com/tyb6Zd0O。
圖10 標定誤差均值與標定點數(shù)量的關系Fig.10 The relationship between the mean value of calibration errors and the number of calibration points
訓練后的改進yolov3 標定球檢測模型權重占用192 MB 的內(nèi)存空間,網(wǎng)絡模型對416×416 像素單張圖片預測輸出標定球球心坐標的平均耗時為167.6 ms。采集標定數(shù)據(jù)后,利用50 組標定數(shù)據(jù)計算標定結果的旋轉矩陣和平移向量最高耗時小于2 ms。
標定球被夾持在機械手末端,通過目標檢測網(wǎng)絡檢測標定球位置進行手眼標定。當使用不同尺寸的標定球進行標定實驗時,會得到不同精度的標定結果。為獲得精度較高的標定結果,需找到最佳尺寸的標定球,分別測試8 種不同直徑的標定球,得到不同的標定誤差,如表1 所示。在實驗中,標定球直徑太大或太小都會使最終的標定誤差增大。標定球直徑過大容易引起較大的夾持誤差,使標定誤差增大;標定球直徑過小,容易引起較大的檢測誤差,使標定誤差增大。實驗結果表明,在仿真中設定的誤差分布情況與實際系統(tǒng)中直徑為3.0~3.5 cm 的標定球的誤差結果較接近。與其他直徑的標定球相比,直徑為2.5 cm 的標定球的誤差均值、最大誤差、誤差方差均最小。
表1 不同直徑標定球的誤差結果Table 1 Error results of calibration balls with different diameters
在上述兩個測試實驗的基礎上,利用直徑為2.5 cm 的標定球重新進行標定實驗,在機器人運動范圍內(nèi)隨機選取40 個采樣點作為標定點,記錄機器人機械手末端TCP 在機器人坐標系的坐標和標定球球心在相機坐標系下的坐標,求得手眼關系轉換矩陣和平移向量,如式(17)和式(18)所示:
通過控制機器人使標定球在機器人運動范圍內(nèi)選取20 個采樣點作為驗證點,如圖11 所示。使用式(17)和式(18)的標定結果,由式(6)將RGB-D 相機檢測標定球在相機坐標系下的坐標轉換到機器人坐標系下,轉換后的空間點坐標與從機器人控制器返回的機械手末端TCP 坐標進行對比,求出各點轉化后的距離誤差均值和X、Y、Z方向的誤差結果如表2 所示。在本文實驗環(huán)境下使用最佳直徑2.5 cm的標定球得到的標定結果,轉換后機器人坐標系下空間點的距離誤差均值為1.967 mm,在X、Y、Z各方向上的誤差均值為0.895 mm、1.207 mm、1.142 mm,最大誤差和誤差方差均較穩(wěn)定。
圖11 驗證點空間分布Fig.11 Spatial distribution of verification points
表2 驗證點誤差結果Table 2 Error results of verification points mm
本文提出基于目標檢測的機器人手眼標定方法,將3D 打印球作為標定件,通過改進的yolov3 目標檢測神經(jīng)網(wǎng)絡對標定球進行檢測定位,可在較復雜的環(huán)境中實現(xiàn)對標定球的提取,從而完成機械手末端TCP 在相機坐標系與機器人坐標系之間的標定,避免了多個坐標系之間的復雜轉換。實驗結果表明,基于該方法轉換后的空間點位置誤差在2 mm以內(nèi),標定精度較高。下一步將分析標定求解算法及標定球的夾持安裝精度、yolov3 標定球檢測精度等對最終標定精度的影響。