陳志華,姚 彬,劉 克,劉 鋼,石 璟
(1.上海工程技術(shù)大學(xué),上海 201620;2.上海拓璞數(shù)控科技股份有限公司,上海 201113;3.江麓機(jī)電集團(tuán)有限公司,湘潭 411004;4.四川航天長征裝備制造有限公司,成都 610100)
目前,航空航天中蒙皮的加工主要采用傳統(tǒng)的化銑加工,存在壁厚精度難以保證、高消耗、高污染的問題。國內(nèi)部分航空航天蒙皮的加工則采用先銑后彎的形式,存在應(yīng)力集中和滾彎質(zhì)量缺陷問題。因此,急需發(fā)展蒙皮的高效、精確、綠色制造技術(shù)[1]。雙五軸鏡像銑設(shè)備是實現(xiàn)蒙皮等薄壁工件高效率、高精度加工的有效工具[2,3]。由于雙五軸鏡像銑設(shè)備在傳統(tǒng)五軸數(shù)控機(jī)床的基礎(chǔ)上增加了支撐端的五軸結(jié)構(gòu),對于銑削端和支撐端之間的碰撞檢測不可忽視。
目前,包圍盒法是最常用的碰撞檢測算法。包圍盒算法有AABB包圍盒、OBB包圍盒、包圍球和k-DOP等[4]。在此基礎(chǔ)上,一些國內(nèi)學(xué)者對其進(jìn)行了改進(jìn),如趙偉等[5]提出了一種基于混合包圍體的OpenMP并行化碰撞檢測算法。利用OpenMP并行模型來并行遍歷混合包圍體層次,進(jìn)一步加速碰撞檢測過程。趙鑫等[6]結(jié)合人工智能技術(shù)的隨機(jī)碰撞檢測算法,將群智能中經(jīng)典的粒子群優(yōu)化算法引入改進(jìn)的隨機(jī)碰撞檢測算法中,利用最基本的粒子群優(yōu)化搜索技術(shù),以包圍基本幾何元素的OBB包圍盒作為基本特征對象,實現(xiàn)了復(fù)雜剛體之間的碰撞檢測。
本文在AABB包圍盒和包圍球的基礎(chǔ)上,針對雙五軸鏡像銑在運動過程中的旋轉(zhuǎn)變換提出一種AABB包圍盒與包圍球相結(jié)合的包圍體。與原有AABB包圍盒在旋轉(zhuǎn)變換中的不斷實時更新對比,基于包圍球的AABB包圍盒模型具有較強(qiáng)的適應(yīng)性和簡便性,能夠適用于復(fù)雜的大型機(jī)床;基于離散碰撞算法,分析了包圍盒碰撞檢測算法與GJK算法的特性,得出適用于雙五軸鏡像銑機(jī)床的防碰撞算法;通過C++和OpenGL庫函數(shù)進(jìn)行了仿真驗證。
1.1.1 軸對齊包圍盒(AABB)模型
軸對齊包圍盒AABB是一種最常用的包圍體[7]。在三維空間內(nèi),AABB是一個具有六面盒裝的長方體,且其面皆平行于給定的坐標(biāo)軸。AABB最大的優(yōu)點在于模型建立方便,并能進(jìn)行快速的碰撞檢測,即根據(jù)各點在坐標(biāo)軸上相應(yīng)的坐標(biāo)值判斷是否發(fā)生碰撞。
AABB包圍盒建立有三種方式。第一種是根據(jù)各坐標(biāo)軸上的最大值和最小值建立包圍盒,二維情況下的示意圖如圖1所示。
圖1 最小值-最大值
第二種是根據(jù)最小值和各軸向?qū)挾戎到鼑?,如圖2所示。
圖2 最小值-寬度
第三種是根據(jù)中心位置和各軸向半徑建立包圍盒,如圖3所示。
圖3 中心位置-半徑
若物體只有平移運動,第二種和第三種構(gòu)建方式比較方便,當(dāng)有旋轉(zhuǎn)運動時,第一種構(gòu)建方式更為緊湊可靠。
1.1.2 包圍球模型
包圍球和AABB、OBB、k-DOP等包圍盒相比是一種非常簡便的包圍體,它具有快速檢測碰撞的特性,當(dāng)用于帶有旋轉(zhuǎn)變換的復(fù)雜物體時,包圍球不需要作任何更新,只需要考慮物體的平移,這是包圍球的一大優(yōu)點。當(dāng)幾何對象在運動過程中具有頻繁的旋轉(zhuǎn)運動時,包圍球是極好的選擇。
在建立包圍球時,由于各頂點的權(quán)值不同,采用物體所有頂點的幾何中心點作為包圍球的球心是不符合要求的。可以選擇物體各頂點之間距離最遠(yuǎn)的兩個點,以它們的中點和距離作為球心與直徑,這樣建立的包圍球模型具有更高的可靠性。二維情況下的示意圖如圖4所示。
圖4 包圍球
1.2.1 基于原有AABB包圍盒建立防碰撞模型
雙五軸鏡像銑機(jī)床由銑削端和支撐端組成,兩端帶有旋轉(zhuǎn)變換,如圖5所示。
圖5 支撐端與銑削端結(jié)構(gòu)
若用AABB包圍盒建立模型,當(dāng)物體在運動過程中發(fā)生旋轉(zhuǎn)變換時,AABB處于非對齊狀態(tài),需要重新計算包圍體。對銑削端和支撐端包圍盒進(jìn)行運動學(xué)變換,需要建立雙五軸鏡像銑機(jī)床坐標(biāo)系,如圖6所示。
圖6 雙五軸鏡像銑坐標(biāo)系假設(shè)
A軸與B軸之間的旋轉(zhuǎn)變換:
A軸與C軸之間的旋轉(zhuǎn)變換:
其中:
分別代入式(1)、式(2),得:
由以上運算可知,雙五軸鏡像銑進(jìn)行實時碰撞檢測中采用原有AABB包圍盒建立模型,需要在每次支撐端或銑削端發(fā)生旋轉(zhuǎn)變換時重復(fù)式(1)或式(2)運算,重新建立旋轉(zhuǎn)后的包圍盒,這會使整個建模過程變得復(fù)雜,并且會影響整個系統(tǒng)運算速度,不適用于大型機(jī)床碰撞檢測。
1.2.2 采用基于包圍球的AABB建立防碰撞模型
用建立包圍球模型方法在任意方向上包圍帶有旋轉(zhuǎn)變換的物體,分別計算物體各個元素頂點在x、y、z坐標(biāo)下的最小值和最大值,并以它們的中點為球心,球心到最大值頂點的距離為半徑;然后以包圍球尺寸作為AABB包圍盒外圍參考尺寸;最后通過C++與OpenGL庫函數(shù)進(jìn)行圖形可視化,如圖7所示。
圖7 支撐側(cè)與銑削側(cè)模型
基于包圍球的AABB包圍盒與不斷更新的AABB包圍盒相比更適用于雙五軸鏡像銑防碰撞模型。當(dāng)支撐端或銑削端在運動過程中有旋轉(zhuǎn)和平移變換時,只需考慮平移變換。
動態(tài)碰撞算法分為離散碰撞算法和連續(xù)碰撞算法[8]。本文采用離散碰撞算法,在每一時間的離散點上采用靜態(tài)的方法實現(xiàn)。
當(dāng)采用包圍球碰撞檢測算法時,只需計算出兩個球心距離和它們半徑之和R,如圖8所示。
圖8 包圍球碰撞檢測算法流程圖
包圍球碰撞檢測算法與AABB、OBB、k-DOP等包圍盒碰撞檢測算法相比,不需要考慮旋轉(zhuǎn)變換,只需要考慮平移變換,并且它的算術(shù)操作包含更少的語句和數(shù)據(jù)存取,碰撞檢測速度更快。
AABB包圍盒與包圍球、OBB、k-DOP等包圍盒相比,更具有直觀性,若是AABB在三個坐標(biāo)軸下都相交,則判斷AABB之間發(fā)生碰撞。以最小值-最大值方式建立的AABB包圍盒碰撞檢測流程圖如圖9所示。
文章以AABB包圍盒與包圍球相結(jié)合建立了雙五軸鏡像銑支撐端與銑削端的包圍盒,碰撞檢測在兩個包圍盒上進(jìn)行?;诎鼑虻腁ABB包圍盒既可以通過包圍球算法來檢測兩個包圍盒是否發(fā)生碰撞,也可以通過兩個AABB包圍盒在三個坐標(biāo)軸下是否均發(fā)生相交進(jìn)行判斷,但是這兩種方式僅僅用于判斷兩個物體是否發(fā)生碰撞,無法在實際應(yīng)用中檢測兩個物體最近點之間的距離。
GJK是一種適合用于檢測物體之間的相交問題的算法,該算法通過兩個物體所有頂點集并可計算出該集合物體間的距離。GJK算法判斷兩物體之間是否發(fā)生碰撞的原理是:如果兩個物體的Minkowski差形狀中不包括原點,則這兩個物體不會碰撞,否則可以判斷兩物體會發(fā)生碰撞,在二維空間中的示意圖如圖10所示。
圖9 AABB包圍盒碰撞檢測算法流程圖
圖10 GJK算法-Minkowski差
GJK算法也可以計算兩個物體之間的距離,在兩個物體穿透深度比較小的情況下,可用它判定物體之間的碰撞,其原理是兩個物體之間的距離等價于它們的Minkowski差與原點的距離,在二維空間下示意圖如圖11所示。
圖11 GJK算法-最近距離
GJK算法可以不顯示計算物體之間的Minkowski差,只需要知道它們的Minkowski差是否包含原點,可以在Minkowski差形狀中迭代地創(chuàng)建單純形,使得單純形包含到原點的最近點。
為實現(xiàn)雙五軸鏡像銑支撐端與銑削端之間的碰撞檢測,只需在建立的包圍盒上采用GJK算法計算出兩包圍盒之間距離。碰撞檢測算法流程圖如圖12所示。
圖12 鏡像銑碰撞檢測算法流程圖
在包含C++與OpenGL庫函數(shù)的平臺上進(jìn)行雙五軸鏡像銑支撐端與銑削端的碰撞檢測仿真。當(dāng)支撐端或銑削端運動到某一點發(fā)生旋轉(zhuǎn)變換時,將本文基于包圍球的AABB包圍盒法與更新AABB包圍盒法對比分析,連續(xù)采樣多個點進(jìn)行檢測,程序運行時間對比如圖13所示。
圖13 兩包圍盒運行時間對比
由圖13可見,運動到同一點建立模型時,基于包圍球的AABB包圍盒與不斷更新AABB包圍盒法相比較,縮短了運行時間,提高了建模速度,符合實時性要求。
在碰撞檢測中,雙五軸鏡像銑機(jī)床分別在x軸方向、y軸方向與z軸方向通過GJK算法對兩側(cè)包圍盒進(jìn)行實時距離檢測,一旦兩個包圍盒之間的距離達(dá)到給定安全值時,則發(fā)生報警并停止運動。在Z軸方向進(jìn)行實時碰撞檢測的示意圖如圖14所示。
圖14 Z軸方向碰撞檢測
本文利用AABB包圍盒和包圍球各自的優(yōu)點,對雙五軸鏡像銑的銑削端和支撐端建立基于包圍球的AABB包圍盒,此模型無需在機(jī)床運動過程中考慮旋轉(zhuǎn)變換問題;分析了包圍盒碰撞檢測法和GJK算法的優(yōu)缺點,在基于包圍球的AABB包圍盒上通過GJK算法進(jìn)行實時碰撞檢測。結(jié)果證明基于包圍球的AABB包圍盒模型與GJK算法能有效地應(yīng)用于雙五軸鏡像銑設(shè)備的碰撞檢測。