陳澤瑜,李向國,曹登鋒,朱燈林
河海大學 機電工程學院,江蘇 常州 213022
無序抓取是機器人領域中的一個重要的研究方向,該技術通過相機采集場景信息,檢測目標物體,并計算物體的位置、姿態等信息,再將信息傳輸給機械臂,機械臂根據得到的信息進行抓取,構成一個完整的閉環控制系統[1-2]。對于抓取任務來說,能夠在場景中正確檢測和識別目標是實現抓取的前提條件。在無序抓取中,通常還需要對一些堆疊的工件進行檢測與計算,得到最適合抓取目標物體個數以及每個目標的位姿,然后引導機械臂進行抓取[3-4]。
抓取的前提是識別和檢測。在以往的研究中,常用的目標檢測方法包括閾值分割[5]、模板匹配以及基于深度學習[6]的方法。基于閾值分割的目標檢測方法將圖像的前景和背景分割開,通過分析前景中物體的特征來進行檢測,但是這種方法檢測效果不穩定,一般較少使用。基于模板匹配的目標檢測方法包括基于二維圖像的匹配以及基于三維點云的匹配。其中基于二維圖像的匹配包括基于灰度的模板匹配、基于形狀的模板匹配[7-8]以及基于特征點的模板匹配[9-10]。由于圖像的特征點具有旋轉以及尺度不變性,一般常使用特征點來進行檢測。常用的特征點匹配算法包括尺度不變特征變換(scale invariant feature transform,SIFT)[11]、加速穩健特征(speeded up robust features,SURF)[12]以及旋轉不變特征檢測(oriented FAST and rotated BRIEF,ORB)算法[13]。近年來,基于深度學習的目標檢測方式成為該領域的研究熱點,其不僅具有較高的檢測速度,并且能夠達到較高的準確率[14]。但是該方式需要龐大的數據集進行訓練,數據集的獲取以及昂貴的標注成本限制了其應用,并且該方式不適用于抓取目標經常變換的場景。
針對目標檢測,許多研究者對傳統的模板匹配檢測方式進行了改進。惠記莊等人[15]在機械臂的抓取應用中,將SURF和BRISK算法結合對圖像進行特征提取并匹配,然后使用MSAC算法進行二次匹配消除誤匹配點計算仿射變換參數,從而實現場景中的目標檢測。該方法在忽略特殊幾何畸變的條件下,對復雜環境具有很強的適應能力。但是該算法最終得到的匹配點數量較少,不適用于對弱紋理目標的檢測。Li 等人[16]通過提取場景圖片和模板圖片的ORB 特征點,引入基于網格運動靜力學(grid-based motion statics,GMS)的運動平滑度對匹配點進行評估以去除錯誤匹配,然后將圖像劃分為多個單元圖像,根據每個單元中特征點的數量計算網格中心權重,進而計算檢測目標的中心,生成檢測框。該算法具有較高的檢測速度和精度,但是當從不同的角度拍攝圖片時,會出現檢測框發生偏移的情況,不適合應用在無序抓取中。Wei等人[17]使用基于輪廓的模板匹配來進行目標識別,首先提取模板圖像和待檢測圖像輪廓,并使用對于平移、旋轉、縮放和變形具有魯棒性的MTCD描述子對輪廓進行描述,通過計算描述符之間的差異來識別目標。該算法為了消除圖像中的冗余信息,使用超像素分割結合啟發式搜索的方式進行匹配,并且圖像描述符的計算復雜,檢測速度較慢。陶杰等人[18]通過深度相機采集目標的點云信息,并使用點對特征法(point-pair-feature,PPF)描述模型點云和目標點云的特征,最后使用投票方案返回場景中與模型最佳匹配的目標。該方法使用深度相機進行點云采集,相較于普通相機成本較高,并且在檢測出的結果中未定義抓取優先級,無法保證機械臂每次都進行最優抓取。Zhao等人[19]在機械臂的無序抓取應用中使用一種名為MSG_SHOT的描述符對模型點云和場景點云進行描述,并根據描述符對點云進行匹配,大大提高了系統在有雜波干擾和遮擋場景目標識別精度,并將應用場景從3D 點云擴展到2.5D 深度信息,但是該算法使用的是局部特征描述子,計算復雜度高,實時性較差。
在無序抓取過程中,相機視野內可能存在多個相同的目標,為了盡可能多且準確地檢測出可抓取目標,提出一種基于密度峰值聚類(density peaks clustering,DPC)的多目標檢測算法,該算法可以同時檢測出相機視野內的多個相同目標,并按照設定的規則進行優先級排序,從而提高無序抓取的成功率。并且該算法僅使用普通相機即可實現,與深度相機的點云匹配方法以及基于深度學習的多目標檢測算法相比,該算法的實現成本較低,適用性好,有利于部署到無序抓取應用中。
常用的特征點檢測方法有SIFT、SURF 以及ORB。其中SIFT 算法是經典的特征點檢測算法之一,相較于SURF 以及ORB,其檢測精度較高,具有較好的旋轉及尺度不變性。為了保證目標檢測的準確率,使用基于SIFT特征點的模板匹配方式進行檢測。
分別提取模板圖像和待檢測圖像中的SIFT特征點進行匹配。然而,當待檢測圖像中存在多個相同的目標物體時,圖像中往往會出現大量相同的特征點。如果直接進行匹配,就會有很多相同的特征點與模板圖像的同一個特征點匹配成功,這會使模板不確定與哪一個目標進行匹配,從而導致檢測失敗。這是由于傳統的模板匹配方法是將待檢測圖像中的特征點看作是一個集合,用模板圖像中的特征點和該集合中的特征點進行匹配,所以每次只能檢測出一個目標。采用聚類算法能夠將待檢測圖像的特征點分為屬于不同目標的特征點集合,將模板圖像中的特征點與不同目標的特征點集合分別進行匹配,從而實現一次檢測多個目標。
在現有的多目標檢測算法中,常使用K-means算法對目標特征進行聚類[20],但是該算法需要預先輸入聚類中心個數,并且聚類結果嚴重依賴于初始聚類中心的選取。而聚類中心的個數在實際的應用場景中很難事先確定。為了提高無序抓取系統的自動化程度,提出使用DPC算法對特征點進行聚類,該算法可以在不預先確定聚類中心數量的情況下根據圖像中的特征點分布自動完成聚類。DPC 算法基于兩個基本假設:(1)聚類中心(密度峰值點)的局部密度大于圍繞它的其他點的密度;(2)不同聚類中心的距離相對較遠。
首先使用SIFT 算法提取待檢測圖像的特征點,并存儲在集合表示該集合中特征點的索引值,采用dij=dist{(xi,yi),(xj,yj)} 表示兩個特征點之間的歐氏距離。然后,對于集合S中的任何一個特征點,計算其局部密度ρi和相對距離δi兩個指標,其中:
式中,ρi為第i個特征點的局部密度,dij為第i個和第j個特征點之間的距離,dc為截斷距離。
由上式可知,γi越大,點(xi,yi)為聚類中心的可能性越大。得到特征點集中每個點的γ值后,對γ進行排序,選擇γ較大的點作為聚類中心。計算特征點集中每個數據點與所有聚類中心點之間的距離,并將其劃分到距離該點最近且密度比該點密度大的聚類中心完成聚類,最終將特征點劃分為屬于不同聚類中心地特征點子集mi。目標不同放置情況下的特征點聚類結果如圖1所示,圖像中不同顏色的點分別代表屬于不同聚類中心的特征點。

圖1 目標特征點聚類分析Fig.1 Target feature point clustering analysis
待檢測圖像的特征點經過DPC 算法聚類之后,得到聚類結果M(m1,m2,…,mi,…,mn),其中mi={(xi1,yi1),(xi2,yi2),…,(xij,yij)}表示屬于第i個聚類中心的特征點集合。將屬于不同聚類中心的特征點分別與模板圖像中的特征點進行匹配,得到每個目標的匹配點對集合,匹配點對中不可避免地會出現錯誤,需要進行提純。
在所有特征點提純算法中,RANSAC 算法實現起來相對簡單,并且該算法對于噪聲以及異常值具有魯棒性,適用于無序抓取中場景存在噪點的情況。此外,OpenCV還對該算法進行了優化,使運算速度進一步提高。因此,使用RANSAC算法去除誤匹配點。
根據去除誤匹配后的匹配點計算模板圖像和待檢測圖像中目標的單應矩陣,將模板圖像映射到待檢測圖像上,實現目標檢測。轉換關系如公式(6)所示:
式中,(x′,y′)表示模板圖像中的特征點,(x,y)表示待檢測圖像中的特征點,s為尺度參數,H為單應矩陣。
RANSAC 算法計算目標單應矩陣的流程如圖2 所示。首先從聚類結果M(m1,m2,…,mi,…,mn)中選取某個目標的點集mk,再從該點集中抽取子集,計算初始單應矩陣。然后根據初始單應矩陣計算其余點的實際坐標和計算坐標之間的差值,統計每次迭代的內點數量并與當前最大內點數量Nmax進行比較,判斷是否需要更新Nmax。最后,將內點數量最多的單應矩陣作為該目標正確的單應矩陣。

圖2 RANSAC算法流程圖Fig.2 RANSAC algorithm flow chart
經過迭代計算的單應矩陣中,有一部分是根據較少的匹配點得到的。而從理論上說,如果要實現一個目標的正確檢測,需要有足夠多匹配點為支撐。當一個目標的匹配點數量較少的時候,該目標為錯誤檢測結果的概率較大。因此,設置一個最少匹配點數量Th作為閾值,只有當目標與模板的正確匹配點個數大于此閾值的時候,才能認為該目標是一個正確的檢測結果;反之,認為該目標檢測錯誤,并將其舍棄。為了能夠適應不同的場景,提出一種自適應閾值選取方式。經研究發現,在不同的場景中,目標的匹配點數量小于場景中最多匹配點數量的50%時,該目標較大概率為錯誤檢測結果。因此,將閾值Th設為最多匹配點數量的50%。該方法實現簡單,能夠以極低的代價去除錯誤檢測結果。
上述步驟的檢測結果中包括一些被遮擋的目標,為了實現抓取,還需要找到可抓取目標。首先,將上述檢測到的目標按照內點數量進行降序排列,其中內點數量最多的目標一定是可抓取目標。設置閾值λ,將內點數量與最多匹配點數量的差小于閾值λ的目標當作可抓取目標,放入可抓取目標集合O中,其余目標進行舍棄。然后,在可抓取目標集合O中,根據每個目標的質心到圖像中心的距離進行抓取優先級排序。
為了使機械臂能夠準確地抓取物體,還需要使用ad-census立體匹配算法[21]計算場景視差圖,根據雙目成像原理計算可抓取目標上某些特征點的三維坐標。然后,將世界坐標系下的三維坐標與圖像坐標系下的二維坐標進行一一對應,使用投影尋蹤算法(perspective-npoint algorithm,PNP)計算目標物體在世界坐標系下的位姿。將計算的目標物體的三維信息傳輸給機械臂,機械臂根據目標的位置、姿態以及優先級進行抓取。圖3展示了完整的面向無序抓取的多目標檢測流程。

圖3 DPC多目標檢測流程Fig.3 DPC multi-target detection process
實驗使用的硬件平臺為Intel Core i5-7300HQ,CPU 主頻為2.5 GHz,內存容量為8 GB,操作系統為Windows 10 x64。使用C++語言結合OpenCV視覺庫,在Visio Studio 2019 中進行開發。實驗中的參數設置如表1所示。

表1 實驗參數表Table 1 Experimental parameters table
首先在Visio studio 2019 中使用C++語言調用OpenCV視覺庫,直接調用OpenCV中SIFT算法,提取模板圖像和待檢測圖像的特征點,并生成SIFT 特征描述子進行存儲。模板和待檢測圖像的特征點如圖4所示。

圖4 模板圖像和待檢測圖像的SIFT特征點Fig.4 SIFT feature points of template image and image to be detected
然后使用DPC算法對待檢測圖像中的特征點進行聚類,得到的聚類中心如圖5 所示,其中不同顏色的點代表不同的聚類中心,每個聚類中心的坐標以及屬于每個聚類中心的特征點個數如表2所示。

表2 聚類中心坐標及特征點個數Table 2 Clustering center coordinates and number of feature points

圖5 DPC聚類得到的聚類中心Fig.5 Clustering centers obtained by DPC clustering
從圖5 和表2 中可以看出,在待檢測圖像中有6 個目標的情況下,DPC算法得到的6個聚類中心中有兩個(藍、灰)位于同一目標上,這會導致最終的檢測結果出現錯誤。原因在于待檢測圖像中特征點之間相互連接,分布不均勻,在聚類過程中較為稀疏的特征點區域中的密度峰值點可能會被誤認為是噪聲點,從而導致聚類錯誤。并且在待檢測圖像中不僅包括目標物體的特征點,還不可避免地存在一些背景特征點以及噪聲點,這些除目標特征點之外的干擾點也會對聚類結果產生影響。因此,僅僅依靠DPC 聚類無法正確檢測圖像中的多個目標物體,還需要對聚類結果進行篩選,以確保多目標檢測的準確性和穩定性。
將聚類之后的特征點集分別與模板圖像進行匹配,并使用RANSAC 算法去除誤匹配點,計算每個目標的單應矩陣,并將模板圖像的四個邊緣點映射到待檢測圖像上,生成檢測框。圖6展示了RANSAC算法處理的結果,每個聚類目標的內點數量如表3所示。

表3 每個目標匹配點數量Table 3 Number of matching points per target

圖6 RANSAC處理前后的匹配點Fig.6 Matching points before and after RANSAC processing
為了去除由于匹配點數量少導致的錯誤檢測結果,設置最少匹配點數量閾值Th對檢測結果進行過濾。在圖5的場景下,所有的檢測結果中目標所具有的最多匹配點數量為65,將最多匹配點數量的50%即32設置為閾值,匹配點數量小于該閾值的目標被舍棄。由表3 可知,經過閾值篩選之后,圖像中能夠正確檢測出5 個目標,檢測結果如圖7 所示。圖7 中紅色邊框標記的為檢測出的目標物體。證明了所提多目標檢測算法的有效性。

圖7 篩選前后檢測結果比較Fig.7 Comparison of test results before and after screening
而在實際的無序抓取應用中,不需要一次將場景中的所有目標都檢測出來,只需要保證不出現檢測錯誤即可。因此,實際應用場景中的閾值選取可以適當偏大。
從圖7可以看出,使用DPC聚類多目標檢測算法能夠正確檢測出場景中的目標物體。但是實際上,算法的檢測結果不僅與閾值的選取有關,還與截斷距離以及聚類中心個數有關。為了確定不同聚類中心個數對目標檢測結果的影響,選用不同的截斷距離進行多目標檢測實驗。圖8 顯示了使用不同截斷距離所獲得的聚類中心個數以及最終的檢測結果。實驗發現,隨著截斷距離的增大或減小,聚類中心的數量總體上也是隨之減少和增多的。經分析發現,截斷距離增大,相當于每個特征點的搜索鄰域增大,會將更大范圍的特征點聚類在一起,因此聚類中心的數量減少,而最終能夠檢測到的目標數量也會減少;反之,截斷距離減小,聚類中心的數量增多,能夠檢測到的目標數量也增多。但是當截斷距離小于一定范圍,聚類中心個數超過一定數值之后,圖像中的特征點總數不變,屬于每個聚類中心的特征點數量變少,在與模板圖像進行匹配時得到的正確匹配點數量也變少,達不到正確檢測所需要的最小匹配點數量,因此會出現較多的錯誤檢測結果,如圖8(f)所示。所以,在實際的應用場景中,截斷距離的選取既不能過大,也不能過小。

圖8 不同聚類中心個數的檢測結果Fig.8 Detection results of number of different clustering centers
在如圖4的場景中,選取截斷距離dc=37 結合最少匹配點數量閾值能夠將目標全部正確地檢測出來。但是在實際的無序抓取應用中,不需要一次將視場中的目標全部檢測出來,所以對截斷距離的選取不需要十分嚴格。在實際應用中可以通過實驗選取不同的截斷距離,從而得到不同的聚類中心個數,選擇檢測效果較好的作為最終的截斷距離。
為了驗證使用SIFT算法的必要性,設置對比實驗,將使用SURF、ORB算法的檢測結果和使用SIFT算法的檢測結果進行比較,兩種算法的檢測結果如圖9所示。
與使用SIFT特征點的算法相比,使用SURF特征點的多目標檢測算法能夠檢測出場景中的多個目標物體。然而,該算法的個別目標檢測結果會出現較大的偏差,如圖9(a)所示。相比之下,使用ORB特征點進行多目標檢測則無法正確檢測出目標物體,如圖9(b)所示。分析結果表明,這是由于SURF算法在特征點檢測和描述符生成過程中采用了一些優化算法以降低計算復雜度,從而導致描述符的精確度降低,進而在匹配過程中出現錯誤,影響檢測的準確性。而ORB 算法提取出的特征點數量相對于SIFT 算法較少,且這些特征點聚集在“純牛奶”三個字附近,容易在聚類過程中出現錯誤。此外,ORB 特征點采用二進制描述子并使用一些近似的方式計算描述符方向,降低了描述符的精度及圖像對旋轉和尺度變化的魯棒性,從而導致特征點匹配的過程中出現了大量的錯誤匹配。即使經過RANSAC算法篩選,這些誤匹配也無法完全消除,因此無法正確檢測出目標。
為了使機械臂能夠進行正確的抓取,需要在檢測結果中找到可抓取目標。在所有檢測的結果中,匹配點數量最多的目標一定是沒有被遮擋的可抓取目標,其抓取優先級相對較高。當圖像中存在多個可抓取目標的時候,通過計算目標匹配點數量與最多匹配點數量的差值來進行判斷。根據實驗發現,如果目標的匹配點數量與最多匹配數量相差超過10%,則該目標較大概率為被遮擋目標。因此,在如圖10的實驗場景下,設置閾值λ為7。當差值小于閾值則認為目標未被遮擋,為可抓取目標,并放入可抓取目標集合,最終將可抓取目標信息傳輸給機械臂進行抓取。可抓取目標的篩選結果如圖10所示,其中綠色邊框為識別的可抓取目標。

圖10 目標中的可抓取目標Fig.10 Capturable targets in target
對于如圖10(a)所示堆疊目標圖像,最終如圖10(a)中綠框所示檢測到一個可抓取目標。對于如圖10(b)所示平鋪目標,選取截斷距離以及篩選閾值,最終可以檢測到3個可抓取目標。為了便于抓取,根據每個目標形心坐標到圖像中心的距離進行抓取優先級排序,排序結果列于表4。

表4 圖10(b)中目標優先級排序Table 4 Target prioritization in Figure 10(b)
檢測出可抓取目標之后,使用ad-census 立體匹配算法計算場景的視差圖,并根據標定得到的相機內外參數重建牛奶盒左上、右上、左下、右下四個特征角點的三維坐標。根據目標檢測結果將角點在圖像上的二維坐標和三維坐標進行一一對應,最后使用PNP算法計算目標的位姿,用齊次變換矩陣表示。結果列于表5。

表5 圖10(b)中可抓取目標位姿Table 5 Graspable target pose in Figure 10(b)
計算出位姿信息之后,將每個目標的位姿信息發送給機械臂。機械臂根據目標的抓取優先級、位姿信息進行抓取。
在無序抓取應用中,目標檢測的準確性是實現成功抓取的前提。然而,當圖像中存在多個相同目標時,容易導致目標檢測失敗。為了盡可能多地從場景中正確檢測出目標,提出使用DPC聚類算法進行多目標檢測。首先提取模板圖像和待檢測圖像的SIFT 特征點,使用DPC算法對特征點進行聚類,將聚類后的特征點分別與模板圖像中的特征點進行匹配,并使用RANSAC 算法去除誤匹配點。然后,根據每個目標匹配點的數量來篩選正確的檢測目標,并根據目標匹配點數量與最多匹配點數量的差值來篩選圖像中的可抓取目標。基于每個目標的形心坐標到圖像中心的距離來設置可抓取目標的優先級。最后使用立體匹配算法得到場景視差圖,計算目標特征點的三維坐標,并根據三維坐標和二維坐標的對應關系使用PNP 算法計算目標的位姿信息。實驗表明,基于DPC 聚類的特征點模板匹配方式能夠檢測出圖像中的多個目標,包括圖像中的被遮擋目標,并且能夠根據閾值篩選出多個目標中的可抓取目標。此外使用立體匹配算法結合PNP 算法能夠準確地計算出目標的位姿信息。將目標的優先級、位姿等信息傳輸給機械臂,可以實現工件的無序抓取。