戴現(xiàn)令, 申燚*, 曹榮祥, 孫宏偉, 袁明新
(1.江蘇科技大學(xué)機械工程學(xué)院, 鎮(zhèn)江 212003; 2.江蘇自動化研究所, 連云港 222006)
焊接是船體制造中的重要環(huán)節(jié),由于焊接煙塵、弧光和金屬飛濺等的存在,焊接工作環(huán)境往往比較惡劣[1]。利用焊接機器人開展自動化焊接,不僅能提升焊接質(zhì)量的一致性,而且可以提高生產(chǎn)效率、降低成本。但焊接工藝參數(shù)的快速、準(zhǔn)確選擇是關(guān)鍵,而這需要先對焊接件數(shù)字模型中焊縫特征進行精確識別。焊縫特征識別一直是自動化焊接領(lǐng)域的研究重點,目前研究主要集中在對焊縫圖像或數(shù)字點云模型的處理。Xiao等[2]針對由激光視覺傳感器獲得焊縫的3D點云數(shù)據(jù),在利用邊緣提取和Steger算法獲得激光條紋特征點基礎(chǔ)上,完成了平接和角接接頭的V型坡口識別。Jawad等[3]基于主動視覺并結(jié)合顏色處理、中值濾波和像素鄰域搜索,利用改進Otus算法提取出焊縫中心線上特征點,實現(xiàn)V型坡口的識別。張綸昭[4]基于Hessian矩陣提取圖像中激光條紋中心點和方向信息,使用隨機采樣一致性算法擬合得到接頭橫截面的直線并通過相交點確定出焊縫中心點,實現(xiàn)T型角接和V型平接的坡口識別。張澤南等[5]通過SolidWorks API接口進行焊接件焊縫標(biāo)注模塊的二次開發(fā),利用遍歷特征樹技術(shù)訪問到切割清單,從而識別出平接接頭和T型接頭,并獲取到焊縫厚度和寬度等信息。從上述研究可以看出,目前焊縫特征識別主要針對單一類型的焊縫,或是針對部分接頭或個別坡口的提取,限制了其應(yīng)用范圍。為此,提出了基于三角剖分和輪廓分析的焊縫特征識別,首先通過基于有向三角形旋向的Delaunay三角剖分來生成三維模型的STL文件,然后基于STL文件進行焊縫特征識別。
為了便于三角網(wǎng)格剖分算法的描述,首先給出如下基本定義。
定義1如圖1所示,設(shè)多邊形存在n個頂點(n≥ 3),將全部頂點以逆時針方向編號,并記為P=[P1,P2,…,Pn]。定義多邊形P1P2…Pn為域V,且存在若干三角剖分并組成集合W。?Pi,Pj,Pk∈P,wijk=ΔPiPjPk∈W,W當(dāng)且僅當(dāng)滿足以下條件[6]:①W中每個三角形除頂點之外,不含有其他頂點;②W中任意兩三角形兩者不交疊,且至多存在一個公共頂點或一條公共邊;③W中任意一點都包含在域V中。

圖1 三角剖分定義Fig.1 Definition of triangulation
定義2?i∈[1,n-2],設(shè)Pi、Pi+1、Pi+2為域V中按逆時針連續(xù)排列的3個頂點,則定義Pi為Pi+1的前點,Pi+2為Pi+1的后點,前點Pi與Pi+1組成的邊為前邊,后點Pi+2與Pi+1組成的邊為后邊。
Delaunay三角剖分主要是基于角系數(shù)法和有向三角形旋向?qū)崿F(xiàn),包括初始三角網(wǎng)格生成、三角網(wǎng)格局部變換和STL文件生成。
1.2.1 初始三角網(wǎng)格生成
步驟1順序讀入多邊形域V的頂點P1,P2,…,Pn,并依次存儲到數(shù)組空間。
步驟2通過角系數(shù)法判斷每個頂點的凹凸性,獲取所有凹頂點。
如圖2所示,在待定頂點Pi+1的上、下設(shè)置兩條距其距離相等的水平直線l1、l2,直線l1或l2分別與前邊PiPi+1、后邊Pi+1Pi+2的交點為A、B。設(shè)直線APi+1、BPi+1的斜率分別為tanα、tanβ,根據(jù)式(1)計算角系數(shù)差值Δ。若:交點A、B都在同一條水平直線上且Δ>0,則頂點Pi+1為凹頂點;反之,Δ<0,則頂點Pi+1為凸頂點。交點A、B不在同一條水平直線上且Δ>0,則頂點Pi+1為凸頂點;反之,Δ<0,則頂點Pi+1為凹頂點。

(1)
式(1)中:xa、ya為交點A橫縱坐標(biāo)值;xb、yb為交點B橫縱坐標(biāo)值;xPi+1、yPi+1為頂點Pi+1橫縱坐標(biāo)值。
此外,若前邊PiPi+1或后邊Pi+1Pi+2為水平直線時,則式(1)中1/tanα=0或1/tanβ=0。

圖2 凹凸頂點判斷Fig.2 Concave and convex vertex judgment
步驟3?j∈[1,n-2],按順序從P中依次取出3個頂點Pj、Pj+1、Pj+2來構(gòu)成有向三角形△PjPj+1Pj+2,并根據(jù)式(2)求出其面積S△PjPj+1Pj+2進行三角形旋向判斷。如圖3所示,若計算結(jié)果為正,則該三角形為逆時針旋向并轉(zhuǎn)步驟4;反之為順時針旋向并轉(zhuǎn)步驟5。若3個頂點位于同一直線上,則也轉(zhuǎn)步驟5。


(x1-x2)(y2-y0)]
(2)
式(2)中:(x0,y0)為頂點Pj坐標(biāo);(x1,y1)為頂點Pj+1坐標(biāo);(x2,y3)為頂點Pj+2坐標(biāo)。
以圖2為例,三頂點Pi、Pi+1、Pi+2所構(gòu)成三角形的旋向為順時針;三頂點Pi+1、Pi+2、Pi+3所構(gòu)成的三角形旋向則為逆時針。
步驟4判斷三角形內(nèi)部是否含有凹頂點。若無凹頂點,則輸出構(gòu)成該三角形的三頂點Pi、Pi+1、Pi+2,并將Pi+1從數(shù)組空間中移除,同時以該三角形的起點Pi、終點Pi+2和下一個頂點Pi+3,構(gòu)成新有向三角形△PiPi+2Pi+3并轉(zhuǎn)步驟6;若有凹頂點,則轉(zhuǎn)步驟5。
如圖4所示,三角形內(nèi)部是否含有凹頂點的判斷,主要是將待定凹頂點D與三角形頂點Pi、Pi+1、Pi+2相連,則得到∠PiDPi+1、∠PiDPi+2、∠Pi+1DPi+23個角。若點D在△ABC內(nèi)部或邊上,即∠ADB+∠ADC+∠BDC= 360°,則三角形內(nèi)部含有凹頂點;若點D在三角形ABC外部,即∠ADB+∠ADC+∠BDC< 360°,則三角形內(nèi)部不含凹頂點。
步驟5將三角形△PiPi+2Pi+3的起點Pi存回數(shù)組空間,取出下一個頂點Pi+1,重新構(gòu)成新有向三

圖3 三角形旋向的判定Fig.3 Judgment of triangle rotation

圖4 三角形內(nèi)部是否含有凹頂點的判定Fig.4 Judgment of the concave vertex inside the triangle
角形△Pi+1Pi+2Pi+3并轉(zhuǎn)步驟6。
步驟6判斷數(shù)組空間內(nèi)頂點個數(shù)是否小于等于3,若是,則結(jié)束三角形網(wǎng)格劃分,否則獲取步驟4或步驟5中新構(gòu)成的有向三角形,即△PiPi+2Pi+3或△Pi+1Pi+2Pi+3,再轉(zhuǎn)步驟3進行旋向判斷。
1.2.2 三角網(wǎng)格局部變換
為了使網(wǎng)格剖分的三角形形態(tài)最優(yōu),基于最小角最大準(zhǔn)則[7]做網(wǎng)格進一步局部變換,即去除掉初始劃分三角形的邊界邊,對剩余每條非邊界邊作以下處理:
步驟1遍歷初始三角形網(wǎng)格,找出以非邊界邊為公共邊的兩個相鄰三角形,并判斷由這兩個三角形所構(gòu)成四邊形的凹凸性。若為凹四邊形,不作任何處理;否則轉(zhuǎn)步驟2。
如圖5所示,四邊形凹凸性判斷主要是將兩相鄰三角形的公共邊記為直線l1,將兩三角形中不在公共邊上的兩頂點所連直線記為l2。若直線l1與l2相交,則為凸四邊形;反之為凹四邊形。
步驟2計算兩三角形中的6個內(nèi)角并取出最小角α,再按照圖6進行對角線交換,并計算兩新三角形中6個內(nèi)角的最小角β。
步驟3比較α、β兩角大小。若α≥β,保留對角線交換前兩三角形;反之保留對角線交換后兩新三角形。
為了獲取輪廓相關(guān)信息,便于焊縫特征識別并避免應(yīng)用范圍的限制,對三維模型進行Delaunay三角剖分并生成STL文件。通過調(diào)用SolidWorks軟件API函數(shù),遍歷三維模型的每個輪廓面,提取出每個

圖5 四邊形凹凸性的判定Fig.5 Judgment of concave and convexity of quadrilateral

圖6 最小角最大化準(zhǔn)則Fig.6 Minimum angle maximization criterion
輪廓面上的法向量(指向?qū)嶓w外部)和輪廓頂點坐標(biāo)信息。將每個輪廓面的頂點按逆時針排列,利用上述三角網(wǎng)格剖分算法,將每次劃分輸出的3個頂點坐標(biāo)作為三角面片的3個頂點坐標(biāo),三角面片的法向矢量為所在輪廓面的法向量,從而構(gòu)成一個三角面片的幾何信息。通過整個三維模型劃分即可得到ASCII碼文件格式的STL文件。
焊縫特征[8]主要包括焊接接頭形式和焊接坡口類型。接頭形式通常可分為平接、角接、T型和搭接接頭。坡口類型與接頭形式直接相關(guān),對于平接接頭,常見坡口類型主要有I型坡口、V型坡口和Y型坡口;對于角接接頭和T型接頭,主要有不開坡口、單邊坡口和雙邊坡口;對于搭接接頭則常為不開坡口。文中針對4類焊接接頭形式,共10種焊接坡口進行特征識別。
焊縫特征識別主要基于三維模型的STL文件進行焊縫的接頭形式和坡口類型識別,而兩接頭的待判定面位置關(guān)系直接影響接頭形式。如圖7所示,由于待判定面相對于坡口端面的面積較大,求出每個輪廓面面積并取最大的前四組,即可得到待判定面;然后根據(jù)待判定面處法向量(虛線)的平行或垂直關(guān)系進行4類接頭的空間位置關(guān)系判別。

圖7 待判定面示意圖Fig.7 Surface to be judged
上述10種焊接坡口的輪廓線條數(shù),通常可分為24條、27條和30條三大類。
當(dāng)輪廓線條為24條時,主要有平接接頭的I型坡口、V型坡口;角接接頭的不開坡口、單邊坡口;T型和搭接接頭的不開坡口六種類型。圖8(a)即屬于24條輪廓線類型中平接接頭所對應(yīng)的V型坡口。此類型所涉及焊縫特征識別,主要是先取出前8組長度最短的輪廓線[圖8(a)中數(shù)字1~8];然后針對該8組輪廓線,計算兩兩輪廓線的端點間所有距離;最后根據(jù)接頭空間位置和最小輪廓線距離,進行接頭形式和坡口類型的識別。
當(dāng)輪廓線條為27條時,只有角接接頭雙邊坡口和T型接頭單邊坡口。圖8(b)屬于27條輪廓線類型中角接接頭對應(yīng)的雙邊坡口。此類型所涉及焊縫特征識別,主要是針對10組最短輪廓線[圖8(b)中數(shù)字1~10],并參照24條輪廓線中的相同處理方式,進行相應(yīng)接頭形式和坡口類型的識別。

圖8 輪廓線條選取示意圖Fig.8 Schematic diagram of outline line selection
當(dāng)輪廓線條為30條時,同樣只有平接接頭Y型坡口和T型接頭雙邊坡口兩種。圖8(c)屬于30條輪廓線類型中T型接頭所對應(yīng)的雙邊坡口。焊縫特征識別主要是針對12組最短輪廓線[圖8(c)中數(shù)字1~12]并參照上述相同方式進行接頭形式和坡口類型的識別。
焊縫特征識別主要針對三角面片并基于海倫公式來實現(xiàn),包括輪廓線及點提取;接頭空間位置關(guān)系判斷;接頭形式和坡口類型的識別。
2.3.1 輪廓線及點提取
STL文件中所有的三角面片兩兩組合,對組合成的每一對三角面片進行以下處理。
步驟1判斷一對三角面片是否存在兩公共頂點?若是,則相鄰;反之不相鄰。對于相鄰三角面片,則根據(jù)式(3)計算出兩者的法向量夾角[9],并轉(zhuǎn)步驟2;若不相鄰,則取下一對三角面片繼續(xù)本步驟的相鄰判斷。

(3)
式(3)中:(x1,y1,z1)、(x2,y2,z2)為兩三角面片的法向量。
步驟2根據(jù)法向量夾角確定兩三角面片的公共線段是否為模型輪廓線。若θ=0或θ=180°,則兩三角面片處于同一平面內(nèi),其兩個公共頂點所組成的公共線段不是模型輪廓線;若0<θ<180°,則兩三角面片處于不同平面內(nèi),公共線段是模型輪廓線的一部分。
步驟3輸出步驟2中所有位于不同平面內(nèi)的三角面片公共線段,即可提取到模型的全部輪廓。
步驟4統(tǒng)計各三角面片頂點在全部輪廓線條中出現(xiàn)的次數(shù)n。若n≥3,則該點為模型端點,進而獲得所有輪廓頂點。
2.3.2 接頭空間位置關(guān)系判斷
步驟1基于海倫公式[10]計算STL 中三角面片面積,并求出每個輪廓面面積。取面積最大的前四組,并獲取對應(yīng)輪廓面的法向量。
步驟2根據(jù)式(4)對步驟1獲取的法向量進行兩兩叉積并求出向量積的模長。若模長為0,則兩個法向量平行。統(tǒng)計法向量出現(xiàn)平行的次數(shù)Pa。
a×b=(l,m,n)×(o,p,q)

=(mq-np,no-lq,lp-mo)
(4)
式(4)中:(l,m,n)為輪廓面法向量a坐標(biāo);(o,p,q)為輪廓面法向量b坐標(biāo);i、j、k分別表示x軸正方向、y軸正方向、z軸正方向的單位向量,是空間向量的一組基底。
步驟3根據(jù)式(5)對步驟1獲取的法向量進行兩兩點積并求出數(shù)量積。若積為0,則兩個法向量垂直。統(tǒng)計法向量出現(xiàn)垂直的次數(shù)Vt。
a·b=(l,m,n)·(o,p,q)=lo+mp+nq
(5)
步驟4對步驟1中獲取的法向量進行兩兩方向判斷,并統(tǒng)計出方向相反的次數(shù)Op。
步驟5根據(jù)Pa、Vt、Op的值判斷接頭空間位置關(guān)系。若Pa= 6且Op=4,則兩接頭處于平行狀態(tài);若Vt=4且Op=2,則兩接頭處于垂直狀態(tài)。
2.3.3 接頭形式識別
步驟1根據(jù)輪廓線總條數(shù)獲取各類最短輪廓線組。若為24條,則輸出前8組長度最短的輪廓線組;若為27條,則輸出前10組最短輪廓線組;若為30條,則輸出前12組最短輪廓線組。
步驟2取次短長度的輪廓線作為距離閾值。針對步驟1中輸出的最短輪廓線組,計算兩兩輪廓線的端點間所有距離,去除輪廓線本身長度后,將最小距離與距離閾值對比。若最小距離大于距離閾值,則稱輪廓線距離為大間距;反之稱為小間距。
步驟3根據(jù)接頭空間位置和輪廓線距離進行接頭形式識別。若接頭處于平行狀態(tài),當(dāng)輪廓線距離為小間距時,則為平接接頭;反之為搭接接頭。若接頭處于垂直狀態(tài),當(dāng)輪廓線距離為小間距時,則為角接接頭;反之為T型接頭。
2.3.4 坡口類型識別
步驟1根據(jù)輪廓線總條數(shù)和接頭形式進行坡口類型識別。若輪廓線總條數(shù)為24條,當(dāng)接頭形式為平接或角接時,轉(zhuǎn)步驟2;當(dāng)為搭接或T型接頭時,則接頭都為不開坡口。若輪廓線總條數(shù)為27條,轉(zhuǎn)步驟3。若輪廓線總條數(shù)為30條,轉(zhuǎn)步驟4。
步驟2根據(jù)兩條最小距離輪廓線的夾角α進行坡口識別。若接頭形式為平接,當(dāng)α=0時,則為I型坡口;反之為V型坡口。若接頭形式為角接,當(dāng)α=90°時,則為不開坡口;反之為單邊坡口。
步驟3根據(jù)輪廓線距離進行坡口識別。若為小間距,則為角接接頭雙邊坡口;反之為T型單邊坡口。
步驟4根據(jù)接頭形式和輪廓線距離進行坡口識別。若為平接接頭且小間距,則為平接接頭的Y型坡口;若為T型接頭且大間距,則為T型接頭雙邊坡口。
為了驗證文中船舶焊縫特征識別算法的有效性和穩(wěn)定性,在CPU主頻4.6 GHz、內(nèi)存16 GB的PC平臺上,使用Visual Studio 2019編程語言對“梳子”等多邊形進行了剖分測試,并與單連通多邊形環(huán)形追蹤算法(單連通追蹤法)[11]、基于凹凸頂點的三角剖分算法 (凹凸頂點剖分法)[12]和動態(tài)Delaunay三角剖分算法(動態(tài)Delaunay法)[13]進行了比較。4種方法兩類多邊形的剖分結(jié)果如圖9和圖10所示,剖分對比的性能指標(biāo)采用網(wǎng)格平均質(zhì)量系數(shù)qM和網(wǎng)格關(guān)聯(lián)質(zhì)量系數(shù)qJ[14]且定義如下,詳細(xì)對比結(jié)果如表1所示。

(6)
式(6)中:N為三角網(wǎng)格總數(shù);qi=2r/R,其中r、R分別為三角形內(nèi)切圓和外接圓半徑。
由圖9和圖10可以看出,單連通追蹤法中畸形三角形數(shù)量最多,網(wǎng)格形態(tài)較差,而文中算法畸形三角形數(shù)量較少與其相比有著明顯優(yōu)化。對“梳子”多邊形劃分時,動態(tài)Delaunay法無法剖分,而文中算法剖分測試正常且畸形三角形數(shù)量的控制也優(yōu)于其余兩種方法,剖分質(zhì)量最好。由表1可知,無論是網(wǎng)格平均質(zhì)量系數(shù)還是網(wǎng)格關(guān)聯(lián)質(zhì)量系數(shù),本文算法的剖分質(zhì)量都優(yōu)于單連通追蹤法、凹凸頂點剖分法和動態(tài)Delaunay法,且針對圖9多邊形分別平均增加了12.49%和12.78%,針對圖10多邊形分別平均增加了11.62%和11.74%,由此進一步說明本文算法畸變單元數(shù)較少,三角網(wǎng)格形態(tài)最優(yōu),這主要得益于基于三角形旋向的剖分和最小角最大準(zhǔn)則的局部變換,有效降低了網(wǎng)格畸形程度,使得全體網(wǎng)格更接近于正三角形,保證較好網(wǎng)格質(zhì)量的產(chǎn)生。

圖9 4種算法剖分結(jié)果對比Fig.9 Comparisons of segmentation results of four algorithms

圖10 “梳子”多邊形三角剖分結(jié)果對比Fig.10 Comparison of “comb” polygon triangulation results

表1 網(wǎng)格質(zhì)量分析
為了進一步驗證文中算法的有效性,針對圖11中船艙段上的6處焊縫進行了特征識別測試,并與基于焊接特征的焊接工件庫建模(特征庫設(shè)計法)[15]和基于SolidWorks的遍歷特征樹技術(shù)(遍歷特征法)[5]進行了比較。3種方法的對比測試結(jié)果如表2所示。
由表2可以看出,遍歷特征法僅能識別出平接接頭和T型接頭兩種形式,且對坡口類型無法識別,識別效果較差,同時受制于建模平臺,應(yīng)用范圍有限。特征庫設(shè)計法雖然與本文算法一樣,都能準(zhǔn)確識別出6處焊縫特征,但在接頭和坡口識別的平均運行時間上均高于本文算法,執(zhí)行效率低,此外,特征庫設(shè)計法需要先對船艙段上的所有焊縫,進行特征造型設(shè)計并建立數(shù)據(jù)庫,使得開發(fā)工作量大大增加,且當(dāng)數(shù)據(jù)庫規(guī)模較大在匹配焊縫特征時可能出現(xiàn)耗時較長的情況。而基于STL的焊縫特征識別算法在接頭和坡口識別的平均運行時間上更短,執(zhí)行效率更高,且只需獲取模型焊縫的STL文件,前期處理量較小,同時識別的接頭形式、坡口類型多,準(zhǔn)確率高。

1~6為焊縫案例編號圖11 船艙段的焊縫特征識別測試Fig.11 Recognition test of welding seam feature of ship cabin
本文算法的接頭和坡口詳細(xì)測試結(jié)果如表3和表4所示。可以看出,本文算法能快速統(tǒng)計出待判定面處法向量平行、垂直、相反的次數(shù),精確獲取最小輪廓線距離、距離閾值、輪廓線總條數(shù)和兩條最小距離輪廓線的夾角,并根據(jù)關(guān)鍵參數(shù)作出正確判斷和對比,準(zhǔn)確識別出6處焊縫的接頭形式和坡口類型,即平接接頭I型坡口、平接接頭V型坡口、T型接頭不開坡口、角接接頭不開坡口、角接接頭雙邊坡口和T型接頭雙邊坡口,從而實現(xiàn)焊縫特征的精確識別,執(zhí)行效率高,驗證了本文算法的有效性。

表2 3種方法測試結(jié)果

表3 接頭形式測試結(jié)果

表4 坡口類型測試結(jié)果
為解決目前焊縫特征識別單一、應(yīng)用范圍受限的問題,提出角剖分和輪廓分析的船舶焊縫特征識別算法。根據(jù)測試結(jié)果得出以下結(jié)論。
(1)基于三角形旋向的Delaunay三角剖分,能實現(xiàn)對特殊復(fù)雜多邊形的快速三角剖分;角系數(shù)法能有效地獲取每個頂點的凹凸性,剖分生成的三角形態(tài)較優(yōu),執(zhí)行效率高,有利于STL文件的獲取。
(2)基于相鄰三角面片的法向量夾角,能快速提取出模型的輪廓線及點;待判定面處法向量能正確實現(xiàn)接頭空間位置關(guān)系判斷;根據(jù)輪廓線總條數(shù)和最小輪廓線距離,能準(zhǔn)確識別4類接頭形式和10種坡口類型。
(3)基于STL的焊縫特征識別算法,識別的接頭形式和坡口類型多、準(zhǔn)確率高,大大提高了算法的實用性、廣泛性。
測試結(jié)果表明本文算法具有多邊形剖分質(zhì)量較好、焊縫特征識別精確的優(yōu)勢,為船舶焊接機器人快速、準(zhǔn)確選擇焊接工藝參數(shù),提高焊接質(zhì)量和效率提供了保障。