何其昌,許志杰
(上海交通大學(xué),上海 200240)
裝配孿生模型是利用數(shù)字孿生技術(shù)與虛擬裝配技術(shù),構(gòu)建與物理裝配現(xiàn)場完全一致的虛擬裝配模型,通過物理裝配現(xiàn)場數(shù)據(jù)實時驅(qū)動虛擬模型的仿真分析,評估裝配過程中的行為和裝配性能,從而指導(dǎo)裝配現(xiàn)場的操作并保證裝配質(zhì)量[1–2]。以航空航天領(lǐng)域為代表的裝備具有極其復(fù)雜的產(chǎn)品結(jié)構(gòu),其幾何數(shù)字模型的三角面片可達數(shù)億[3],如何高效地實時繪制該量級的虛擬裝配可視化模型,是極具挑戰(zhàn)性的研究課題。
目前,自動特征識別的算法主要分為基于立體分解和基于邊界匹配:基于立體分解的算法通過對零件體分解得到凸體集合,再將凸體集合重組并分類,從而確定特征類型[4];基于邊界匹配的算法通過查找特征庫中邊界組合模板,獲取所有符合模板的幾何拓撲數(shù)據(jù)集合,根據(jù)特征庫的形式可進一步將識別算法分為基于規(guī)則[5]、基于痕跡[6]和基于圖[7–9],其中基于圖的特征識別算法的研究成果最為豐富。Gao等[10]提出一種基于特征抑制的CAD網(wǎng)格模型簡化框架,通過抑制識別到的特征,并填充由此造成的孔洞,得到多個簡化等級的網(wǎng)格模型。齊洪方等[11]引入頂點鄰域三角形平均面積、三角形的法向量變化以及邊長信息計算折疊代價,通過邊折疊操作有效減少網(wǎng)格模型的數(shù)據(jù)量。曹增歡等[12]基于曲度,對網(wǎng)格模型分區(qū)域采用邊折疊和三角形折疊,實現(xiàn)高效簡化的同時,較好地保持了模型細節(jié)特征。Kwon等[13]通過將CAD模型體分解為若干特征區(qū)域,然后根據(jù)其重要性順序依次刪除并修補網(wǎng)格模型,從而獲取多分辨率的簡化模型?;趲缀卧卣郫B的簡化方法可以高效生成任意簡化精度的網(wǎng)格模型,但容易造成部分特征失真,最終影響裝配仿真的準確性?;谔卣鞯哪P秃喕椒ㄒ蕴卣鳛閱挝粡脑P椭袆h除特征信息,在簡化的同時盡可能地保留了模型的外觀,但是無法實現(xiàn)連續(xù)等級的簡化精度,直接刪除或抑制裝配特征區(qū)域可能導(dǎo)致無法完成裝配仿真。
針對裝備數(shù)字孿生可視化模型精簡的需求,提出面向裝配仿真過程的模型自適應(yīng)簡化方法。首先,針對裝配過程仿真,提出自適應(yīng)簡化策略;然后,建立模型的AAG(屬性鄰接圖),將其與基本特征庫中的子圖進行匹配實現(xiàn)特征的自動識別,并通過解析裝配語義獲得當(dāng)前裝配工序的裝配特征;其次,優(yōu)化QEM(Quadratic error metric)的折疊代價計算方法,實現(xiàn)保留裝配特征網(wǎng)格的模型自適應(yīng)簡化;最后以發(fā)動機機匣裝配工藝仿真進行應(yīng)用驗證。
復(fù)雜產(chǎn)品的裝配工藝路線通常遵循先子裝配后總裝的思想,通過分解產(chǎn)品PBOM(Process bill of material)結(jié)構(gòu)形成若干子裝配單元,完成子裝配單元的裝配后再進行上一層級的裝配。因此,裝配數(shù)字孿生可視化模型數(shù)量會隨著裝配過程不斷累加,裝配仿真場景的幾何三角網(wǎng)格數(shù)量也將不斷增長。
裝配特征在裝配仿真中參與約束求解、碰撞干涉檢測等計算,此區(qū)域的三角網(wǎng)格需要保證較高的精度,才能對物理現(xiàn)場的裝配過程進行準確模擬,預(yù)測裝配性能。針對裝配過程仿真,數(shù)字孿生模型只需要保留當(dāng)前裝配工步對應(yīng)的裝配特征,而其余區(qū)域的三角網(wǎng)格則可以簡化。
圖1為裝配工藝PBOM,虛線表示兩個零件或子裝配之間具有裝配約束關(guān)系,其中裝配工藝AP可分解為n個裝配工步,Pi表示第i個裝配工步,i∈[1,n]。Partij表示第i個裝配工步相關(guān)的零件或子裝配 (零件及子裝配統(tǒng)一用 Part表示),j∈[1,m],j表示第j個零件;m表示該工步涉及的零部件總數(shù)。
圖1 裝配工藝PBOMFig.1 Assembly process PBOM
Preserve( )與Simplify( )分別表示對網(wǎng)格區(qū)域的保留與簡化,對于同一零件,其裝配特征區(qū)域會隨著工步對應(yīng)的裝配約束而變化,即{Feature}依賴于Pi的具體內(nèi)容,從而動態(tài)調(diào)整精簡區(qū)域。盡管裝配工步的零部件數(shù)量以及結(jié)構(gòu)會隨著裝配過程的進行趨向復(fù)雜,但是每一個工步中只保留當(dāng)前的裝配特征區(qū)域,其大小相對穩(wěn)定,在后序工步仿真中仍有充足的簡化空間降低裝配仿真場景的三角面片數(shù)量,最終在保證裝配可視化效果的前提下實現(xiàn)模型的自適應(yīng)精簡。
主流的產(chǎn)品幾何模型采用B–Rep數(shù)據(jù)模型,其通過邊界表面表示實體,其包含了點、邊、面、環(huán)等幾何信息以及幾何元素之間的拓撲連接信息。如圖2所示,本文利用B–Rep信息,基于AAG進行裝配特征識別。AAG是一種描述零件幾何拓撲信息的圖結(jié)構(gòu),節(jié)點表示模型的面,弧表示面相交形成的邊,面可分為平面、圓柱面、圓錐面、球面等類型,邊可分為直線邊、圓弧邊、橢圓邊等類型[14]。在圖匹配的過程中,內(nèi)外環(huán)以及邊的凹凸性是AAG重要的屬性。首尾連接的邊的方向(沿著法向,使得面在邊的左側(cè)的方向)為逆時針,定義成外環(huán);反之為內(nèi)環(huán)。鄰接面的外二面角大于180°時,定義成凸邊;等于180°時,為光順邊;小于180°時,為凹邊。圖3為三維線框模型及其屬性鄰接圖,圖3(a)和 (b)分別表示零件的線框模型(數(shù)字1~9表示模型邊界表面,其中弧為1表示凸邊,–1表示凹邊,0表示光順邊)及對應(yīng)的AAG。
構(gòu)建基本特征圖庫,其包含了常見特征的屬性鄰接圖,如圓通孔和通臺階的AAG(圖4)。圓通孔由兩個圓柱面組成,圓柱面相交成兩條光順邊;通臺階由兩個平面組成,平面相交成一條凹邊。由于AAG規(guī)模隨著模型的復(fù)雜度而變大,為了提高圖匹配的效率,需要對AAG進行分解,提取潛在的特征子圖,最終得到最小屬性鄰接圖 (Minimum attributed adjacency graph,MAAG),如圖3(c)所示。MAAG的構(gòu)建算法如下:
圖3 三維線框模型及其屬性鄰接圖Fig.3 3D wireframe model and its AAG
(1)遍歷AAG,判斷是否存在內(nèi)邊界環(huán),若存在,則先分解內(nèi)邊界環(huán)對應(yīng)的邊,由此得到子圖集合SG1;
(2)遍歷SG1中每個子圖,進行一次圖匹配,未成功完成圖匹配的子圖進入步驟(3);
(3)遍歷SG1中未完成圖匹配的子圖,分解弧值為1的邊,完成二次分解,得到SG2;
(4)整理合并SG1和SG2,得到最終的分解結(jié)果SG。
圖匹配實際上是判斷MAAG與基本特征圖庫中的AAG是否為圖同構(gòu)關(guān)系的過程。圖同構(gòu)的定義為兩個圖的節(jié)點和弧的數(shù)量、屬性相同,且弧的連接性相同。給定兩個圖G1= (V1,E1)、G2= (V2,E2),V和E分別表示圖的節(jié)點集和弧集,圖匹配的具體過程如下:
(1)判斷節(jié)點集和弧集的數(shù)量是否相同,若不相同則直接判定不為圖同構(gòu)關(guān)系,反之進入步驟(2);
(2)在V1、V2中任意選取一個頂點v1i、v2j,構(gòu)成未遍歷過的頂點對(i,j);
(3)判斷 (i,j)對應(yīng)的節(jié)點屬性及其一階鄰接弧的數(shù)量和屬性是否完全相同,若相同則標(biāo)記Flag(i,j)為True,反之則為False;
(4)判斷是否存在未遍歷過的頂點對,若存在,跳回步驟(2);
(5)遍歷 Flag(i,j),判斷每個v1i是否至少有一個v2j與之匹配,每個v2j是否至少有一個v1i與之匹配,若滿足,則G1、G2同構(gòu),反之不為同構(gòu)。
經(jīng)過圖匹配后將得到模型的基本特征圖集SFG,而數(shù)字孿生模型只需保留當(dāng)前裝配工步的裝配特征,因此需要從SFG中提取裝配特征圖集SAFG。
如圖2所示,通過解析裝配語義構(gòu)建了裝配語義特征庫,以此提取SFG中當(dāng)前裝配工序的裝配特征。裝配語義特征庫基于裝配約束信息,列舉了裝配語義對應(yīng)的裝配特征。例如針對螺栓連接零件A與B的裝配語義,A的裝配特征定義為
圖2 基于AAG的裝配特征識別流程Fig.2 Flow of assembly feature recognition based on AAG
FeatureA={CircularThoughHole,TopFace,BottomFace}
表明圓通孔特征在螺栓連接裝配時額外需要上下平面作為面貼合的關(guān)鍵特征,其提取規(guī)則表示為
“If feature Is Type (Circular Through Hole), Then feature.Add(TopFace and BottomFace).”
即若圖4(a)中的特征為螺栓連接語義中的圓通孔,則TopFace與BottomFace分別對應(yīng)3號面與4號面。針對齒輪C安裝到傳動軸D上的裝配語義,傳動軸D的裝配特征定義為
圖4 圓通孔及通臺階的AAGFig.4 AAG of circular through hole and through step
FeatureD={OuterCylindricalFace,RingFace}
由傳動軸的外圓柱面及其鄰接的圓環(huán)面組成,分別作為徑向和軸向的定位特征,其提取規(guī)則表示為
“If feature Is Type (Outer Cylindrical Face), Then feature.Add (RingFace).”
鄰接的圓環(huán)面可由外圓柱面通過凹邊連接的節(jié)點取得,由此得到準確的裝配特征圖集SAFG。
目前,基于幾何網(wǎng)格的簡化算法可分為幾何元素刪除法[15]、網(wǎng)格重新劃分法[16]和幾何元素折疊法[17]。幾何元素刪除法通過不斷地從網(wǎng)格中刪除頂點或三角形,并對留下的空洞重新三角化。網(wǎng)格重新劃分法通過增加新頂點,再對網(wǎng)格三角剖分,最終產(chǎn)生一個更為簡單的逼近網(wǎng)格。幾何元素折疊法不需要對折疊區(qū)域重新三角化,相比前兩種方法具有更好的穩(wěn)定性和更快的簡化速度[18],如Garland等[19]使用QEM計算邊折疊的代價,是經(jīng)典的網(wǎng)格簡化算法。
邊折疊是簡化時的關(guān)鍵步驟,是指將頂點Vi和頂點Vj折疊成新頂點Vn,并重新調(diào)整新頂點的鄰接三角形的過程,如圖5所示。
圖5 邊折疊過程Fig.5 Edge collapse process
邊折疊會引起網(wǎng)格形狀的變化,因此需要有指標(biāo)衡量折疊前后的誤差。QEM采用新頂點到原頂點鄰域三角形面的距離的平方和 (即二次誤差)作為折疊代價,其計算過程如下。
三維空間中的平面P可以表示為ax+by+cz+d=0,且a2+b2+c2=1,d為常數(shù)。令p=[a,b,c,d]T,則空間中的頂點v= [vx,vy,vz,1]T到P的距離的平方DP2(v)為
令誤差矩陣KP=ppT,則v的二次誤差Δ(v)為
式中,P(v)表示頂點v的一階鄰域平面集合;Q為v的誤差矩陣。定義邊vivj折疊到新頂點vn的二次誤差Δ(vn)為
式中,Qi、Qj、Qn分別對應(yīng)vi、vj、vn的誤差矩陣。對Δ(vn)求偏導(dǎo)即可推出二次誤差極小時的vn,若無法取得誤差的極小值,則vn取vi、vj或兩個頂點的中點(vi+vj)/2中二次誤差最小的頂點。
基于QEM的計算可以保證模型的簡化沿著曲率較小的方向,但是在簡化時容易丟失網(wǎng)格的幾何特性,而機械CAD網(wǎng)格模型具有輪廓規(guī)則分明、三角網(wǎng)格分布不均、含有眾多特征面的特點,對產(chǎn)品機械CAD網(wǎng)格直接應(yīng)用QEM算法容易導(dǎo)致特征失真。因此,針對當(dāng)前裝配工步需要保留的裝配特征,通過修正,對QEM進行改進,算法流程如圖6所示。
圖6 改進QEM算法流程Fig.6 Improved QEM simplification algorithm flow
首先按照式(6)計算出所有邊的新頂點vn及其二次誤差,若邊vivj屬于當(dāng)前工步裝配特征的三角網(wǎng)格區(qū)域,修正的二次誤差Δ′(vn)為
式中,Max (Δ(vn))表示所有未修正的二次誤差最大值,以此保證裝配特征區(qū)域的簡化優(yōu)先級最低。完成修正后,根據(jù)邊折疊的代價建立最小堆結(jié)構(gòu) (經(jīng)排序過的完全二叉樹,保證非葉子節(jié)點的值不大于其左右子節(jié)點的值),每次折疊時取堆頂?shù)倪?,并維護最小堆結(jié)構(gòu)使得堆頂?shù)恼郫B代價始終為最小值。假設(shè)計算機渲染的最大三角面數(shù)量為Nmax,當(dāng)前工步Pi未簡化的模型三角面片總數(shù)為N1,Partij的三角面片數(shù)量為N2,則Partij簡化后的三角面數(shù)量要求N為
然后不斷進行邊折疊,同時更新網(wǎng)格與折疊代價的排序,直至當(dāng)前的三角面數(shù)量滿足要求為止。
采用某型號發(fā)動機壓氣機匣的數(shù)字孿生裝配仿真進行應(yīng)用驗證,其CAD模型面片數(shù)量為35548,選取的兩個裝配工步P1、P2分別是機匣工作環(huán)上螺釘?shù)臄Q緊以及端面法蘭的螺栓連接,需要識別工作環(huán)上的沉頭孔特征與法蘭上的圓通孔特征,并保證簡化后的面片數(shù)量維持在5200(保證渲染幀率fps>60),精簡率為85.4%。
圖7(a)為機匣模型局部區(qū)域的AAG,通過與基本特征圖庫中沉頭孔的AAG(圖7(b))進行圖匹配,可得77~81節(jié)點為沉頭孔特征。針對螺釘擰緊的裝配語義,沉頭孔的裝配特征FeatureE定義為
圖7 機匣模型的AAGFig.7 AAG of casing model
FeatureE={CounterboredHole,BottomFace}
即裝配沉頭孔時,下底面也是關(guān)鍵的配合特征,提取規(guī)則需要增加344節(jié)點,這里指機匣的內(nèi)環(huán)面,因此P1的識別結(jié)果為77 ~ 81及344節(jié)點。50、51為圓通孔特征,P2的裝配語義為螺栓連接,因此,P2的識別結(jié)果為50、51、235、105 節(jié)點,235與 105 節(jié)點分別為圓通孔特征鄰接的上下平面。
根據(jù)識別到的裝配特征區(qū)域,采用改進的QEM簡化算法對機匣網(wǎng)格模型進行精簡處理。設(shè)置機匣模型的精簡要求N= 5200,圖8展示了改進的QEM簡化算法與原QEM簡化算法的效果對比。由圖8(b)可知,QEM算法趨向?qū)⒕W(wǎng)格模型的各個部分均勻簡化,在總體上保持了較好的可視化效果,但是針對P1、P2工步,沉頭孔與圓通孔特征網(wǎng)格均嚴重失真,無法滿足數(shù)字孿生裝配仿真的要求。當(dāng)Pi=P1時,圖8(c)中的網(wǎng)格模型保留了機匣的沉頭孔與內(nèi)環(huán)面特征。Pi=P2時,圖8(d)中的網(wǎng)格模型保留了圓通孔與法蘭端面特征,兩個裝配工步下都分別提高了其非特征區(qū)域的簡化率。由此可得,改進的QEM算法針對不同工步中的相同的網(wǎng)格模型,通過自適應(yīng)地調(diào)整局部精簡率使得裝配區(qū)域保持較高的分辨率。因此,改進的QEM算法更好地保留了裝配特征。
圖8 機匣模型精簡效果對比(N = 5200)Fig.8 Comparison of simplified eあect of casing model (N= 5200)
另外,QEM算法的時間復(fù)雜度為O(nlogn),空間復(fù)雜度為O(n),在處理大型復(fù)雜網(wǎng)格模型時仍可以表現(xiàn)出較好的運算速度[20],而改進的QEM算法只是在計算邊折疊代價時增添了是否修正的判斷,不會增加QEM算法的時間復(fù)雜度,案例運行時電腦配置CPU為Intel Core i7–10710U,內(nèi)存大小為 16 G,顯卡型號是GeForce MX350,圖8(b) ~ (d)的平均簡化耗時分別為450 ms、472 ms和 475 ms。
針對數(shù)字孿生裝配可視化模型簡化的需求,本文實現(xiàn)了自適應(yīng)調(diào)整網(wǎng)格局部簡化率的精簡方法,保持了當(dāng)前裝配工步的裝配特征網(wǎng)格質(zhì)量。在基于圖的自動特征識別算法之上,引入了裝配語義特征庫提取實際裝配特征?;谘b配特征識別的結(jié)果,改進了QEM算法的代價計算,最后的應(yīng)用驗證表明,改進后的算法具有更好的精簡效果。未來,可以采用深度學(xué)習(xí)的方法提高復(fù)雜裝配特征識別的效率,同時對折疊簡化算法進一步優(yōu)化,在保留裝配特征的同時,提高非裝配區(qū)域的網(wǎng)格質(zhì)量,從而優(yōu)化裝配模型整體的可視化效果。