宋義知,何 利,郝 博
(1.沈陽理工大學 機械工程學院, 遼寧 沈陽 110159;2.遼寧機電職業(yè)技術(shù)學院, 遼寧 丹東 118009)
?
基于STL數(shù)據(jù)處理的鈑金檢驗特征識別
宋義知1,何利1,郝博2
(1.沈陽理工大學 機械工程學院, 遼寧 沈陽 110159;2.遼寧機電職業(yè)技術(shù)學院, 遼寧 丹東 118009)
摘要:針對CATIA對航空鈑金零件的設(shè)計數(shù)模,應(yīng)用CATIA二次開發(fā)工具,直接提取鈑金零件的STL點云數(shù)據(jù).基于CATIA平臺,采用VC(++)6.0工具和CATIA的API函數(shù),對提取的STL點云建立拓撲關(guān)系.基于高斯曲率進行曲面特征識別,提取鈑金件的特征,并對檢驗方法進行規(guī)劃,在實際的運用中提高了鈑金零件的加工設(shè)計效率,使得產(chǎn)品開發(fā)周期縮短近30%,降低了加工成本,節(jié)約了能源和人力,實現(xiàn)了加工的高效性和精確性.
關(guān)鍵詞:STL點云數(shù)據(jù);拓撲關(guān)系;航空鈑金;高斯曲率;檢驗特征
鈑金零件廣泛應(yīng)用于汽車、飛機、電子、輕工等行業(yè),尤其是在大型飛機中,鈑金零件數(shù)以萬計[1]. CATIA是法國達索系統(tǒng)(Dassault Systemes)公司開發(fā)的,具有界面友好、功能強大、易于操作等特點的三維CAD/CAM軟件,多用于大型復雜的產(chǎn)品設(shè)計[2].目前,對CATIA二次開發(fā)應(yīng)用較多的是CAA(Component Application Architecture)技術(shù).這種方法采用了標準接口技術(shù),具備更好的模塊獨立性和可擴展性,使得程序設(shè)計更加容易且趨于標準化,可進行系統(tǒng)所有功能的開發(fā)工作[3].
傳統(tǒng)的鈑金檢驗方法對工人的工作經(jīng)驗以及技能要求很高,而且很容易出現(xiàn)錯誤.通過對鈑金件的STL(Standard Triangulation Language)點云數(shù)據(jù)的直接提取,去除冗余信息,建立拓撲關(guān)系,得到鈑金零件的特征信息及相應(yīng)的檢驗規(guī)則,使得檢驗人員能夠根據(jù)檢驗規(guī)則對相應(yīng)的鈑金特征進行檢驗,又可提高檢驗效率和檢驗的通用性.基于STL點云文件的數(shù)據(jù)分析為鈑金零件的檢驗特征識別提供了一種可能.
1STL點云數(shù)據(jù)文件
STL文件格式[4]是一個后綴名為“.stl”的文本文件,是廣泛應(yīng)用于制造行業(yè)針對三維模型的一種存儲格式,目前已成為機械制造行業(yè)不同三維軟件間的接口標準之一.STL文件格式簡單、讀取方便, 通過CATIA界面的二次開發(fā),可自動提取鈑金零件的STL點云數(shù)據(jù),對點云數(shù)據(jù)進行處理,得到鈑金零件的特征.STL文件包含了三維零件表面三角網(wǎng)格后的所有三角面片的信息,每一個三角面片,都包含了面片單位法向量的坐標值,以及三角面片3個頂點的坐標值.然而,這個文件是對三維零件模型表面的一種近似,因此不同的精度要求會有不同的三角面片劃分方法.CATIA應(yīng)用軟件內(nèi)嵌了轉(zhuǎn)化為STL文件格式的工具,并對零件表面離散化進行了一定程度的優(yōu)化,基本上可以提供符合要求的最簡STL文件.STL文件的結(jié)構(gòu)模型如圖1所示.某鈑金零件的STL點云文件的三角網(wǎng)格如圖2所示.
圖1 STL文件的結(jié)構(gòu)模型
圖2 某鈑金零件的STL點云文件的三角網(wǎng)格
2冗余信息去除及拓撲關(guān)系建立
在理想情況下,不進行任何比較,一次存儲便能夠得到所查記錄,建立一種儲存位置和它的關(guān)鍵字之間的對應(yīng)關(guān)系,使得關(guān)鍵字跟數(shù)據(jù)的存儲位置有唯一的對應(yīng).在查找時,根據(jù)這個對應(yīng)關(guān)系HX就可以找到給定值F的像HX(F),進而結(jié)構(gòu)中存在和關(guān)鍵字F相等的記錄,則必定在HX(F)的存儲空間上,所以不需要查找便可以直接取得所查記錄.對應(yīng)關(guān)系HX即為哈希函數(shù),據(jù)此思想建立的表即為哈希表[5].STL文件包含了零件表面三角網(wǎng)格化后的所有信息,但是,最大問題在于,它只包含每個面片的法線及3個頂點的坐標信息,沒有三角面片之間的關(guān)系,也沒有零件的任何拓撲信息或幾何信息,同時STL的每個頂點大都被重用了6次以至于數(shù)據(jù)的冗余信息太大[6].STL文件中存在大量冗余頂點,這些冗余頂點會破壞面片間的拓撲關(guān)系,影響后續(xù)的模型處理[7].因此,對于STL文件的數(shù)據(jù)處理主要分為兩個方面:一是,合并重復出現(xiàn)的頂點,以便減少冗余信息,設(shè)計一種數(shù)據(jù)結(jié)構(gòu)將STL文件中重復出現(xiàn)的頂點只保存一次;二是,建立拓撲關(guān)系,即建立通過一個面片可以找到3個頂點坐標以及相鄰面片的拓撲關(guān)系.
2.1建立拓撲關(guān)系
利用哈希表和哈希函數(shù)建立拓撲關(guān)系,其基本的思路是從STL點云的三角形網(wǎng)格中讀取每個頂點,查找并去除重復頂點,建立一個不包含重復點的點表,同時建立只存儲每個三角形頂點在點表中索引值的面表.
首先建立一個點表.點表是一個順序表,順序表中每個元素包含兩個域,第一個域存儲了每個頂點的坐標信息,第二個域是指向鏈表的指針域,鏈表中存儲了該頂點指向的所有三角面片的索引.所建立的三角網(wǎng)格的順序點表如圖3所示.
圖3 三角網(wǎng)格的順序點表
其次建立頂點表.頂點表為以哈希函數(shù)計算的頂點的哈希地址作為下標的順序表.其每個行所對應(yīng)的鏈表中包含頂點所在點表中的地址索引和指向具有相同哈希地址的不同點指針的兩個域.頂點哈希表的結(jié)構(gòu)如圖4所示.
圖4 頂點哈希表的結(jié)構(gòu)
最后建立面表.面中的每個元素含有3個域.其中2個域存儲著面片法向量和3個頂點的索引,第三個域中存放著相鄰面片的索引.本研究建立的三角網(wǎng)格索引面表的結(jié)構(gòu)如圖5所示.
圖5 三角網(wǎng)格索引面表的結(jié)構(gòu)
所建立哈希表的部分函數(shù)如下:
Status SearchHash(HashTable H,KeyType K,int *p,int *c)
{
*p=Hash(K); /* 求得哈希地址 */
while(H.elem[*p].key!=NULLKEY&&!EQ(K,H.elem[*p].key))
{ /* 該位置中填有記錄.并且關(guān)鍵字不相等 */
(*c)++; /* c用以計沖突次數(shù),其初值置零,供建表插入時參考.*/
if(*c collision(p,*c);/*求得下一探查地址p*/ else break; } if EQ(K,H.elem[*p].key) /* 元素在表中位置,并返回SUCCESS;否則,以p指示插入位置,并返回UNSUCCESS */ return SUCCESS; /* 查找成功,p返回待查數(shù)據(jù)元素位置 */ else return UNSUCCESS;/*查找不成功(H.elem[p].key==NULLKEY),p返回的是插入位置*/ } 2.2建立哈希函數(shù)及拓撲算法 三角網(wǎng)格冗余信息的去除以及STL文件數(shù)據(jù)處理的關(guān)鍵在于實現(xiàn)頂點的快速查找.其原理就是以頂點的坐標作為關(guān)鍵字,通過哈希函數(shù)計算出頂點在表中的位置.這里根據(jù)保留余數(shù)法建立哈希函數(shù),取關(guān)鍵字被某個不大于哈希表表長M的數(shù)L除后所得的余數(shù),作為哈希地址. 哈希函數(shù)為: HX(F)=FmodL (1) 對應(yīng)的哈希表長M為: M=q×3÷10+2 (2) 關(guān)鍵字F為: F=|u.x|×10^4÷23+|u.y|×10^4÷19+ |u.z|×10^4÷17 (3) 式中:u為頂點坐標;u.x是頂點對于x軸的分量;u.y是頂點對于y軸的分量;u.z是頂點對于z軸的分量;q為STL點云文件的頂點個數(shù). 根據(jù)哈希函數(shù)計算出哈希地址,作為索引值,可以建立點與面、法向量與面、面與面、點與邊,邊與邊之間的鄰接關(guān)系,進一步建立由一點聯(lián)系到邊及相鄰邊,由邊聯(lián)系到面及相鄰面的拓撲聯(lián)系,從而把STL點云數(shù)據(jù)的三角網(wǎng)格在空間的相互拓撲關(guān)系建立起來,STL點云數(shù)據(jù)即可被顯示和特征識別.根據(jù)對STL點云數(shù)據(jù)建立拓撲關(guān)系的要求,在一定規(guī)范的輸入文件下,在有限時間內(nèi)高效地完成拓撲關(guān)系的建立,并驗證該算法的空間復雜度和時間復雜度是否符合實際的操作要求. STL點云數(shù)據(jù)的拓撲關(guān)系建立算法如下:建立三角網(wǎng)格順序點表、索引面表及頂點哈希表;之后根據(jù)哈希函數(shù)計算出一片三角網(wǎng)格的3個頂點的哈希地址,并把所計算的哈希地址及相關(guān)信息寫入三角網(wǎng)格的索引面表;然后判斷3個頂點是否為新點,并進行相關(guān)操作;最后依次把STL點云數(shù)據(jù)文件的三角網(wǎng)格面片信息讀取完畢.STL點云數(shù)據(jù)拓撲關(guān)系算法的建立流程如圖6所示. 圖6 建立拓撲關(guān)系算法的流程 3區(qū)域分割和特征識別 STL文件是由很多三角網(wǎng)格組成的幾何模型數(shù)據(jù).對于平面或特征變化較小的區(qū)域,采用較大的三角面片來表示;對于特征密集區(qū)域或曲面區(qū)域,則需要采用大量的小三角面片來近似表示.特征存在位置分布著大量的頂點,而一般特征又都是均勻分布的,可以借助這些頂點的特性進行區(qū)域分類. 某點附近局部曲面的類型可以根據(jù)該點對應(yīng)的高斯曲率和該點的平均曲率來確定.曲面上某點的高斯曲率是指該點處兩個主曲率的乘積,反映了曲面的彎曲程度.曲面彎曲程度的變化會導致高斯曲率的變化.兩個曲面交界處的高斯曲率會發(fā)生突變.因此,可根據(jù)高斯曲率的改變情況來判斷曲面的變化情況以及曲面的特征種類.曲面上某點的平均曲率是指通過曲面點的所有曲線在該點曲率中極大值與極小值的平均值.它是一個平面彎曲的測量標準,描述了一個曲面嵌入周圍空間的曲率.在三維空間的曲面中平均曲率的正負與曲面的法向量有關(guān),而法向量與曲面的凹凸情況密切相關(guān).利用曲面的平均曲率可以對曲面的性質(zhì)進行判斷.通過頂點高斯曲率和平均曲率的特點分析,對鈑金零件STL點云的三角網(wǎng)格進行位置分割,可以識別鈑金零件所包含的曲面類型.對于STL點云的三角網(wǎng)格頂點分析,可進行其頂點附近的曲面分類:“峰”,即點是一個凸點;“阱”,即點是一個凹點;“谷”,即點的部分方向是凹的,在一個方向上是平面;“脊”,即點的部分方向是凸的,在一個方向上是平面. 本研究在STL點云數(shù)據(jù)模型中,以圖7為例,對曲面上P點的高斯曲率和平均曲率進行了分析[8]. 圖7 以P為頂點的三角面片分析 P點的高斯曲率為: (4) 式中:θi為某個以P作為頂點的三角面片所對應(yīng)的內(nèi)角;Ai為對應(yīng)三角面片的面積;N為以P作為頂點的三角面片數(shù)量. 對應(yīng)P點的平均曲率為: (5) 若K=0且H=0,則該點附近為平面; 若K>0且H>0,則該點附近的曲面為“峰”,即點是一個凸點; 若K>0且H<0,則該點附近的曲面為“阱”,即點是一個凹點; 若K=0且H<0,則該點附近的曲面為“谷”,即點的部分方向是凹的,在一個方向上是平面; 若K=0且H>0,則該點附近的曲面為“脊”,即點的部分方向是凸的,在一個方向上是平面; 但在K>0且H=0的情況下,會相互矛盾,即這種情況不存在. 之后,數(shù)據(jù)的處理類似于平面時種子面的處理.其處理過程如下:①確定種子面;②延伸擴展種子面(相鄰的沒有被分配的,且其頂點和種子面又是同種類型的,則可以用于擴展種子面.這種擴展直至沒有相同類型的鄰接面為止);③區(qū)域合并(將兩個類型相同且相鄰的區(qū)域進行合并;可將公共邊不包含尖銳特征的邊,且公共邊平滑的或者相切的區(qū)域合并). 在實際應(yīng)用中,鈑金零件最常見的特征有彎邊特征和肋孔特征等.彎邊特征由兩個平面區(qū)域和一個柱面區(qū)域連接而成,且連接處分別與兩個面相切.該彎邊的特征由其柱面區(qū)域的特征類型決定.柱面區(qū)域的三角面片都是“峰”特征面,而連接區(qū)域為“脊”特征面.因此,選取種子面進行區(qū)域合并,最終可以把柱面區(qū)域及相鄰平面的面片都合并進來,原因就是相合并的這些面性質(zhì)相同且其兩個面片之間的公共邊不是特征區(qū)域的邊界,而是公共邊平滑的規(guī)則曲面與平面區(qū)域的連接. 4特征識別實例 CATIA為用戶開發(fā)提供了API(Application Programming Interface)函數(shù)庫和READ(Rapid Application Development Environment)快速應(yīng)用開發(fā)環(huán)境,支持在Visual C++環(huán)境下基于面向組件的開發(fā)模式,具有很強大的交互、集成和用戶特征定義功能,能夠無縫嵌入CATIA V5當中.航空鈑金零件三維數(shù)模的建立大多數(shù)是在CATIA 中完成的.這里主要在二次開發(fā)基礎(chǔ)上提取零件的STL點云數(shù)據(jù)文件,并在CAA的二次開發(fā)環(huán)境下對提取的STL點云數(shù)據(jù)文件進行特征識別.在CATIA中生成的鈑金零件的STL點云文件,是一個相對優(yōu)化的三角網(wǎng)格模型.航空鈑金零件的STL點云文件在CATIA中的文件生成以及特征的識別提取,涉及大量的數(shù)據(jù)處理,并在后臺運行.其流程如圖8所示. 圖8 鈑金零件的STL文件特征識別流程 對CATIA進行二次開發(fā),即在CATIA的界面下調(diào)用API函數(shù)庫,建立一個與用戶相交互的處理界面.其部分程序如下: CATDlgDialog((CATApplicationFrame::Get ApplicationFrame())->GetMainWindow(), //CAA2 WIZARD CONSTRUCTOR DECLARATION SECTION “CCCC”,CATDlgGridLayout //CAA2 WIZARD CONSTRUCTOR INITIALIZATION SECTION _Frame001 = NULL; _Frame003 = NULL; _MultiList004 = NULL; _Label005 = NULL; _Label006 = NULL; _Frame002 = NULL; _PushButton007 = NULL; _PushButton008 = NULL; _PushButton009 = NULL; _PushButton010 = NULL; //_Frame001->SetTitle(“基于STL點云的特征提取項目”); //_Frame002->SetTitle(“點云預覽”); //_Label005->SetTitle(“處理機制”); //_Label006->SetTitle(“數(shù)據(jù)信息”); //_PushButton007->SetTitle(“STL三角網(wǎng)格劃分”); //_PushButton008->SetTitle(“STL點云數(shù)據(jù)處理”); 在CATIA中建立的用戶交互式界面如圖9所示.通過二次開發(fā)界面提取的鈑金零件STL點云文件的數(shù)據(jù)如下: solid CATIA STL facet normal 9.999506e-001 -9.942916e-003 0.000000e+000 outer loop vertex -2.000000e+001 2.449213e-015 2.000000e+001vertex -2.000000e+001 2.449213e-015 0.000000e+000 vertex -1.999605e+001 3.976437e-001 2.000000e+001 endloop endfacet facet normal 9.999506e-001 -9.942916e-003 0.000000e+000 outer loop vertex -1.999605e+001 3.976437e-001 2.000000e+001 vertex -2.000000e+001 2.449213e-015 0.000000e+000 vertex -1.999605e+001 3.976437e-001 0.000000e+000 endloop endfacet facet normal 9.995553e-001 -2.981916e-002 0.000000e+000 endloop …… endsolid CATIA STL 應(yīng)用哈希表和哈希函數(shù)去除STL文件冗余信息并建立拓撲關(guān)系,對CATIA 生成的鈑金零件STL 點云文件進行區(qū)域分割和特征識別,最終呈現(xiàn)在CATIA二次開發(fā)界面中,完成了在CATIA開發(fā)模式下航空鈑金零件的特征識別,以及在CATIA界面中的實現(xiàn)(圖10). 采用傳統(tǒng)方法對飛機鈑金零件的檢驗,對員工經(jīng)驗要求很高,而且無法保證檢驗的精度和效率.在機械制造行業(yè)中,鈑金零件數(shù)量繁多,要想真正提高鈑金零件的檢驗速度以及精度,必須從根本上改進鈑金零件檢驗的方法.采用數(shù)字化方式,對常用的航空鈑金零件三維模型軟件CATIA進行二次開發(fā),可以提取并識別鈑金零件的待檢驗特征,在實際的應(yīng)用操作中提高了鈑金零件加工設(shè)計的效率,使得產(chǎn)品開發(fā)周期縮短近30%,降低了加工成本,節(jié)約了能源和人力,實現(xiàn)了加工的高效性和精確性. 5結(jié)束語 圖10 基于STL數(shù)據(jù)處理的航空鈑金零件特征識別的運行界面 在CATIA二次開發(fā)的界面下對航空鈑金零件的STL點云數(shù)據(jù)文件進行提取,以哈希函數(shù)、哈希表為基礎(chǔ),去除冗余信息,建立拓撲關(guān)系,對STL點云數(shù)據(jù)進行處理.根據(jù)STL三角網(wǎng)格的區(qū)域分割特征提取算法,在二次開發(fā)的CATIA界面中實現(xiàn)了對STL點云的特征提取和識別.快速提取鈑金零件的檢驗特征是飛機鈑金檢驗規(guī)劃系統(tǒng)的基礎(chǔ).先進的鈑金檢驗方法可以提高整個系統(tǒng)的工作質(zhì)量與檢驗效率. 參考文獻: [1]郝博,施華,何利.飛機鈑金檢驗規(guī)劃及數(shù)模的檢驗信息提取[J]. 四川兵工學報,2012,33(10):110-112. [2]蘇紅軍,王永金.基于CAA的CATIA V5二次開發(fā)方法的研究[J].機械,2008,35(S1):41-43. [3]許元付,郝博.基于CAA的機械零件參數(shù)化設(shè)計[J].成組技術(shù)與生產(chǎn)現(xiàn)代化,2013,30(1):45-48. [4]張紅玲.STL格式實體真實感圖形顯示工具[J].電腦學習,2000(4):31-32. [5]嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學出版社,2007. [6]王增波.STL格式文件的快速拓撲重建算法[J].計算機應(yīng)用,2014,34(9):2720-2724. [7]衛(wèi)煒,周來水,張麗艷.海量STL文件的快速讀取與顯示[J].機械科學與技術(shù),2006,25(6):935-938. [8]Hoffman R,Jain A K.Segmentation and classification of range images[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1987,9(5):608-620. Sheet Metal Inspection Feature Recognition Based on STL Data Processing SONG Yi-zhi1,HE Li1,HAO Bo2 (1.School of Mechanical Engineering, Shenyang Ligong University ,Shenyang 110159,China;2. Liaoning Mechatronics College, Dandong 118009, China) Abstract:In view of the CATIA design mathematical model of aircraft sheet metal parts,this paper directly extracts sheet metal parts of the STL point cloud data using CATIA secondary development tools CAA.Besides, based on CATIA platform, using VC(++) 6.0 tool and CATIA API function to extract the STL point cloud based on the fast algorithm, this paper also established topological relationship and topologica lrely on surface feature recognition based on Gaussian curvature and extracts the features of sheet metal parts, and planning of inspection method. Furthmore, this paper used the actual operation to improve the efficiency of the process design of sheet metal parts, makes the product development cycle shorten nearly 30%, reduced the processing cost, saving energy and manpower, to achieve the efficiency and accuracy of processing. Key words:STL point cloud data; the topological relationship; aircraft sheet metal; Gaussian curvature; inspection characteristics doi:10.3969/j.issn.1006-3269.2016.01.009 中圖分類號:TP391 文獻標識碼:A 作者簡介:宋義知(1991-),男,山東梁山人,碩士研究生,研究方向為機械工程. 基金項目:國家自然科學基金資助項目(61170146) 收稿日期:2015-07-02 文章編號:1006-3269(2016)01-0046-07