董玉德 吳文哲 陳 健 吳海江 鄒文俊
1.合肥工業(yè)大學(xué)機(jī)械工程學(xué)院,合肥,2300092.上海翼銳汽車科技有限公司,上海,201805
隨著汽車行業(yè)的發(fā)展,傳統(tǒng)的設(shè)計(jì)方式逐漸被淘汰,可制造分析作為一種并行工程方法[1]應(yīng)運(yùn)而生??芍圃旆治鍪侵冈谄嚥考脑O(shè)計(jì)階段,從設(shè)計(jì)人員的角度出發(fā),找出產(chǎn)品設(shè)計(jì)缺陷并解決問題,主要是確定產(chǎn)品設(shè)計(jì)在結(jié)構(gòu)工藝和加工工藝中的可行性。焊槍頭空間間隙的檢查是并行工程的一項(xiàng)重要內(nèi)容。
空間間隙檢查的研究核心是特征識別以及距離計(jì)算。許多學(xué)者對復(fù)雜物體的信息提取以及距離計(jì)算算法進(jìn)行了研究。在特征識別和信息提取方面,許加陳等[2]研究了一種基于IGES的鈑金零件特征識別方法,該方法著重解決鈑金件零件特征的識別;GHADAI等[3]提出了一種提取三維模型中的局部特征用于鉆孔可制造性分析的方法,著重解決局部特征的識別;徐同明等[4]研究了如何在CATIA模型中提取B-Rep(boundary representation)信息,該研究主要應(yīng)用于面向三維機(jī)加工的工藝規(guī)劃系統(tǒng);馬善坤等[5]研究了模型B-Rep信息在特征加工中的應(yīng)用;顧翠等[6]基于宇航航空產(chǎn)品復(fù)雜結(jié)構(gòu)的可制造性分析系統(tǒng)對特征信息進(jìn)行提取和分類;滕汝英等[7]利用CATIA的二次開發(fā)技術(shù)CAA(component application architecture)成功識別了航空結(jié)構(gòu)件的特征信息。李巧敏等[8]提出了對汽車覆蓋件大規(guī)模后處理虛擬顯示技術(shù),設(shè)計(jì)了一套可以快速顯示和動態(tài)查詢應(yīng)力、應(yīng)變、厚度等模擬結(jié)果的系統(tǒng)。在干涉距離檢查方面,韋文龍等[9]在SolidWorks平臺進(jìn)行了動態(tài)干涉檢查系統(tǒng)的設(shè)計(jì);QUINLAN[10]利用層次球包圍盒表示空間物體,通過計(jì)算葉節(jié)點(diǎn)球包圍盒之間的距離來獲取兩個物體的干涉接觸點(diǎn);TESCHNER 等[11]在碰撞檢測算法中采用四面體網(wǎng)格模型表示空間物體,當(dāng)一個四面體中任何一個頂點(diǎn)在另一個四面體中時(shí),表示兩個四面體存在干涉。
汽車車身通常由眾多鈑金件組成,大部分鈑金件通過焊接固定,鈑金件的焊接質(zhì)量直接影響車身的整體制造質(zhì)量[12]。在焊接時(shí)若焊槍頭與周圍鈑金件的空間間隙過小,會導(dǎo)致焊點(diǎn)錯位,降低焊接的質(zhì)量,因此在模型設(shè)計(jì)時(shí)需要將位置設(shè)計(jì)不合理的焊點(diǎn)檢測出來并修改。
為解決對空間間隙進(jìn)行檢查時(shí)人工操作復(fù)雜、效率低下、結(jié)果不準(zhǔn)確等問題,本文提出了一種基于CATIA二次開發(fā)的焊槍頭與鈑金件空間間隙自動檢查方法。
在進(jìn)行焊槍頭空間間隙的自動檢查時(shí),需要確定干涉分析的目標(biāo)對象。本文將焊槍頭空間間隙的干涉分析分為三種情況:①對鈑金件而言,分析的目標(biāo)對象為焊點(diǎn)周圍可能與焊槍頭發(fā)生干涉的鈑金件的拓?fù)涿?圖1a);②對焊點(diǎn)周圍的孔來說,分析的目標(biāo)對象為孔在焊點(diǎn)方向上的拓?fù)渚€(圖1b);③若焊點(diǎn)周圍具有螺母等特征,那么目標(biāo)對象即是螺母特征中最有可能與焊槍頭發(fā)生接觸的拓?fù)鋵ο?圖1c)。
(a)焊點(diǎn)周圍的鈑金件
(b)焊點(diǎn)周圍的孔
(c)焊點(diǎn)周圍具有螺母特征圖1 焊槍頭空間間隙檢查Fig.1 Welding gun head clearance inspection
焊槍頭空間間隙的分析過程如圖2所示,包括三個步驟:
圖2 方案結(jié)構(gòu)框架Fig.2 Programme architecture framework
(1)利用焊點(diǎn)的特征識別算法識別出三維模型中的焊點(diǎn)特征,定位檢查區(qū)域。
(2)將模型中的鈑金件拓?fù)浞纸鉃槎S面基本單元,根據(jù)拓?fù)涿媾c焊點(diǎn)的距離分析確定可能會發(fā)生干涉的危險(xiǎn)平面。
(3)將危險(xiǎn)平面與虛擬焊槍頭進(jìn)行安全距離檢查,對距離不滿足安全閾值的焊點(diǎn)進(jìn)行標(biāo)注,使設(shè)計(jì)人員能夠直觀地在三維模型中看到不合格的區(qū)域。
焊槍空間間隙干涉只會發(fā)生在焊接處,因此可以通過模型中的焊點(diǎn)特征來定位可能發(fā)生問題的區(qū)域,縮小檢查范圍。
識別三維模型中所有的焊點(diǎn)特征,需要對CATIA模型進(jìn)行拆解和計(jì)算,下面簡單介紹裝配體產(chǎn)品在CATIA中的結(jié)構(gòu)形式。
CATIA中的裝配體文檔管理采用多層級結(jié)構(gòu)。圖3是以汽車車門為例的裝配體樹狀結(jié)構(gòu)示意圖。圖中結(jié)構(gòu)樹的根節(jié)點(diǎn)為裝配體總成,是文件的入口節(jié)點(diǎn),每一層的元素既可以是單個零件也可以是裝配體產(chǎn)品,從而組成了一種類似于多叉樹的結(jié)構(gòu),而每一個節(jié)點(diǎn)又可以理解為一個單獨(dú)的子多叉樹,多層結(jié)合起來就形成了一個裝配體產(chǎn)品。
圖3 裝配體文檔結(jié)構(gòu)Fig.3 Assemblies file structure
本文對三維模型進(jìn)行拆解,獲取所有最后一級的裝配體,從其包含的零件中分解出待檢查的實(shí)體要素。不同汽車模型采用的焊點(diǎn)造型方法不盡相同,難以根據(jù)特征屬性直接判別,這給焊點(diǎn)識別算法的設(shè)計(jì)帶來困難。但是另一方面,無論采用何種造型方法,焊點(diǎn)在外形上總是表現(xiàn)為一個球形實(shí)體。因此,綜合裝配體的文檔結(jié)構(gòu)和不同造型方法等因素,本文提出的焊點(diǎn)特征識別算法包含以下三種思路:
(1)命名規(guī)則判斷。在規(guī)范的三維模型中,特征通常具有統(tǒng)一的命名規(guī)則,例如在圖4中,模型中的焊點(diǎn)被統(tǒng)一命名為“Spotwelds”,用戶指定當(dāng)前模型中焊點(diǎn)特征的名稱后程序就可以通過檢索特征樹中對應(yīng)名稱來識別焊點(diǎn)。這種方法速度快、準(zhǔn)確度高,但是很多企業(yè)的三維模型中焊點(diǎn)并沒有統(tǒng)一的命名規(guī)則,因此這種方法具有一定的局限性。
圖4 具有特定名稱的焊點(diǎn)Fig.4 Welding spots with specific names
(2)特征類型判斷。從造型方法角度也能夠?qū)更c(diǎn)特征進(jìn)行識別。造型規(guī)范的車身三維模型中,焊點(diǎn)特征應(yīng)以GSMSphere造型方法生成。在這種情況下,可以在特征樹中進(jìn)行檢索,篩選出此種類型的特征,并根據(jù)體積大小進(jìn)一步篩選,最終識別焊點(diǎn)。但事實(shí)上三維模型造型不規(guī)范的情況普遍存在,因此這種方法識別的準(zhǔn)確度較低,識別結(jié)果容易發(fā)生誤判和漏判。
(3)幾何參數(shù)判斷。通過對模型特征進(jìn)行拓?fù)浞纸?,先利用CAA的函數(shù)接口獲取特征的體積和表面積,再利用數(shù)學(xué)計(jì)算的方法獲取該特征的體積和表面積,將兩種方法獲取到的數(shù)據(jù)進(jìn)行對比從而識別焊點(diǎn)。此方法雖然更為復(fù)雜,但局限性小,通用性強(qiáng),識別的準(zhǔn)確度高,因此本文采用這種方法來識別焊點(diǎn)。分析流程如圖5所示。
圖5 焊點(diǎn)識別流程Fig.5 Welding spots identification process
2.2.1獲取實(shí)體特征
焊點(diǎn)的識別過程即是模型中球形特征的識別過程,因此首先要將三維模型分解為實(shí)體特征。分解過程如下:
(1)利用CATIProduct接口中的GetAllChildren()方法獲取裝配體特征樹中所有裝配體節(jié)點(diǎn)列表,通過對列表中裝配體子節(jié)點(diǎn)個數(shù)的判斷,篩選出最底層的裝配體列表。
(2)最底層裝配體中包含了指向聚合在這個裝配體中的零件鏈接信息,實(shí)體特征包含于零件文檔中。借助CATILinableObject接口能夠從鏈接中檢索真正的零件文檔。
(3)零件文檔包含了CATIProdCont、CATPrtCont、CGMGeom、CATMFBRP四個容器。其中,結(jié)構(gòu)容器CATIPrtCont包含了零件的詳細(xì)特征,因此要獲取零件的實(shí)體特征,只需要獲取該容器即可。從結(jié)構(gòu)容器中通過GetPart()方法獲取零件對象pMyPart。
(4)零件對象pMyPart中包含具體的實(shí)體特征,使用CATIPartRequest接口提供的GetAllBodies()方法能夠?qū)⒘慵邪乃?D視圖提取出來。
2.2.2獲取焊點(diǎn)特征
獲得零件的所有實(shí)體特征即獲得了待分析的實(shí)體要素,之后用焊點(diǎn)算法進(jìn)行識別:
(1)焊點(diǎn)球形特征的直徑一般小于10 mm,用一個600 mm3的體積閾值將體積過大的特征直接排除,進(jìn)行第一次篩選;
(2)利用CATIMeasurableInContext接口提供的方法獲取特征的體積oVolume、表面積oSurfaceArea、重心點(diǎn)oCofGPoint三個數(shù)據(jù)信息;
(3)將實(shí)體特征拓?fù)錇榱憔S點(diǎn)特征,利用下式計(jì)算出拓?fù)潼c(diǎn)TheVertex與特征重心點(diǎn)oCofGPoint的距離:
若特征為球形,則其零維拓?fù)浣Y(jié)果為分布于球形特征的表面上的多個拓?fù)潼c(diǎn),那么它們與其重心點(diǎn)oCofGPoint的距離應(yīng)該大于0且都相等。以此為依據(jù)進(jìn)行第二次篩選;
(4)經(jīng)過步驟(3)的篩選之后仍不能斷定特征為球體,例如長方體的拓?fù)潼c(diǎn)與重心點(diǎn)的距離均相同。利用下式計(jì)算以拓?fù)潼c(diǎn)與特征重心點(diǎn)的距離r為半徑的球體的體積V和表面積S:
S=4πr2
(5)若V和S與CAA內(nèi)置接口獲取的體積oVolume和表面積oSurfaceArea分別相等,則認(rèn)為該特征為球體特征,也就是焊點(diǎn)特征。
上文已經(jīng)獲取了模型中所有的焊點(diǎn)特征,接下來就要提取焊點(diǎn)所焊接的鈑金件上可能與焊槍頭發(fā)生干涉的危險(xiǎn)平面。在CATIA中,裝配體是通過將子裝配體與零件進(jìn)行鏈接組成的,因此子裝配體之間的坐標(biāo)系不統(tǒng)一。若焊點(diǎn)與鈑金件處于不同的裝配體中,則在計(jì)算距離時(shí)需要進(jìn)行坐標(biāo)系的轉(zhuǎn)換。
利用下式將焊點(diǎn)坐標(biāo)系轉(zhuǎn)換至鈑金件的坐標(biāo)系中:
(Xabs,Yabs,Zabs)T=A(X,Y,Z)T+(u1,u2,u3)T
并在對應(yīng)位置生成焊點(diǎn)的實(shí)體,以此實(shí)體篩選目標(biāo)面。其中,A為焊點(diǎn)的旋轉(zhuǎn)變換矩陣;(X,Y,Z)T為焊點(diǎn)球心在原始坐標(biāo)系下的坐標(biāo)值;(u1,u2,u3)T為坐標(biāo)的平移量。
在對每一個焊點(diǎn)進(jìn)行焊槍空間間隙檢查時(shí),要在焊點(diǎn)上方、與焊接平面垂直方向上生成一個虛擬的半球形焊槍頭,如圖6所示。焊槍頭的半徑可由用戶自定義。
圖6 焊槍頭空間間隙分析示意圖Fig.6 Analysis diagram of space gap of welding gun head
目標(biāo)鈑金件的篩選較焊點(diǎn)更為復(fù)雜,因?yàn)殁k金件的形狀不固定,無法通過特征識別獲取,而鈑金件在數(shù)模中往往也不具有特定的名稱,也無法通過名稱去識別。
此時(shí)應(yīng)注意到,利用包圍盒相交檢測配合距離計(jì)算,能夠先獲取到可能與焊槍頭發(fā)生干涉的鈑金件。模型的包圍盒可由CATBody接口的GetBoundingBox()方法獲取,每一個特征實(shí)體都可生成一個包圍盒。若該層次的裝配體由多個零件或多個特征實(shí)體組成,則需要將多個子包圍盒添加到范圍更大的父包圍盒中。包圍盒示意圖見圖7,提取的流程如圖8所示。
圖7 零件包圍盒示意圖Fig.7 Schematic diagram of part enclosures
圖8 零件及裝配體包圍盒提取流程Fig.8 Part and assembly enclosures extraction process
可能與焊槍頭發(fā)生干涉的鈑金件包圍盒應(yīng)當(dāng)與焊槍頭大小加安全閾值所生成的包圍盒相交。模型中的焊點(diǎn)部分焊接兩層鈑金件,也有的焊接三層鈑金件。無論焊點(diǎn)焊接的鈑金件層數(shù),利用包圍盒相交檢測方法都能夠獲得所有焊接的鈑金件。這些鈑金件并非都可能與焊槍頭發(fā)生干涉,若在后續(xù)的計(jì)算中再進(jìn)行篩選,將大大拖慢程序的運(yùn)行速度,因此先對焊接的鈑金件進(jìn)行二維面分解獲得二維拓?fù)涿?,從面集中定位可能與焊槍頭發(fā)生干涉的目標(biāo)面再進(jìn)行計(jì)算。
危險(xiǎn)平面是位于焊接平面上側(cè)且與焊槍頭距離小于安全閾值的面。由上文可知,焊點(diǎn)焊接的鈑金件可拓?fù)浞纸鉃槎鄠€面,這些面不一定都與焊槍頭發(fā)生干涉。比如,焊接平面為鈑金件最外側(cè)與焊槍頭接觸的面,它必定會與焊槍頭接觸,但不屬于空間間隙發(fā)生干涉的面,因此,需要在鈑金件拓?fù)涑龅乃忻嬷刑崛∥kU(xiǎn)平面。
危險(xiǎn)平面的提取分為面包圍盒檢測、焊點(diǎn)相交檢測、投影偏移點(diǎn)位置檢測三個步驟:
(1)面包圍盒檢測是對鈑金件的拓?fù)涿嫔砂鼑?,并將焊槍頭虛擬圓球的球心坐標(biāo)Pi(Xi,Yi,Zi)轉(zhuǎn)換到鈑金件的坐標(biāo)系中得到對應(yīng)坐標(biāo)Pc(Xc,Yc,Zc)。以Pc為球心,r+na為半徑生成包圍盒,其中r為焊槍頭虛擬圓球的半徑,na為距離安全閾值。對兩個包圍盒進(jìn)行相交檢測,得到所有發(fā)生干涉的拓?fù)涿妗?/p>
(2)焊點(diǎn)相交檢測是為了排除兩層焊接平面之間的面。將焊點(diǎn)重心點(diǎn)Ph(Xh,Yh,Zh)轉(zhuǎn)入鈑金件局部坐標(biāo)系中得到對應(yīng)坐標(biāo)Pw(Xw,Yw,Zw)。以Pw為球心,焊點(diǎn)半徑rw為半徑生成對應(yīng)實(shí)體。將實(shí)體的包圍盒與步驟(1)中檢測出的發(fā)生干涉的拓?fù)涿娴陌鼑羞M(jìn)行相交檢測以及距離檢測。若面與焊點(diǎn)接觸,則說明是兩層焊接平面之間的面,不屬于危險(xiǎn)平面,如圖9所示。
圖9 鈑金件的焊接平面Fig.9 Welding plane of sheet metal parts
(3)投影偏移點(diǎn)位置檢測是針對滿足前兩個過程的面Q,判斷其相對于焊槍頭是內(nèi)側(cè)面還是外側(cè)面,如圖9所示。獲取焊槍頭球心Pc(Xc,Yc,Zc)在面Q上的投影點(diǎn)Po(Xo,Yo,Zo)。n(a,b,c)為面Q的法向量,SQ(XQ,YQ,ZQ)為平面Q內(nèi)一點(diǎn),則有以下幾何關(guān)系:PcPo∥n,SQPo⊥n。由點(diǎn)SQ(XQ,YQ,ZQ)以及法向量n確定的平面Q的數(shù)學(xué)方程為
ax+by+cz=aXQ+bYQ+cZQ
式中,(x,y,z)為平面Q中任意一點(diǎn)的坐標(biāo)。
直線PcPo的參數(shù)方程為
由于直線PcPo平行于法向量n,可得方程:
其中,t為未知參數(shù)。由上述公式解得
(1)
可見確定投影坐標(biāo)即是確定參數(shù)t的值,由SQPo⊥n可得方程:
a(Xo-XQ)+b(Yo-YQ)+c(Zo-ZQ)=0
(2)
聯(lián)立式(1)和式(2)解得
將t的值代入式(1)即可得到投影點(diǎn)Po的坐標(biāo)。將點(diǎn)Po沿PoPc方向偏移0.5h得到外偏點(diǎn)Poc,其中h為鈑金件的厚度。計(jì)算外偏點(diǎn)Poc到鈑金件的距離可知其在鈑金件內(nèi)部還是外部,如果在鈑金件外部,說明面Q是鈑金件相對于焊槍頭的外側(cè)面,不是目標(biāo)面;如果在內(nèi)部,說明面Q是最終得到的目標(biāo)面。
3.4.1孔特征的干涉分析
首先要獲取鈑金件中的孔特征,將鈑金件進(jìn)行拓?fù)洌ㄟ^對邊線特征和面特征的分析,以及向量判斷的方法提取孔特征[13]。
如圖10所示,如果孔與焊點(diǎn)的距離過小,則在焊接時(shí)無法保證焊接區(qū)域邊界的封閉性,導(dǎo)致焊接強(qiáng)度大幅度降低,并且焊接區(qū)域侵占了孔的空間。因此,在模型設(shè)計(jì)時(shí)應(yīng)當(dāng)保證孔與焊點(diǎn)中心有一定的安全距離。
圖10 焊槍頭與焊點(diǎn)周圍孔的干涉Fig.10 Interference of the welding gun head with the hole around the weld joint
孔與焊槍頭的間隙計(jì)算較為簡單,利用式(1)計(jì)算出焊槍頭在焊接平面上的投影點(diǎn)后,計(jì)算該投影點(diǎn)與孔中心的距離即可。如果距離小于安全閾值,則為危險(xiǎn)孔。
3.4.2螺母特征的干涉分析
以下主要針對四角螺母和六角螺母進(jìn)行干涉分析。螺母的特征識別步驟如下。
(1)得到特征實(shí)體后,與焊點(diǎn)識別算法類似,用CATDynMassProperties3D 接口的 GetVolume()方法計(jì)算拓?fù)潴w的體積,排除體積較大的特征。
(2)螺母特征一定包含孔特征,檢查特征體中是否有孔,若有,則獲取孔的中心線,若沒有,則排除。
(3)以孔的中心線為法線作平面S,將特征體向面S投影,投影形狀應(yīng)當(dāng)為方形或六邊形。若不滿足條件,則該特征排除。
(4)遍歷特征體的拓?fù)涿?,若法向量與孔中心線垂直的平面的個數(shù)為4或6,則確定該特征為焊接螺母。
如圖11所示,當(dāng)焊點(diǎn)周圍的螺母與焊點(diǎn)距離過小時(shí),會導(dǎo)致螺母被焊死無法運(yùn)動、焊槍運(yùn)動行程不足等問題,從而降低了焊接強(qiáng)度,甚至無法焊接。本文將焊點(diǎn)周圍的螺母抽象為其外接圓,從而得到螺母的外接圓柱。利用式(1)得到焊槍中心點(diǎn)Pc在焊接平面上的投影點(diǎn)Pd,連接Pc和Pd得到直線lcd。計(jì)算直線lcd與螺母外接圓柱的中心線lnu之間的最小距離Dm,利用下式計(jì)算出間隙值Dv并檢查是否滿足安全閾值:
Dv=Dm-r-Rnu
式中,r為焊槍頭虛擬圓球的半徑;Rnu為螺母外接圓柱的半徑。
圖11 焊槍頭與焊點(diǎn)周圍螺母特征的干涉Fig.11 Interference of the welding gun head with the nut features around the weld joint
確定了距離分析對應(yīng)的目標(biāo)面以及焊槍頭虛擬球心在目標(biāo)面上的投影點(diǎn)之后,可計(jì)算出兩點(diǎn)間的距離D。若D>r+na,說明目標(biāo)面與焊槍頭無干涉風(fēng)險(xiǎn),反之焊槍頭與危險(xiǎn)面的距離較小,可能導(dǎo)致焊接強(qiáng)度降低。
為驗(yàn)證本文提出的焊槍頭空間間隙自動檢查方法的可行性與準(zhǔn)確性,以CAA為開發(fā)工具、以VisualStudio2012為開發(fā)平臺對CATIA進(jìn)行二次開發(fā)[14]。首先選定需要進(jìn)行分析的裝配體,然后輸入焊槍頭的尺寸以及焊槍頭與周圍鈑金件發(fā)生干涉的最小安全距離,即可對零件進(jìn)行檢查。圖12所示為模型進(jìn)行分析的前后對比,圖13為問題點(diǎn)的局部放大圖。命令的運(yùn)行時(shí)間、運(yùn)行結(jié)果、是否遺漏如表1所示,可見本次開發(fā)的命令能夠在有效時(shí)間內(nèi)準(zhǔn)確地對三維模型進(jìn)行焊槍頭空間間隙分析。
(a)模型分析前
(b)模型分析后圖12 模型分析前后對比Fig.12 Before and after model analysis
(a)局部放大圖1 (b)局部放大圖2圖13 局部放大圖Fig.13 Partial enlarged drawing
表1 命令運(yùn)行結(jié)果分析Tab.1 Command run result analysis
(1)對裝配體文檔結(jié)構(gòu)進(jìn)行分析,通過幾何參數(shù)判斷實(shí)現(xiàn)了可以適用不同造型方法的焊點(diǎn)特征識別算法。
(2)運(yùn)用包圍盒技術(shù)獲取焊點(diǎn)所焊接的鈑金件特征,并進(jìn)一步將鈑金件拓?fù)涑啥S平面,利用焊點(diǎn)相交檢測、投影偏移點(diǎn)等算法獲取與虛擬焊槍頭發(fā)生干涉的危險(xiǎn)平面。
(3)識別焊點(diǎn)周圍的孔和螺母特征,同樣利用投影技術(shù)計(jì)算它們與焊槍之間的距離。最終形成包含鈑金件、孔、螺母等多種要素的焊槍空間間隙自動檢查系統(tǒng)。