劉靜靜, 金 永, 寧泓淘, 范 晨, 孫煜雅
(中北大學信息與通信工程學院,山西 太原 030051)
作為固體火箭發(fā)動機存儲和燃燒推進劑的燃燒室,其內(nèi)腔體積直接決定著裝藥量,從而影響著固體火箭發(fā)動機的發(fā)射性能[1]。固體火箭發(fā)動機腔體屬于大長徑比管類構件,從目前的管類構件容積測量方法來看,主要有稱水法、音頻檢測法、環(huán)形結(jié)構光法[2]、超聲波法。
傳統(tǒng)的 “稱水法”原理簡單、精度高,但可操作性差、效率低,需要對內(nèi)腔進行后期烘干處理。鄭浩[3]等提出了可以快速實現(xiàn)彈體藥室容積檢測的音頻檢測方法,但該方法對其硬件及信號處理系統(tǒng)要求較高、技術難度大。此外,利用內(nèi)耗與藥室內(nèi)腔容積的數(shù)學模型計算出的容積誤差較大。馮忠偉[4]等提出了一種基于環(huán)形結(jié)構光的藥室內(nèi)腔容積測量技術,該測量裝置可一次性完成全部內(nèi)腔參數(shù)的測量任務,效率較高,但其系統(tǒng)結(jié)構復雜,調(diào)整難度大,誤差源多,其測量精度與采樣點個數(shù)有關。韓躍平[5]等提出了一種基于超聲波的非接觸式藥室內(nèi)腔容積測量法,但在沒有圖紙等參數(shù)的情況下,還需額外的外形尺寸檢測方法,對于不同型號的藥室還需要重新計算。
近年來,三維激光點云的應用為計算腔體容積提供了新思路,董立宙[6]提出了基于激光點云的固體火箭發(fā)動機內(nèi)腔容積測量方法。通過對點云數(shù)據(jù)進行切片、投影等操作實現(xiàn)發(fā)動機內(nèi)腔快速、非接觸式測量。但內(nèi)腔容積的計算結(jié)果直接受有效像素個數(shù)和八叉樹迭代次數(shù)取值等因素的影響,導致測量結(jié)果不穩(wěn)定,容積測量精度不高。
Delaunay三角剖分法構網(wǎng)速度快,效率高,實用性強,在對平面點集構建三角網(wǎng)格時,可以按照多種方式生成單元質(zhì)量飽和且唯一的三角網(wǎng)格,能夠達到在約束性表面分析時對網(wǎng)格單元質(zhì)量的要求的同時,提高容積計算精度。因此,為實現(xiàn)固體火箭發(fā)動機內(nèi)腔容積的準確測量,該文在點云切片的基礎上,采用基于凹包分割的Delaunay三角剖分法計算腔體容積。
點云是空間散亂點的集合,代表了物體表面輪廓特征信息,點云切片的本質(zhì)是一組平面與點云的相交。即存在一個平面,點云數(shù)據(jù)集,求出在平面中的輪廓線。由于點云密度是有限的,利用在平面中的點求出輪廓線是不可行的,所以引入“切片寬度”。沿著特定方向,按照給定的切片寬度在最小值與最大值之間對點云數(shù)據(jù)進行剖切,得到一系列點云切片。
1.1.1 切片方向的確定
切片方向不同,得到的切平面曲線也不同。首先對點云的特征進行分析,選擇合適的切片方向。具體可以用以下兩種方法來確定切片方向:1) 已知一個平面,那切片平面應平行該平面;2) 用一組間隔一定距離且垂直于坐標軸的平面作為切片面組。圖1為點云切片示意圖。
圖1 點云切片示意圖
1.1.2 確定切片寬度
切片寬度是自定義參數(shù)[7],對切片算法執(zhí)行時間和切片精度會產(chǎn)生一定的影響。設有點云數(shù)據(jù)集為,則此點云數(shù)據(jù)集坐標范圍沿自定義切片方向,按照給定的切片寬度在最小值與最大值之間對點云數(shù)據(jù)進行剖切,依次得到系列水平點云切片。
目前常用的切片寬度計算方法為密度法,見下式,通過下式計算得到點云的密度,進而確定切片的寬度。
根據(jù)下式求解切片寬度:
其中β為一般取值4~8。
固體火箭發(fā)動機在加工過程中,由于受到軋制工藝、生產(chǎn)設備等因素的影響,導致腔體內(nèi)部并非都是平滑的,內(nèi)腔表面存在“凹坑”缺陷,因此,點云切片后投影輪廓圖存在凹包。為準確測量點云切片的面積,該文了提出了基于凹包分割的Delaunay三角剖分法。
選擇XOY平面為投影面進行投影得到投影輪廓線,并按照順時針方向?qū)喞€上的點進行重新排序。根據(jù)Delaunay三角剖分算法[8]準則,Delaunay三角剖分在平面點集中會生成凸多邊形的外殼,當數(shù)據(jù)中存在凹包時,會在凹包外生成三角網(wǎng),這將導致點云切片的面積偏大,因此該文選擇對凹包進行分割,先搜尋邊界凹點,并確定最深凹點,將點云切片分成若干部分,并對每一部分進行Delaunay三角剖分,計算出點云切片的面積。
1.2.1 搜尋邊界凹點
該文利用邊界點與前繼點、后繼點的旋轉(zhuǎn)角信息搜尋凹點。在輪廓線上任選一點作為初始點(下標i為該點的索引值),選擇點、作為該初始點的前繼點和后繼點[9](下標 i?d 、i+d 分別為點的索引值),計算向量的坐標。該三點之間的位置關系如圖2所示。根據(jù)向量的向量積(叉積)的正負判斷該邊界點是否為凹點。由向量積右手定則可知,若向量的叉積為正,則。若叉積為負,則同時由向量旋轉(zhuǎn)角定義可知,若在逆時針方向,向量的旋轉(zhuǎn)角(即叉積為負),則該邊界點為凹點,否則該邊界點為非凹點。按照順時針方向依次遍歷輪廓線上的點直到(K為投影點數(shù)),可獲得凹點,保存凹點信息。根據(jù)凹點信息,計算凹點與前繼點、后繼點形成的向量的旋轉(zhuǎn)角,從每一凹包的凹點中選擇凹陷程度最大的點,即旋轉(zhuǎn)角最大的點作為該凹點群的最深凹點。
圖2 前繼點和后繼點的示意圖
1.2.2 點云切片分割
凹點集合中的點都位于某一特定直線的兩側(cè),根據(jù)這一規(guī)律得出凹點方向分類的標準[10]。假設最深凹點集合中任一點的坐標為,并且特定直線的方程為,將任一點坐標的代入方程中求得,通過比較、的大小,按照兩個不同的方向?qū)键c分開,并分別存放在兩個數(shù)組中,同時按照順時針和逆時針方向分別對兩個數(shù)組中的凹點進行排序,從長度大的凹點數(shù)組中第一個凹點開始與另一數(shù)組中凹點進行匹配可得到分割點對。對于凹點數(shù)組中剩下不能匹配的凹點,尋求其與邊界點的連線。
圖3 點云切片分割示意圖
1.2.3 點云切片面積計算
該文以點云切片分割后的某一部分為例,介紹基于Delaunay三角剖分的點云切片面積計算方法。具體步驟如下:
2)利用Delaunay三角網(wǎng)算法構建三角網(wǎng),并保存每個三角形的頂點的索引值到矩陣tri[m,3](m是三角形的個數(shù))。
3)提取矩陣tri[m,3]的第一行(即第一個三角形的頂點的索引值),可得到三角形三個頂點坐標,由下式所示的三角形面積計算公式可求出該三角形的面積。
4)重復步驟3),直到矩陣最后一行,所有三角形面積計算并保存完畢,累加所有三角形的面積如下式所示,得到分割后點云切片的面積。
5)重復以上步驟,計算出整個點云切片的面積。
每兩層切片之間的一段內(nèi)腔作為一部分,該部分的容積可由公式(5)計算求得(即點云切片面積與切片寬度之積),利用公式(6)計算整個燃燒室內(nèi)腔的容積。
該文以某型號固體火箭發(fā)動機為研究對象,如圖4為數(shù)據(jù)采集裝置示意圖(其中長短測臂用于不同口徑的直筒段和前封頭段的測量),采用激光位移傳感器[11]采集固體火箭發(fā)動機內(nèi)腔點云數(shù)據(jù)(包括 38332299個點),并對其進行配準、去噪、精簡等[12-15]處理。圖5(a)為殼體中部,圖5(b)為前后封頭。沿著垂直于Z軸的方向,按照0.65 mm的切片寬度從上到下切割點云。
圖4 數(shù)據(jù)采集裝置示意圖
圖5 點云數(shù)據(jù)
圖6是Delaunay三角剖分在凹包處生成的三角網(wǎng)效果圖,從圖6中可以看出,Delaunay三角剖分會在凹包外生成三角網(wǎng),導致計算的點云切片的面積偏大,最終使得固體火箭發(fā)動機內(nèi)腔容積精度不高。 圖7點云切片分割后進行Delaunay三角剖分后的效果圖,可以看出:在凹包處完成分割之后不再生成多余的三角形,提高了點云切片面積的計算精度。
圖6 凹包處生成的三角網(wǎng)效果圖
圖7 凹包分割后生成三角網(wǎng)效果圖
為驗證提出的算法準確性,選擇傳統(tǒng)的的“稱水法”測得的固體火箭發(fā)動機內(nèi)腔容積測量值為理論值,即理論值為 663504368 mm3。將該文算法稱為方法1,文獻[9]提出的算法稱為方法2。分別采用以上兩種方法計算固體火箭發(fā)動機內(nèi)腔容積,其結(jié)果如表1所示。
表1 不同容積測量方法結(jié)果對比
從表1可以看出,以上兩種方法均能實現(xiàn)固體火箭發(fā)動機內(nèi)腔容積的計算,由于該文數(shù)據(jù)量較大,點云切片寬度僅不到1 mm, 因此所需時間較長。相比而言,該文提出的方法運行時間更長,但計算的結(jié)果相對誤差更小,精確度更高。因此該文方法是一種更為精確的腔體容積測量方法。
該文在點云切片的基礎上,提出了基于凹包分割的Delaunay三角剖分容積測量方法,實現(xiàn)了對固體火箭發(fā)動機內(nèi)腔容積的非接觸、全方位、高精度容積測量。此外,Delaunay三角剖分算法具有更好的穩(wěn)定性,不易受點云密度的影響。
該文方法不僅適用于固體火箭發(fā)動機內(nèi)腔容積測量,對輸氣管道、密閉容器等大長徑比管類構件的測量也具有普遍適用性。