高志華 李彥奎
(①河南工業(yè)職業(yè)技術(shù)學(xué)院機(jī)械工程學(xué)院,河南 南陽(yáng) 473009;②江南大學(xué)機(jī)械工程學(xué)院,江蘇 無(wú)錫 214122)
隨著社會(huì)需求的多樣化,新產(chǎn)品開發(fā)速度已成為提高企業(yè)競(jìng)爭(zhēng)力的關(guān)鍵因素。傳統(tǒng)的正向設(shè)計(jì)產(chǎn)品開發(fā)周期長(zhǎng),很難滿足客戶需求多樣化的快速響應(yīng);而逆向設(shè)計(jì)思維在新產(chǎn)品快速創(chuàng)新設(shè)計(jì)開發(fā)中發(fā)揮了很大作用,成為很多企業(yè)吸收高新技術(shù)再創(chuàng)新,提高市場(chǎng)競(jìng)爭(zhēng)力的制勝法寶[1]。
航空葉片作為航空發(fā)動(dòng)機(jī)的關(guān)鍵部件,被喻為發(fā)動(dòng)機(jī)的“心臟”,80%的航空葉片是通過(guò)精密鍛造技術(shù)獲得的。航空葉片的種類繁多,形狀復(fù)雜,葉片型面多為復(fù)雜的空間自由曲面,葉身一般帶有一定的扭角且要求表面精度較高[2]。為獲得合格的航空葉片,高精度航空葉片精鍛模具設(shè)計(jì)變的十分重要。但航空葉片精鍛模具設(shè)計(jì)技術(shù)一直被少數(shù)歐美國(guó)家所壟斷。為提高我國(guó)航空葉片精鍛模具設(shè)計(jì)技術(shù),逆向設(shè)計(jì)思維為其提供了一種思路[3]。
航空葉片精鍛模具型腔曲面點(diǎn)云數(shù)據(jù)的預(yù)處理是獲得高精度葉片精鍛模具型腔曲面的前提。目前,我國(guó)依賴逆向軟件(如Geomagic、Imageware等)對(duì)葉片模具點(diǎn)云數(shù)據(jù)進(jìn)行處理。由于航空葉片精度要求較高,且葉片不同位置的精度要求相差很大[4],如葉身輪廓度誤差在0.02 mm以內(nèi),而葉根輪廓度誤差在0.2 mm以內(nèi),所以對(duì)葉片精鍛模具型腔曲面不同位置的點(diǎn)云數(shù)據(jù)的去噪、精簡(jiǎn)和數(shù)據(jù)保留的要求不同,運(yùn)用逆向軟件對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行統(tǒng)一處理會(huì)造成點(diǎn)數(shù)據(jù)的冗余或丟失,導(dǎo)致點(diǎn)云數(shù)據(jù)處理的質(zhì)量下降,限制了后續(xù)一次曲面建模的質(zhì)量[5]。
文章以UG為點(diǎn)云數(shù)據(jù)處理平臺(tái),C++作為開發(fā)語(yǔ)言,通過(guò)使用自定義數(shù)據(jù)處理算法和UG二次開發(fā)程序驅(qū)動(dòng)UG,在UG中實(shí)現(xiàn)了對(duì)點(diǎn)云數(shù)據(jù)的分塊化處理,提高了點(diǎn)云數(shù)據(jù)處理的靈活性,為提高后續(xù)曲線曲面的關(guān)聯(lián)性建模和模型的修正提供了基礎(chǔ)。由于點(diǎn)云數(shù)據(jù)處、曲線曲面建模及模型的檢測(cè)與修正都集成在UG中,提高了航空葉片精鍛模具逆向設(shè)計(jì)的智能化,縮短了產(chǎn)品開發(fā)周期。
逆向工程第一步是數(shù)據(jù)點(diǎn)的獲取,數(shù)據(jù)點(diǎn)的質(zhì)量直接影響了后續(xù)曲面和實(shí)體建模的質(zhì)量,若獲取的數(shù)據(jù)點(diǎn)誤差較大,會(huì)導(dǎo)致最終獲得模型與原有模型誤差很大。因此數(shù)據(jù)點(diǎn)獲取是整個(gè)逆向設(shè)計(jì)的基礎(chǔ)和關(guān)鍵[6]。根據(jù)對(duì)被測(cè)物體掃描排列形式的不同,點(diǎn)云數(shù)據(jù)一般分為4種[7]:
掃描線點(diǎn)云:獲得的點(diǎn)云數(shù)據(jù)基本位于同一個(gè)等截面線上,該點(diǎn)云數(shù)據(jù)可認(rèn)為是基本有序,如圖1a所示。
陣列式點(diǎn)云:獲得的點(diǎn)云數(shù)據(jù)呈行呈列,屬于有序的點(diǎn)云數(shù)據(jù),如圖1b所示。
三角網(wǎng)格點(diǎn)云:點(diǎn)云數(shù)據(jù)為網(wǎng)格狀相連,屬于有序的點(diǎn)云數(shù)據(jù),如圖1c所示。
散亂點(diǎn)云:獲得的點(diǎn)云數(shù)據(jù)為無(wú)次序、無(wú)組織的完全散亂狀態(tài),如圖1d所示。
文章以B207(公司自命名)葉片模具背弧為例。為獲得較為完整的高精度點(diǎn)云數(shù)據(jù),我們提出了三種方案:
方案一:采用接觸式掃描法。由于要求獲得的點(diǎn)云數(shù)目眾多,該方案效率極低,并且對(duì)操作者的經(jīng)驗(yàn)提出了更高的要求。
方案二:采用帶有CAD模型的激光掃描方法獲取點(diǎn)云數(shù)據(jù)。首先在已有的葉片模具模型上沿X和Y方向等間距截取型腔曲面的截面線,將其導(dǎo)入三坐標(biāo)測(cè)量?jī)x,沿所得的截面線進(jìn)行掃描。方案實(shí)施后,發(fā)現(xiàn)三坐標(biāo)測(cè)量?jī)x對(duì)導(dǎo)入的截面線的編程要花費(fèi)大量的時(shí)間,并且在葉根轉(zhuǎn)接處獲取的點(diǎn)云數(shù)據(jù)不完整,影響了后續(xù)的曲線、曲面建模。
方案三:直接將原有的葉片精鍛模具CAD模型導(dǎo)入三坐標(biāo)測(cè)量?jī)x中,使用Nextec WIZblade激光掃描設(shè)備自身獲取曲面u、v曲線的功能,設(shè)定u、v方向的間距,把葉片模具型腔曲面離散成u、v曲線,Nextec WIZblade激光掃描設(shè)備將沿離散u、v曲線進(jìn)行掃描。經(jīng)工程實(shí)際驗(yàn)證,該方案的可行性最好。圖2為葉片模具背弧點(diǎn)云數(shù)據(jù)。
在采集實(shí)體數(shù)據(jù)點(diǎn)的過(guò)程中,由于測(cè)量設(shè)備本身的誤差、被測(cè)物體反射面相關(guān)的誤差和外部環(huán)境所造成的誤差等,導(dǎo)致了大量離散點(diǎn)的存在。為了獲得高質(zhì)量的曲面,對(duì)獲得的點(diǎn)云數(shù)據(jù)進(jìn)行處理是必不可少的。點(diǎn)云數(shù)據(jù)處理一般包括:噪音點(diǎn)的去除、點(diǎn)云數(shù)據(jù)的拼合、平滑和精簡(jiǎn)等[8],如圖3所示。
異常點(diǎn)的處理主要是對(duì)誤差粗大點(diǎn)和噪音點(diǎn)的處理。針對(duì)掃描線式點(diǎn)云,去除誤差點(diǎn)的方法一般包括:直觀檢查法、曲線檢查法和弦高誤差法[9]:
直觀檢查法:用肉眼在圖形窗口中直接將誤差較大的點(diǎn)剔除掉,這種方法適用于點(diǎn)云數(shù)據(jù)的初步檢查。
曲線檢查法:使用點(diǎn)云通過(guò)最小二乘法擬合成一條曲線,然后分別計(jì)算各數(shù)據(jù)點(diǎn)到曲線的距離,根據(jù)給定的允許誤差,判斷該點(diǎn)是否為誤差點(diǎn)。
弦高差方法:連接被檢查點(diǎn)的前后兩點(diǎn),計(jì)算被檢查點(diǎn)到連接線的弦高差,根據(jù)給定的允許誤差,判斷該點(diǎn)是否為誤差點(diǎn)。程序如下:
for (i=0;i<截面數(shù);i++)
{sprintf(filename,"數(shù)據(jù)文件地址",i);
fp=fopen(filename,"r");//依次打開數(shù)據(jù)文件
if(fp!=NULL)
{while(!feof(fp))//讀取數(shù)據(jù)文件
{fscanf(fp,"%lf %lf %lf", &point[0], &point[1], &point[2]);
UF_CURVE_create_point(point, &t_pnt);
}
for (j=0; j<點(diǎn)的數(shù)目;j++)
{ ……;//弦高差法或曲線檢查法去除異常點(diǎn);}
}
else
uc1601("Cannot open the file!", 1);
fclose(fp);
}
濾波算法不僅能對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行濾波、平滑,而且在一定程度上也能實(shí)現(xiàn)噪音點(diǎn)的去除。對(duì)于掃描線式點(diǎn)云,常用的平滑濾波算法包括:高斯濾波、中值濾波和平均濾波3種[10]。
高斯濾波:在選定的域內(nèi),點(diǎn)云數(shù)據(jù)的權(quán)重呈高斯分布,它的平均效果相對(duì)較小,因此在濾波時(shí)能較好地保持原始點(diǎn)云數(shù)據(jù)。該算法一般用于點(diǎn)云數(shù)據(jù)模型較為平滑、曲率較小的區(qū)域,如葉片模具的葉身區(qū)域。
中值濾波:采樣數(shù)據(jù)點(diǎn)的值為采樣點(diǎn)各數(shù)據(jù)的中值,這種濾波算法去除數(shù)據(jù)毛刺效果很好。一般用于曲率變化大、容易產(chǎn)生噪音點(diǎn)且精度要求不是非常高的區(qū)域,如葉片模具的葉根部。
平均濾波:采樣數(shù)據(jù)點(diǎn)的值為采樣點(diǎn)各數(shù)據(jù)的統(tǒng)計(jì)平均值,濾波角平均。3種算法濾波效果如圖4所示。
在使用上述算法時(shí),為保證點(diǎn)云的質(zhì)量和后續(xù)建模的精度,根據(jù)各算法的特點(diǎn),結(jié)合工程實(shí)際要求,靈活的選擇濾波算法,避免點(diǎn)云數(shù)據(jù)的冗雜或丟失。根據(jù)圖像點(diǎn)云去噪思想,對(duì)葉片模具型腔曲面的點(diǎn)云數(shù)據(jù)進(jìn)行二次處理。首先選擇一個(gè)合適的視角,使異常點(diǎn)在視平面上較為明顯,然后把點(diǎn)云投影到該平面,獲得投影圖像,再利用圖像濾波算法去除異常點(diǎn),最后得出投影點(diǎn)所對(duì)應(yīng)的三維點(diǎn)云。若該點(diǎn)云一次處理效果不理想,則可以變換視角再次進(jìn)行處理,通過(guò)幾次視角變換可以很好的實(shí)現(xiàn)對(duì)點(diǎn)云數(shù)據(jù)的去噪和平滑濾波。文章利用高斯濾波和中值濾波算法分別對(duì)葉片模具葉身和葉根處進(jìn)行二次濾波、平滑處理。程序如下:
/*高斯濾波算法*/
int main( int argc, char * argv )
{ Mat image;
image = imread( argv[1]);
if( argc != 2 || !image.data )
{ printf("無(wú)圖片 ");
return-1;
}
namedWindow( "平滑處理----輸入" );
namedWindow( "平滑處理----輸出" );
imshow( "平滑處理----輸入", image );
Mat out;
……;//OpenGL高斯濾波算法
imshow( "平滑處理---輸出", out );
waitKey( 0 );
}
/*中值濾波算法*/
int main( int argc, char * argv )
{ Mat image;
image = imread( argv[1]);
if( argc != 2 || !image.data )
{ printf("無(wú)圖片 ");
return-1;
}
namedWindow("平滑處理---輸入");
namedWindow( "平滑處理---輸出" );
imshow( "平滑處理---輸入", image );
Mat out;
……;//OpenGL中值濾波算法
imshow( "平滑處理---輸出", out );
waitKey( 0 );
}
隨著技術(shù)的發(fā)展,激光掃描數(shù)據(jù)捕捉速度和精度越來(lái)越高,短時(shí)間就能獲得巨大的數(shù)據(jù)量,但并不是獲取的所有點(diǎn)云數(shù)據(jù)對(duì)后續(xù)曲面建模都是有用的,冗余的點(diǎn)云數(shù)據(jù)如果參與后續(xù)建模,會(huì)使計(jì)算機(jī)運(yùn)行的速度減慢,并且點(diǎn)越多,對(duì)于后續(xù)建模的特征部位越難尋找,產(chǎn)生誤判,影響建模精度。
衡量點(diǎn)云數(shù)據(jù)精簡(jiǎn)的成功度,不是保留原始點(diǎn)數(shù)據(jù)越多越好,也不是精簡(jiǎn)后的點(diǎn)云數(shù)據(jù)越少越好,而是能夠用最少的點(diǎn)云數(shù)據(jù)盡可能多地表示原始的模型信息,提高后續(xù)的建模精度和效率[11]。因此在保留被測(cè)物體幾何尺寸特征的情況下,根據(jù)被測(cè)物體特征輪廓精度要求,對(duì)被測(cè)物體獲得的點(diǎn)云數(shù)據(jù)進(jìn)行精簡(jiǎn)。由于葉片模具不同區(qū)域精度要求不同,因此要對(duì)葉片模具不同部位進(jìn)行分別處理,以便提高計(jì)算機(jī)運(yùn)行速度和逆向建模的效率和精度。
針對(duì)掃描線式點(diǎn)云數(shù)據(jù)精簡(jiǎn)方法有:等間距縮減、等量縮減、倍率縮減、弦偏差等方法[12]。常用的是弦偏差精簡(jiǎn)法。該方法是通過(guò)設(shè)定角度誤差限Δ?和弦高誤差限Δh,綜合考慮這兩種誤差實(shí)現(xiàn)對(duì)點(diǎn)云數(shù)據(jù)的處理,如圖5所示。Δ?是根據(jù)逆向精度來(lái)選取,取值越小,精度越高;Δh是根據(jù)相鄰數(shù)據(jù)點(diǎn)間距離的正態(tài)分布的μ值來(lái)確定的。設(shè)簡(jiǎn)化前點(diǎn)的數(shù)量為N0,預(yù)期簡(jiǎn)化點(diǎn)數(shù)量為N1,則按下式計(jì)算μ:
數(shù)據(jù)精簡(jiǎn)流程如圖6所示。經(jīng)過(guò)點(diǎn)云數(shù)據(jù)去噪、光順濾波和精簡(jiǎn),得到處理前后的局部點(diǎn)云數(shù)據(jù)如圖7所示。
利用UG/Open API MenuScript實(shí)現(xiàn)點(diǎn)云數(shù)據(jù)處理菜單的創(chuàng)建。具體步驟如下:
Step1:在Project文件夾下建立Application和Startup兩個(gè)文件夾,在這兩個(gè)文件夾中存放如圖8所示的文件。
Step2:在菜單腳本文件(.men)中編寫菜單文件信息。
Step3:在UG安裝目錄X:安裝文件夾UGIImenuscustom_dirs.dat文件中添加路徑。經(jīng)以上步聚,在UG環(huán)境下新增的菜單如圖9所示。
對(duì)使用兩種不同方法處理的點(diǎn)云數(shù)據(jù)進(jìn)行建模,取一次建模實(shí)體的相同截面進(jìn)行誤差檢測(cè),其誤差如圖10所示。通過(guò)其誤差對(duì)比分析,得出:使用自定義算法對(duì)航空葉片精鍛模具型腔曲面點(diǎn)云數(shù)據(jù)分塊處理的精度較高。
(1)以VS2010為語(yǔ)言開發(fā)平臺(tái),通過(guò)運(yùn)用自定義算法和VS2010與OpenGL自身函數(shù)庫(kù),用程序?qū)崿F(xiàn)了對(duì)航空葉片精鍛模具點(diǎn)云數(shù)據(jù)進(jìn)行分塊化處理,通過(guò)工程實(shí)例驗(yàn)證了該方法的靈活性、適應(yīng)性好,一次建模質(zhì)量高。
(2)以UG作為葉片模具點(diǎn)云處理平臺(tái),實(shí)現(xiàn)了點(diǎn)
云數(shù)據(jù)處理和曲線曲面建模在UG中的集成,提高了后續(xù)各要素間關(guān)聯(lián)性建模和對(duì)一次曲面修正的智能化,縮短了產(chǎn)品開發(fā)周期。
[1]Colin Bradley.The application of reverse engineering in rapid product development[J].Sensor Review,1998,18(2):115-120.
[2]王浩,王立文,王濤,等.航空發(fā)動(dòng)機(jī)損傷葉片再制造修復(fù)方法與實(shí)現(xiàn)[J].航空學(xué)報(bào),2016,37(3):1036-1048.
[3]Yun Zhang, ZhiTong Chen,Tao Ning.Reverse modeling strategy of aero-engine blade based on design intent[J].The Intern-ational Journal of Advanced Manufacturing Technology,2015,81(9-12):1781-1796.
[4]宋玉旺,胡畢富,席平.航空發(fā)動(dòng)機(jī)葉片CAD技術(shù)綜述[J].航空制造技術(shù),2009(17):52-56.
[5]劉韶光,武鵬,劉學(xué)杰,等.逆向設(shè)計(jì)技術(shù)在渦輪葉片建模中的應(yīng)用研究[J].航空制造術(shù),2015(12):85-87.
[6]Tamás Váradyc,Ralph R Martina,Jordan Coxb.Reverse engineering of geometric models-an introduction[J]. Computer-Aided Design,1997,29(4):255-268.
[7]戴靜蘭.海量點(diǎn)云預(yù)處理算法研究[D].杭州:浙江大學(xué),2006.
[8]Ming Chih Huang,Ching Chih Tai.The pre-processing of data points for curve fitting in reverse engineering[J].International Journal of Advanced Manufacturing Technology,2000,16(9):635-642.
[9]Peter van Oosteroma,Oscar Martinez-Rubib,Milena Ivanovab,et al.Massive point cloud data management: Design, implement-ation and execution of a point cloud benchmark [J]. Computers and Graphics,2015,49:92-125.
[10]李原,張開富,余劍峰.計(jì)算機(jī)輔助幾何設(shè)計(jì)技術(shù)及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2009.
[11]K H Lee, H Woo, T Suk.Data reduction methods for reverse engineering[J].International Journal of Advanced Manufacturing Technology,2001,17(10): 735-743.
[12]周綠,林亨,周約先,等.曲面重構(gòu)中測(cè)量點(diǎn)云精簡(jiǎn)方法的研究[J].中國(guó)制造業(yè)信化,2004,33(5):102-104.