張宇航 孫玉文 徐金亭
1.大連理工大學機械工程學院,大連,1160242.大連理工大學汽車工程學院,大連,116024
航空發(fā)動機機匣是先進航空發(fā)動機的關鍵核心部件,其內部承載著發(fā)動機渦輪葉片等關鍵部件,外部連接著各種復雜的航空發(fā)動機附件系統(tǒng),機匣周向分布著島嶼、凸臺、筋肋、腔槽等復雜特征,特征間的相對關系復雜,數控編程難度大。數控編程過程中需人工設置大量參數和創(chuàng)建大量輔助幾何,導致數控編程工藝人員存在大量重復工作,效率低[1]。特征識別可以快速提取特征的幾何參數信息,從而將設計信息轉化為制造工藝信息。自1970年以來一直有學者致力于特征識別的研究[2],主要是基于圖的特征識別方法和基于深度學習的特征識別方法。
基于圖的特征識別方法目前研究最多,JOSHI等[3]首次提出屬性鄰接圖(attribute adjacency graph, AAG)的概念,通過去除所有被凸邊包圍的節(jié)點,將AAG分解為子圖,通過圖匹配算法,實現孤立特征的識別。謝飛等[4]提出了加權屬性鄰接圖,利用改進的子圖同構算法和特征判定規(guī)則實現簡單相交特征的識別。SUNIL等[5]提出對圖進行二次分解的識別方法,從而分離出特征子圖。張生芳等[6]通過獲取模型柵格高度點云數據,結合高度中值對特征矩陣進行二值化,實現了角盒類零件型腔特征的識別,通過對底面和壁面的關聯(lián)屬性進行剪枝,從而加快圖匹配算法。子圖匹配算法和圖匹配算法都存在識別速度慢且需要大量的特征庫的問題。劉曉軍等[7]基于主加工面,通過分析特征的特點,實現了板腔類零件加工特征的識別。魯泳等[8]通過在屬性鄰接圖中增加多種屬性,依賴刀軸方向和面的類型選擇種子面,然后基于種子面進行擴展,實現飛機結構件加工特征的識別?;诜N子面建立特征分解算法存在對部分相交特征考慮不全的問題。GAO等[9]提出了建立虛連接的生成算法,并根據特征痕跡得到最小條件子圖,通過預定義特征和啟發(fā)式規(guī)則實現特征識別,解決了相交特征導致的圖拓撲關系消失的問題,但是存在多余的虛連接。付鵬等[10]提出了基于邊環(huán)屬性鄰接圖的特征識別方法,通過多環(huán)判定和混合環(huán)判定,建立基面鏈表,以邊環(huán)為基礎進行屬性鄰接圖的分解,通過判斷基面的相對位置判定相交特征凹凸性。
以上方法能夠對簡單相交特征進行識別,但對于復雜相交特征識別還存在一定的問題。近些年來有許多學者通過深度學習對加工特征進行識別。ZHANG等[11]通過將零件分解為體素,通過分水嶺算法實現相交特征分割,建立了三維卷積神經網絡實現特征識別。SHI等[12]在獲得零件的六個方向的視圖后,通過目標檢測算法得到單個方向上的特征的邊界框,然后對六個方向上的邊界框進行合并得到最終的特征識別結果。ZHANG等[13]對零件每一個面進行采點,獲取面的位置坐標和法向量作為輸入參數,通過實例分割、語義分割、底面識別三個模塊實現相交特征的識別。受樣本數量、特征分割方法和輸入參數完整性的限制,基于神經網絡的方法對實際模型的應用存在一定的問題。
航空發(fā)動機機匣零件上存在大量的相交特征和曲面特征,導致傳統(tǒng)的方法無法對其進行有效識別。本文提出了一種融合啟發(fā)式與規(guī)則的混合式特征分割算法實現對機匣零件的加工特征的識別。
實體模型常用的表示方法為邊界表示法(boundary representation, B-rep),這種表示方法在Parasolid內核中將實體由下層到上層劃分為點、邊、翼、環(huán)、面、殼、體七層拓撲實體。JOSHI等[3]首次在此基礎上提出屬性鄰接圖的概念,根據邊界表示,模型中面作為圖中的節(jié)點V,面之間的相交邊作為節(jié)點間的連接的邊E,形成一張無向圖。為了進行特征識別,還需要將面和邊的幾何特性和連接關系作為節(jié)點V和邊E的屬性信息P,屬性鄰接圖表示為G={V,E,P}。
在零件的屬性鄰接圖中,邊的凹凸性是實現特征識別的關鍵信息之一,邊的凹凸性的判斷方法[14]如圖1所示,對于兩個相交面F1和F2,在交邊E上選擇一點P的切平面作截面,獲得兩面的夾角α,當α>180°時邊E為凸邊,當α<180°時邊E為凹邊,當α=180°時E為過渡邊。邊凹凸性的具體計算為:獲得面F1和面F2在交線點上的法線方向N1和N2,以及點P在邊E上的切線方向Ne,Ne在面F1上滿足右手螺旋定則,通過計算N2×Ne與N1之間的夾角α1,當α1取值為(0°,90°)時,邊E為凸邊,當α1取值為(90°,180°)時,邊E為凹邊,當α1=90°時,邊E為過渡邊。對于曲面構成的過渡邊,建立交邊上P點的法平面,獲得與曲面的交線。通過判斷交線在點P處的凹凸性,若存在一條交線在點P處為凹,則判斷為凹過渡邊,否則為凸過渡邊。
(a)凸邊 (b)凹邊
由于過渡特征能夠減小應力集中,同時可以使零件外形更加美觀,因此在發(fā)動機機匣零件中存在大量的過渡特征,但是大量的過渡特征會增加特征的拓撲層次,使特征識別變得異常困難。對過渡特征進行識別和抑制可以簡化特征識別算法并提高特征識別的準確率。機匣零件中使用的過渡特征多為圓角和倒角特征。
圓角特征識別方法為:首先提取存在兩條以上過渡邊的曲面,判斷面在U/V方向上的曲率半徑是否變化以及曲率半徑是否超過圓角閾值,從而實現U向圓角和V向圓角的判斷。若查找存在平行邊且邊所在的凹凸角大小相同、凹凸角的取值范圍在(180°,270°)的平面,即可通過判斷倒角大小是否滿足閾值條件來識別對稱倒角。過渡特征識別完成后,將圓角的過渡邊和倒角凹凸角相同的平行邊連接的面相互之間建立連接,從而移除過渡面,得到簡化屬性鄰接圖(simplified attribute adjacency graph, SAAG)。過渡特征識別結果如圖2所示。
圖2 過渡特征識別結果
發(fā)動機機匣零件中存在大量的孔特征和內型面特征。由于孔特征結構中的孔面較為特殊,因此容易建立孔特征的識別算法[15-16],且孔特征識別后不易對其他特征識別產生影響。通過面的類型可以提前識別出所有的孔特征和內型面特征。識別方法為:首先找到面的類型為圓柱面和圓錐面的凹特征面,然后判斷特征面的回轉角度是否大于180°,將回轉角度大于180°的面作為孔特征面,然后將與孔特征凹連接且連接邊的類型為曲線的特征面作為孔特征底面。所有孔特征識別結束后,標記特征面,同時將不存在底面的孔特征識別為通孔,將存在底面的孔識別為盲孔。通過將底面作為連接條件,判斷一個孔特征的孔面是否與另一孔特征的底面相連,若兩個孔特征的特征面之間存在連接關系且孔面軸線相同,則將兩個孔合并,同時將特征類型改為階梯孔特征。對于孔面直徑大于一定值的孔特征,將特征類型設定為內型面特征??滋卣髯R別結果如圖3所示。
(a)內型面特征
對于存在種子面的加工特征,特征的種子面通常為主要的加工面,需要滿足可加工性條件,即特征面可以通過刀具垂直加工,因此將面的可加工性作為種子面選擇的依據之一,從而得到正確的特征種子面。面的可加工性的判斷方法為:通過在面上五點采樣,對面上采樣點沿法線方向作射線判斷是否會和其他面產生干涉,對于不存在可加工點的面,在特征分解后不將其作為種子面。判斷面上一點是否會與其他面產生干涉的方法為:通過沿面一點,沿著法線方向作射線,判斷是否會和其他面產生交點,將首個交點位置的距離與加工安全距離進行對比從而得到面的可加工性。面的可加工性在特征種子面的選取中具有非常關鍵的作用,特征種子面選擇的正確性直接影響特征識別結果以及特征合并的效果,面的可加工性如圖4所示,紅色的面定義為不可加工面。
圖4 面的可加工性
若完整的屬性鄰接圖包含的節(jié)點數量過多,會導致特征識別算法的時間復雜度太大,為了提高特征識別算法的效率,常用的方法是通過凸分解[17]獲得最小屬性鄰接圖(minimum attributed adjacency graph, MAAG)。凸分解通過斷開屬性鄰接圖中的凸邊,將其分解為多個子圖。但是相交特征的存在會導致兩個特征共用一個相同的面,使得凸分解得到的子圖存在多個相交特征,為了分離相交特征,需要判斷特征面互相之間是否可以共同構成一個特征。凹特征的特征面通?;ハ嘀g相對可見,因此引入可見性作為凹特征添加特征面的條件??梢娦缘呐袛喾椒?通過五點采樣判斷面之間的可見性,對于不為凹連接的面,計算面上點到另一面上點的方向與當前點在面上的法線方向的夾角θ,θ小于90°則判斷為可見,兩個面互相之間都滿足可見性條件時兩個面判斷為可見,如圖5所示,面F1與F2、F3、F4、F5都不可見。
圖5 面之間的可見性分析
首先對已經去除過渡特征的SAAG進行凸分解,得到最小屬性鄰接圖MAAG。然后從最小屬性鄰接圖選擇凹連接數量最多的可加工面作為相交特征識別初始面Fs,將與初始面Fs相連的面作為特征分解的起始面,所有的起始面構成起始面集(initial face set, IFS),IFS={Fs1,Fs2,…,Fsn}。接著根據起始面集合中面的類型和相互之間凹凸連接關系,從起始面集中選取一組面作為擴散的起始面。最后根據凸擴散和凹擴散的不同約束條件添加特征面,從而得到獨立的凸特征和凹特征。特征分解的整體流程如圖6所示。
圖6 啟發(fā)式特征分解流程圖
凸特征分解是首先從IFS中查找曲率半徑不超過預設值的凸面,或者互相之間為凸連接關系的面,構成凸特征面集合(convex feature face set, CVFS),將與其相連的凹面作為凸特征底面。然后通過凸邊擴散的啟發(fā)式搜索條件在MAAG中搜索特征面。凸邊擴散的啟發(fā)式搜索條件為:特征面滿足與CVFS中的一個或多個面凸連接,并且與至少一個底面凹連接且不與任意底面凸連接。擴散結束后,將該特征面集作為凸特征的起始面集。接著查找特征頂面,特征頂面為可加工面,并且滿足與特征面只為凸連接,以及不與底面凸連接。確定特征頂面后,添加滿足條件的特征面和特征底面。若未找到凸特征頂面,則判斷CVFS是否存在凸角連接,凸角定義為存在三個面之間互相凸連接,當都不滿足時,不將其識別為凸特征,構成凸角的特征如圖7所示,面F1、F2、F3構成凸角。最后選擇可加工的特征面作為種子面,將與特征面凸連接數量最多、面的面積最大作為凸特征種子面選擇的條件,得到凸特征的種子面。
圖7 特征中凸角
凹特征分解是首先從IFS中提取出互相為凹連接且相互可見的面,構成凹特征面集(concave feature face set, CCFS)。然后通過凹邊擴散的啟發(fā)式搜索條件在MAAG中搜索特征面,凹邊擴散的啟發(fā)式搜索條件為:將與特征面凹連接的面添加到臨時面集(temporary face set, TFS)中,判斷其與CCFS中的面是否滿足可見性條件,并且計算面之間中心點的距離,然后判斷TFS中的面是否互相可見,不可見面之間優(yōu)先選擇不為凸特征的面、未定義的面以及到CCFG距離最近的面。擴散結束后,選擇可加工的特征面作為種子面,將與特征面凹連接數量最多、面的面積最大作為凹特征種子面選擇的條件,得到凹特征的種子面。添加與種子面凹連接且與其他特征面存在連接的面。部分特征(如通道)可能不存在種子面。
起始面集IFS中可能還會存在不與其他面連接的面,首先提取出其中一個未識別的面為擴散起始面,通過將IFS中與其可見的凹特征面添加到一個凹特征面集CCFS中,然后在MAAG中根據之前凹邊擴散的啟發(fā)式搜索條件進行擴散,擴散結束后選擇種子面,從而得到孤立的凹特征。重復以上步驟,直到得到所有的孤立特征。
由于相交特征的存在,會導致部分特征被分解為多個特征的問題。因此將種子面作為驅動條件對特征進行合并。對于凸特征,首先判斷種子面是否相同,然后檢測特征面之間是否存在連接,存在連接關系則將兩個凸特征合并。對于存在種子面的凹特征,判斷兩個凹特征的種子面是否可以合并為一個面,并且特征面之間相互可見,并且種子面之間的最近距離滿足閾值條件,則將兩個凹特征合并。對于不存在種子面的凹特征,判斷兩個特征的特征面是否存在連接,存在則將兩個特征合并。對于圖8所示的零件,通過特征合并可以將四個獨立的特征合并為一個特征,從而保證特征識別結果的準確性。
圖8 特征合并實例
通過特征分割和特征合并得到了獨立的特征,雖然圖同構算法可以對獨立特征進行識別,但是由于實際零件特征面多變,因此需要大量的特征庫,圖同構算法的識別速度較慢,并且存在特征拓撲結構相同而導致特征識別的準確率下降的問題。由于在特征分割后,已經根據特征的拓撲信息和幾何信息確定了特征的種子面,故通過對相同特征面進行合并,以種子面作為參考提取出特征的拓撲和幾何參數,可以更快速地對特征進行識別。由機匣零件提取的特征參數信息如表1所示。
表1 特征參數定義
特征分割后將特征分為凸特征和凹特征兩大類,在特征參數的基礎上,對不同特征的拓撲結構和種子面幾何尺寸進行判斷,通過建立特征識別規(guī)則,將凸特征識別為凸臺和筋板,凹特征識別為型腔(普通型腔和開口型腔)、臺階(通臺階和盲臺階)、凹槽、通道(普通通道和開口通道)。特征識別規(guī)則如下:
(1)判斷是凹特征還是凸特征,凸特征轉步驟(2),凹特征轉步驟(3);
(2)判斷凸特征起始面集是否都成為或都不成為凹特征面,是則判斷為凸臺特征,否則判斷為筋板特征。
(3)判斷凹特征是否存在種子面,不存在則轉步驟(4),存在則轉步驟(5);
(4)判斷特征面是否成環(huán),成環(huán)則為通道特征,不成環(huán)則為開口通道特征;
(5)判斷特征面構成鏈的數量,數量為1轉步驟(6),數量為2轉步驟(7),大于2轉步驟(8);
(6)判斷特征面是否成環(huán),成環(huán)則判斷為型腔特征,不成環(huán)則轉步驟(9);
(7)判斷特征面是否都和種子面相連,不是則轉步驟(10),否則轉步驟(11);
(8)對特征面構成鏈的數量大于2的統(tǒng)一判斷為開口型腔特征;
(9)判斷特征面數量,數量大于2則判斷為開口型腔,等于1則判斷為通臺階特征,否則轉步驟(12);
(10)判斷特征面是否存在連接環(huán),存在則判斷為開口型腔特征,否則判斷為開口通道特征;
(11)判斷種子面面積除以最長邊的平方是否大于閾值,大于則判斷為筋板特征,否則判斷為凹槽特征;
(12)判斷種子面非內環(huán)凸邊數量,大于2則判斷為通臺階特征,否則判斷為盲臺階特征。
將當前提出的方法通過VS2015在Siemens NX11上進行實現,并對航空發(fā)動機機匣零件進行識別驗證,通過航空結構件驗證該算法的擴展性,零件模型如圖9所示。對測試機匣B進行測試,部分特征識別結果如圖10所示,該零件識別的特征包括凸臺、筋板、凹槽、臺階、型腔、開口型腔和內型面等,其中部分特征的特征參數如表2所示,特征參數順序與表1特征參數定義中的特征序號相對應。
表2 特征參數與識別結果
(a)航空結構件
(a)凸臺 (b)型腔
對不同的零件進行測試,得到特征識別的零件信息和識別準確度如表3所示。該算法可以將相交特征有效分離,并且準確識別特征類型,在保證機匣零件特征識別準確性的同時可以對結構件中相同的特征進行有效識別。算法識別準確率達到98.83%,但是模型建模過程中存在部分缺陷面,導致識別結果中存在以缺陷面為種子面而產生的多余特征。特征識別耗時如表4所示,測試顯卡為RTX3050Ti,CPU為AMD Ryzen 7 5800H。單個面的平均耗時為5.57 ms。該算法能夠實現發(fā)動機機匣等復雜零件的加工特征快速識別,識別耗時主要花費在零件拓撲信息獲取和特征合并過程中,隨著特征數量的增加,特征合并花費時間的占比增大。
表3 測試零件信息及特征識別結果
表4 特征識別各階段耗時
本文提出了一種新的啟發(fā)式特征分割方法用于實現航空發(fā)動機機匣中曲面特征和復雜相交特征的識別。測試結果表明,識別準確率達到98.83%,解決了傳統(tǒng)算法難以對相交特征和曲面特征識別的問題,能夠實現快速準確識別機匣零件的加工特征。
本文提出的特征參數主要面向航空發(fā)動機機匣零件上的加工特征,但是特征識別結果依賴于提取的特征參數,因此如何根據特征提取出更多有效的特征參數將會是下一步研究重點。