高志華 李彥奎
(①河南工業(yè)職業(yè)技術(shù)學院機械工程學院,河南 南陽 473009;②江南大學機械工程學院,江蘇 無錫 214122)
隨著社會需求的多樣化,新產(chǎn)品開發(fā)速度已成為提高企業(yè)競爭力的關(guān)鍵因素。傳統(tǒng)的正向設(shè)計產(chǎn)品開發(fā)周期長,很難滿足客戶需求多樣化的快速響應(yīng);而逆向設(shè)計思維在新產(chǎn)品快速創(chuàng)新設(shè)計開發(fā)中發(fā)揮了很大作用,成為很多企業(yè)吸收高新技術(shù)再創(chuàng)新,提高市場競爭力的制勝法寶[1]。
航空葉片作為航空發(fā)動機的關(guān)鍵部件,被喻為發(fā)動機的“心臟”,80%的航空葉片是通過精密鍛造技術(shù)獲得的。航空葉片的種類繁多,形狀復(fù)雜,葉片型面多為復(fù)雜的空間自由曲面,葉身一般帶有一定的扭角且要求表面精度較高[2]。為獲得合格的航空葉片,高精度航空葉片精鍛模具設(shè)計變的十分重要。但航空葉片精鍛模具設(shè)計技術(shù)一直被少數(shù)歐美國家所壟斷。為提高我國航空葉片精鍛模具設(shè)計技術(shù),逆向設(shè)計思維為其提供了一種思路[3]。
航空葉片精鍛模具型腔曲面點云數(shù)據(jù)的預(yù)處理是獲得高精度葉片精鍛模具型腔曲面的前提。目前,我國依賴逆向軟件(如Geomagic、Imageware等)對葉片模具點云數(shù)據(jù)進行處理。由于航空葉片精度要求較高,且葉片不同位置的精度要求相差很大[4],如葉身輪廓度誤差在0.02 mm以內(nèi),而葉根輪廓度誤差在0.2 mm以內(nèi),所以對葉片精鍛模具型腔曲面不同位置的點云數(shù)據(jù)的去噪、精簡和數(shù)據(jù)保留的要求不同,運用逆向軟件對點云數(shù)據(jù)進行統(tǒng)一處理會造成點數(shù)據(jù)的冗余或丟失,導(dǎo)致點云數(shù)據(jù)處理的質(zhì)量下降,限制了后續(xù)一次曲面建模的質(zhì)量[5]。
文章以UG為點云數(shù)據(jù)處理平臺,C++作為開發(fā)語言,通過使用自定義數(shù)據(jù)處理算法和UG二次開發(fā)程序驅(qū)動UG,在UG中實現(xiàn)了對點云數(shù)據(jù)的分塊化處理,提高了點云數(shù)據(jù)處理的靈活性,為提高后續(xù)曲線曲面的關(guān)聯(lián)性建模和模型的修正提供了基礎(chǔ)。由于點云數(shù)據(jù)處、曲線曲面建模及模型的檢測與修正都集成在UG中,提高了航空葉片精鍛模具逆向設(shè)計的智能化,縮短了產(chǎn)品開發(fā)周期。
逆向工程第一步是數(shù)據(jù)點的獲取,數(shù)據(jù)點的質(zhì)量直接影響了后續(xù)曲面和實體建模的質(zhì)量,若獲取的數(shù)據(jù)點誤差較大,會導(dǎo)致最終獲得模型與原有模型誤差很大。因此數(shù)據(jù)點獲取是整個逆向設(shè)計的基礎(chǔ)和關(guān)鍵[6]。根據(jù)對被測物體掃描排列形式的不同,點云數(shù)據(jù)一般分為4種[7]:
掃描線點云:獲得的點云數(shù)據(jù)基本位于同一個等截面線上,該點云數(shù)據(jù)可認為是基本有序,如圖1a所示。
陣列式點云:獲得的點云數(shù)據(jù)呈行呈列,屬于有序的點云數(shù)據(jù),如圖1b所示。
三角網(wǎng)格點云:點云數(shù)據(jù)為網(wǎng)格狀相連,屬于有序的點云數(shù)據(jù),如圖1c所示。
散亂點云:獲得的點云數(shù)據(jù)為無次序、無組織的完全散亂狀態(tài),如圖1d所示。
文章以B207(公司自命名)葉片模具背弧為例。為獲得較為完整的高精度點云數(shù)據(jù),我們提出了三種方案:
方案一:采用接觸式掃描法。由于要求獲得的點云數(shù)目眾多,該方案效率極低,并且對操作者的經(jīng)驗提出了更高的要求。
方案二:采用帶有CAD模型的激光掃描方法獲取點云數(shù)據(jù)。首先在已有的葉片模具模型上沿X和Y方向等間距截取型腔曲面的截面線,將其導(dǎo)入三坐標測量儀,沿所得的截面線進行掃描。方案實施后,發(fā)現(xiàn)三坐標測量儀對導(dǎo)入的截面線的編程要花費大量的時間,并且在葉根轉(zhuǎn)接處獲取的點云數(shù)據(jù)不完整,影響了后續(xù)的曲線、曲面建模。
方案三:直接將原有的葉片精鍛模具CAD模型導(dǎo)入三坐標測量儀中,使用Nextec WIZblade激光掃描設(shè)備自身獲取曲面u、v曲線的功能,設(shè)定u、v方向的間距,把葉片模具型腔曲面離散成u、v曲線,Nextec WIZblade激光掃描設(shè)備將沿離散u、v曲線進行掃描。經(jīng)工程實際驗證,該方案的可行性最好。圖2為葉片模具背弧點云數(shù)據(jù)。
在采集實體數(shù)據(jù)點的過程中,由于測量設(shè)備本身的誤差、被測物體反射面相關(guān)的誤差和外部環(huán)境所造成的誤差等,導(dǎo)致了大量離散點的存在。為了獲得高質(zhì)量的曲面,對獲得的點云數(shù)據(jù)進行處理是必不可少的。點云數(shù)據(jù)處理一般包括:噪音點的去除、點云數(shù)據(jù)的拼合、平滑和精簡等[8],如圖3所示。
異常點的處理主要是對誤差粗大點和噪音點的處理。針對掃描線式點云,去除誤差點的方法一般包括:直觀檢查法、曲線檢查法和弦高誤差法[9]:
直觀檢查法:用肉眼在圖形窗口中直接將誤差較大的點剔除掉,這種方法適用于點云數(shù)據(jù)的初步檢查。
曲線檢查法:使用點云通過最小二乘法擬合成一條曲線,然后分別計算各數(shù)據(jù)點到曲線的距離,根據(jù)給定的允許誤差,判斷該點是否為誤差點。
弦高差方法:連接被檢查點的前后兩點,計算被檢查點到連接線的弦高差,根據(jù)給定的允許誤差,判斷該點是否為誤差點。程序如下:
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<點的數(shù)目;j++)
{ ……;//弦高差法或曲線檢查法去除異常點;}
}
else
uc1601("Cannot open the file!", 1);
fclose(fp);
}
濾波算法不僅能對點云數(shù)據(jù)進行濾波、平滑,而且在一定程度上也能實現(xiàn)噪音點的去除。對于掃描線式點云,常用的平滑濾波算法包括:高斯濾波、中值濾波和平均濾波3種[10]。
高斯濾波:在選定的域內(nèi),點云數(shù)據(jù)的權(quán)重呈高斯分布,它的平均效果相對較小,因此在濾波時能較好地保持原始點云數(shù)據(jù)。該算法一般用于點云數(shù)據(jù)模型較為平滑、曲率較小的區(qū)域,如葉片模具的葉身區(qū)域。
中值濾波:采樣數(shù)據(jù)點的值為采樣點各數(shù)據(jù)的中值,這種濾波算法去除數(shù)據(jù)毛刺效果很好。一般用于曲率變化大、容易產(chǎn)生噪音點且精度要求不是非常高的區(qū)域,如葉片模具的葉根部。
平均濾波:采樣數(shù)據(jù)點的值為采樣點各數(shù)據(jù)的統(tǒng)計平均值,濾波角平均。3種算法濾波效果如圖4所示。
在使用上述算法時,為保證點云的質(zhì)量和后續(xù)建模的精度,根據(jù)各算法的特點,結(jié)合工程實際要求,靈活的選擇濾波算法,避免點云數(shù)據(jù)的冗雜或丟失。根據(jù)圖像點云去噪思想,對葉片模具型腔曲面的點云數(shù)據(jù)進行二次處理。首先選擇一個合適的視角,使異常點在視平面上較為明顯,然后把點云投影到該平面,獲得投影圖像,再利用圖像濾波算法去除異常點,最后得出投影點所對應(yīng)的三維點云。若該點云一次處理效果不理想,則可以變換視角再次進行處理,通過幾次視角變換可以很好的實現(xiàn)對點云數(shù)據(jù)的去噪和平滑濾波。文章利用高斯濾波和中值濾波算法分別對葉片模具葉身和葉根處進行二次濾波、平滑處理。程序如下:
/*高斯濾波算法*/
int main( int argc, char * argv )
{ Mat image;
image = imread( argv[1]);
if( argc != 2 || !image.data )
{ printf("無圖片 ");
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("無圖片 ");
return-1;
}
namedWindow("平滑處理---輸入");
namedWindow( "平滑處理---輸出" );
imshow( "平滑處理---輸入", image );
Mat out;
……;//OpenGL中值濾波算法
imshow( "平滑處理---輸出", out );
waitKey( 0 );
}
隨著技術(shù)的發(fā)展,激光掃描數(shù)據(jù)捕捉速度和精度越來越高,短時間就能獲得巨大的數(shù)據(jù)量,但并不是獲取的所有點云數(shù)據(jù)對后續(xù)曲面建模都是有用的,冗余的點云數(shù)據(jù)如果參與后續(xù)建模,會使計算機運行的速度減慢,并且點越多,對于后續(xù)建模的特征部位越難尋找,產(chǎn)生誤判,影響建模精度。
衡量點云數(shù)據(jù)精簡的成功度,不是保留原始點數(shù)據(jù)越多越好,也不是精簡后的點云數(shù)據(jù)越少越好,而是能夠用最少的點云數(shù)據(jù)盡可能多地表示原始的模型信息,提高后續(xù)的建模精度和效率[11]。因此在保留被測物體幾何尺寸特征的情況下,根據(jù)被測物體特征輪廓精度要求,對被測物體獲得的點云數(shù)據(jù)進行精簡。由于葉片模具不同區(qū)域精度要求不同,因此要對葉片模具不同部位進行分別處理,以便提高計算機運行速度和逆向建模的效率和精度。
針對掃描線式點云數(shù)據(jù)精簡方法有:等間距縮減、等量縮減、倍率縮減、弦偏差等方法[12]。常用的是弦偏差精簡法。該方法是通過設(shè)定角度誤差限Δ?和弦高誤差限Δh,綜合考慮這兩種誤差實現(xiàn)對點云數(shù)據(jù)的處理,如圖5所示。Δ?是根據(jù)逆向精度來選取,取值越小,精度越高;Δh是根據(jù)相鄰數(shù)據(jù)點間距離的正態(tài)分布的μ值來確定的。設(shè)簡化前點的數(shù)量為N0,預(yù)期簡化點數(shù)量為N1,則按下式計算μ:
數(shù)據(jù)精簡流程如圖6所示。經(jīng)過點云數(shù)據(jù)去噪、光順濾波和精簡,得到處理前后的局部點云數(shù)據(jù)如圖7所示。
利用UG/Open API MenuScript實現(xiàn)點云數(shù)據(jù)處理菜單的創(chuàng)建。具體步驟如下:
Step1:在Project文件夾下建立Application和Startup兩個文件夾,在這兩個文件夾中存放如圖8所示的文件。
Step2:在菜單腳本文件(.men)中編寫菜單文件信息。
Step3:在UG安裝目錄X:安裝文件夾UGIImenuscustom_dirs.dat文件中添加路徑。經(jīng)以上步聚,在UG環(huán)境下新增的菜單如圖9所示。
對使用兩種不同方法處理的點云數(shù)據(jù)進行建模,取一次建模實體的相同截面進行誤差檢測,其誤差如圖10所示。通過其誤差對比分析,得出:使用自定義算法對航空葉片精鍛模具型腔曲面點云數(shù)據(jù)分塊處理的精度較高。
(1)以VS2010為語言開發(fā)平臺,通過運用自定義算法和VS2010與OpenGL自身函數(shù)庫,用程序?qū)崿F(xiàn)了對航空葉片精鍛模具點云數(shù)據(jù)進行分塊化處理,通過工程實例驗證了該方法的靈活性、適應(yīng)性好,一次建模質(zhì)量高。
(2)以UG作為葉片模具點云處理平臺,實現(xiàn)了點
云數(shù)據(jù)處理和曲線曲面建模在UG中的集成,提高了后續(xù)各要素間關(guān)聯(lián)性建模和對一次曲面修正的智能化,縮短了產(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ā)動機損傷葉片再制造修復(fù)方法與實現(xiàn)[J].航空學報,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ā)動機葉片CAD技術(shù)綜述[J].航空制造技術(shù),2009(17):52-56.
[5]劉韶光,武鵬,劉學杰,等.逆向設(shè)計技術(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]戴靜蘭.海量點云預(yù)處理算法研究[D].杭州:浙江大學,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]李原,張開富,余劍峰.計算機輔助幾何設(shè)計技術(shù)及應(yīng)用[M].北京:機械工業(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)中測量點云精簡方法的研究[J].中國制造業(yè)信化,2004,33(5):102-104.