專利名稱:基于三維vrml模型的虛擬裝配方法
技術(shù)領(lǐng)域:
基于三維VRML模型的虛擬裝配方法屬于計(jì)算機(jī)輔助協(xié)同產(chǎn)品設(shè)計(jì)工具領(lǐng)域。
背景技術(shù):
對(duì)于異構(gòu)CAD信息的集成問題,目前常用的解決方法是基于STEP標(biāo)準(zhǔn)的信息集成,由于STEP標(biāo)準(zhǔn)仍處于發(fā)展階段,各軟件廠商采用的應(yīng)用協(xié)議不完全一致,難以做到通用化的集成,而基于點(diǎn)對(duì)點(diǎn)的專用化集成方式得到了較好的應(yīng)用。隨著CAD技術(shù)的不斷發(fā)展,“虛擬工廠”、“動(dòng)態(tài)企業(yè)聯(lián)盟”等將會(huì)是各企業(yè)內(nèi)部和企業(yè)之間的主要工作方式,在這種應(yīng)用背景下,點(diǎn)對(duì)點(diǎn)的專用化集成方法無法滿足要求,而且,基于STEP的CAD模型文件通常比較龐大,受到網(wǎng)絡(luò)傳輸速度和容量的限制,也不適合在Internet上傳送。
VRML(虛擬現(xiàn)實(shí)建模語言Virtual Reality Modeling Language)格式文件具有交互性強(qiáng)、文件短小、易擴(kuò)展性強(qiáng)、分布式、平臺(tái)無關(guān)等特點(diǎn),而且它以腳本語言定義的動(dòng)畫也比其它格式的文件小的多,是目前網(wǎng)絡(luò)環(huán)境下描述三維場(chǎng)景的主要語言。VRML作為一種虛擬現(xiàn)實(shí)建模語言,提供了適合在Internet上可視化顯示和操縱3D實(shí)體模型的理想方式。VRML在Internet上提供了有景深、有立體感的三維世界,使得在Internet上基于3D模型進(jìn)行可視化協(xié)同成為可能,成為支持協(xié)同設(shè)計(jì)的一種切實(shí)可行的解決方案。同時(shí),VRML受到眾多CAD軟件廠商的支持,目前,主流CAD軟件均提供VRML格式的3D和2D圖形輸出。因此許多網(wǎng)絡(luò)化產(chǎn)品協(xié)同設(shè)計(jì)支持系統(tǒng)采用基于VRML標(biāo)準(zhǔn)的信息集成來解決異構(gòu)CAD信息的集成問題。
對(duì)于一個(gè)通用型的協(xié)同設(shè)計(jì)平臺(tái)而言,異地協(xié)同虛擬裝配工具是一個(gè)非常重要的工具。來自不同平臺(tái)的CAD模型,尤其是跨地域、跨平臺(tái)的CAD模型,需要在網(wǎng)絡(luò)環(huán)境中由單人或多人(包括專家、設(shè)計(jì)師、銷售人員和用戶)相互協(xié)同進(jìn)行產(chǎn)品的預(yù)裝配,以達(dá)到檢驗(yàn)來自不同任務(wù)組的零部件的可裝配性,或?qū)Ξa(chǎn)品進(jìn)行可視化協(xié)同評(píng)價(jià)的目的??缙脚_(tái)的直接預(yù)裝配給基于VRML標(biāo)準(zhǔn)的信息集成帶來了新的挑戰(zhàn)。
VRML在擁有以上適于協(xié)同設(shè)計(jì)的優(yōu)點(diǎn),同時(shí)也存在某些不足之處,這些不足給異地協(xié)同虛擬裝配帶來了困難。其主要原因是VRML標(biāo)準(zhǔn)化的文件格式,VRML文件的基本格式如下
從上面的格式描述可以看出,對(duì)于復(fù)雜的零部件其VRML文件都是采用高級(jí)造型方式,即通過IndexedFaceSet節(jié)點(diǎn)描述面的形狀并通過面的拼接實(shí)現(xiàn)任意形狀的幾何體外觀(如圖1),即使用IndexedFaceSet節(jié)點(diǎn)造型。IndexedFaceSet是由coord域給出一系列的空間點(diǎn),然后在coordIndex域中對(duì)其進(jìn)行引用,即選取coord域中的某三點(diǎn)構(gòu)成一個(gè)三角面片域,這些三角面片就構(gòu)成了我們最終看到的零部件的形體。采用IndexedFaceSet造型幾乎不受形體復(fù)雜性的限制,生成的VRML文件也比較簡單和短小。但同時(shí)當(dāng)CAD模型轉(zhuǎn)換為VRML模型之后,將會(huì)丟失精確性和具體的裝配特征,從而不利于裝配時(shí)對(duì)其進(jìn)行精確的控制,所以采用IndexedFaceSet造型是以犧牲零部件形體的幾何信息參數(shù)為代價(jià)的。最終得到的VRML文件中除了記錄了一些三角面片的頂點(diǎn)外,就別無任何其它信息了。并且,一些基于VRML的裝配系統(tǒng)正是收到這種限制,所以只能依托于其它CAD系統(tǒng)的支持而完成裝配操作、裝配規(guī)劃等工作的,VRML模型只是用于瀏覽功能,所以這樣的系統(tǒng)并不是完全的“基于VRML”的結(jié)構(gòu),也不是獨(dú)立的系統(tǒng)。這就在系統(tǒng)的使用過程中造成不便,也給系統(tǒng)與其它系統(tǒng)集成帶來困難。
在進(jìn)行裝配操作時(shí),首先要親自恢復(fù)零部件的幾何信息參數(shù),以便完成零部件產(chǎn)品的預(yù)裝配。本發(fā)明提出了幾種主要的裝配方法,以滿足大部分虛擬裝配操作的要求,并根據(jù)定位需要,采用同步移動(dòng)搜索算法計(jì)算出軸心等重要幾何信息,實(shí)現(xiàn)了對(duì)VRML模型的預(yù)處理,解決了預(yù)裝配操作種缺少幾何信息的問題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于三維VRML模型的虛擬裝配方法。
本發(fā)明特征在于它是一種在計(jì)算機(jī)網(wǎng)絡(luò)上基于虛擬現(xiàn)實(shí)建模語言,即VRML格式文件的異地跨平臺(tái)協(xié)同直接預(yù)裝配方法,它由一下三種裝配方法共同組成,它們各依次含有以下步驟圓柱、軸孔配合,即fit裝配方法,它依次含有以下步驟設(shè)定裝配基礎(chǔ)件的一個(gè)頂面定位點(diǎn)為P0,一個(gè)頂面定位法向量為 三個(gè)側(cè)面定位點(diǎn)為P1,P2,P3,三個(gè)側(cè)面定位法向量為 零部件軸的一個(gè)頂面定位點(diǎn)為Pi0,一個(gè)頂面定位法向量 三個(gè)側(cè)面定位點(diǎn)Pi1,Pi2,Pi3,三個(gè)側(cè)面定位法向量 i為零部件的編號(hào); 與裝配基礎(chǔ)件和零部件的幾何位置有關(guān),可由已有的軟件包Cortona SDK得到,在本申請(qǐng)文件中是給定的;(一)用同步移動(dòng)搜索算法計(jì)算軸心的位置,依次含有一下步驟(1)對(duì)各已知定位向量 單位化,再把單位化后的新分量值賦給上述各向量;(2)保持點(diǎn)P1的位置不變,把不在同一平面的點(diǎn)P2,P3投射到與 垂直且點(diǎn)P1所在的平面內(nèi),點(diǎn)P′2,P3′表示點(diǎn)P2,P3在平面ψ內(nèi)的投影,得到 (3)計(jì)算 且單位化;(4)計(jì)算出ψ平面內(nèi)點(diǎn)P1,P2′,P3′各自沿著所在弦的搜索方向向量 (5)在平面ψ內(nèi)找出點(diǎn)P1,P2′,P3′所在各弦的中點(diǎn),它依次含有以下步驟(5.1)分別計(jì)算P1點(diǎn)的搜索方向向量 和矢量 夾角α的余弦、矢量 與P2′點(diǎn)的搜索方向向量 夾角β的余弦cosα=TP1→·P2′P1→,]]>cosβ=P2′P1→·TP2′→]]>(5.2)比較α,β,根據(jù)比較結(jié)果,移動(dòng)P1,P2′點(diǎn)若α>β,則把P1,P2′分別移動(dòng)到P1′,P2″點(diǎn),移動(dòng)步長分別為Step·TP1→,Step·TP2′→,]]>即 若α<β,則同α>β時(shí)所述,即 再重新計(jì)算cosα,cosβ,比較α,β大小,直到α=β,轉(zhuǎn)入下一步;(5.3)分別計(jì)算P2′點(diǎn)的搜索方向向量 和矢量 夾角_的余弦、P3′點(diǎn)的搜索方向向量 和矢量 夾角γ的余弦 (5.4)比較γ與_,根據(jù)比較結(jié)果移動(dòng)P1,P2′,P3′點(diǎn)若γ>_,則把P1,P2′,P3′點(diǎn)分別移至P1′,P2″,P3″點(diǎn),移動(dòng)步長分別為Step·TP1→,Step·TP2′→,Step·TP3′→:]]> 若γ<_,則同γ>_所述,即 再重新比較γ與_,直到γ=_,進(jìn)入下一步驟;(5.5)分別計(jì)算點(diǎn)P3′的搜索方向向量 和矢量 的夾角λ的余弦、點(diǎn)P1的搜索方向向量 和矢量 夾角δ的余弦cosλ=TP3′→·P3′P1→,]]>cosδ=TP1→·P3′P1→]]>(5.6)比較λ與δ,根據(jù)比較結(jié)果移動(dòng)P1,P2′,P3′點(diǎn)若λ>δ,則把P1,P2′,P3′分別移動(dòng)至P1′,P2″,P3″,移動(dòng)步長分別為Step·TP1→,Step·TP2′→,Step·TP3′→:]]> 若λ<δ,則同λ>δ所述,即
再重新比較λ與δ,直到λ=δ,進(jìn)入下一步驟;(6)根據(jù)步驟(5)得到的各弦中點(diǎn)P1,P2′,P3′,計(jì)算得圓心PcPc-P1→=|P1-P2→||V1→-V2→|·V1→]]>(二)根據(jù)裝配的條件,計(jì)算變換矩陣,完成裝配操作,它依次含有以下步驟(1)單位化步驟(一)得到的所有向量;(2)判別 是否同向或反向若同向,則按下述方法直接作平移計(jì)算;若反向,則令旋轉(zhuǎn)角θ=π,以 為軸翻轉(zhuǎn)π角;若不同向也不反向,則轉(zhuǎn)入下一步驟(3)按下式得到的旋轉(zhuǎn)向量 和旋轉(zhuǎn)角θ,再設(shè)置旋轉(zhuǎn)域cosθ=Vi0→·V0→,]]>R→=Vi0→×V0→]]>按下式得到第i零部件的變換矩陣Ti[4][4]Ti[4][4]=Rx2+(1-Rx2)cosθRx·Ry(1-cosθ)+Rz·sinθRx·Rz(1-cosθ)-Ry·sinθ0Rx·Ry(1-cosθ)-Rz·sinθRy2+(1-Ry2)cosθRy·Rz(1-cosθ)+Rx·sinθ0Rx·Rz(1-cosθ)+Ry·sinθRy·Rz(1-cosθ)-Rx·sinθRz2+(1-Rz2)cosθ00001]]>(4)按下式把零部件軸的坐標(biāo)體系Mi[4][4]變換到裝配基礎(chǔ)件坐標(biāo)體系M[4][4]內(nèi),即M[4][4]=Mi[4][4]×Ti[4][4](5)將Pi0,Pi1,Pi2,Pi3各點(diǎn)分別經(jīng)過旋轉(zhuǎn)變換矩陣Ti[4][4]變換為新的坐標(biāo)位置
Pi0′,Pi1′,Pi2′,Pi2′,Pi3′;(6)利用同步移動(dòng)搜索算法分別計(jì)算裝配基礎(chǔ)件的軸心Pc和零部件的軸心Pic (7)由下式計(jì)算Pi0′,Pic在裝配基礎(chǔ)件坐標(biāo)系下經(jīng)過平移變換后的位置Pi0*,Pic′ 其中與Pi0′與Pi0′,Pic與Pic′滿足如下關(guān)系(Δx,Δy,Δz未知) 其中,Pi0′(P′i0x,Pi0y′,Pi0z′)為Pi0在零部件坐標(biāo)系下經(jīng)過旋轉(zhuǎn)變換后的三維坐標(biāo);Pi0″(Pi0x′,Pi0y′,Pi0z′)為Pi0′在裝配基礎(chǔ)件坐標(biāo)系下經(jīng)過平移變換后的三維坐標(biāo);Picx,Picy,Picz為Pic在零部件坐標(biāo)系下的三維坐標(biāo);Picx′,Picy′,Pic′在裝配基礎(chǔ)件坐標(biāo)系下的三維坐標(biāo);(8)按下式計(jì)算平移域,得到(Δx,Δy,Δz) (9)把Δx,Δy,Δz代入Ti[4][4]得到最終變換矩陣Ti[4][4];Rx2+(1-Rx2)cosθRx·Ry(1-cosθ)+Rz·sinθRx·Rz(1-cosθ)-Ry·sinθ0Rx·Ry(1-cosθ)-Rz·sinθRy2+(1-Ry2)cosθRy·Rz(1-cosθ)+Rx·sinθ0Rx·Rz(1-cosθ)+Ry·sinθRy·Rz(1-cosθ)-Rx·sinθRz2+(1-Rz2)cosθ0ΔxΔyΔz1]]>
(10)將平移域的值(Δx,Δy,Δz)和旋轉(zhuǎn)域的值 寫入VRML模型,完成位置變換實(shí)現(xiàn)裝配;(三)Align即面貼和裝配和Against即面對(duì)齊裝配,它們依次含有以下步驟(1)對(duì)于法向量 構(gòu)成的裝配基礎(chǔ)件坐標(biāo)系M[4][4],首先判斷 是否正交,若正交,則執(zhí)行下述步驟,否則終止執(zhí)行;(2)對(duì)于法向量 構(gòu)成的零部件坐標(biāo)系Mi[4][4],判斷 是否正交,若正交,則執(zhí)行下述步驟,否則終止執(zhí)行;(3)利用式Ti[4][4]=Mi[4][4]-1×M[4][4]或Ti[4][4]=Mi′[4][4]-1×M[4][4]算出坐標(biāo)系變換矩陣Ti[4][4]其中,Ti[4][4]=Mi[4][4]-1×M[4][4]由Align的裝配關(guān)系必須滿足的下述關(guān)系式得到M[4][4]=Mi[4][4]×Ti[4][4]Ti[4][4]=Mi′[4][4]-1×M[4][4]由Against的裝配關(guān)系必須滿足的下述關(guān)系式得到M[4][4]=Mi′[4][4]×Ti[4][4](4)Ti[4][4]還可以表示為Ti[4][4]=Rx2+(1-Rx2)cosθRx·Ry(1-cosθ)+Rz·sinθRx·Rz(1-cosθ)-Ry·sinθ0Rx·Ry(1-cosθ)-Rz·sinθRy2+(1-Ry2)cosθRy·Rz(1-cosθ)+Rx·sinθ0Rx·Rz(1-cosθ)+Ry·sinθRy·Rz(1-cosθ)-Rx·sinθRz2+(1-Rz2)cosθ0ΔxΔyΔz1]]>根據(jù)步驟(3)(4)中的Ti[4][4],求出旋轉(zhuǎn)矢量 和轉(zhuǎn)角為θ,以及平移域值(Δx,Δy,Δz);
將旋轉(zhuǎn)域和平移域值寫入VRML模型,完成Against/Align裝配。
實(shí)驗(yàn)證明網(wǎng)絡(luò)化產(chǎn)品協(xié)同設(shè)計(jì)理論及支持系統(tǒng)(CodesignSpace)包括協(xié)同平臺(tái)和協(xié)同工具兩個(gè)部分,我們將上述基于三維VRML模型的虛擬裝配方法應(yīng)用于其中的一個(gè)協(xié)同工具--Via-VRML(基于VRML的虛擬裝配系統(tǒng))——的開發(fā),本發(fā)明有效地實(shí)現(xiàn)了對(duì)不同CAD系統(tǒng)生成的VRML模型文件進(jìn)行幾何信息恢復(fù)預(yù)處理和裝配操作,成為該系統(tǒng)實(shí)現(xiàn)異構(gòu)CAD系統(tǒng)生成零部件的裝配和異地用戶的協(xié)同裝配的關(guān)鍵技術(shù)。目前該系統(tǒng)已通過專家組驗(yàn)收。以下是該系統(tǒng)的一些運(yùn)行實(shí)例。
表1是Via-VRML的運(yùn)行環(huán)境表1 Via-VRML運(yùn)行環(huán)境
本算法對(duì)于VRML這種適于在網(wǎng)絡(luò)上傳輸?shù)娜S模型進(jìn)行分析和計(jì)算,能夠恢復(fù)其主要幾何信息,使其在具有豐富網(wǎng)絡(luò)瀏覽功能的基礎(chǔ)上又具有了可裝配性,使得網(wǎng)絡(luò)化的協(xié)同裝配成為可能。本算法完全基于向量空間,采用搜索比較方式大大降低了計(jì)算難度,具有易于實(shí)現(xiàn),計(jì)算效率高的優(yōu)點(diǎn)。如果定義誤差計(jì)算公式如下
同步移動(dòng)搜索算法的計(jì)算誤差在0.02%以下。Fit、Align、Against三種裝配方法能夠有效準(zhǔn)確實(shí)現(xiàn)裝配的約束。綜上所述,這幾種基于三維VRML模型的虛擬裝配方法可以完成對(duì)異構(gòu)CAD系統(tǒng)生成VRML模型的完整裝配操作,使異地的協(xié)同裝配成為可能,可普遍應(yīng)用于基于網(wǎng)絡(luò)的虛擬設(shè)計(jì)系統(tǒng)。
圖1VRML模型的特點(diǎn)。
圖2常用的三種裝配方法。
圖3裝配基礎(chǔ)件坐標(biāo)系及其初始幾何數(shù)據(jù)。
圖4零部件坐標(biāo)系及其初始幾何數(shù)據(jù)。
圖5裝配基礎(chǔ)件坐標(biāo)系與零部件坐標(biāo)系裝配結(jié)果。
圖6將P2,P3投射到ψ平面內(nèi)。
圖7ψ平面內(nèi)各參量。
圖8步長搜索結(jié)果及計(jì)算軸心各量關(guān)系。
圖9同步移動(dòng)搜索算法計(jì)算軸心程序流程圖。
圖10fit裝配流程圖。
圖11Align/Against裝配流程圖。
圖12Via-VRML的運(yùn)行界面。
圖13Align與Against的裝配結(jié)果。
圖14、15fit的裝配方式及裝配結(jié)果。
具體實(shí)施例方式
零部件模型的裝配最后要落實(shí)到零部件表面的幾何約束上。裝配方法有許多種,常用的主要有面貼合(Against),軸對(duì)齊(Fit),面對(duì)齊(Align)三種。
約定點(diǎn)P1與 所在的體為裝配基礎(chǔ)件, 為所在平面的法向量,點(diǎn)Pi1與 所在的體為零部件(Pi0,Pi1,Pi2,Pi3, 表示第i個(gè)零部件的定位點(diǎn)和定位法向量), 為所在平面的法向量,裝配操作是將零部件裝配到裝配基礎(chǔ)件上。
1.Against-面貼合實(shí)現(xiàn)貼面裝配(圖2(a))需要滿足兩個(gè)約束1)端面重合 2)端面法矢方向相反 2.Align-面對(duì)齊實(shí)現(xiàn)平面對(duì)齊(圖2(b))同樣需要滿足兩個(gè)約束1)表面平齊 2)面法矢方向一致 從圖形變換的角度面對(duì)齊與面貼合是相同的,只是面法矢由反向變?yōu)橥颉?br>
3.Fit-圓柱軸孔配合實(shí)現(xiàn)軸、孔配合(圖2(c))Pc為裝配基礎(chǔ)件軸線上一點(diǎn),Pic為零部件軸線上一點(diǎn),同樣需要滿足兩個(gè)約束1)圓柱、圓柱孔軸線對(duì)齊Pc-Pic→×V0→=0]]>2)端部面貼合P0-Pi0→·V0→=0]]>本發(fā)明的實(shí)現(xiàn)方法如下(一)同步移動(dòng)搜索算法計(jì)算軸心首先通過選取裝配基礎(chǔ)件的一個(gè)頂面定位點(diǎn)P0,一個(gè)頂面定位法向量 和三個(gè)側(cè)面定位點(diǎn)P1,P2,P3三個(gè)側(cè)面定位法向量 同樣,選取零部件的一個(gè)頂面定位點(diǎn)Pi0,一個(gè)頂面定位法向量 和三個(gè)側(cè)面定位點(diǎn)Pi1,Pi2,Pi3,三個(gè)側(cè)面定位法向量 (Pi0,Pi1,Pi2,Pi3, 表示第i個(gè)零部件的定位點(diǎn)和定位方向)。大致情況如圖3,圖4所示。
計(jì)算軸心時(shí),以裝配基礎(chǔ)件為例,已知幾何條件如上所述,首先將不在同一平面的P1,P2,P3映射到與 垂直的ψ平面內(nèi)P2′,P3′點(diǎn)(見圖6),由VRML模型的幾何特征可知P1,P2′,P3′在以軸心為圓心,以軸橫截面半徑為外切圓半徑的正多邊形的弦上,所以應(yīng)首先將在弦上位置任意的P1,P2′,P3′移至各自所在弦的中點(diǎn),其方法大致為首先計(jì)算出P1,P2,P3各自的搜索方向向量 (即P1,P2′,P3′移動(dòng)的方向),把平面的已知條件整理如圖7,依照以下步驟進(jìn)行循環(huán)搜索,即可使P1,P2′,P3′到達(dá)各自所在弦的中點(diǎn),最后根據(jù)簡單的幾何關(guān)系計(jì)算得到軸心,具體步驟如下(1)為了方便計(jì)算,首先要對(duì)各已知定位向量 進(jìn)行單位化,以 為例,設(shè) 在x,y,z方向上的分量為(V1x,V1y,V1z),單位化公式如下
將單位化后的新分量值再賦給 即 對(duì) 進(jìn)行類似 的操作;(2)將不在同一平面的P1,P2,P3映射到與 垂直的同一平面,為了便于幾何計(jì)算,保持P1位置不變,將P2,P3投射到與 垂直,P1所在的平面ψ內(nèi),如圖6所示,關(guān)系如下, 利用式表示的關(guān)系即可將P2,P3映射到與 垂直,P1所在的平面ψ內(nèi)的P2′,P3′點(diǎn);(3)計(jì)算三點(diǎn)各自的連線方向,用于后面計(jì)算 單位化P1P2′→,P2′P3′→,P3′P1→;]]>(4)計(jì)算出P1,P2′,P3′各自的移動(dòng)搜索方向向量 如下式,使P1,P2′,P3′分別同時(shí)沿 按照指定步長移動(dòng)至弦中點(diǎn); (5)得到平面ψ內(nèi)各參量的初始情況如圖7;(6)計(jì)算cosα=TP1→·P1P2′→]]>和cosβ=P1P2′→·TP2′→,]]>得到cosα和cosβ值;(7)比較α,β,根據(jù)比較結(jié)果移動(dòng)P1,P2′點(diǎn),具體如下(Step為搜索步長,其具體值可由計(jì)算精度要求及VRML模型幾何尺寸確定)
如果α=β,則進(jìn)入步驟(8)設(shè)P1′,P2″為P1,P2′移動(dòng)后的新位置,如果α>β,則令 如果α<β,則令 令P1=P1′,P2′=P2″,P1P2′→=P2′-P1→]]>重復(fù)步驟(6),(7)直到α=β,進(jìn)入步驟(8)(8)同理計(jì)算cosγ,cos_,然后移動(dòng)P1,P2′,P3′,使γ=_如果γ=_,則進(jìn)入步驟(9)設(shè)P1′,P2″,P3″,為P1,P2′,P3′移動(dòng)后的新位置,如果γ>_,則令 如果γ<_,則令 令P1=P1′,P2=P2,P3=P3′,P2′P3′→=P3′-P2′→,]]>重復(fù)步驟(8)直到γ=_,進(jìn)入步驟(8)(9)同理計(jì)算cosδ,cosλ,然后移動(dòng)P1,P1,P2′,P3′,使δ=λ如果δ=λ,則進(jìn)入步驟(10)設(shè)P1′,P2″,P3″為P1,P2′,P3′移動(dòng)后的新位置,
如果λ>δ,則令 如果λ<δ,則令 令P1=P1′,P2′=P2″,P3′=P3″,P3′P1→=P1-P3′→]]>重復(fù)步驟(9)直到δ=λ,進(jìn)入步驟(10);(10)計(jì)算軸心Pc。得到P1,P2′,P3′現(xiàn)均為各弦中點(diǎn),如圖8所示,可由比例相似得到Pc-P1→=|P1-P2|→|V1→-V2→|·V1→,]]>Pc即為軸心。
同步移動(dòng)搜索算法的流程如圖9依據(jù)同步移動(dòng)搜索算法確定軸心的位置后,根據(jù)頂面定位法向量計(jì)算旋轉(zhuǎn)軸 和旋轉(zhuǎn)角θ,然后得到旋轉(zhuǎn)變換矩陣Ti[4][4],利用Ti[4][4]對(duì)零部件坐標(biāo)系進(jìn)行旋轉(zhuǎn)變換,最后根據(jù)裝配約束的條件計(jì)算平移域值(Δx,Δy,Δz),將旋轉(zhuǎn)域值的旋轉(zhuǎn)軸 旋轉(zhuǎn)角θ和平移域值(Δx,Δy,Δz)寫入VRML模型文件,完成裝配的操作。具體步驟如下(1)單位化所有向量。
(2)判斷兩個(gè)頂面定位向量 和 是否同向或反向,因?yàn)檫@屬于變換中的特殊情況(此時(shí)叉積為0,無法求出旋轉(zhuǎn)軸),要首先排除。如同向則直接進(jìn)行平移計(jì)算,不用指定旋轉(zhuǎn)軸和旋轉(zhuǎn)角;如反向則直接令θ=π,指定 為旋轉(zhuǎn)軸(見圖5);(3)如既不同向也不反向,則由式得到旋轉(zhuǎn)軸向量 和旋轉(zhuǎn)角θ,然后進(jìn)行旋轉(zhuǎn)域的設(shè)置;
cosθ=Vi0→·V0→]]>R→=Vi0→×V0→]]>(4)由上面得到旋轉(zhuǎn)軸向量 和旋轉(zhuǎn)角θ,由計(jì)算機(jī)圖形學(xué)知識(shí),而Ti[4][4]可由向量 和旋轉(zhuǎn)角θ確定,于是得旋轉(zhuǎn)矩陣Ti[4][4](Ti[4][4]為第i個(gè)零部件坐標(biāo)系與裝配基礎(chǔ)件之間的變換矩陣)Rx2+(1-Rx2)cosθRx·Ry(1-cosθ)+Rz·sinθRx·Rz(1-cosθ)-Ry·sinθ0Rx·Ry(1-cosθ)-Rz·sinθRy2+(1-Ry2)cosθRy·Rz(1-cosθ)+Rx·sinθ0Rx·Rz(1-cosθ)+Ry·sinθRy·Rz(1-cosθ)-Rx·sinθRz2+(1-Rz2)cosθ00001]]>得到Ti[4][4]即為裝配基礎(chǔ)件坐標(biāo)系M[4][4](可未知)與零部件坐標(biāo)系Mi[4][4](可未知)之間的變換矩陣,即M[4][4]=Mi[4][4]×Ti[4][4]求出了Ti[4][4]即可將零部件坐標(biāo)系內(nèi)的任何點(diǎn)變換到裝配基礎(chǔ)件坐標(biāo)系內(nèi);(5)將Pi0,Pi1,Pi2,Pi3各點(diǎn)分別經(jīng)過旋轉(zhuǎn)變換矩陣Ti[4][4]變換為新的坐標(biāo)位置Pi0′,Pi1′,Pi2′,Pi3′;(6)使用上述同步移動(dòng)搜索算法分別計(jì)算裝配基礎(chǔ)件和零部件的軸心Pc,Pic;(7)由下式計(jì)算Pi0′,Pic在裝配基礎(chǔ)件坐標(biāo)系下經(jīng)過平移變換后的位置Pi0″,Pic′ 其中Pi0′與Pi0″,Pic與Pic′滿足如下關(guān)系(Δx,Δy,Δz未知)
(8)計(jì)算平移域,得到(Δx,Δy,Δz) (9)得到最終的變換矩陣Ti[4][4]Rx2+(1-Rx2)cosθRx·Ry(1-cosθ)+Rz·sinθRx·Rz(1-cosθ)-Ry·sinθ0Rx·Ry(1-cosθ)-Rz·sinθRy2+(1-Ry2)cosθRy·Rz(1-cosθ)+Rx·sinθ0Rx·Rz(1-cosθ)+Ry·sinθRy·Rz(1-cosθ)-Rx·sinθRz2+(1-Rz2)cosθ0ΔxΔyΔz1]]>(10)將平移域的值(Δx,Δy,Δz)和旋轉(zhuǎn)域的值 寫入VRML模型,完成位置變換實(shí)現(xiàn)裝配。
將軸裝配算法的流程如圖10(二)Align、Against裝配方法在虛擬裝配系統(tǒng)中,面對(duì)面的裝配所要實(shí)現(xiàn)的是將“平移域”和“旋轉(zhuǎn)域”都不同的兩個(gè)物體按照一定的裝配約束裝配到一起。
首先得到裝配基礎(chǔ)件的三個(gè)定位點(diǎn)P1,P2,P3和三個(gè)定位法向量 和零部件的三個(gè)定位點(diǎn)Pi1,Pi2,Pi3和三個(gè)定位法向量 由此得到裝配基礎(chǔ)件的坐標(biāo)系為M[4][4],且M[4][4]可表示為M[4][4]=V1xV1yV1z0V2xV2yV2z0V3xV3yV3z00001]]>其中V1x,V1y,V1z為 在x,y,z方向上的各分量,其它類似。
零部件的坐標(biāo)系為Mi[4][4],Mi[4][4]可表示為Mi[4][4]=Vi1xVi1yVi1z0Vi2xVi2yVi2z0Vi3xVi3yVi3z00001]]>裝配操作本質(zhì)上就是將零部件的坐標(biāo)矩陣Mi[4][4]通過變換成為與裝配基礎(chǔ)件的坐標(biāo)矩陣M[4][4]同向(Align)或某一個(gè)方向相反(Against)。設(shè)該變換矩陣為Ti[4][4]。Align的裝配關(guān)系下三個(gè)矩陣滿足如下關(guān)系M[4][4]=Mi[4][4]×Ti[4][4]Against的裝配關(guān)系下三個(gè)矩陣滿足如下關(guān)系M[4][4]=Mi′[4][4]×Ti[4][4](Mi′[4][4]與Mi[4][4]某一個(gè)向量方向相反)由于Mi[4][4]、Mi′[4][4]均已知,由上式可以得到Ti[4][4]Ti[4][4]=Mi[4][4]-1×M[4][4] (1)或Ti[4][4]=Mi′[4][4]-1×M[4][4]如果旋轉(zhuǎn)變換的軸為 旋轉(zhuǎn)角為θ;X,Y,Z方向上的平移量為(Δx,Δy,Δz),則Ti[4][4]還可表示為Rx2+(1-Rx2)cosθRx·Ry(1-cosθ)+Rz·sinθRx·Rz(1-cosθ)-Ry·sinθ0Rx·Ry(1-cosθ)-Rz·sinθRy2+(1-Ry2)cosθRy·Rz(1-cosθ)+Rx·sinθ0Rx·Rz(1-cosθ)+Ry·sinθRy·Rz(1-cosθ)-Rx·sinθRz2+(1-Rz2)cosθ0ΔxΔyΔz1----(2)]]>這樣便在裝配關(guān)系與VRML模型旋轉(zhuǎn)平移域值之間找到了關(guān)系,只要通過式(1)得到Ti[4][4]矩陣的值,再通過式(1)與式(2)的等量關(guān)系解出旋轉(zhuǎn)變換的軸向量(Rx,Ry,Rz)、旋轉(zhuǎn)角θ和平移域(Δx,Δy,Δz),照一定的位置約束實(shí)現(xiàn)Align及Against方式的預(yù)裝配。如果給了一定的偏移值,此算法還可以擴(kuò)展到有一定位移間距的裝配。具體步驟如下(1)法向量 構(gòu)成的裝配基礎(chǔ)件坐標(biāo)系M[4][4],首先判斷 是否正交,若正交,繼續(xù)計(jì)算,否則終止計(jì)算;(2)法向量 構(gòu)成的零部件坐標(biāo)系Mi[4][4],判斷 是否正交,若正交,繼續(xù)計(jì)算,否則終止計(jì)算;(3)利用式Ti[4][4]=Mi[4][4]-1×M[4][4]或Ti[4][4]=Mi′[4][4]-1×M[4][4]求出坐標(biāo)系變換矩陣Ti[4][4];(4)由Ti[4][4]=Rx2+(1-Rx2)cosθRx·Ry(1-cosθ)+Rz·sinθRx·Rz(1-cosθ)-Ry·sinθ0Rx·Ry(1-cosθ)-Rz·sinθRy2+(1-Ry2)cosθRy·Rz(1-cosθ)+Rx·sinθ0Rx·Rz(1-cosθ)+Ry·sinθRy·Rz(1-cosθ)-Rx·sinθRz2+(1-Rz2)cosθ0ΔxΔyΔz1]]>求出旋轉(zhuǎn) 和旋轉(zhuǎn)θ,以及平移域值(Δx,Δy,Δz);(5)將旋轉(zhuǎn)域和平移域值寫入VRML模型,完成Against/Align裝配。Align、Against裝配方法算法的流程如圖11。
權(quán)利要求
1.基于三維VRML模型的虛擬裝配方法,其特征在于,它是一種在計(jì)算機(jī)網(wǎng)絡(luò)上基于虛擬現(xiàn)實(shí)建模語言,即VRML格式文件的異地跨平臺(tái)協(xié)同直接預(yù)裝配方法,它由一下三種裝配方法共同組成,它們各依次含有以下步驟圓柱、軸孔配合,即fit裝配方法,它依次含有以下步驟設(shè)定裝配基礎(chǔ)件的一個(gè)頂面定位點(diǎn)為P0,一個(gè)頂面定位法向量為 三個(gè)側(cè)面定位點(diǎn)為P1,P2,P3,三個(gè)側(cè)面定位法向量為 零部件軸的一個(gè)頂面定位點(diǎn)為Pi0,一個(gè)頂面定位法向量 三個(gè)側(cè)面定位點(diǎn)Pi1,Pi2,Pi3,三個(gè)側(cè)面定位法向量 i為零部件的編號(hào); 與裝配基礎(chǔ)件和零部件的幾何位置有關(guān),可由已有的軟件包Cortona SDK得到,在本申請(qǐng)文件中是給定的;(一)用同步移動(dòng)搜索算法計(jì)算軸心的位置,依次含有一下步驟(1)對(duì)各已知定位向量 單位化,再把單位化后的新分量值賦給上述各向量;(2)保持點(diǎn)P1的位置不變,把不在同一平面的點(diǎn)P2、P3投射到與 垂直且點(diǎn)P1所在的平面內(nèi),點(diǎn)P′2,P′3表示點(diǎn)P2,P3在平面ψ內(nèi)的投影,得到 (3)計(jì)算 且單位化;(4)計(jì)算出ψ平面內(nèi)點(diǎn)P1,P′2,P′3各自沿著所在弦的搜索方向向量 (5)在平面ψ內(nèi)找出點(diǎn)P1,P′2,P′3所在各弦的中點(diǎn),它依次含有以下步驟(5.1)分別計(jì)算P1點(diǎn)的搜索方向向量 和矢量 夾角α的余弦、矢量 與P′2點(diǎn)的搜索方向向量 夾角β的余弦cosα=TP1→·P2′P1→,]]>cosβ=P2′P1→·TP2′→]]>(5.2)比較α,β,根據(jù)比較結(jié)果,移動(dòng)P1,P′2點(diǎn)若α>β,則把P1,P′2分別移動(dòng)到P′1,P″2點(diǎn),移動(dòng)步長分別為 即 若α<β,則同α>β時(shí)所述,即 再重新計(jì)算cosα,cosβ,比較α,β大小,直到α=β,轉(zhuǎn)入下一步;(5.3)分別計(jì)算P′2點(diǎn)的搜索方向向量 和矢量 夾角_的余弦、P′3點(diǎn)的搜索方向向量 和矢量 夾角γ的余弦 cosγ=TP3′→·P2′P3′→]]>(5.4)比較γ與_,根據(jù)比較結(jié)果移動(dòng)P1,P′2,P′3點(diǎn)若γ>_,則把P1,P′2,P′3點(diǎn)分別移至P′1,P″2,P″3點(diǎn),移動(dòng)步長分別為 若γ<_,則同γ>_所述,即 再重新比較γ與_,直到γ=_,進(jìn)入下一步驟;(5.5)分別計(jì)算點(diǎn)P′3的搜索方向向量 和矢量 的夾角λ的余弦、點(diǎn)P1的搜索方向向量 和矢量 夾角δ的余弦cosλ=TP3′→·P3′P1→,]]>cosδ=TP1→·P3′P1→]]>(5.6)比較λ與δ,根據(jù)比較結(jié)果移動(dòng)P1,P′2,P′3點(diǎn)若λ>δ,則把P1,P′2,P′3分別移動(dòng)至P′1,P″2,P″3,移動(dòng)步長分別為 若λ<δ,則同λ>δ所述,即 再重新比較λ與δ,直到λ=δ,進(jìn)入下一步驟;(6)根據(jù)步驟(5)得到的各弦中點(diǎn)P1,P′2,P′3,計(jì)算得圓心PcPc-P1→=|P1-P2→||V1→-V2→|·V1→]]>(二)根據(jù)裝配的條件,計(jì)算變換矩陣,完成裝配操作,它依次含有以下步驟(1)單位化步驟(一)得到的所有向量;(2)判別 是否同向或反向若同向,則按下述方法直接作平移計(jì)算;若反向,則令旋轉(zhuǎn)角θ=π,以 為軸翻轉(zhuǎn)π角;若不同向也不反向,則轉(zhuǎn)入下一步驟(3)按下式得到的旋轉(zhuǎn)向量 和旋轉(zhuǎn)角θ,再設(shè)置旋轉(zhuǎn)域cosθ=Vi0→·V0→,]]>R→=Vi0→×V0→]]>按下式得到第i零部件的變換矩陣Ti[4][4]Ti[4][4]=Rx2+(1-Rx2)cosθRx·Ry(1-cosθ)+Rz·sinθRx·Rz(1-cosθ)-Ry·sinθ0Rx·Ry(1-cosθ)-Rz·sinθRy2+(1-Ry2)cosθRy·Rz(1-cosθ)+Rx·sinθ0Rx·Rz(1-cosθ)+Ry·sinθRy·Rz(1-cosθ)-Rx·sinθRz2+(1-Rz2)cosθ00001]]>(4)按下式把零部件軸的坐標(biāo)體系Mi[4][4]變換到裝配基礎(chǔ)件坐標(biāo)體系M[4][4]內(nèi),即M[4][4]=Mi[4][4]×Ti[4][4](5)將Pi0,Pi1,Pi2,Pi3各點(diǎn)分別經(jīng)過旋轉(zhuǎn)變換矩陣Ti[4][4]變換為新的坐標(biāo)位置P′i0,P′i1,P′i2,P′i3;(6)利用同步移動(dòng)搜索算法分別計(jì)算裝配基礎(chǔ)件的軸心Pc和零部件的軸心Pic (7)由下式計(jì)算P′i0,Pic在裝配基礎(chǔ)件坐標(biāo)系下經(jīng)過平移變換后的位置P″i0,P′ic 其中與P′i0與P″i0,Pic與P′ic滿足如下關(guān)系(Δx,Δy,Δz未知) 其中,P′i0(P′i0x,P′i0y,P′i0z)為Pi0在零部件坐標(biāo)系下經(jīng)過旋轉(zhuǎn)變換后的三維坐標(biāo);P″i0(P′i0x,P′i0y,P′i0z)為P′i0在裝配基礎(chǔ)件坐標(biāo)系下經(jīng)過平移變換后的三維坐標(biāo);Picx,Picy,Picz為Pic在零部件坐標(biāo)系下的三維坐標(biāo);P′icx,P′icy,P′icz為P′ic在裝配基礎(chǔ)件坐標(biāo)系下的三維坐標(biāo);(8)按下式計(jì)算平移域,得到(Δx,Δy,Δz) (9)把Δx,Δy,Δz代入Ti[4][4]得到最終變換矩陣Ti[4][4];Rx2+(1-Rx2)cosθRx·Ry(1-cosθ)+Rz·sinθRx·Rz(1-cosθ)-Ry·sinθ0Rx·Ry(1-cosθ)-Rz·sinθRy2+(1-Ry2)cosθRy·Rz(1-cosθ)+Rx·sinθ0Rx·Rz(1-cosθ)+Ry·sinθRy·Rz(1-cosθ)-Rx·sinθRz2+(1-Rz2)cosθ0ΔxΔyΔz1]]>(10)將平移域的值(Δx,Δy,Δz)和旋轉(zhuǎn)域的值 寫入VRML模型,完成位置變換實(shí)現(xiàn)裝配;(三)Align即面貼和裝配和Against即面對(duì)齊裝配,它們依次含有以下步驟(1)對(duì)于法向量 構(gòu)成的裝配基礎(chǔ)件坐標(biāo)系M[4][4],首先判斷 是否正交,若正交,則執(zhí)行下述步驟,否則終止執(zhí)行;(2)對(duì)于法向量 構(gòu)成的零部件坐標(biāo)系Mi[4][4],判斷 是否正交,若正交,則執(zhí)行下述步驟,否則終止執(zhí)行;(3)利用式Ti[4][4]=Mi[4][4]-1×M[4][4]或Ti[4][4]=M′i[4][4]-1×M[4][4]算出坐標(biāo)系變換矩陣Ti[4][4]其中,Ti[4][4]=Mi[4][4]-1×M[4][4]由Align的裝配關(guān)系必須滿足的下述關(guān)系式得到M[4][4]=Mi[4][4]×Ti[4][4]Ti[4][4]=M′i[4][4]-1×M[4][4]由Against的裝配關(guān)系必須滿足的下述關(guān)系式得到M[4][4]=M′i[4][4]×Ti[4][4](4)Ti[4][4]還可以表示為Ti[4][4]=Rx2+(1-Rx2)cosθRx·Ry(1-cosθ)+Rz·sinθRx·Rz(1-cosθ)-Ry·sinθ0Rx·Ry(1-cosθ)-Rz·sinθRy2+(1-Ry2)cosθRy·Rz(1-cosθ)+Rx·sinθ0Rx·Rz(1-cosθ)+Ry·sinθRy·Rz(1-cosθ)-Rx·sinθRz2+(1-Rz2)cosθ0ΔxΔyΔz1]]>根據(jù)步驟(3)(4)中的Ti[4][4],求出旋轉(zhuǎn)矢量 和轉(zhuǎn)角為θ,以及平移域值(Δx,Δy,Δz);(5)將旋轉(zhuǎn)域和平移域值寫入VRML模型,完成Against/Align裝配。
全文摘要
基于三維VRML模型的虛擬裝配方法,其特征在于,它是一種在計(jì)算機(jī)網(wǎng)絡(luò)上基于虛擬現(xiàn)實(shí)建模語言的異地跨平臺(tái)協(xié)同直接預(yù)裝配的方法,它能夠恢復(fù)基礎(chǔ)裝配件和零部件的主要幾何信息使VRML在具有網(wǎng)絡(luò)瀏覽功能的同時(shí)又具有可裝配性。它提出了圓柱軸孔配合、面貼面配合、面對(duì)齊配合共三種裝配方法,能夠準(zhǔn)確地實(shí)現(xiàn)裝配的約束,完成對(duì)異構(gòu)CAD系統(tǒng)生成VRML模型的完整裝配操作,實(shí)現(xiàn)異地協(xié)同裝配,具有易于實(shí)現(xiàn),計(jì)算效率高的優(yōu)點(diǎn),計(jì)算誤差在0.02%以下,可普遍用于基于網(wǎng)絡(luò)的虛擬設(shè)計(jì)系統(tǒng)。
文檔編號(hào)G06F17/50GK1564165SQ200410033618
公開日2005年1月12日 申請(qǐng)日期2004年4月13日 優(yōu)先權(quán)日2004年4月13日
發(fā)明者田凌, 王巧玉, 尤國平, 陳繼忠, 童秉樞 申請(qǐng)人:清華大學(xué)