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