上層零件提取方法、裝置、計算機設備和存儲介質與流程
2024-04-13 14:40:05 1
1.本發明屬於計算機視覺技術領域,尤其涉及一種上層零件提取方法、裝置、計算機設備和存儲介質。
背景技術:
2.在智能工廠的分揀、裝配、加工等任務中,自動化立體倉庫發揮了非常重要的作用,利用立體倉庫設備可實現倉庫高層合理化、存取自動化、操作簡便化。在重工業場景中,工廠會在立體倉庫存儲用於焊接組裝的鋼板工件,這些工件往往以堆疊形式放置在料框上,一旦獲取到生產需求,立庫會將對應的料框移動到取料位,由計算機視覺技術引導桁架抓取訂單所需特定工件到板鏈線上。這之後,板鏈線將工件運送到另一頭,再次由計算機視覺引導桁架抓取放置到對應的託盤,由agv小車運送到指定的需求工站。
3.由於來料重量大、種類多、外形高度相似等特點,容易導致現場人員工作效率不高、機械碰撞或者出料錯誤等問題,極大影響了整個工廠的自動化水平。因此,基於視覺的立體倉庫中工件的自動識別與抓取成為倉儲自動化的研究重點。然而,由於現場光照環境變化很大,目前利用普通2d成像效果實現自動化取料的效果並不好。而且,由於料框中工件堆疊狀態並不標準,通常比較雜亂,使得上下層工件在成像上往往會出現幹擾,最終容易導致識別出錯。除此之外,由於工件彎曲形變以及現場自然光的影響,還容易在成像時,出現成像缺失等問題,從而降低立體倉庫中工件自動識別與抓取的精準性。
技術實現要素:
4.基於此,有必要針對上述技術問題,提供一種能夠提高效率和精準性的堆疊件的上層零件提取方法、裝置、計算機設備和存儲介質。
5.本發明提供一種堆疊件的上層零件提取方法,包括:獲取堆疊件的點雲,將所述點雲均勻地劃分為非重疊的點雲模塊;基於均方誤差將各所述點雲模塊合併為平面,得到初始分割平面;根據所述初始分割平面與平面邊界相鄰點雲的距離對所述初始分割平面進行精細分割,得到精細分割平面;將各所述精細分割平面進行兩兩比較篩選上層平面,拼接各所述上層平面得到最上層零件平面;根據所述最上層零件平面提取所述堆疊件中的最上層零件。
6.在其中一個實施例中,所述獲取堆疊件的點雲,將所述點雲均勻地劃分為非重疊的點雲模塊之後,還包括:根據點雲的深度值篩除數據缺失和深度不連續的點雲模塊,以及根據點雲模塊的均方誤差、法向量篩除不滿足保留條件的點雲模塊。
7.在其中一個實施例中,根據點雲模塊的均方誤差篩除不滿足保留條件的點雲模塊,包括:
將所述點雲模塊中的各點雲轉換為點雲矩陣;根據所述點雲矩陣計算協方差矩陣,獲取所述協方差矩陣的特徵值和特徵向量,根據所述特徵值和所述特徵向量擬合所述點雲模塊中點雲的平面方程;根據所述平面方程計算所述點雲模塊中各點雲的均方誤差;保留所述均方誤差小於第一誤差閾值的點雲模塊。
8.在其中一個實施例中,根據點雲模塊的法向量篩除不滿足保留條件的點雲模塊,包括:確定所述點雲模塊中各點雲的法向量;當根據各所述法向量之間的差值確定所述點雲模塊包括上下兩層平面之間的邊界時,篩除所述點雲模塊。
9.在其中一個實施例中,所述基於均方誤差將各所述點雲模塊合併為平面,得到初始分割平面,包括:在未合併的點雲模塊中確定均方誤差最小的點雲模塊為初始模塊;從所述初始模塊的相鄰點雲模塊中選取與所述初始模塊合併後均方誤差小於第二誤差閾值的點雲模塊進行合併得到新初始模塊,並循環從新初始模塊的相鄰點雲模塊中選取點雲模塊繼續合併,直到無法合併,獲得初始分割平面;返回在未合併的點雲模塊中確定均方誤差最小的點雲模塊為初始模塊的步驟,直到各所述點雲模塊均完成合併。
10.在其中一個實施例中,所述根據所述初始分割平面與平面邊界相鄰點雲的距離對所述初始分割平面進行精細分割,得到精細分割平面,包括:確定所述初始分割平面的各平面邊界相鄰點雲,根據所述初始分割平面中各點雲的平面方程分別計算與各所述平面邊界相鄰點雲的距離;當所述距離小於第一距離閾值、所述距離對應的平面相鄰邊界點雲不屬於其他平面且所述平面邊界相鄰點雲納入平面後的平面均方誤差小於第三誤差閾值時,將所述平面邊界相鄰點雲納入到所述初始分割平面中;當所述距離小於第一距離閾值、所述距離對應的平面邊界相鄰點雲屬於其他平面且平面合併後的平面均方誤差小於第三誤差閾值時,將所述平面邊界相鄰點雲的所屬平面與所述初始分割平面合併,得到精細分割平面。
11.在其中一個實施例中,所述將各所述精細分割平面進行兩兩比較篩選上層平面,拼接各所述上層平面得到最上層零件平面,包括:根據各所述精細分割平面與標定板平面之間的角度確定水平面和斜面;兩兩比較各所述水平面,當兩個水平面之間的距離小於第二距離閾值且兩個水平面的角度差小於角度閾值,或者兩個水平面的重疊區域面積大於第一面積閾值時,從兩個水平面中保留位置更高的面,得到上層平面;兩兩比較各所述斜面,當兩個斜面之間的距離以及兩個斜面的重疊區域面積大於第二面積閾值時,從兩個斜面中保留位置更高的面,得到上層平面;將各所述水平面與各所述斜面進行兩兩比較,當所述水平面與所述斜面之間的距離大於等於第二距離閾值且所述水平面與所述斜面的重疊區域面積大於第三面積閾值時,從所述水平面和所述斜面中保留位置更高的面,得到上層平面;
拼接各所述上層平面,得到最上層零件平面。
12.一種堆疊件的上層零件提取裝置,包括:點雲劃分模塊,用於獲取堆疊件的點雲,將所述點雲均勻地劃分為非重疊的點雲模塊;初始分割模塊,用於基於均方誤差將各所述點雲模塊合併為平面,得到初始分割平面;精細分割模塊,用於根據所述初始分割平面與平面邊界相鄰點雲的距離對所述初始分割平面進行精細分割,得到精細分割平面;平面提取模塊,用於將各所述精細分割平面進行兩兩比較篩選上層平面,拼接各所述上層平面得到最上層零件平面;零件提取模塊,根據所述最上層零件平面提取所述堆疊件中的最上層零件。
13.本發明還提供一種計算機設備,所述計算機設備包括處理器和存儲器,所述存儲器存儲由電腦程式,所述處理器執行所述電腦程式時實現上述任一項所述的堆疊件的上層零件提取方法的步驟。
14.本發明還提供一種計算機可讀存儲介質,其上存儲有電腦程式,所述電腦程式被處理器執行時實現上述任一項所述的堆疊件的上層零件提取方法的步驟。
15.上述堆疊件的上層零件提取方法、裝置、計算機設備和存儲介質,獲取3d相機拍攝得到的點雲均勻劃分為多個點雲小模塊,然後基於均方誤差將認為屬於同一個平面的點雲模塊整合在一起得到初始分割平面。進而繼續基於初始分割平面與平面邊界相鄰點雲的距離進行精細分割來得到更為精準的精細分割平面,最後通過兩兩比較精細分割平面篩選上層平面拼接得到上層零件平面來提取最上層零件。該方法基於3d拍攝的點雲實現最上層零件的成像,有著視野大、響應速度快、適應環境廣的特點,即使在黑燈環境下也絲毫不受影響。同時,通過點雲合併、初始分割以及精細分割等步驟,降低了對零件的堆疊擺放要求,即使零件堆疊狀態不標準、工件彎曲形變也能準確提取出最上層零件的平面準確成像,從而提高後續自動抓取的精準性。
附圖說明
16.圖1為一個實施例中堆疊件的上層零件提取方法的流程環境圖。
17.圖2為一個實施例中點雲法向量的示意圖。
18.圖3為一個實施例中初始分割平面的結果示意圖。
19.圖4為一個實施例中堆疊件的精細分割平面示意圖。
20.圖5為一個實施例中最上層零件平面的示意圖。
21.圖6為一個實施例中堆疊件的上層零件提取裝置的結構框圖。
具體實施方式
22.為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。
23.在一個實施例中,如圖1所示,提供一種堆疊件的上層零件提取方法,包括以下步
驟:步驟s101,獲取堆疊件的點雲,將點雲均勻地劃分為非重疊的點雲模塊。
24.具體的,優選獲取3d相機拍堆疊件的深度圖,將該深度圖數據轉換為點雲,得到堆疊件的點雲。然後將點雲均勻地劃分為多個非重疊的模塊,得到點雲模塊。在劃分過程中,優選按照一定大小,比如按照10*10的尺寸將得到的點雲數據劃分為多個10*10大小由點雲構成的模塊。另外,在劃分得到點雲模塊之後,也可以基於實際需求對點雲模塊進行篩選,保留所需要的點雲模塊。
25.在一個實施例中,步驟s101之後還包括篩選點雲模塊的步驟,包括:根據點雲的深度值篩除數據缺失和深度不連續的點雲模塊,以及根據點雲模塊的均方誤差、法向量篩除不滿足保留條件的點雲模塊。
26.具體的,由於環境影響或者3d相機本身的技術缺陷導致一些點雲數據有所缺失,因此可以基於點雲的深度值篩除一些數據缺失、深度數據不連續的點雲模塊。比如,當點雲模塊中存在較多點雲深度值為空或者為0的點雲時,視為該點雲模塊數據缺失嚴重,可以將該點雲模塊篩除。或者,當基於點雲模塊中各點雲的最大深度值、最小深度值確定深度值變化較大、深度數據不連續時也可以將該點雲模塊篩除。同時,還可以基於點雲模塊中點雲的均方誤差篩除包括不屬於同一平面點雲的點雲模塊。以及基於點雲的法向量篩除包括兩層平面之間邊界的點雲模塊。其中,點雲的均方誤差能夠利用主成分分析方法擬合出點雲公式之後計算得到。
27.在一個實施例中,根據點雲模塊的均方誤差篩除不滿足保留條件的點雲模塊,包括:將點雲模塊中的各點雲轉換為點雲矩陣;根據點雲矩陣計算協方差矩陣,獲取協方差矩陣的特徵值和特徵向量,根據特徵值和特徵向量擬合點雲模塊中點雲的平面方程;根據平面方程計算點雲模塊中各點雲的均方誤差;保留均方誤差小於第一誤差閾值的點雲模塊。
28.具體的,基於主成分分析(pca)的原理可知,對於大量離散的點雲,首先找到其數據中心,然後在該中心點基礎上找到一條3d線,使得點雲數據投影到這條線上的時候的方差最大,即全部數據在該方向上的投影最為分散,也就意味著更多的信息被保留下來。這條線,成為了點雲中的第一主要成分。同樣的,在求出第一主要成分之後,利用以上方法,找到3d數據點雲中的另外兩根3d線,它們構成了點雲的第二和第三成分。其中,點雲數據在第三成分3d線上的變化是最小的。
29.而根據平面方程公式:[a,b,c]表示該平面的法向量,意味著平面中的數據在法向量上的變化速度是最慢的,正好與上述第三主成分的概念不謀而合。因此,只需要通過pca的方式求出對應點雲的第三主要成分,即可擬合出該點雲模塊中點雲的公式。本實施例中求解點雲中各主要成分的具體過程如下:首先,將點雲模塊中的各點雲轉換為點雲矩陣,假設點雲模塊中有n個三維點雲(x,y,z),將所有的三維點寫成3
×
n的矩陣,則有如下點雲矩陣a:
接下來,計算該點雲矩陣的協方差矩陣,協方差矩陣表示點雲中各點的x,y,z的值在變化時的相似程度,協方差矩陣計算如下:最後,根據以下公式獲取協方差矩陣的特徵值和特徵向量,其中λ表示矩陣的特徵值,e表示矩陣的特徵向量,a表示協方差矩陣:一般3行3列的協方差矩陣會有3個特徵值,其中最小的特徵值對應的特徵向量即為平面的法向量。因此,結合點雲中心點的值,我們即可擬合出該模塊中點雲的平面方程。擬合出平面方程後,基於mse(均方誤差)的計算公式即可求解出點雲的均方誤差。即,通過mse計算公式可以計算出實際點雲與擬合後的平面方程計算出來的點雲的理論位置之間的平均誤差。若一個點雲模塊內各點雲的誤差較大,則說明該點雲模塊內點雲不屬於同一個平面,即可捨棄掉該點雲模塊。而誤差是否較大可以通過與設定的誤差閾值進行比對得知,當均方誤差小於設定的第一誤差閾值時,表示其誤差不大,說明該點雲模塊內的點雲應該都是屬於同一個平面的點雲,因此可以保留下來,反之則是誤差較大可以篩除。其中,第一誤差閾值是預先設定的誤差閾值,可以根據實際情況設定。
[0030]
在一個實施例中,根據點雲模塊的法向量篩除不滿保留條件的點雲模塊,包括:確定點雲模塊中各點雲的法向量;當根據各法向量之間的差值確定點雲模塊包括上下兩層平面之間的邊界時,篩除點雲模塊。
[0031]
具體的,由於3d相機本身的質量問題或者有時候鋼板等零件比較薄,導致上下兩層平面差別不大,而這種情況是無法基於深度值和均方誤差等方式將包含了兩層平面之間邊界的點雲模塊去除掉。因此,本實施例通過引入法向量做判斷,可以很好的發現兩個平面之間的過度部分。過度部分的法向量與上下兩層的兩個平面的法向量差值一般都會比較大,從而基於該點雲模塊中各點雲法向量之間的差值可以判斷出是否包括了兩個平面之間的過度部分。如圖2所示,提供一種點雲法向量的示意圖,圖2所示的中間區域即為兩層平面之間的夾角部分(過度部分)。當通過法向量確定點雲模塊中包括這樣的過度部分,則將該
點雲模塊捨棄掉不要。
[0032]
步驟s102,基於均方誤差將各點雲模塊合併為平面,得到初始分割平面。
[0033]
具體的,點雲模塊劃分完成之後,便對各點雲模塊整合來實現平面的初始分割。在初始的分割過程中,選擇均方誤差最小的點雲模塊作為初始模塊與周圍的點雲模塊進行合併擴大直至無法擴大。基於相同的方式,再從未整合的模塊中選擇均方誤差最小的模塊作為初始模塊進行合併擴大,直到所有的點雲模塊都完成整合。
[0034]
在一個實施例中,步驟s102包括:在未合併的點雲模塊中確定均方誤差最小的點雲模塊為初始模塊;從初始模塊的相鄰點雲模塊中選取與初始模塊合併後均方誤差小於第二誤差閾值的點雲模塊進行合併得到新初始模塊,並循環從新初始模塊的相鄰點雲模塊中選取點雲模塊繼續合併,直到無法合併,獲得初始分割平面;返回在未合併的點雲模塊中確定均方誤差最小的點雲模塊為初始模塊的步驟,直到各點雲模塊均完成合併。
[0035]
具體的,首先,我們找到mse(均方誤差)最小的點雲模塊作為初始模塊。然後,我們將一個初始模塊和它周圍相鄰的點雲模塊進行合併判斷。相鄰點雲模塊的數量可以基於實際需求選擇,比如選擇4個也可以選擇8個,本實施例為了提高速度的同時確保質量,優選4個相鄰點雲模塊同步進行合併判斷。
[0036]
如果初始模塊與其中一個相鄰點雲模塊符合合併要求,即兩個模塊合併後所得到的平面的mse小於一定閾值,例如小於預設的第二誤差閾值,則和該相鄰點雲模塊合併成一個新的大模塊。以此不斷循環,不斷從周圍相鄰點雲模塊擴大該初始模塊中的點雲數目,從而把屬於相同平面上的點雲模塊合併成一個更大的模塊,使得對應的平面範圍不斷擴大,直到無法再擴大為止。也就是說,若當前的初始模塊完成第一次合併得到一個新的大模塊之後,將這個新的大模塊視為新初始模塊繼續按照相同的方式從周圍相鄰點雲模塊中選擇模塊合併,直到無法再合併新的模塊為止,即當前所選初始模塊對應的平面已經無法再繼續擴大了。其中,第二誤差閾值與第一誤差閾值相同,是預先設定的誤差閾值,其可以與第一誤差閾值相等也可以不相等。
[0037]
然後,在確定當前初始模塊對應的平面已經擴大到極限時,則換一個初始模塊,返回從當前還未合併的點雲模塊中選取mse最小的模塊作為初始模塊的步驟,繼續重複上述相同的合併過程,直到所有的點雲模塊都完成平面的整合,得到初始分割平面。舉例來說,假設一共有a、b、c、d、e共5個點雲模塊,初次選擇初始模塊時,由於所有的點雲模塊均未進行合併,所以是從這5個點雲模塊中選擇mse最小的模塊a作為初始模塊。然後通過合併a與b得到了更大的ab模塊,則以ab模塊為新初始模塊繼續合併d模塊得到abd模塊後若已經擴大到極限了則停止a模塊的合併,此時abd模塊所組成的平面即為當前得到的初始分割平面。接著,換一個初始模塊繼續合併,即繼續從未合併的c、e模塊中選擇mse最小的模塊作為初始模塊,按照與a模塊相同的合併方式進行合併擴大,以此直至所有的點雲模塊都合併完成,得到所有的初始分割平面。如圖3所示,提供一種初始分割平面的結果示意圖,圖3中不同灰度值的區域為不同的初始分割平面。
[0038]
步驟s103,根據初始分割平面與平面邊界相鄰點雲的距離對初始分割平面進行精細分割,得到精細分割平面。
[0039]
具體的,經過初始分割之後,平面邊界的地方可能存在鋸齒,以及邊界點部分可能會出現數據丟失,導致獲取到的平面部分無法反映出該平面的實際狀態。並且,如果零件被
遮擋,由於被過度分割導致留存的點雲極其有限也無法反映出真實狀態。因此,在進行平面的初始分割之後,本實施例進一步進行精細分割,精細分割除了能夠解決上述問題之外,還能夠將丟棄的有效點雲被找回。比如,基於法向量所捨棄的包括過度部分的點雲模塊中可能存在屬於最上層零件平面的點雲,則能夠通過精細分割找回。而本實施例中的精細分割主要運用區域生長的方式來合併初始分割平面周圍的點雲。即通過各初始分割平面與平面邊界相鄰點雲的距離來判斷是否需要將該點雲納入到平面中,從而得到精細分割平面。
[0040]
在一個實施例中,步驟s103包括:確定初始分割平面的各平面邊界相鄰點雲,根據初始分割平面中各點雲的平面方程分別計算與各平面邊界相鄰點雲的距離;當距離小於第一距離閾值、距離對應的平面相鄰邊界點雲不屬於其他平面且平面邊界相鄰點雲納入平面後的平面均方誤差小於第三誤差閾值時,將平面邊界相鄰點雲納入到初始分割平面中;當距離小於第一距離閾值、距離對應的平面邊界相鄰點雲屬於其他平面且平面合併後的平面均方誤差小於第三誤差閾值時,將平面邊界相鄰點雲的所屬平面與初始分割平面合併,得到精細分割平面。
[0041]
具體的,對於某個初始分割平面,將該平面區域每個邊界點上下左右四個相鄰點雲視為平面邊界相鄰點雲與初始分割平面做平面關聯計算。平面關聯計算的具體步驟為:擬合得到該初始分割平面的平面方程,利用點到平面的距離公式計算出初始分割平面與平面邊界相鄰點雲的距離。如果該平面邊界相鄰點雲與初始分割平面的距離小於預設的第一距離閾值,同時該平面邊界相鄰點雲又不在另外的其他平面上,則該點直接納入到初始分割平面中。而如果距離小於第一距離閾值,但是該平面邊界相鄰點雲在另外的其他平面上,即該平面邊界相鄰點雲有所屬的平面,那麼初始分割平面與這個所屬平面是相連的,則將初始分割平面和所屬平面這兩個平面合併為新的大平面。此時,可以再次對該平面邊界相鄰點雲與合併後新的大平面做平面關聯計算,如果依舊判斷該點屬於合併後新的大平面,則該點確定加入到新的大平面的區域和邊界點。如果不是,則兩個平面仍然分屬不同平面,不做合併且該點不納入到初始分割平面中,從而完成精細分割得到精細分割平面。另外, 需要注意的是,在每次整合點雲到平面中的時候,需要重新計算整合之後新平面的平面方程與mse均方誤差,若mse小於一定閾值,比如小於預設的第三誤差閾值,則再將該點納入到平面中,反之該點也不會整合到平面中。如圖4所示,提供一種堆疊件的精細分割平面示意圖,圖4中的(a)圖為堆疊件的初始分割平面,(b)圖為對(a)圖精細分割後的精細分割平面。其中,第三誤差閾值也是預先設定的誤差閾值,其可以與第一誤差閾值或者第二誤差閾值相等也可以不相等。第一距離閾值則是用於判斷平面之間遠近的閾值,同樣可以根據實際情況預先設定。
[0042]
步驟s104,將各精細分割平面進行兩兩比較篩選上層平面,拼接各上層平面,得到最上層零件平面。
[0043]
具體的,經過精細分割之後雖然已經得到了最為精確的分割結果,但參考圖4可以看到零件的曲面、上下層零件對應的平面依舊是相互粘連、疊加或靠近等,因此需要進一步篩選提取出最上層零件對應的平面。本實施例中,將各個精細分割平面進行兩兩比較,通過二選一篩選保留位於上層的平面,最終保留下來的所有精細分割平面即為最上層零件對應的平面,進而將所有保留的上層平面進行拼接得到最上層零件平面。
[0044]
在一個實施例中,步驟s104包括:根據各精細分割平面與標定板平面之間的角度
確定水平面和斜面;兩兩比較各水平面,當兩個水平面之間的距離小於第二距離閾值且兩個水平面的角度差小於角度閾值,或者兩個水平面的重疊區域面積大於第一面積閾值時,從兩個水平面中保留位置更高的面,得到上層平面;兩兩比較各斜面,當兩個斜面之間的距離以及兩個斜面的重疊區域面積大於第二面積閾值時,從兩個斜面中保留位置更高的面,得到上層平面;將各水平面與各斜面進行兩兩比較,當水平面與斜面之間的距離大於等於第二距離閾值且水平面與斜面的重疊區域面積大於第三面積閾值時,從水平面和斜面中保留位置更高的面,得到上層平面;拼接各上層平面,得到最上層零件平面。
[0045]
具體的,由於3d相機拍攝時可能處於不同角度,所以各平面並非會全部為水平面,也有可能是斜面。因此,為了更加精準的判斷出上層平面,先將精細分割平面與標定板平面進行比對,根據各個精細分割平面與標定板平面的角度將它們分為水平面與斜面。其中,標定板平面是為了與平面做比對,而預先放置在零件最底部的鋼板零件的面。比如,零件若在立庫中是放置在對應的託盤或者筐中時,則在託盤或筐中擺放零件之前先在託盤底板或筐底板放置一塊標定板,後續3d相機拍攝的平面即可通過與標定板平面比對確定是水平面還是斜面。然後,按照水平面與水平面、斜面與水平面以及水平面與斜面的方式分組進行兩兩分組比較,基於相對應的條件判斷出上層平面。
[0046]
在兩兩比較水平面時,當兩個水平面之間的距離小於第二距離閾值,例如水平面之間的距離小於1個像素時,求出相比較的兩個水平面的角度差,如果角度差比較大,說明這兩個水平面是屬於同一個零件的,如果不是,即兩個水平面的角度差小於角度閾值時,則說明這兩個水平面不屬於同一個平面,此時可以在兩個水平面之間篩選保留位置更高的面,得到上層平面。同時,還可以判斷兩個水平面重疊區域面積的大小,當重疊區域面積大於預設的第一面積閾值時,從兩個水平面中保留位置更高的面,得到上層平面。
[0047]
在兩兩比較斜面時,當兩個斜面之間的距離小於閾值,以及兩個斜面的重疊區域面積大於預設的第二面積閾值時,從兩個斜面中保留位置更高的面。
[0048]
而在將各水平面與各斜面進行兩兩比較時,當水平面與斜面之間的距離小於1個像素時,說明它們屬於同一個零件,而反之距離大於等於1個像素時,說明不是同一個零件,則進一步通過水平面與斜面的重疊區域面積來判斷,即當水平面與斜面的重疊區域面積大於預設的第三面積閾值時,從水平面和斜面中保留位置更高的面。其中,第二距離閾值、第一面積閾值、第二面積閾值和第三面積閾值均為預先設定的值,第二距離閾值與第一距離閾值可以相等也可以不相等。各個面積閾值之間也可以相等或者不相等。
[0049]
其中,從兩個面中判斷保留出位置更高的上層平面可以通過計算點到平面的距離得到,比如若a平面中最靠近b平面的點雲與b平面的距離為負值時,表示a平面在b平面之下,否則a平面在b平面之上。通過兩兩比較得到上層平面之後,將所有的上層平面進行拼接得到最上層零件平面。如圖5所示,提供一種最上層零件平面的示意圖,圖5所示的是從圖4中提取出的最上層零件平面。另外,由於實際情況中零件堆疊高度的不斷變化,使得相機拍到的零件數據可能會出現不同程度的形變,為了避免形變所帶來的影響,拼接過程可以進一步利用標定板平面進行矯正。即通過重投影將確定的最上層平面映射到標定板平面上來實現準確拼接。具體來說,利用點雲投影算法將所提取的所有最上層平面對應的點雲投影到標定板平面上形成一個新的點雲,然後利用3d相機內參將投影之後的新點雲反向計算出對應的2維mask圖,後續利用該些mask圖進行拼接。在mask圖中,點雲部分和無點雲部分用
黑白兩色分別進行顯示,比如點雲部分顯示為白色,無點雲部分顯示為黑色。
[0050]
步驟s105,根據最上層零件平面提取堆疊件中的最上層零件。
[0051]
具體的,當提取得到最上層零件平面之後,即可以基於最上層零件平面從堆疊件中準確地抓取所需要的最上層零件放到板鏈線上,後續再將最上層零件運送到指定的需求工站進行加工使用。
[0052]
上述堆疊件的上層零件提取方法,獲取3d相機拍攝得到的點雲均勻劃分為多個點雲小模塊,然後基於均方誤差將認為屬於同一個平面的點雲模塊整合在一起得到初始分割平面。進而繼續基於初始分割平面與平面邊界相鄰點雲的距離進行精細分割來得到更為精準的精細分割平面,最後通過兩兩比較精細分割平面篩選上層平面拼接得到上層零件平面來提取最上層零件。該方法基於3d拍攝的點雲實現最上層零件的成像,有著視野大、響應速度快、適應環境廣的特點,即使在黑燈環境下也絲毫不受影響。同時,通過點雲合併、初始分割以及精細分割等步驟,降低了對零件的堆疊擺放要求,即使零件堆疊狀態不標準、工件彎曲形變也能準確提取出最上層零件的平面準確成像,從而提高後續自動抓取的精準性。
[0053]
在一個實施例中,如圖6所示,提供一種堆疊件的上層零件提取裝置,包括:點雲劃分模塊601,用於獲取堆疊件的點雲,將點雲均勻地劃分為非重疊的點雲模塊;初始分割模塊602,用於基於均方誤差將各點雲模塊合併為平面,得到初始分割平面;精細分割模塊603,用於根據初始分割平面與平面邊界相鄰點雲的距離對初始分割平面進行精細分割,得到精細分割平面;平面提取模塊604,用於將各精細分割平面進行兩兩比較篩選上層平面,拼接各上層平面得到最上層零件平面;零件提取模塊605,根據最上層零件平面提取堆疊件中的最上層零件。
[0054]
在一個實施例中,堆疊件的上層零件提取裝置還包括篩選模塊,用於根據點雲的深度值篩除數據缺失和深度不連續的點雲模塊,以及根據點雲模塊的均方誤差、法向量篩除不滿足保留條件的點雲模塊。
[0055]
在一個實施例中,篩選模塊還用於將點雲模塊中的各點雲轉換為點雲矩陣;根據點雲矩陣計算協方差矩陣,獲取協方差矩陣的特徵值和特徵向量,根據特徵值和特徵向量擬合點雲模塊中點雲的平面方程;根據平面方程計算點雲模塊中各點雲的均方誤差;保留均方誤差小於第一誤差閾值的點雲模塊。
[0056]
在一個實施例中,篩選模塊還用於確定點雲模塊中各點雲的法向量;當根據各法向量之間的差值確定點雲模塊包括上下兩層平面之間的邊界時,篩除點雲模塊。
[0057]
在一個實施例中,初始分割模塊602還用於在未合併的點雲模塊中確定均方誤差最小的點雲模塊為初始模塊;從初始模塊的相鄰點雲模塊中選取與初始模塊合併後均方誤差小於第二誤差閾值的點雲模塊進行合併得到新初始模塊,並循環從新初始模塊的相鄰點雲模塊中選取點雲模塊繼續合併,直到無法合併,獲得初始分割平面;返回在未合併的點雲模塊中確定均方誤差最小的點雲模塊為初始模塊的步驟,直到各點雲模塊均完成合併。
[0058]
在一個實施例中,精細分割模塊603還用於確定初始分割平面的各平面邊界相鄰點雲,根據初始分割平面中各點雲的平面方程分別計算與各平面邊界相鄰點雲的距離;當
距離小於第一距離閾值、距離對應的平面相鄰邊界點雲不屬於其他平面且平面邊界相鄰點雲納入平面後的平面均方誤差小於第三誤差閾值時,將平面邊界相鄰點雲納入到初始分割平面中;當距離小於第一距離閾值、距離對應的平面邊界相鄰點雲屬於其他平面且平面合併後的平面均方誤差小於第三誤差閾值時,將平面邊界相鄰點雲的所屬平面與初始分割平面合併,得到精細分割平面。
[0059]
在一個實施例中,平面提取模塊604還用於根據各精細分割平面與標定板平面之間的角度確定水平面和斜面;兩兩比較各水平面,當兩個水平面之間的距離小於第二距離閾值且兩個水平面的角度差小於角度閾值,或者兩個水平面的重疊區域面積大於第一面積閾值時,從兩個水平面中保留位置更高的面,得到上層平面;兩兩比較各斜面,當兩個斜面之間的距離以及兩個斜面的重疊區域面積大於第二面積閾值時,從兩個斜面中保留位置更高的面,得到上層平面;將各水平面與各斜面進行兩兩比較,當水平面與斜面之間的距離大於等於第二距離閾值且水平面與斜面的重疊區域面積大於第三面積閾值時,從水平面和斜面中保留位置更高的面,得到上層平面;拼接各上層平面,得到最上層零件平面。
[0060]
關於堆疊件的上層零件提取裝置的具體限定可以參見上文中對於堆疊件的上層零件提取方法的限定,在此不再贅述。上述堆疊件的上層零件提取裝置中的各個模塊可全部或部分通過軟體、硬體及其組合來實現。上述各模塊可以以硬體形式內嵌於或獨立於計算機設備中的處理器中,也可以以軟體形式存儲於計算機設備中的存儲器中,以便於處理器調用執行以上各個模塊對應的操作。基於這樣的理解,本發明實現上述實施例方法中的全部或部分流程,也可以通過電腦程式來指令相關的硬體來完成,所述的電腦程式可存儲於一計算機可讀存儲介質中,該電腦程式在被處理器執行時,可實現上述各個堆疊件的上層零件提取方法實施例的步驟。其中,所述電腦程式包括電腦程式代碼,所述電腦程式代碼可以為原始碼形式、對象代碼形式、可執行文件或某些中間形式等。
[0061]
在一個實施例中,提供一種計算機設備,該計算機設備可以是伺服器,包括處理器,存儲器和網絡接口。其中,該計算機設備的處理器用於提供計算和控制能力。該計算機設備的存儲器包括非易失性存儲介質、內存儲器。該非易失性存儲介質存儲有作業系統和電腦程式。該內存儲器為非易失性存儲介質中的作業系統和電腦程式的運行提供環境。該計算機設備的資料庫用於存儲數據。該計算機設備的網絡接口用於與外部的終端通過網絡連接通信。該電腦程式被處理器執行時以實現一種堆疊件的上層零件提取方法。示例性的,電腦程式可以被分割成一個或多個模塊,一個或者多個模塊被存儲在存儲器中,並由處理器執行以完成本發明。一個或多個模塊可以是能夠完成特定功能的一系列電腦程式指令段,該指令段用於描述電腦程式在計算機裝置中的執行過程。所稱處理器可以是中央處理單元(central processing unit,cpu),還可以是其他通用處理器、數位訊號處理器 (digital signal processor,dsp)、專用集成電路 (application specific integrated circuit,asic)、現成可編程門陣列 (field-programmable gate array,fpga) 或者其他可編程邏輯器件、分立門或者電晶體邏輯器件、分立硬體組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等,所述處理器是所述計算機裝置的控制中心,利用各種接口和線路連接整個計算機裝置的各個部分。
[0062]
所述存儲器可用於存儲所述電腦程式和/或模塊,所述處理器通過運行或執行存儲在所述存儲器內的電腦程式和/或模塊,以及調用存儲在存儲器內的數據,實現所述
計算機裝置的各種功能。所述存儲器可主要包括存儲程序區和存儲數據區,其中,存儲程序區可存儲作業系統、至少一個功能所需的應用程式(比如聲音播放功能、圖像播放功能等)等;存儲數據區可存儲根據手機的使用所創建的數據(比如音頻數據、電話本等)等。此外,存儲器可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如硬碟、內存、插接式硬碟,智能存儲卡(smart media card, smc),安全數字(secure digital, sd)卡,快閃記憶體卡(flash card)、至少一個磁碟存儲器件、快閃記憶體器件、或其他易失性固態存儲器件。
[0063]
以上實施例的各技術特徵可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術特徵所有可能的組合都進行描述,然而,只要這些技術特徵的組合不存在矛盾,都應當認為是本說明書記載的範圍。
[0064]
以上所述實施例僅表達了本技術的幾種實施方式,其描述較為具體和詳細,但並不能因此而理解為對發明專利範圍的限制。應當指出的是,對於本領域的普通技術人員來說,在不脫離本技術構思的前提下,還可以做出若干變形和改進,這些都屬於本技術的保護範圍。因此,本技術專利的保護範圍應以所附權利要求為準。