李紅衛(wèi),張煜奇,周 軍,汪 俊
(1.航空工業(yè)西安飛機工業(yè)(集團)有限責任公司,西安710089;2.南京航空航天大學機電學院,南京210016)
隨著工業(yè)機器人在零件識別、抓取和現場巡檢等制造環(huán)節(jié)、場景的大量應用[1],基于機器人對零件的位姿計算技術已經成為智能制造領域中的重要一環(huán)。飛機制造過程中大量的機械零件,由于其形狀種類多、尺寸大小不一等特點,始終缺乏快速、有效的零件自動分揀手段,使分揀環(huán)節(jié)難以與零件的自動配送系統(tǒng)形成高效的有機整體,限制了飛機制造的自動化程度及生產效率的進一步提升。研究機械零件的位姿計算技術已日益迫切。
傳統(tǒng)的機械零件位姿識別計算方案如Delta 機器人識別方法、射頻識別技術等,由于準確率與效率較低、應用局限性大以及位姿計算精度低等原因,很難滿足現代飛機制造的需求。近年來,國內外許多科研人員基于點對特征(Point pair feature,PPF)[2]對三維物體的位姿識別開展了大量的研究[3?7]。王化明等[8]提出了基于點對特征和局部參考系的位姿計算算法,提高了目標物體識別的準確率以及效率。魯榮榮等[9]提出一種增強型點對特征用來識別目標物體,解決了原始算法中存在的內存浪費以及效率低下的問題。然而,在嚴重遮擋、散亂堆放的場景中,如圖1所展示的機械零件和機械臂抓取現場,現有的位姿識別方法面臨較大的挑戰(zhàn),無法達到工業(yè)現場要求的識別效率以及準確率。飛機機械零件因表面無紋理或紋理少、幾何形狀種類繁多、大小不一,位姿計算的技術難度更大。
圖1 機械零件及機械臂抓取現場Fig.1 Mechanical parts and grabbing scene
本文針對上述問題,通過引入基于深度學習的機械零件語義分割方法,智能感知機械零件的空間區(qū)域信息,優(yōu)化基于特征描述子的機械零件位姿計算算法,以實現基于機械臂的機械零件高效率精準抓取。具體地,本文首先構建一些常用的機械零件語義分割RGB 數據集,訓練深度學習分割網絡,實現基于RGB 圖像數據的機械零件語義分割;接著,結合深度數據及視覺傳感器內參,計算二維圖像與三維點云的映射關系,實現不同機械零件所在三維空間區(qū)域的分割;最后,基于分割的不同類別的零件,分別計算描述子特征,提高常用機械零件位姿計算的準確率及效率,最終通過實驗對本文方法進行驗證。
本文首先基于機械臂視覺傳感器,獲取到待抓取機械零件的RGBD 數據。為了提高直接利用特征描述子進行機械零件位姿計算的精度及效率,在進行機械零件位姿計算之前,本文提出了一種基于深度學習的機械零件三維空間區(qū)域感知方法,即利用深度學習方法對機械臂視覺信息進行分析,實現機械零件在二維空間的分類及分割。進一步地,結合傳感器參數及深度信息,利用二維與三維的空間映射關系,實現不同機械零件所在三維空間區(qū)域感知?;谌S感知結果,本文針對不同類別的機械零件,分別計算PPF 特征,縮小特征匹配的范圍,提高機械零件位姿計算的精度及效率。最后基于計算結果,自動規(guī)劃機械臂路徑,支持機械零件的自動分揀抓取。整體的實驗配置及方案如圖2 所示。
圖2 實驗配置及方案Fig.2 Configuration and solution of this research
本文首先利用深度學習框架Mask R?CNN[10]對機械臂視覺傳感器獲取的視覺信息進行智能分析;接著基于二維到三維的空間映射關系,實現機械零件的三維區(qū)域感知;最后利用PPF 特征,實現機械零件的位姿計算。
為了實現基于視覺信息的機械零件的分類與分割,本文采用Mask R?CNN 深度學習框架。Mask R?CNN 是Faster R?CNN[11]的擴展,在Faster R?CNN 原有的用于對象分類和邊界框識別的分支上增加了一個用于預測對象掩碼的并行分支。因此,Mask R?CNN 與Faster R?CNN 類似,同樣由兩個階段所構成。在第1 階段,通過區(qū)域生成網絡(Region proposal network,RPN)生成候選對象邊界框;在第2 階段,除了進行預測對象類別和邊界框識別外,Mask R?CNN 還使用一個全卷積網絡(Ful?ly convolutional networks,FCN)為每個感興趣區(qū)域(Region of interest,ROI)生成一個二進制掩碼?;谝陨蟽蓚€階段,形成一個小型的、靈活的通用對象實例分割框架,不僅可以檢測圖像中的目標,還可以為每個目標提供高質量的分割結果。然而,原始的Mask R?CNN 框架是基于COCO 開源訓練數據集[12],將其直接用到機械零件的語義分割任務中,精度較差。因此,本文首先構建幾類常用的機械零件語義分割RGB 數據集,基于該數據集進一步優(yōu)化模型參數,提高機械零件語義分類分割的精度。
2.1.1 數據集構建
本文使用的視覺傳感器配置如圖2(a)所示。規(guī)劃機械臂路徑之前,視覺傳感器獲取當前機械零件擺放場景的RGBD 數據。本文選取10 類比較常見的機械零件,具備通孔、倒角和棱邊等機械零件的典型特征,且表面光滑無紋理。設計不同的擺放場景,共獲取1 000 張RGB 圖像數據,并通過中心裁剪統(tǒng)一調整大小到1 024 像素×1 024 像素。此外,為了實現更加魯棒的訓練,本文對采集到的數據集進行擴充。具體來說,數據集主要通過3 種方式進行擴充:隨機旋轉,水平/垂直翻轉和模糊。隨機旋轉和翻轉技術可以模擬傳感器在不同的角度和不同的方向采集到的圖像。圖像模糊用于模擬相機抖動或無法對焦時的圖像捕獲。在此基礎上,本文采用Label me 軟件對所有圖像進行人工的語義標注及分割,作為訓練Mask R?CNN 的真實值。最終,本文數據集包括4 000 張機械零件無序擺放的RGB 圖像及對應的語義分類、分割真值。這一數據集被分成3 個部分:80% 的樣本用于訓練,10%的樣本用于驗證,而10%的樣本用于測試。
2.1.2 框架細節(jié)
本文采用特征金字塔網絡[13](Feature pyramid network,FPN)和深度殘差網絡[14](Deep residual network,ResNet101)作為Mask R?CNN 的主干網絡。輸入視覺傳感器獲取到的RGB 圖像,基于ResNet101 中Block1 至Block5 每個殘差塊的最后一層卷積計算得到自底而上的特征圖。卷積層之間的最大池化操作使每一層生成的特征圖大小分別為輸入圖 像的1/2、1/4、1/8、1/16 和1/32。接著,通過特征融合操作將高層特征映射逐層合并到低層特征映射,實現上下文特征融合。此外,本文是針對10 類機械零件的語義分割,因此需要對模型關于分類的分支最后的全連接層進行修改,模型的結構框架如圖3 所示。
本文同時考慮提高機械零件定位精度、分類及分割準確度,定義如下優(yōu)化方程
式中:θ 是Mask R?CNN 模型參數。式(1)第1 項計算機械零件的定位精度,l 包含機械零件包圍盒的位置及尺寸信息;第2 項計算機械零件的分類準確度,q 表示模型對單個機械零件輸出的分類的概率;第3 項計算機械零件分割的精度,f 表示輸出圖像上的單個像素;gt 表示這些信息來自本文數據集,包括:第i 張RGB 圖像上,機械零件j 真實包圍盒的位置及尺寸lgtij,機械零件真實分類pgtij,及輸入圖像每個像素對應的分割真值fgtik,輔助優(yōu)化,更新模型參數。此外,α、β 和γ 調節(jié)以上3 項的相對重要性,通過大量的實驗驗證,本文的權重設為α=0.8,β=1 和γ=0.5。
圖3 基于Mask R-CNN 的機械零件RGB 圖像語義分割模型結構框架Fig.3 Mask R-CNN architecture for semantic segmentation of mechanical parts
2.1.3 訓練實驗配置
給定機械零件RGB 圖像和數據集中對應的語義分割真實結果,本文采用交并比(Intersection over union,IOU)策略來定義FPN 錨框中的正樣本和負祥本。IOU 表示預測邊界盒與地面真實邊界盒的交集與并集之比。本文將ROI 得分大于0.7的錨框定為正,將IOU 得分小于0.3 的錨框定為負,這樣可以丟棄大部分無效的區(qū)域提案。接著,在每個小批量迭代中,使用所有選擇的錨點,基于式(1),計算分類和協(xié)調回歸損失。本文共訓練50 000 次迭代,將權值衰減和動量分別設置為0.000 1 和0.9。 本文將初始學習速率設置為0.001。經過30 000 次迭代后,將學習率重新設置為0.000 1。實驗環(huán)境描述如下:深度學習框架Tensorflow 2.0,Windows 10,Python 2.7,Intel Core I7?8700,帶有8 GB 內存的GTX 1080 圖形處理單元(GPU)。
為了實現機械零件所在三維空間區(qū)域感知,本文基于以上機械零件RGB 圖像語義分割結果,結合視覺傳感器的內參及采集到的深度信息,利用二維與三維的空間映射關系,構建附帶語義信息的機械零件三維點云。
機械零件具有表面光滑無紋理、結構特征明顯等特點,PPF 特征可有效利用機械零件的結構特點進行特征表達,因此,本文利用PPF 特征對機械零件和場景進行描述。傳統(tǒng)基于PPF 的位姿計算方法對整個場景進行采樣,在運行階段同時計算并存儲場景和模型的特征,存在以下問題:(1)特征計算量大,存儲空間內存消耗大,需要較長的匹配時間,算法效率低。(2)除了待識別的機械零件,存在其他冗余數據,可能造成誤匹配,影響位姿識別的精度。為了提高位姿計算的精度及效率,本文基于PPF 特征和上述區(qū)域感知結果改進位姿識別算法。在離線階段,計算待檢測機械零件模型PPF 特征,構建機械零件特征庫;在檢測階段,計算由區(qū)域感知結果分割的機械零件點云數據的PPF 特征,搜索特征庫獲得與場景機械零件上點對對應的模型點對。由這兩組點對執(zhí)行局部坐標對齊和投票決策,優(yōu)化得票值高的位姿結果,實現機械零件的位姿計算。
2.2.1 PPF 特征描述
PPF 特征用于描述點對,它是一個由4 個參數組成的向量,如圖4 所示。點云中存在兩個點p1、p2,構成點對,用∠(a,b) ∈[0,π]表示兩個向量之間的夾角,則PPF 特征可表示為
式中:d 表示由點p1指向p2的向量;n1、n2分別表示兩個點所在表面的法向量。
圖4 PPF 特征Fig.4 Point pair feature
視覺傳感器采集場景數據轉化成點云,點云中每對點對計算一個PPF 特征將導致存儲空間的巨大消耗,計算量十分龐大,為了加快算法速度,本文首先對點云進行泊松采樣,采樣點構成點對計算PPF 特征,隨后利用Hash 表結構對PPF 特征進行編碼,利用鏈表和數組結構存儲信息,具有相同Hash 值的點對將存儲在同一個線性表中,構建機械零件特征庫,如圖5 所示。
圖5 Hash 編碼Fig.5 Hash coding
2.2.2 局部坐標對齊
建立機械零件特征庫后,基于區(qū)域感知結果分割場景中的機械零件,對于場景機械零件數據進行相同的泊松采樣,計算采樣點間的PPF 特征,匹配Hash 值。在這里,基于分割結果避免對場景中背景等其他數據的計算,一定程度上提高匹配的精度和效率。假設場景中存在機械零件點對Si、Sj,則模型機械零件上存在點對Mi、Mj與其匹配,為了獲得一個統(tǒng)一的表示,本文建立局部坐標系,如圖6所示,分別將兩點對對齊到局部坐標原點,圍繞法線旋轉物體,完成場景與模型間的局部坐標對齊,具體公式為
式中:Rs、Rm、R(α)為旋轉變換;ts、tm為平移變換。場 景 點 對Si、Sj和 模 型 點 對Mi、Mj存 在 對 應 關 系,建立局部坐標系,通過剛體變換,分別將點Si、Mi變換到坐標原點,并旋轉其法線與x 軸方向對齊。此時,兩個點對之間存在錯位,再通過旋轉變換R(α)旋轉角度α 完成局部坐標對齊,最后,通過5個變換關系,求解模型空間到場景空間的轉換關系,即可獲得待求機械零件的一個位姿結果。
圖6 局部坐標變換Fig.6 Local coordinate transformation
2.2.3 投票策略
研究目標是找到“最優(yōu)”的位姿結果,使得經過位姿變換后的模型點落在場景中機械零件上的數量最大。本文采用一種投票策略對局部坐標進行投票,最終找到“最優(yōu)”局部坐標。
首先,創(chuàng)建一個二維累加器,行數與模型采樣點數量一致,列數與旋轉角度采樣步數一致,本文設置為30,即僅允許采樣角度與正確角度之間的最大差值為12°,在保證識別精度的同時降低采樣步數,以滿足效率要求;接著選定場景機械零件上一點作為參考點,與其他場景點配對,計算PPF 特征并從庫中尋找匹配項,返回在模型上具有相似距離和方向的點對;隨后對齊局部坐標,根據參考點和角度建立二維累加器的索引值,并計數投票;最后,所有采樣點遍歷上述階段,得到一組二維累加器陣列,完成投票。
由此,獲得了多個位姿結果,本文引入位姿優(yōu)化策略,來提高位姿的精確性。首先,對于一個位姿,與已存在的位姿相比較,若旋轉量和平移量小于給定的閾值,則將這個位姿歸為一類,否則,創(chuàng)建新的位姿類。遍歷所有位姿結果,即可得到位姿聚類結果,累加同一聚類內的位姿得票值,取峰值為正確位姿聚類結果。最后,均值化類內位姿,得到“最優(yōu)”位姿結果。
為了驗證本文方法對于位姿識別的準確性,本文首先利用人工合成的機械零件數據搭建虛擬場景,采集RGBD 數據,并對其中的機械零件位姿進行手動標注,獲得真值位姿,以此作為評估精度的標準。此外,本文與傳統(tǒng)的PPF 位姿識別算法比較,分別評估兩種方法對相同的合成數據集進行位姿計算的精度,并引入匹配時間來評判算法的效率,通過精度和效率兩個指標評判兩種算法的優(yōu)劣。
圖7 表示兩種方法的位姿識別結果,識別的位姿用3D 包圍盒表示,雖然兩種方法都能計算目標物體的位姿,但本文方法優(yōu)于PPF 方法,原因在于本文方法進行三維點云語義分割,避免冗余數據特征影響位姿識別結果。表1 給出兩種方法位姿結果與真值位姿的平均誤差,本文方法的識別結果平均誤差平移量為0.52 mm,旋轉角度為3.38°,相較于傳統(tǒng)的PPF 算法提高一倍,優(yōu)于傳統(tǒng)算法。從數據可以得出結論,本文的方法在位姿識別精度方面有所提高,而匹配速度明顯高于PPF 算法,原因是本文對待抓取的機械零件進行三維感知,語義分割出待識別的機械零件,而待識別的機械零件在整個場景數據中占比小,此方法只對相同類別的場景零件數據計算特征,避免大量冗余數據的計算。由此可見,本文的方法在提高位姿識別精度的同時,提高位姿識別的速度,在實際工程應用中更具有優(yōu)勢。
圖7 合成數據的單實例識別Fig.7 Single-instance recognition of synthetic data
表1 兩種方法的誤差對比Table 1 Error comparison of the two method
圖8 遮擋和噪聲的影響Fig.8 Influence of occlusion and noise
此外,本文還測試算法對遮擋、噪聲的影響,其中遮擋率及噪聲比率定義及設置方式參考文獻[15]。本文分別以20%、40%、60%、80%的遮擋率進行遮擋測試,添加0.5%、1.0%、1.5%、2.0%、2.5%的高斯噪聲進行噪聲測試,如圖8 所示,該算法在一般的遮擋和噪聲水平下識別率能達到80%,魯棒性較好。
為了測試本文方法在真實場景中的適用性,本文采集真實的機械零件數據進行位姿識別實驗,為了采集測試數據,利用視覺傳感器采集場景的RG?BD 圖像,作為本文方法的原始輸入。圖9 展示實際場景中的位姿識別效果,其中,藍框部分的位姿識別效果較好,模型數據和場景數據基本擬合,紅框部分位姿識別效果較差,原因在于該機械零件處于數據采集框邊緣,數據質量較差,特征被遮擋。本文利用機械臂和視覺傳感器在實驗室進行抓取實驗。表2 展示了本文方法進行的若干次標準件的抓取結果,可以觀察到,位姿識別結果直接影響抓取結果,正確的位姿識別結果可以有效引導機械臂抓取,本文的方法對抓取的成功率較高。經過上述實驗,表明該方法適用于實際場景。總體來說,本方法對真實的場景有效,能夠識別出零件的位姿。
圖9 真實場景多實例識別Fig.9 Multi-instance recognition of real data
表2 抓取實驗結果Table 2 Result of crawling experiment
本文提出一種基于區(qū)域感知的機械零件位姿計算方法,并在大量的合成數據和實際場景中進行了實驗論證。結果表明,本文的位姿計算方法的平移誤差在1 mm 以內,旋轉角度誤差在4°以內,識別結果用于抓取任務中成功率可達85%。針對實際項目需求,在場景中擺放20 個機械零件,利用機械臂進行實際抓取實驗并設定200 次的抓取次數上限,通過本方法可在限定次數下將場景中的機械零件全部抓取成功,驗證了本方法的實際應用價值,可以為實際工程應用提供有效支撐。