朱淑梅,劉 威,朱俊俊,周 琛,孫文鑫
(蘇州科技大學(xué) 機(jī)械工程學(xué)院,蘇州 215000)
點(diǎn)云模型粗加工刀軌高效生成方法研究
朱淑梅,劉 威,朱俊俊,周 琛,孫文鑫
(蘇州科技大學(xué) 機(jī)械工程學(xué)院,蘇州 215000)
為了提高點(diǎn)云粗加工刀軌生成效率,提出一種基于柵格劃分的刀軌計(jì)算方法和基于距離法的行切刀軌連接方法,利用柵格數(shù)據(jù)量較小、組織簡便的優(yōu)點(diǎn),將點(diǎn)云劃分到柵格、再運(yùn)用分層切削法計(jì)算粗加工刀軌,避免了海量數(shù)據(jù)點(diǎn)運(yùn)算量大的問題;為減少抬刀次數(shù)、簡化刀軌連接,提出一種直接根據(jù)刀軌之間距離關(guān)系連接相鄰刀軌的算法,避免了識別、組織切削區(qū)域或構(gòu)建中間數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)了刀軌的高效連接。最后對算例生成刀軌并進(jìn)行加工仿真,驗(yàn)證了方法的可行性。
粗加工;層切法;刀軌生成;刀軌連接
目前在汽車、航空等工業(yè)領(lǐng)域中,很多時候主流CAD軟件很難滿足復(fù)雜外形的設(shè)計(jì)要求,需要使用油泥、粘土等材料制成手工模型,然后運(yùn)用逆向手段獲取實(shí)物模型外形上的海量數(shù)據(jù)點(diǎn),即點(diǎn)云模型。點(diǎn)云應(yīng)用于數(shù)控加工是逆向加工最重要的手段,粗加工可以快速地切除工件毛坯上的大部分多余材料,為精加工保留適當(dāng)?shù)募庸び嗔?,大量的加工時間消耗在粗加工過程中,因此研究出高效的點(diǎn)云粗加工刀軌生成算法,對提高粗加工質(zhì)量和效率具有重要的實(shí)際意義。
點(diǎn)云粗加工刀軌生成主要有Z-map法和多面體法。Lin[1,2]等首先提出對點(diǎn)云構(gòu)造Z-map模型,通過將點(diǎn)云投影到在XY平面上構(gòu)造的矩形網(wǎng)格,求出每個網(wǎng)格節(jié)點(diǎn)的z坐標(biāo),以此將散亂的點(diǎn)云轉(zhuǎn)換為規(guī)則的網(wǎng)格點(diǎn),再計(jì)算分層切削平面與數(shù)據(jù)點(diǎn)的交點(diǎn),獲取加工區(qū)域并生成刀位軌跡。楊建中[3]等通過構(gòu)造Z-map模型獲取切削層上的二值圖像,提出邊界追蹤算法和邊界描述樹來確定切削區(qū)域,但獲得高精度的邊界就需要提高網(wǎng)格密度。Yau[4]等引入了“面元(surfel)”的概念,將點(diǎn)云轉(zhuǎn)換為連續(xù)的曲面,根據(jù)刀具類型和尺寸生成類似于Z-map結(jié)構(gòu)的規(guī)則點(diǎn)云,進(jìn)行刀軌規(guī)劃時考慮了加工誤差的影響。李學(xué)藝[5,6]等提出用多面體模型來描述測量數(shù)據(jù)點(diǎn),基于二維等值平面圖的拓?fù)浣Y(jié)構(gòu),求出各層的有效加工區(qū)域。張偉[7]等運(yùn)用神經(jīng)網(wǎng)絡(luò)對點(diǎn)云構(gòu)建三角形網(wǎng)格并偏置獲得多面體模型,根據(jù)切削平面上二維等值平面圖的拓?fù)浣Y(jié)構(gòu)確定各切削層的有效加工區(qū)域。韓有昂[8]等提出采用移動最小二乘法將測量數(shù)據(jù)直接生成粗、精加工刀具路徑的算法。刀軌連接方面,劉爐山[9]和劉司偉[10]利用分層平面截取點(diǎn)云獲得截面點(diǎn)集,組環(huán)判斷加工區(qū)域并進(jìn)行等距規(guī)劃出刀軌。原恩桃[11]等計(jì)算出切削層上邊界輪廓獲取加工區(qū)域,構(gòu)造邊界數(shù)據(jù)結(jié)構(gòu)獲取加工區(qū)域。吳世雄[12]等利用Marching Cubes算法構(gòu)建層切網(wǎng)計(jì)算刀具路徑。盛沛頤[13]和賀顯良[14]都提出了一種基于單調(diào)鏈技術(shù)的行切刀軌生成算法,劃分出切削區(qū)域后生成刀軌并進(jìn)行相連,以減少跳刀次數(shù)。李駿[15]等將復(fù)雜型腔的加工區(qū)域劃分為若干單調(diào)子區(qū)域并在其中生成刀具軌跡,減少了抬刀次數(shù),但只適用于凸輪廓。層切法規(guī)劃行切粗加工刀軌,由于其切削效率高、刀軌規(guī)劃相對簡單,應(yīng)用十分廣泛,但通常需要獲取加工區(qū)域邊界并進(jìn)行區(qū)域的識別、組織[1~7],刀軌連接時需要構(gòu)建層切網(wǎng)、單調(diào)鏈等中間數(shù)據(jù)結(jié)構(gòu)[9~15],算法結(jié)構(gòu)復(fù)雜,當(dāng)加工區(qū)域邊界復(fù)雜、數(shù)量多時,工作量較大。
為了提高粗加工刀軌生成效率同時保證加工精度,本文提出基于柵格的刀軌計(jì)算方法和基于距離法的行切刀軌連接方法,與Z-map模型相比,柵格構(gòu)造和使用更加簡便且包含所有數(shù)據(jù)點(diǎn),將點(diǎn)云劃分到柵格再對柵格計(jì)算刀軌可大幅減少計(jì)算量,提出一種直接根據(jù)刀軌距離關(guān)系的連接方法,實(shí)現(xiàn)將一次走刀能走過的所有刀軌相連,以此降低抬刀次數(shù),無需進(jìn)行切削區(qū)域和中間數(shù)據(jù)結(jié)構(gòu)的識別、構(gòu)造,最大程度簡化中間步驟。
獲取所有數(shù)據(jù)點(diǎn)x、y、z坐標(biāo)的最大最小值xmax、ymax、zmax、xmin、ymin、zmin,以此創(chuàng)建一個與坐標(biāo)軸平行的長方體包圍盒。為了保證粗加工余量小于閾值,立方體柵格邊長mcell應(yīng)不大于余量閾值,柵格在X、Y、Z方向上的個數(shù)可由式(1)求出。為柵格構(gòu)造三維數(shù)組Cell[Xnum][Ynum][Znum],式(2)可求出任意數(shù)據(jù)點(diǎn)p(px,py,pz)所在的柵格序號,計(jì)算出所有數(shù)據(jù)點(diǎn)所在的柵格,最后獲取每個柵格所包含的數(shù)據(jù)點(diǎn)。
點(diǎn)云劃分到柵格后,構(gòu)造int型二維數(shù)組M[Xnum][Ynum]保存Z方向上非空柵格的最大序列號。設(shè)切削、行距方向分別為X、Y,對于第k個切削平面z=zk上的第i行刀軌,其y坐標(biāo)為yi=y1+(i-1)W,其中y1為首行刀軌y坐標(biāo),W(W≤2R)為行距,R為平底刀半徑,則此行刀軌計(jì)算流程如下:
1)獲取切削平面上非空柵格。由式(3)計(jì)算出切削平面所在的Z柵格序號Zk,新建BOOL型二維數(shù)組Nk[Xnum][Ynum]記錄切削平面上柵格是否包含數(shù)據(jù)點(diǎn),由式(4)完成賦值,其中
2)獲取一行刀軌切削范圍內(nèi)的柵格集合。刀具上下切削邊界的y坐標(biāo)分別為式(2)計(jì)算出對應(yīng)的柵格Y序號獲取所有的柵格,按照柵格序號XY方向上連續(xù)的關(guān)系將這些柵格劃分為互不相連的K個子集Cell1,Cell2,…,CellK。
3)對每個柵格子集計(jì)算出左右刀位點(diǎn)。以首個子集Cell1為例,如圖1所示,獲取每一行柵格中X序號最小的柵格,對序號大于Yi的柵格獲取其下頂點(diǎn),序號小于Yi的柵格獲取其上頂點(diǎn),按照式(5)對每個柵格取一個頂點(diǎn)代入式(6)計(jì)算出左刀位點(diǎn)的x坐標(biāo);同理,可獲取每一行X序號最大的柵格,按照式(7)和式(8)計(jì)算出右刀位點(diǎn)的x坐標(biāo)??蓪λ凶蛹瓿勺笥业段稽c(diǎn)的計(jì)算,并依次保存到刀位點(diǎn)鏈表CL_List中,最后分別在鏈表首尾增加邊界刀位點(diǎn)
圖1 對柵格子集Cell1計(jì)算刀位點(diǎn)示意圖
4)判斷刀位點(diǎn)是否干涉,獲取有效刀軌。對鏈表CL_List內(nèi)的刀位點(diǎn)進(jìn)行有效性判斷,逐對比較和的x坐標(biāo)大小,若如圖2所示,分別與柵格子集Cellj+1和Cellj發(fā)生干涉,這對刀位點(diǎn)無效并將其刪除。完成所有刀位點(diǎn)有效性判斷后,對剩余的所有刀位點(diǎn)依次兩兩相連,即獲得了第i行切削刀軌。
按照以上流程可計(jì)算出所有切削層上的行切刀軌。
圖2 刀位點(diǎn)干涉示意圖
上節(jié)生成的行切刀軌之間相互分離,為了減少抬刀次數(shù),需要對每個切削平面上的刀軌進(jìn)行連接。目前許多刀軌連接方法[9~15]都要提取切削平面上的切削區(qū)域環(huán)和輪廓、構(gòu)建層切網(wǎng)或構(gòu)造單調(diào)鏈來進(jìn)行刀軌連接,為了避免獲取模型的區(qū)域邊界或構(gòu)建單調(diào)鏈等中間步驟、大幅簡化算法結(jié)構(gòu),本節(jié)提出一種基于刀軌距離關(guān)系的刀軌連接方法。以第i行刀位點(diǎn)鏈表CL_List、坐標(biāo)升序搜索為例,首先對當(dāng)前刀軌通過y坐標(biāo)升序搜索下一行未連接且切削區(qū)域相連的刀軌,若下一行無滿足條件的刀軌,則轉(zhuǎn)為y坐標(biāo)降序的方式,最后將刀軌端點(diǎn)連接起來獲得一次走刀的完整刀軌。為了避免距離過大的刀軌端點(diǎn)連接發(fā)生過切,設(shè)置距離閾值dmax,dmax取值越大抬刀次數(shù)越少,但越容易發(fā)生過切,經(jīng)測試一般取4R≤dmax≤8R較為合適,算法詳細(xì)流程如下:
1)新建刀位點(diǎn)鏈表Path_List以保存一次走刀的所有刀位點(diǎn)。對所有刀軌,按y坐標(biāo)和x坐標(biāo)升序搜索刀軌,若所有刀軌都已連接,則轉(zhuǎn)到5);否則將搜索到的首個未連接刀軌記為已連接,設(shè)置當(dāng)前搜索方式為y坐標(biāo)升序,以左端點(diǎn)為初始連接端點(diǎn)并保存到鏈表Path_List中,轉(zhuǎn)到2)。
3)若相鄰行無刀軌或都為已連接的刀軌,轉(zhuǎn)到5);若相鄰行刀軌存在未連接的刀軌,將這些刀軌的首尾點(diǎn)x坐標(biāo)分別記為{xSm}、{xEm},其中m≥0;若區(qū)間[xSm,xEm]與當(dāng)前刀軌的x坐標(biāo)區(qū)間[xi,j,xi,j+1]無交集,如圖3 (a)所示,計(jì)算點(diǎn)集{xSm}和{xEm}中與搜索點(diǎn)CLi,j+1距離最近點(diǎn)和最短距離dmin。若dmin<2R,說明CLi,j+1與的切削區(qū)域有重疊,將作為待連接點(diǎn),轉(zhuǎn)到4);若dmin≥2R,則不進(jìn)行連接,轉(zhuǎn)到5);若相鄰行刀軌的x坐標(biāo)區(qū)間[xSm,xEm]與當(dāng)前刀軌區(qū)間[xi,j,xi,j+1]有k(k≥1))段交集,如圖3(b)所示,若搜索點(diǎn)為刀軌的右端點(diǎn),在中找出與搜索點(diǎn)x坐標(biāo)xi,j+1距離最近的點(diǎn)和最短距離小于等于距離閾值作為待連接點(diǎn),轉(zhuǎn)到4);若不是待連接點(diǎn),在{xSm}中找出與搜索點(diǎn)x坐標(biāo)xm,j+1距離最近的點(diǎn)和最短距離為待連接點(diǎn),轉(zhuǎn)到4),否則相鄰行無可連接點(diǎn),轉(zhuǎn)到5)。類似地,若搜索點(diǎn)為刀軌的左端點(diǎn),則以先{xSm}后{xEm}的順序按照此方式進(jìn)行搜索待連接點(diǎn)。
圖3 刀軌連接示意圖
4)待連接點(diǎn)就是需要連接的刀軌端點(diǎn),將搜索點(diǎn)標(biāo)記(Searching)移動到待連接點(diǎn)上作為連接端點(diǎn),并將其添加到鏈表Path_List中,將此段刀軌作為當(dāng)前刀軌,轉(zhuǎn)到2)。
5)若當(dāng)前搜索方式為y坐標(biāo)升序,則改為y坐標(biāo)降序并搜索出所有相鄰行刀軌,轉(zhuǎn)到2);若當(dāng)前搜索方式為y坐標(biāo)降序,則轉(zhuǎn)到6)。
6)將鏈表Path_List中保存的刀位點(diǎn)依次相連,即獲得一次走刀的完整刀軌,此次刀軌連接結(jié)束。轉(zhuǎn)到1),即可開始下一次的刀軌連接直至所有刀軌都連接,算法流程如圖4所示。
圖4 流程圖
所提出的方法已在Visual C++ 6.0和Opencascade6.2.0平臺上完成了軟件的開發(fā),為了驗(yàn)證其可行性,以圖5中的覆蓋件點(diǎn)云為例規(guī)劃粗加工刀軌。點(diǎn)云包含305,267個點(diǎn),包圍盒尺寸為315×235×70,加工參數(shù)為:刀具直徑5、行距4、切削余量閾值1、刀軌連接閾值40,單位為mm,共分為20個切削層,每層切削深度相同。圖6給出了算法求出的第1、3、9切削層上的刀軌,對所有刀軌利用Vericut軟件進(jìn)行加工仿真,效果如圖6(d)所示。
圖5 覆蓋件點(diǎn)云
圖6 加工刀軌生成與仿真
點(diǎn)云包含海量數(shù)據(jù)點(diǎn),直接對數(shù)據(jù)點(diǎn)計(jì)算粗加工刀軌計(jì)算量大,為此本文提出將點(diǎn)云劃分到柵格中、對柵格采用層切法計(jì)算行切刀軌,以此減小計(jì)算量;為了避免刀軌連接時識別、構(gòu)造切削區(qū)域和中間數(shù)據(jù)結(jié)構(gòu)這一中間過程,提出直接判斷刀軌之間距離關(guān)系進(jìn)行相鄰刀軌連接,最大程度簡化中間步驟、降低抬刀次數(shù)。本文提出的算法可實(shí)現(xiàn)點(diǎn)云粗加工刀軌高效生成,在未來的研究中,可進(jìn)一步研究抬刀、下刀距離(即空行程)最小化算法,以減少非加工刀軌距離、縮短加工時間,獲得更加高效的刀軌。
[1] Lin AC, Liu HT. Automatic generation of NC cutter path from massive data points[J].Computer Aided Design,1998,30(1):77-90.
[2] Lin AC, Lin SY.Computer-aided mold engraving: from point-data smoothing, NC machining, to accuracy checking[J].Journal of Materials Processing Technology,1999,86(3):101-114.
[3] 楊建中,王啟富,黃正東,陳剛.組合曲面的粗加工刀軌算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2006,18(2):295-301.
[4] Yau HT, Hsu CY. Generating NC tool paths from random scanned data using point-based models[J].The International Journal of Advanced Manufacturing Technology,2009,41(9-10):897-907.
[5] 李學(xué)藝,姜虹,王小椿,李潤方.雕塑曲面數(shù)控粗加工刀位規(guī)劃[J].西安交通大學(xué)學(xué)報(bào),2003,37(11):1175-1178.
[6] 李學(xué)藝,王小椿,陳松,李潤方.離散數(shù)據(jù)復(fù)雜曲面的粗加工[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2003,15(3):338-342.
[7] 張偉,盧錫龍.基于散亂數(shù)據(jù)的粗加工刀具路徑生成[J].機(jī)械設(shè)計(jì)與研究,2014,30(1):85-88.
[8] 韓有昂,張英杰.基于移動最小二乘法測量數(shù)據(jù)的數(shù)控刀軌生成[J].計(jì)算機(jī)集成制造系統(tǒng),2011,17(3):638-642.
【】【】
[9] 劉爐山.基于數(shù)字化樣件的虛擬測量及數(shù)據(jù)處理技術(shù)[D].南京:南京航空航天大學(xué),2003.
[10] 劉司偉,張麗艷.基于散亂測量數(shù)據(jù)點(diǎn)的三軸數(shù)控粗加工刀位軌跡生成算法[J].機(jī)械設(shè)計(jì)與研究,2004,(3):6-10.
[11] 原恩桃,邵兵,張曉峰.細(xì)分曲面粗加工刀軌生成算法[J].機(jī)械設(shè)計(jì)與制造,2013,(4):144-146.
[12] 吳世雄,王文,陳子辰.測點(diǎn)數(shù)據(jù)生成刀具路徑研究[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2005,17(8):1704-1709.
[13] 盛沛頤,陳鋼,張新訪.基于單調(diào)鏈的平面型腔行切加工軌跡生成算法[J].華中科技大學(xué)學(xué)報(bào),2002,30(4):10-12.
[14] 賀顯良,謝明紅.基于單調(diào)鏈的行切刀具路徑生成算法[J].計(jì)算機(jī)輔助工程,2008,17(1):52-55.
[15] 李駿,樊留群,趙建華,陳閣,胡立文.基于區(qū)域劃分的刀軌生成算法的研究[J].組合機(jī)床與自動化加工技術(shù),2014,(5):123-126.
Research on efficient tool path generation method of rough machining point cloud
ZHU Shu-mei, LIU Wei, ZHU Jun-jun, ZHOU Chen, SUN Wen-xin
TP391.73
:A
1009-0134(2017)07-0032-04
2017-05-16
江蘇省高校自然科學(xué)研究面上項(xiàng)目(14KJB460027),蘇州科技大學(xué)科研基金(青年項(xiàng)目),江蘇省大學(xué)生創(chuàng)新重點(diǎn)項(xiàng)目(2017103320092),蘇州科技大學(xué)大學(xué)生創(chuàng)新項(xiàng)目
朱淑梅(1985 -),女,江蘇興化人,本科,研究方向?yàn)镃AD/CAM和數(shù)控加工。