馬永敬,劉光俊,安 帥,牟 琳,杜偉平
(1.中車青島四方機(jī)車車輛股份有限公司,山東 青島 266031) (2.西安電子科技大學(xué)機(jī)電工程學(xué)院,陜西 西安 710071)
航空、航天、船舶、汽車、工程機(jī)械、軌道交通等領(lǐng)域大型產(chǎn)品的零部件結(jié)構(gòu)越來越復(fù)雜,為了揭示和分析產(chǎn)品的內(nèi)部結(jié)構(gòu),設(shè)計(jì)人員通常使用爆炸圖將裝配體中的零部件按照順序、方向和距離進(jìn)行分解來表達(dá)零部件的相對(duì)空間位置關(guān)系。與剖視圖、透視圖相比,爆炸圖不僅可以清晰展示復(fù)雜裝配體中零部件及其之間的裝配約束關(guān)系,甚至還能展示裝配序列和裝配路徑。爆炸圖目前已應(yīng)用于設(shè)計(jì)、工藝、制造、使用、維護(hù)維修等產(chǎn)品生命周期的各個(gè)階段,如產(chǎn)品設(shè)計(jì)階段用于表達(dá)設(shè)計(jì)結(jié)果的爆炸圖,工藝設(shè)計(jì)階段用于裝配序列規(guī)劃的爆炸圖,產(chǎn)品使用階段用于展示產(chǎn)品性能的三維交互式電子手冊(cè),維護(hù)維修階段用于演示產(chǎn)品拆卸的動(dòng)畫等。
國內(nèi)外研究人員對(duì)爆炸圖自動(dòng)生成方法進(jìn)行了大量研究。Agrawala等[1]利用投影的方法大概確定模型的爆炸方向,從而自動(dòng)生成爆炸圖;Motomasa等[2]利用模型的裝配手冊(cè)并通過指定模型的爆炸方向和爆炸距離的方式生成爆炸圖,但是無法實(shí)現(xiàn)爆炸圖的自動(dòng)生成;Correa等[3]利用模型分層的方式將模型不斷地剝開來顯示模型的內(nèi)部細(xì)節(jié);Bruckner等[4]利用力學(xué)原理對(duì)模型進(jìn)行拆分,部分實(shí)現(xiàn)了自動(dòng)爆炸。于嘉鵬等[5-6]提出了利用裝配序列規(guī)劃算法及零部件幾何信息自動(dòng)生成復(fù)雜產(chǎn)品爆炸圖的方法,并基于UG NX平臺(tái)開發(fā)了面向復(fù)雜產(chǎn)品的數(shù)字化裝配序列規(guī)劃系統(tǒng)對(duì)算法進(jìn)行了驗(yàn)證。之后提出了基于遞歸循環(huán)的層次化爆炸圖自動(dòng)生成算法,該算法對(duì)層次化裝配序列進(jìn)行深度優(yōu)先循環(huán)搜索,實(shí)時(shí)計(jì)算已爆炸零部件的累積包圍盒,從而確定待爆炸零件位移矢量,自動(dòng)生成間隔均勻有序、結(jié)構(gòu)緊湊且空間層次感強(qiáng)的爆炸圖。邢宇飛等[7]提出了一種局部爆炸圖自動(dòng)生成方法,為降低計(jì)算復(fù)雜度,該方法利用蟻群算法求解零件的爆炸順序。趙鴻飛等[8]則是使用同步約束解除的方法生成爆炸圖。以上研究推動(dòng)了爆炸圖自動(dòng)生成技術(shù)的發(fā)展,其中部分研究成果還在工程實(shí)踐中得到了應(yīng)用。
當(dāng)前,大部分商品化三維CAD系統(tǒng)都有自動(dòng)爆炸功能,如達(dá)索公司的CATIA、西門子公司的UG NX和PTC的Creo等,但商品化三維CAD系統(tǒng)自動(dòng)爆炸功能存在爆炸不完全、位置不合理、不能再次調(diào)整等問題,不能很好地滿足工程應(yīng)用中的效率和準(zhǔn)確性要求。如CATIA提供的自動(dòng)爆炸工具,生成的爆炸圖不盡如人意,爆炸后模型比較雜亂,而且爆炸之后難以調(diào)整爆炸距離,調(diào)整單個(gè)模型的爆炸狀態(tài)也比較困難,導(dǎo)致CATIA中的自動(dòng)爆炸工具利用價(jià)值不高,不能很好地滿足產(chǎn)品生命周期各階段對(duì)爆炸圖的應(yīng)用需求。因此,本文針對(duì)CATIA自動(dòng)爆炸功能存在的問題,提出了基于微位移和碰撞檢測的分層自動(dòng)爆炸方法,并開發(fā)了自動(dòng)爆炸圖制作工具。
本文提出的自動(dòng)爆炸過程大體上類似于剝洋蔥的過程,即將模型一層一層由外向內(nèi)進(jìn)行剝離,從而生成有層次的爆炸圖。首先在模型爆炸前,設(shè)置一個(gè)在爆炸過程中不動(dòng)的模型作為爆炸的基體;然后根據(jù)選定的基體及模型的裝配約束情況確定一個(gè)優(yōu)化的試爆炸順序,并將模型分為多個(gè)試爆炸層;接著按照分層順序?qū)γ恳粚舆M(jìn)行試爆炸,確定每層零件的爆炸方向和爆炸距離,直到所有分層都完成爆炸為止,如圖1所示。
圖1 基于微位移和碰撞檢測的分層自動(dòng)爆炸圖制作方法
在自動(dòng)爆炸時(shí),依次將試爆炸層中的每一個(gè)模型按照X+、X-、Y+、Y-、Z+、Z-方向做微小的移動(dòng),然后檢測移動(dòng)后的模型是否與其他模型發(fā)生了干涉,如果沒有發(fā)生干涉,說明在當(dāng)前狀態(tài)下模型在該方向上是可以爆炸的,將該方向記錄為模型的可爆炸方向,否則當(dāng)前狀態(tài)下模型在該方向上是不可爆炸的。每一個(gè)模型經(jīng)過6個(gè)方向的試爆炸后,如果存在幾個(gè)可行的爆炸方向,則選擇一個(gè)最優(yōu)的爆炸方向并記錄下來,否則在下一輪試爆炸時(shí)繼續(xù)試爆炸該模型。
在一個(gè)試爆炸層的模型全部完成試爆炸后,為了防止對(duì)下一層(即里層模型)的試爆炸結(jié)果產(chǎn)生影響,將該層模型中存在可爆炸方向的模型按照所得的最優(yōu)方向移動(dòng)單層爆炸距離。接著,繼續(xù)對(duì)下一層模型以及之前沒有找到可爆炸方向的模型進(jìn)行試爆炸,并將有可行爆炸方向的模型移動(dòng)單層爆炸距離。為了防止新爆炸的模型與之前爆炸的模型發(fā)生接觸,如果在某個(gè)方向上產(chǎn)生了新的可以爆炸的模型,將該方向上之前已經(jīng)爆炸的模型全部再移動(dòng)一個(gè)單層的爆炸距離,這樣模型就可以按照一定的層次產(chǎn)生爆炸。以此類推,重復(fù)上述過程,直到所有的模型都完成爆炸或者所有的模型都沒有可爆炸方向,此時(shí)自動(dòng)過程完成。
現(xiàn)以圖1所示的模型自動(dòng)爆炸過程為例,進(jìn)一步說明自動(dòng)爆炸算法的基本過程和思想。在自動(dòng)爆炸的過程中,首先根據(jù)部件中各個(gè)零件的接觸情況確定試爆炸順序并分層,第一層為所有的螺釘、墊片、螺塞和定位銷,第二層為端蓋和支架蓋。然后試爆炸第一層模型,將每一個(gè)零部件沿著6個(gè)標(biāo)準(zhǔn)方向進(jìn)行微小移動(dòng)并進(jìn)行干涉檢測。經(jīng)過檢測,所有的螺釘和油塞均可以移動(dòng),所以將其爆炸到計(jì)算得到的位置。接著將第一層剩下的墊片進(jìn)行微位移和干涉檢測并進(jìn)行爆炸,并將同方向的螺釘再移動(dòng)一個(gè)單層的爆炸距離。最后對(duì)第二層的端蓋和支架蓋進(jìn)行微位移和干涉檢測,并將其移動(dòng)到計(jì)算得到的位置,完成爆炸。
在基于微位移和干涉檢測技術(shù)確定模型的爆炸方向時(shí),需要將每一個(gè)模型沿著6個(gè)方向進(jìn)行微移動(dòng),并且檢測微移動(dòng)以后是否與其他模型產(chǎn)生干涉,這兩個(gè)操作相對(duì)來說是比較耗時(shí)的,因此模型試爆炸的次數(shù)直接影響自動(dòng)爆炸的速度,而試爆炸的順序直接影響需要試爆炸的次數(shù)。為了減少模型的試爆炸次數(shù),提高計(jì)算效率,本文提出了一種基于裝配約束關(guān)系的爆炸順序分層方法。該方法首先以基體模型建立根節(jié)點(diǎn),接著找到與基體模型存在裝配約束關(guān)系的所有模型作為樹的一級(jí)節(jié)點(diǎn)。然后遍歷所有一級(jí)節(jié)點(diǎn)模型,尋找與一級(jí)節(jié)點(diǎn)模型有裝配約束關(guān)系但是不在樹中的模型,以此類推,直到所有需要爆炸的模型節(jié)點(diǎn)都在樹中。
以圖1中模型為例,將底座設(shè)為爆炸的基體,建立一個(gè)樹結(jié)構(gòu),將底座設(shè)為樹結(jié)構(gòu)的根節(jié)點(diǎn),接著找到所有與底座有裝配約束關(guān)系的零部件,即端蓋、支架蓋、螺釘和定位銷。然后遍歷樹結(jié)構(gòu)的第一層,可以發(fā)現(xiàn)與端蓋有裝配約束關(guān)系的模型有墊圈和螺塞,與支架蓋有裝配約束關(guān)系的模型有螺釘和墊圈。此時(shí)可以形成如圖2左側(cè)所示的裝配約束樹結(jié)構(gòu),首先可將所有的葉子節(jié)點(diǎn)進(jìn)行試爆炸,即將所有的螺釘、墊圈、螺塞和定位銷進(jìn)行試爆炸,去除這些節(jié)點(diǎn)后的裝配約束樹以及后續(xù)的去除步驟如圖2右側(cè)所示。按以上順序試爆炸時(shí),可以在一定程度上減少模型試爆炸次數(shù),提高爆炸速度。
圖2 爆炸順序分層確定方法
零部件爆炸順序分層確定后,針對(duì)每一層的零部件,通過基于微位移和碰撞檢測的方法來確定爆炸方向。該方法將需要爆炸的模型依次沿X+、X-、Y+、Y-、Z+、Z-6個(gè)標(biāo)準(zhǔn)方向進(jìn)行微小的移動(dòng),并在移動(dòng)后檢測模型是否與其他模型有干涉,如果移動(dòng)之后沒有發(fā)生干涉,則該方向可以爆炸。每一個(gè)模型在6個(gè)方向上進(jìn)行微位移和干涉檢測的結(jié)果有以下幾種情況:
1)模型有0個(gè)可爆炸方向。此時(shí),先跳過該模型去嘗試爆炸其他模型,等其他模型爆炸完成后再次嘗試該模型是否有可爆炸方向。
2)模型有1個(gè)可爆炸方向。將該方向設(shè)定為該模型的爆炸方向。
3)模型有2~6個(gè)可爆炸方向。在這種情況下有多個(gè)符合要求的爆炸方向時(shí),需要選擇一個(gè)最優(yōu)的方向?qū)⒛P鸵苿?dòng)初始的爆炸距離。最優(yōu)的方向一般為在該方向上可以爆炸但在其反方向不可以爆炸的方向。如果存在多個(gè)這樣的最優(yōu)方向,則選擇其中的一個(gè)最優(yōu)方向作為爆炸方向。如果沒有最優(yōu)的爆炸方向,則選擇任意一個(gè)可爆炸方向即可。
如圖3(a)所示,X+、X-、Y+、Z+、Z-均為端蓋的可爆炸方向,由于端蓋在Y-方向上不可爆炸,所以Y+方向?yàn)樽顑?yōu)的方向。在圖3(b)中,X+、X-、Y+、Z+均為支架蓋的可爆炸方向,由于Y-、Z-方向均不可爆炸,所以Y+、Z+方向均為最優(yōu)的爆炸方向。此時(shí)Z+和Y+方向都是比較理想的爆炸方向,在這種情況下選擇第一個(gè)得出的最優(yōu)爆炸方向即可。在圖3(c)中套筒有Y+、Y-兩個(gè)可爆炸方向,但是沒有最優(yōu)爆炸方向,此時(shí)選擇任意一個(gè)可爆炸方向即可,此處選擇第一個(gè)得出的爆炸方向,即Y+方向?yàn)樽顑?yōu)爆炸方向。
圖3 最優(yōu)方向確定
在自動(dòng)爆炸時(shí),確定了模型的爆炸方向后,需要將模型按照計(jì)算的方向移動(dòng)一個(gè)預(yù)定的距離,這個(gè)距離就是模型的單層爆炸距離。
為了能夠使預(yù)定的爆炸距離對(duì)不同的模型都有較好的可利用性,單層爆炸距離需要按照模型的外形尺寸計(jì)算得出。根據(jù)多次實(shí)驗(yàn)及結(jié)果評(píng)估,可知將單層爆炸距離定為模型的包圍盒的長、寬、高的平均值的1/2能夠達(dá)到較好的效果。
計(jì)算單層爆炸距離的公式為:
(1)
(2)
式中:L,W,H分別為模型包圍盒的長、寬、高;Lenaven為模型包圍盒邊長的平均值;exp(lDis)為計(jì)算得出的單層爆炸距離。
基于上述算法,筆者利用Visual Studio開發(fā)環(huán)境并配合CATIA提供的Automation API,開發(fā)了爆炸圖工具,該爆炸圖工具包括爆炸場景管理模塊、模型樹設(shè)置模塊、爆炸方向計(jì)算模塊、總體爆炸參數(shù)設(shè)置模塊、節(jié)點(diǎn)爆炸參數(shù)設(shè)置模塊以及二次爆炸模塊。圖4所示為爆炸圖制作界面,圖5所示為某減速器模型的爆炸效果。
圖4 自動(dòng)爆炸圖界面
圖5 自動(dòng)爆炸實(shí)例
本文基于CATIA開發(fā)的爆炸圖自動(dòng)生成工具已成功應(yīng)用于高速軌道交通大型部件的裝配工藝設(shè)計(jì),提高了裝配工藝設(shè)計(jì)的質(zhì)量和效率。該算法的不足之處在于進(jìn)行爆炸方向確定時(shí)依次按照6個(gè)標(biāo)準(zhǔn)方向進(jìn)行微小的移動(dòng)并不能覆蓋所有情況,筆者接下來將對(duì)算法進(jìn)行優(yōu)化,以進(jìn)一步提高自動(dòng)爆炸圖制作效率。