国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Dividing cubes算法在數(shù)控仿真中的應(yīng)用

2021-09-26 06:34
關(guān)鍵詞:體素工件刀具

吳 濤

(貴州醫(yī)科大學(xué) 網(wǎng)絡(luò)與信息化管理中心,貴州 貴陽 550025)

數(shù)控加工過程仿真是數(shù)控加工技術(shù)與虛擬現(xiàn)實技術(shù)相結(jié)合的一門技術(shù),其集成了機床數(shù)控理論、計算機圖形學(xué)、計算機輔助制造、計算機輔助設(shè)計和建模等相關(guān)技術(shù),在虛擬的場景下,對數(shù)控設(shè)備的加工過程進(jìn)行全面的仿真。數(shù)控仿真采用計算機圖形學(xué)技術(shù),用動畫的方法模擬刀具加工軌跡,可以實時直觀地觀測到加工過程中每一步的信息,以此驗證數(shù)字控制程序的正確性,避免在數(shù)控加工過程中出現(xiàn)欠切、過切、走空刀,甚至損壞刀具、機床的情況。數(shù)控加工過程仿真的核心過程包括工件的三維建模,刀具和毛坯的切削算法以及工件切削面的重繪。

工件的三維實體模型構(gòu)造方法有很多,如邊界表示法、構(gòu)造實體幾何法[1]、八叉樹表示法[2]、體素表示法[3]、深度元素法[4]、壓縮體素法[5]。

數(shù)控加工過程中的切削過程其實是工件和刀具之間的相互作用,在仿真系統(tǒng)中表現(xiàn)為工件實體模型的離散數(shù)據(jù)與刀具旋轉(zhuǎn)體求交,然后將求交后的數(shù)據(jù)更新到原來的工件模型的數(shù)據(jù)結(jié)構(gòu)中,如此不斷更新工件的離散數(shù)據(jù)并實時顯示的過程。比較常用的切削計算方法有:工件模型的射線組與刀具運動所形成的掃掠體進(jìn)行求交計算[6],刀具掃掠體所構(gòu)造的掃掠面與工件模型上的不規(guī)則表面進(jìn)行曲面之間的求交計算[7-8],基于空間分解的思想將工件模型離散為三角網(wǎng)格進(jìn)行求交計算[9]等。

切削面的重繪是指在計算出刀具和工件的切削點之后,需要利用相應(yīng)的切削數(shù)據(jù)對切削面進(jìn)行重新繪制,對切削面的重新繪制要求盡可能地接近真實的加工情形。在三維數(shù)據(jù)場中,常用的可視化算法有移動立方體(marching cubes)算法[10],剖分四面體(marching tetrahedral)算法[11],以及剖分立方體(dividing cubes)算法[12]。

本文基于dividing cubes算法的思想,對原體素模型稍作改動,再結(jié)合刀具旋轉(zhuǎn)體模型進(jìn)行刀具和工件的切削計算,最后對切削面進(jìn)行重繪。

1 體素模型

體素(voxel)又稱體積像素(volume pixel),是可以看作二維像素在三維坐標(biāo)空間上的擴展,是3D均勻網(wǎng)格組成的結(jié)構(gòu)化數(shù)據(jù)。每個網(wǎng)格是結(jié)構(gòu)化數(shù)據(jù)的一個元素,一般稱為體素。體素模型是空間劃分中最常用的一種方法,本文使用該模型對工件進(jìn)行建模。

將工件的長、寬、高分別以固定的顯示精度在x軸、y軸和z軸上進(jìn)行離散,其中,nx、ny、nz分別為x軸、y軸和z軸上以固定的精度而離散的單元立方體個數(shù),如圖1(a)所示。若將每一個單元立方體作為構(gòu)造工件模型的最小單位元素,則每一個單元立方體的關(guān)鍵信息元素包含:單元體的索引值(Key,即該體素的右上角頂點的坐標(biāo)值),單元體是否存在的標(biāo)志位(isExist,默認(rèn)為true),如圖1(b)所示。

(a)voxel實體模型 (b)單位體素圖1 工件的三維建模Fig.1 3D modeling of the workpiece

由圖1可以看出:體素模型在計算機中可以使用一個三維數(shù)組來存儲工件模型的相關(guān)信息,數(shù)組的大小取決于體素模型的離散精度。但是體素模型需要較大的計算機內(nèi)存空間,而且仿真的精度受離散精度的影響較大。盡管體素模型存在一些缺點,但其采用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu)來存儲模型的外部及內(nèi)部數(shù)據(jù)點的信息,以一定的離散精度為范圍求得立方體作為單位,參與材料的去除與模型重構(gòu)過程,而且還可以用來表示復(fù)雜的模型結(jié)構(gòu)。尤其是對立方體工件模型以及簡單的刀路軌跡來說,采用體素建模不僅能夠提高運算速度,還能降低重構(gòu)顯示的復(fù)雜度。

2 刀具旋轉(zhuǎn)體

銑削加工中,通用刀具模型[13]如圖2所示。刀具上表面半徑

圖2 刀具通用模型Fig.2 General model of tools

式中:r為下表面半徑;rf為圓角半徑;hf為圓角與錐邊切點的高度;h為刀具的長度;γ為半錐角。

通過改變以上參數(shù),可以定義不同的刀具:

r=0,rf,hf=rf,γ=0?球頭刀

r,rf,hf=rf,γ=0?圓角刀

r,rf=0,hf=0,γ=0?平底刀

其他的刀具模型可以使用類似的方法加入到通用刀具模型中。

刀具旋轉(zhuǎn)體就是刀具在某一時刻沿主軸旋轉(zhuǎn)一周所形成的包絡(luò)面。刀具的旋轉(zhuǎn)體范圍可以根據(jù)刀具的軸線方程、母線方程、刀具長度以及刀具半徑共同確定。本文主要以平底刀為例,其旋轉(zhuǎn)體可以根據(jù)刀具模型的上、下表面和側(cè)表面共同確定,如圖3所示。

圖3 平底刀刀具旋轉(zhuǎn)體的組成Fig.3 Rotating body of flat bottom tools

對于平底刀而言,刀具半徑和刀具的上、下表面半徑相等,即刀具半徑=R(或r)。設(shè)刀具刀心點的坐標(biāo)為O2(x2,y2,z2),刀柄點坐標(biāo)為O1,刀軸單位軸向量為O2O1(i,j,k),則刀具旋轉(zhuǎn)體的上、下表面及側(cè)表面方程式如下:

(1)

在切削計算的過程中,由于毛坯離散后的數(shù)據(jù)量較大,且每次只有部分?jǐn)?shù)據(jù)與刀具旋轉(zhuǎn)體相交,如果遍歷全部的離散數(shù)據(jù)進(jìn)行切削,顯然會大大降低切削計算的效率,因此需要用一定的方法縮小遍歷的范圍。本文使用刀具包圍盒算法[14]來縮小離散數(shù)據(jù)的遍歷范圍,以提高切削計算的效率。

3 Dividing cubes算法

Dividing cubes算法[12]是W.E.Lorenson和H.E.Cline于1987年提出的,以體素為基本處理對象。Dividing cubes算法首先對每個體素進(jìn)行如下分類:

1)所有的8個頂點的值都大于等于等值面的值則為內(nèi)部體素(interior cube);

2)所有的8個頂點的值都小于等值面的值則為外部體素(exterior cube);

3)其他則為表面體素(surface cube)。

之后,將表面體素在空間上分割為與最終圖像解析度相同的子體素(sub cube)。例如,若數(shù)據(jù)集的規(guī)模為256×256×128,而最終顯示的窗口的大小為512×512,則在x、y方向上分割一次,在z方向上分割兩次。對每個子體素繼續(xù)進(jìn)行分類。對于最終得到的表面體素,計算它的中心點的坐標(biāo)及法向量,最終形成一個點集,每個點都具有法向量。

Dividing cubes算法實際上是依次掃描每一個體素,當(dāng)體素與等值面的值相交時,將該體素分割為更小的體素,直到子體素在投影平面上的投影為一個像素大小,然后把所有穿過等值面的子體素作為點投影到平面上。相較于marching cubes算法,dividing cubes算法將繪制的基本元素由三角面片變成了點,無需考慮拓?fù)浣Y(jié)構(gòu),實現(xiàn)簡單。

4 切削計算

根據(jù)dividing cubes算法對表面體素進(jìn)行分割的思想,將工件離散后的每個體素作如下區(qū)分:

1)若體素的8個頂點都在刀具旋轉(zhuǎn)體內(nèi)部,則該體素被完全切削;

2)若體素的8個頂點都不在刀具旋轉(zhuǎn)體內(nèi)部,則該體素未被切削;

3)若體素的8個頂點中,一部分在刀具旋轉(zhuǎn)體內(nèi)部,另一部分在刀具旋轉(zhuǎn)體外部,則該體素被部分切削。對于此類體素,進(jìn)行一定精度的二級離散。

考慮到內(nèi)存占用的問題,在具體實現(xiàn)的過程中,僅對表面體素進(jìn)行離散,如圖4所示。

圖4 體素的離散過程Fig.4 Discrete of voxels

在構(gòu)造數(shù)據(jù)結(jié)構(gòu)后,對基于體素模型的切削計算也作相應(yīng)改進(jìn)。改進(jìn)后的切削計算算法如下:

步驟1計算刀具包圍盒,判斷體素索引是否在刀具包圍盒范圍之內(nèi)。如果不在,轉(zhuǎn)入步驟6,否則轉(zhuǎn)入步驟2。

步驟2根據(jù)isExist的值判斷體素是否存在。如果不存在,則跳過。如果存在,則將體素的索引坐標(biāo)值key(x0,y0,z0)帶入式(1)中的Fside(x,y,z),若計算結(jié)果小于等于刀具半徑的平方,即R2,則轉(zhuǎn)入步驟3,否則轉(zhuǎn)入步驟4。

步驟3結(jié)合式(1)中刀具上表面方程Ftop(x,y,z)和下表面方程Fbase(x,y,z),分別計算key(x0,y0,z0)到刀具上表面的距離Dtop和到刀具下表面的距離Dbase。如果|h-Dtop-Dbase|<ε,則該索引在切削范圍之內(nèi),轉(zhuǎn)入步驟4,否則轉(zhuǎn)入步驟6。其中:h為刀具長度;ε為允許的誤差范圍。

步驟4對一個完整體素的8個頂點的坐標(biāo)值,依次按照步驟2、3的方法判斷其是否在切削范圍之內(nèi)。若該體素的8個頂點都在切削范圍之內(nèi),則該體素為內(nèi)部體素,被完全切削,isExist的值為false,轉(zhuǎn)入步驟6;若該體素的8個頂點都不在切削范圍內(nèi),則該體素為外部體素,未被切削,isExist的值為true,轉(zhuǎn)入步驟6;若該體素的8個頂點中,一部分在切削范圍之內(nèi),另一部分不在切削范圍之內(nèi),則該體素為表面體素,被部分切削,isExist的值為true,isPartial的值為true,轉(zhuǎn)入步驟5。

步驟5對表面體素進(jìn)行二次離散,然后對子體素的每一個體素判斷是否被切削。

步驟6對工件模型中的每個體素依次執(zhí)行步驟1至5,直至所有體素都完成切削計算,則仿真完成。

本文模型繼承了體素模型切削速度快的特點,而且由于其對表面體素進(jìn)行了進(jìn)一步的劃分和判斷,從而在一定程度上提高了仿真的精度。

5 切削面重繪

根據(jù)第4節(jié)描述,改進(jìn)體素模型的數(shù)據(jù)結(jié)構(gòu)的Java描述如圖5所示。其中:key為體素的索引值;isExist為體素是否存在的標(biāo)記;isPartial為體素是否被分割為子體素的標(biāo)記;subVoxel為存儲子體素的三維數(shù)組;N為表面體素沿坐標(biāo)軸方向被分割的次數(shù)。

圖5 改動后的體素模型的數(shù)據(jù)結(jié)構(gòu)Fig.5 Data structure of modified voxel model

在使用dividing cubes算法進(jìn)行切削面重繪時,對于未被切削的完整體素,仍需以體素為單位進(jìn)行繪制,而對于表面體素,則只需要繪制子體素的中心點即可。同時,為了能夠提高實體模型的繪制速度,必須在最大程度上避免冗余面(或點)繪制,只對實體模型的外表面和有效切削面進(jìn)行繪制,不對實體內(nèi)部的無用面進(jìn)行繪制。具體繪制算法如下:

步驟1對于任意體素voxel[i][j][k],根據(jù)體素是否存在的標(biāo)志位isExsit判斷該單元體是否存在。若體素存在,則轉(zhuǎn)入步驟2,否則轉(zhuǎn)入步驟5。

步驟2若該體素存在且不是表面體素,則轉(zhuǎn)入步驟3, 否則轉(zhuǎn)入步驟4。

步驟3根據(jù)式(2)判斷該體素是否位于工件離散模型的表面。若是則需要繪制相應(yīng)面,否則根據(jù)該單元體的索引值算出6個與其各個面相鄰的體素,voxel[i-1][j][k],voxel[i+1][j][k],voxel[i][j-1][k],voxel[i][j+1][k],voxel[i][j][k-1],voxel[i][j][k+1],依次判斷這些體素是否存在。若不存在,則根據(jù)需要繪制相應(yīng)面。例如,如果voxel[i][j][k]存在且不是位于工件離散模型的表面,而voxel[i-1][j][k]不存在,則需要繪制voxel[i][j][k]的左表面;若voxel[i+1][j][k]不存在,則需要繪制voxel[i][j][k]的右表面。同理可對上、下、前、后表面按需繪制。

(2)

步驟4若該體素是表面體素,則對子體素運用基于體素模型的切削計算進(jìn)行判斷該體素是否被切削。若該體素未被切削,則求該體素的中心點坐標(biāo),并在該坐標(biāo)位置繪制一個像素大小的點;若該體素已被切削,則無需對該體素進(jìn)行繪制。

步驟5依次執(zhí)行步驟1至4,直至所有體素繪制完成。

圖6為在初始狀態(tài)下,利用本文體素模型對工件進(jìn)行建模的效果圖。

圖6 工件建模的效果圖Fig.6 Modelling effect of the workpiece

6 實驗結(jié)果

圖7展示了在相同實驗環(huán)境下,基于體素模型和marching cubes算法的切削時間和本文算法在二級離散精度分別為2×2×2,4×4×4和5×5×5時切削時間的對比圖。

圖7 切削時間對比圖Fig.7 Comparison of cutting time

從圖7可以看出:以每1 000個刀位點的切削時間對比,基于dividing cubes算法思想的切削計算有較高的切削效率,但隨著二級離散精度的提高,切削效率隨之下降。

7 結(jié)語

本文根據(jù)dividing cubes算法的思想,對體素模型進(jìn)行了改進(jìn),并在此基礎(chǔ)上提出了對應(yīng)的切削算法。實驗證明該算法可以在保證切削精度的同時,有更高的切削效率,并且基于dividing cubes算法的切削面的重繪過程也更加簡潔。但是該算法會受到二級離散精度的影響,隨著二級離散精度的提高,切削計算量會增加,切削效率會下降,同時也需要更多的計算機內(nèi)存。因此,在實際應(yīng)用中需要根據(jù)實際情況選擇合適的二級離散精度。

猜你喜歡
體素工件刀具
汽車零部件加工智能化刀具管理研究
帶服務(wù)器的具有固定序列的平行專用機排序
帶沖突約束兩臺平行專用機排序的一個改進(jìn)算法
瘦體素決定肥瘦
點云數(shù)據(jù)的凹陷體判定算法
工業(yè)機器人視覺引導(dǎo)抓取工件的研究
兩臺等級平行機上部分處理時間已知的半在線調(diào)度?
骨骼驅(qū)動的軟體角色動畫
數(shù)控刀具管理系統(tǒng)的設(shè)計及開發(fā)研究
基于體素地形的優(yōu)化研究