劉 博, 金守峰, 宿月文, 嚴 楠, 李 毅
(1.西安工程大學 機電工程學院, 陜西 西安 710048;2.寶雞文理學院 陜西省機器人關鍵零部件先進制造與評估省市共建重點實驗室, 陜西 寶雞 721016;3.寧波職業技術學院 機電工程學院, 浙江 寧波 315800; 4.陜西省計量科學研究院, 陜西 西安 710100)
紡織行業是典型的勞動密集型產業,在社會經濟發展中具有重要地位。筒子紗是紡織工藝的一個終端產品,一般為圓柱或圓錐形,是生產布料、衣物和毛巾等產品的重要原材料[1]。目前,筒子紗在搬運時使用了機器人分揀大大提高了生產力。然而,在筒子紗堆放、遮擋場景下,傳統示教型機器人的分揀存在巨大困難,隨著紡織行業生產向智能化、自動化轉變,機器視覺輔助作業已成為一種必然趨勢[2-3]。
利用視覺輔助機器人完成相關動作是目前研究的熱點,受到了研究人員高度關注。張勤等[4]針對復雜背景下番茄串采摘點識別定位問題,提出了基于RGB-D信息融合和目標檢測的番茄串采摘點識別定位方法,引導機器人完成采摘任務。饒期捷等[5]融合機器視覺技術提出了一種基于改進的Canny邊緣檢測和Hough變換的機器人抓取檢測分類算法,實現了機器人的目標抓取。高茂源等[6]針對管件在機器人抓取中的分類識別、位姿估計等問題,提出了一種基于雙目視覺的多類型管件分類識別與位姿估計方法。Lou[7]提出了一種基于機器視覺模型的高斯混合機械臂識別與抓取方法,提高了機器人的抓取精度。陶杰等[8]建立了一套基于機器視覺的零部件抓取系統,實現了水泵生產自動化。Gao等[9]開發了一種基于視覺的密封圈組裝系統,提高了生產線的效率。滕臻等[10]針對靜脈藥物調配機器人在藥瓶類型分類、藥瓶關鍵尺寸測量的問題,結合機器視覺和深度學習,提出了一種高效穩定的識別測量方法。權寧等[11]搭建了一套工業機器人視覺碼垛實驗系統,提高了工件的碼垛效率,降低了工人勞動強度。周其洪等[12]利用工業相機采集紗線被吸入吸嘴的圖像,實現了對細紗接頭機器人的紗線斷頭的識別定位。
為了實現筒子紗分揀機器人對堆疊目標的抓取,必須要能夠有效識別類圓柱體的空間位置與姿態。為此,課題組提出了一種具有3D視覺感知的解決方法,通過Kinect V2相機獲取筒子紗目標的點云圖像,根據點云處理及目標識別等算法獲得筒子紗的位姿信息,最后引導機器人完成對筒子紗的抓取任務,并實驗驗證了方法的有效性。
基于3D視覺的筒子紗分揀實驗平臺如圖1所示,由Kinect V2相機、HIWIN 6自由度機械臂、二指電動夾爪、計算機和抓取目標筒子紗構成。Kinect V2相機作為采集筒子紗數據的視覺感知元件,由RGB彩色攝像頭、紅外線發射器和紅外CMOS攝影機組成,以30 幀/s的幀速獲取1 920×1 080像素分辨率的RGB圖像、紅外圖像和512×424像素分辨率的深度圖像。相機采集到的筒子紗圖像如圖2所示。

圖1 實驗平臺

圖2 Kinect V2 采集的筒子紗圖像
機械臂與Kinect V2相機組成了手眼標定(eye-to-hand)系統[13],計算機作為上位機,通過數據處理獲取筒子紗目標的三維信息,同時引導機械臂完成分揀作業。由圖1可知,Kinect V2相機置于筒子紗上方,獲取筒子紗RGB圖像與深度圖像信息,并將2種圖像信息相融合創建筒子紗點云數據,對其進行點云裁剪及點云分割,采用ICP算法進行點云配準,得到筒子紗的位姿信息,引導機器人完成筒子紗的無序分揀。
為了實現對筒子紗目標的精確定位,需要對相機進行標定。Kinect V2相機的標定主要包括深度圖像與RGB圖像的重合,以及攝像頭的標定。目前采用Open NI函數完成RGB圖像與深度圖像的校正工作。課題組基于MATLAB2020a 標定工具箱對Kinect V2相機的攝像頭進行標定,根據所獲取的標定板圖像及標定板的參數可檢測到棋盤格的角點,通過返回檢測到的角點的像素點坐標來完成標定,標定板圖像如圖3(a)所示,9張標定板與相機的相對位置關系如圖3(b)所示,重投影誤差平均為0.43%,小于0.50%,滿足使用要求,具體每張圖像的重投影誤差如圖3(c)所示。
Kinect V2相機采集到的筒子紗點云如圖4(a)所示,受相機工作場景的影響,圖像中存在筒子紗、承裝筒子紗的盒體以及周圍背景的點云,盒體以及周圍背景的點云為干擾點云。為了準確獲取筒子紗的點云數據,課題組采用MSAC算法和直通濾波算法對筒子紗的原始點云數據進行預處理。

圖4 點云預處理過程
M估計抽樣一致性算法(M-estimation sampling consistency algorithm,MSAC)是隨機抽樣一致性算法(random sample consensus,RANSAC)的變體,通過修改RANSAC算法的代價函數解決閾值敏感的問題[14],算法步驟為:
1) 在點云數據中隨機選取3個點;
2) 依據選取的點組成一個平面s;
3) 設定閾值dτ,計算其它所有點到平面s的距離d,將距離d小于dτ的點判定為局內點,否則為局外點;
4) 確定場景中的局內點,并記錄其數目;
5) 重復步驟1)~4),當平面模型中的局內點數目最多時即為擬合得到的最佳平面。
直通濾波是提取感興趣區域最常用的方法,通過指定方向、指定閾值進行裁剪,達到快速去除點云的目的。設置三維坐標軸上的閾值,當點云處于這個范圍時會被保留下來,而超出這個范圍的點云就會被去除。本研究中,坐標軸上的閾值分別為:

(1)
式中:x,y,z為目標區域在三維坐標軸上的閾值范圍。
通過MSAC算法和直通濾波算法提取出筒子紗的點云數據如圖4(c)所示,對比濾波前后的點云圖,可以看出本研究算法有效地去除了干擾點云。
堆疊狀態下的筒子紗之間存在遮擋、接觸等情況,為了獲取筒子紗目標準確的位姿信息,課題組采用基于聚類的分割方法,對堆疊狀態下的點云數據進行分割。
在實際工業應用場景中,點云分割常用的分割方法為聚類分割[15]、歐式距離分割[16]及區域生長分割[17]。由于堆疊的筒子紗之間比較緊密,各筒子紗點云之間距離過近,基于歐式距離的分割方法的結果如圖5(a)所示,可以看出各筒子紗之間沒有完全分割,還存在接觸的問題;基于區域生長分割方法的結果如圖5(b)所示,可以看出由于筒子紗朝向及位姿接近,容易將多個不同的筒子紗分割為一類。為了準確分割堆疊狀態下的筒子紗,課題組提出一種融合歐式距離與區域生長的E-R分割方法。

圖5 2種點云分割算法效果
機器人每次只抓取單個筒子紗,因此只需分割出待抓取筒子紗的點云信息。故E-R分割方法不對堆疊狀態下的所有點云進行聚類分割,僅對待抓取筒子紗進行分割。同時,E-R分割將歐氏距離與區域生長分割相融合,在考慮點與點之間的距離基礎上,再考慮筒子紗接觸法線之間的夾角,選定特定點代替隨機種子點,對距離Kinect V2相機最近的筒子紗點云進行分割,避免了因筒子紗堆疊導致的分割效果不佳的問題。
E-R 算法的步驟為:
1) 遍歷筒子紗點云中所有點,找出z軸方向最大的點pz作為種子點;
2) 計算pz到其鄰點ps的距離dz,將距離小于設定的距離閾值dλ的點放入待抓取筒子紗的點云集合M中;
3) 計算pz與ps的法向量之間的夾角θ,將夾角小于設定的角度閾值Φ的點放入集合P中。則集合M可表示為{M|dz≤dλ,θ≤Φ};
4) 重復步驟1)~3),直到所有筒子紗被分割完畢。
內部形態描述子(intrinsic shape signatures, ISS)是一種表示立體幾何形狀的方法,含有豐富的幾何信息,可以在局部坐標系下對特征點進行提取[18]。課題組以筒子紗點云中的角點、梯度和灰度急劇變換的點作為關鍵點,對其進行特征提取,結果如圖6所示。

圖6 ISS關鍵點提取結果
提取關鍵點的步驟為:
1) 對筒子紗點云中的點pi建立局部坐標系,并設定該點的搜索半徑r;
2) 以pi為中心,r為鄰域半徑,遍歷鄰域范圍內的所有點,并計算其權值:
wij=1/‖{pj∶|pj-pi| (2) 式中:pj為pi搜索半徑內所有鄰點。 3) 計算pi的協方差矩陣cov (pi): (3) 式中:pi為筒子紗點云某點,r為設定的搜索半徑,pj為pi搜索半徑內所有鄰點,wij為pj權值,cov (pi)為pi的協方差矩陣,Tt為矩陣變換。 (4) 5) 重復步驟1)~4),直至遍歷所有點。 機器人成功抓取目標的前提是獲得目標對象的位姿參數,通過模板點云的關鍵點的特征找到實際場景中筒子紗點云中目標點云的位姿,即得到模板點云與目標點云之間的剛性變換關系(平移、旋轉),為了獲得筒子紗點云分割后的抓取姿態,課題組采用精準配準的迭代最近點算法(iterative closest point algorithm,ICP)對點云進行配準[19]。 以下為具體步驟。 1) 將模板點云P和目標點云Q作為初始點集。 (5) 3) 構建最小二乘的約束條件,計算最優剛性變換: (6) 式中:R為旋轉矩陣,t∈R3,(R,t)為最優剛性變換的目標函數。 4) 計算平均距離: (7) 式中:T為平移矩陣;dk為所有對應點的平均距離。 5) 設定閾值dε和最大迭代次數Nmax。 6) 重復步驟1)~5),直至滿足收斂條件。 課題組在MATLAB2020a環境和圖1平臺進行實驗,配置為Intel Core i5 CPU、4 GiB內存的PC作為數據處理中心,實驗抓取目標質量為150 g的筒子紗,分揀機器人的最大抓取質量為500 g。 為驗證課題組提出方法的可靠性,以實際生產中筒子紗成品為對象進行實驗驗證,將9個筒子紗目標隨意散亂堆疊在實驗平臺上,采集點云數據并對其進行裁剪,根據E-R分割方法對裁剪完成的筒子紗點云進行分割,獲取如圖7(a)所示的筒子紗點云分割結果。依據點云分割結果依次選取序號為1~9的9個筒子紗目標進行位姿估計實驗,使用ICP算法對其進行點云配準,獲取各個目標在機器人坐標系下的位姿,如圖7(b)所示。為了評估文中提出E-R分割算法的性能,與歐式距離分割法和區域生長分割方法進行比較,結果如表1所示。 圖7 點云處理結果 表1 點云分割方法準確率對比 從表1可以看出,對于堆疊狀態下的筒子紗點云,E-R分割結合了歐式距離和區域生長的特點,有效的彌補了其他2種方法的不足,分割準確率達到了100%。實驗驗證了本系統方法對于堆疊狀態的點云場景具有較好的分割效果。 實驗中的抓取系統采用手眼標定(eye-to-hand)模式,即相機固定,與機械臂基坐標系相對位置不變,依照散亂堆疊擺放的原則進行了10批次抓取測試,每批次進行9次抓取,總共抓取90次。將裝有筒子紗的盒子放在機器人的工作范圍內,Kinect V2相機獲取筒子紗圖像并通過圖像處理系統得到筒子紗的位姿,根據處理結果確定抓取的順序;再通過標定結果將配準得到的筒子紗位姿轉換到機器人基座標系下,機器人控制夾爪移動到筒子紗上方并調整末端姿態,夾爪閉合進行夾取。每完成抓取一次目標后,機械臂返回到初始位置,等待下一個目標的抓取,重復上述步驟,直至將所有筒子紗全部分揀完成。實際抓取過程如圖8所示。 圖8 筒子紗抓取過程 為了定量評價該分揀方法的性能,從抓取時長和抓取成功率2個指標進行評估。抓取時長定義為從Kinect V2相機采集筒子紗點云到機械臂抓取目標并返回初始點的時間。抓取成功率η有: η=(nc/nz)×100%。 (8) 式中:nc為每批實驗成功抓取筒子紗的次數;nz為每批實驗的抓取總次數。 分別對從視覺系統獲取目標信息到機械臂完成抓取時長和抓取成功率進行記錄,實驗結果如表2所示。由表2可知,課題組所設計的堆疊筒子紗的機器人無序分揀方法能成功獲取筒子紗目標的位姿信息并完成抓取工作,抓取時間平均為11.14 s,總成功率可以達到86.61%。 表2 抓取實驗結果 課題組提出一種堆疊筒子紗的機器人無序分揀方法,研究了筒子紗點云數據的獲取及預處理方法,將MSAC和直通濾波算法結合,去除多余點云,提出改進E-R分割算法對堆疊場景下的筒子紗點云進行分割,分割效率達到了100%;研究了筒子紗的位姿估計問題,基于ISS算法對筒子紗點云的關鍵點進行提取,采用ICP算法實現點云精準配準,結合標定結果確定了所識別筒子紗的精確位姿;搭建了真實環境下的實驗平臺進行實驗驗證。實驗結果表明,該方法能夠適用于多個圓柱或圓錐目標散亂堆疊場景下的分揀,其性能可以滿足實際生產需求。

3.2 點云配準


4 實驗結果與分析
4.1 點云分割及配準實驗


4.2 筒子紗抓取實驗


5 結語