蘇 暢,王 立,鄭 然,周建濤,武延鵬
(北京控制工程研究所空間光電測(cè)量與感知實(shí)驗(yàn)室,北京 100190)
星敏感器作為一種高精度姿態(tài)測(cè)量敏感器被廣泛應(yīng)用于各類航天器中[1]。根據(jù)星敏感器的工作流程可知,獲取星像坐標(biāo)占了絕大部分時(shí)間,因此為了提高星敏感器的數(shù)據(jù)更新率,必須減少星像坐標(biāo)的提取時(shí)間[2]。
目前,星敏感器采用的星像坐標(biāo)提取方法主要有以下兩種方式:一種是采用串行模式提取星像坐標(biāo);另外一種是采用現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)提取星像坐標(biāo)[3]。采用串行模式提取星像坐標(biāo)首先把星圖保存在存儲(chǔ)器中(SRAM或者DDR),然后處理器從存儲(chǔ)器中逐個(gè)讀取星圖中的像素灰度值,利用重心法提取星像坐標(biāo),采用這種方式提取坐標(biāo)需要對(duì)同一幅星圖進(jìn)行2次操作,即保存星圖到存儲(chǔ)器中和從存儲(chǔ)器中讀取星圖,因此增加了提取時(shí)間;而且隨著星敏感器的圖像傳感器面陣越大,保存和讀取圖像的時(shí)間也隨之增加,提取星像坐標(biāo)的時(shí)間也就越長(zhǎng),然而大面陣圖像傳感器是星敏感器發(fā)展的必然趨勢(shì),因此基于串行模式提取星像坐標(biāo)難以提高星敏感器的數(shù)據(jù)更新率。為此,文獻(xiàn)[3]提出了一種采用FPGA實(shí)現(xiàn)星像坐標(biāo)提取的方法,這種方法不需要把星圖保存到存儲(chǔ)器中,而是在FPGA獲取星圖的一個(gè)像素后,立刻對(duì)該像素進(jìn)行聚類并實(shí)時(shí)完成星像坐標(biāo)提取,提取過程需要對(duì)相鄰上、左、左上的像素點(diǎn)進(jìn)行判斷、灰度乘法和加法計(jì)算,一共需要5個(gè)周期才能完成1個(gè)像素的處理,即FPGA獲取星像坐標(biāo)的工作頻率也至少要設(shè)定為探測(cè)器像素輸出速率的5倍;而隨著探測(cè)器像素時(shí)鐘的提高,此時(shí)FPGA獲取星像坐標(biāo)的工作頻率也需要相應(yīng)地提高5倍;而FPGA性能有限,且極高頻率工作時(shí),穩(wěn)定性也隨之降低,因此采用該方法提取星像坐標(biāo)也受到了FPGA器件的限制。
基于以上問題,本文提出了一種采用行列聚類并行的星像坐標(biāo)提取方法,將逐個(gè)像素聚類的方式優(yōu)化成像素隊(duì)列聚類的方式,在實(shí)現(xiàn)對(duì)恒星星像坐標(biāo)實(shí)時(shí)提取的同時(shí),可以解決文獻(xiàn)[3]提出的實(shí)時(shí)提取星像坐標(biāo)過程中坐標(biāo)提取頻率是像素輸出頻率5倍的問題,保證提取坐標(biāo)過程中每個(gè)像素在1個(gè)時(shí)鐘周期處理完,從而使像素輸出時(shí)鐘與星像坐標(biāo)提取時(shí)鐘完全匹配。因此,該方法可在探測(cè)器高像素輸出速率條件下實(shí)現(xiàn)對(duì)恒星星像坐標(biāo)的實(shí)時(shí)提取,不但提高了數(shù)據(jù)更新率,而且隨著FPGA工作頻率的降低,星敏感器的穩(wěn)定性得到大幅提升且功耗也隨之減少[4-7],對(duì)提高星敏感器工作可靠性具有重要意義。
采用行列聚類并行的星像坐標(biāo)提取方法的主要原理為將星象坐標(biāo)提取過程分為3個(gè)進(jìn)程,分別為行聚類進(jìn)程、列聚類進(jìn)程和質(zhì)心計(jì)算進(jìn)程,3個(gè)進(jìn)程并行工作,當(dāng)星圖數(shù)據(jù)讀出完畢時(shí),完成對(duì)該幀星圖中星像坐標(biāo)的提取工作,實(shí)時(shí)輸出星像質(zhì)心坐標(biāo)至處理器,供后續(xù)模塊進(jìn)行星圖識(shí)別和姿態(tài)解算工作。
行聚類進(jìn)程工作流程如下:
1)從探測(cè)器讀取像素點(diǎn)的灰度值,并將該值與濾波后的背景閾值進(jìn)行比較,若小于背景閾值,則該像素點(diǎn)視為背景,不作處理,等待讀取下一個(gè)像素點(diǎn)的灰度值;若大于背景閾值,表明其是星像點(diǎn),記錄該像素的灰度I、灰度與列位置的乘積xI等相關(guān)信息,轉(zhuǎn)到步驟2)。
2)繼續(xù)判斷下一像素點(diǎn)灰度值是否大于背景閾值,若大于背景閾值,表明該像素點(diǎn)與前一像素點(diǎn)屬于同一星像,將灰度I、灰度與列位置的乘積xI累加到步驟1)中的相應(yīng)寄存器中,并將行塊長(zhǎng)度等信息進(jìn)行更新,保持在步驟2);若小于背景閾值,表明該像素點(diǎn)不在其前一像素所屬的星像中,表明上一行塊行聚類結(jié)束,轉(zhuǎn)到步驟3)。
3)將行聚類結(jié)束的行塊信息灰度和ΣI、灰度與列位置的乘積和ΣxI、灰度與行位置的乘積和ΣyI、行塊起始列位置、行塊長(zhǎng)度以及行塊所在行位置等傳遞給列聚類進(jìn)程,并觸發(fā)列聚類進(jìn)程工作;同時(shí)回到步驟1),繼續(xù)對(duì)后面滿足要求的像素點(diǎn)進(jìn)行行聚類。
列聚類進(jìn)程工作流程如下:
在列聚類進(jìn)程中,主要對(duì)行聚類進(jìn)程傳遞的行塊信息進(jìn)行列聚類,并輸出完整的星像信息至質(zhì)心計(jì)算進(jìn)程。具體方法為由于已知行塊的灰度和ΣI、灰度與列位置的乘積和ΣxI、灰度與行位置的乘積和ΣyI、行塊起始列位置、行塊長(zhǎng)度以及行塊所在行位置,可據(jù)此作為判斷2個(gè)行塊是否關(guān)聯(lián)和列聚類是否結(jié)束的標(biāo)志。設(shè)行塊1的行位置為ROW1,列起始位置為COL_START1,行塊長(zhǎng)度為ROW_LENGTH1;行塊2的行位置為ROW2,列起始位置為COL_START2,行塊長(zhǎng)度為ROW_LENGTH2,且行塊1優(yōu)先于行塊2被探測(cè)到??煞譃橐韵虑闆r:
1)若ROW1=ROW2,則表明2個(gè)行塊位于同一行,且無交集,是2個(gè)獨(dú)立的行塊,此時(shí)將行塊信息按照先后順序存入先入先出(First In First Out, FIFO)中,等待與其他行塊進(jìn)行列聚類;
2)若ROW1=ROW2-1 AND COL_START2+ROW_LENGTH2 3)若ROW1=ROW2-1 AND COL_START2+ROW_LENGTH2>COL_START1 AND COL_START2 4)若ROW1=ROW2-1且COL_START2>COL_START1+ROW_LENGTH1,則表明行塊2在行塊1的下一行,位于行塊1的右側(cè)且與之無交集,是2個(gè)獨(dú)立的行塊,同時(shí)說明行塊1所在的星像列聚類已完成,已構(gòu)成完整的星像,并向質(zhì)心計(jì)算進(jìn)程輸出完整的星像信息,此時(shí)將行塊2存入FIFO中,等待與其他行塊進(jìn)行列聚類; 5)若ROW1 質(zhì)心計(jì)算進(jìn)程工作流程如下: 在質(zhì)心計(jì)算進(jìn)程中,主要對(duì)列聚類進(jìn)程傳遞過來的星像信息進(jìn)行質(zhì)心計(jì)算,由于已知灰度和ΣΣI、灰度與列位置的乘積和ΣΣxI、灰度與行位置的乘積和ΣΣyI,根據(jù)重心法公式即可得到該星像的質(zhì)心位置。 按照上述流程,在一幀圖像讀出完畢時(shí),可以依次得到該幀星圖中所有星像的質(zhì)心坐標(biāo),將得到的全部星點(diǎn)坐標(biāo)傳遞給星圖識(shí)別與姿態(tài)解算模塊,進(jìn)而輸出星敏感器光軸在慣性空間的指向。 選用某型號(hào)星敏感器進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)示意圖如圖1所示,該星敏感器的處理器采用Microsemi公司某系列的SOC FPGA。FPGA側(cè)主要完成對(duì)探測(cè)器的驅(qū)動(dòng)、星圖數(shù)據(jù)接收、星像坐標(biāo)提取等操作,ARM主要完成星圖識(shí)別和姿態(tài)解算。探測(cè)器面陣為2048×2448,像素輸出速率為120MHz,F(xiàn)PGA內(nèi)部處理時(shí)鐘頻率為120MHz。下面對(duì)FPGA提取結(jié)果以及數(shù)據(jù)更新率進(jìn)行驗(yàn)證。 圖1 實(shí)驗(yàn)示意圖Fig.1 Schematic diagram of experimental equipment 測(cè)試方法為將兩種方法集成到一個(gè)硬件平臺(tái)上,固定星敏感器與星模擬器相對(duì)位置不動(dòng),采集1000幀星圖,分別采用文獻(xiàn)[3]提出的傳統(tǒng)星像坐標(biāo)實(shí)時(shí)提取方法和本文敘述的星像坐標(biāo)實(shí)時(shí)提取方法對(duì)這1000幀星圖進(jìn)行坐標(biāo)提取,并將各自的坐標(biāo)提取結(jié)果輸出至上位機(jī)。對(duì)兩種方法的提取結(jié)果進(jìn)行比較,星圖中某一恒星星像坐標(biāo)曲線分別如圖2和圖3所示。 (a) x方向星點(diǎn)位置 (b) y方向星點(diǎn)位置圖2 文獻(xiàn)[3]方法坐標(biāo)計(jì)算結(jié)果Fig.2 Coordinate calculation results with method presented in Ref[3] (a) x方向星點(diǎn)位置 (b) y方向星點(diǎn)位置圖3 本文敘述方法坐標(biāo)計(jì)算結(jié)果Fig.3 Coordinate calculation results with the method presented in this paper 從圖2和圖3可知,二者對(duì)同一恒星星像坐標(biāo)的計(jì)算結(jié)果完全相同,這是由于二者均采用重心法[12]進(jìn)行坐標(biāo)計(jì)算;而不同之處在于,文獻(xiàn)[3]提取坐標(biāo)時(shí)處理1個(gè)像素需要5個(gè)時(shí)鐘周期,而本文敘述方法由于優(yōu)化了處理流程,將逐個(gè)像素聚類的方式優(yōu)化成像素隊(duì)列聚類的方式,處理1個(gè)像素僅需要1個(gè)時(shí)鐘周期。所以二者提取的星像坐標(biāo)標(biāo)準(zhǔn)差均為0.0223像素,即采用本文方法提取的星像坐標(biāo)精度與文獻(xiàn)[3]提取的星像坐標(biāo)精度一樣。 測(cè)試方法為在FPGA中設(shè)計(jì)一個(gè)計(jì)數(shù)器,每1μs增加1個(gè)計(jì)數(shù)值,當(dāng)坐標(biāo)提取結(jié)束后讀取該計(jì)數(shù)器的值連同當(dāng)前幀的坐標(biāo)值一同輸出。應(yīng)用同一硬件平臺(tái)分別采用文獻(xiàn)[3]提出的傳統(tǒng)星像坐標(biāo)實(shí)時(shí)提取方法和本文敘述的星像坐標(biāo)實(shí)時(shí)提取方法,得到的結(jié)果如表1和表2所示。 表1 文獻(xiàn)[3]方法數(shù)據(jù)更新率測(cè)試結(jié)果 表2 本文敘述方法數(shù)據(jù)更新率測(cè)試結(jié)果 根據(jù)表1可知,采用文獻(xiàn)[3]方法提取星像坐標(biāo)的提取周期穩(wěn)定在218ms,數(shù)據(jù)更新率約為4.5Hz,這是因?yàn)槲墨I(xiàn)[3]提出的傳統(tǒng)實(shí)時(shí)提取方法處理1個(gè)像素需要5個(gè)時(shí)鐘周期,所以在FPGA處理頻率設(shè)為120MHz的條件下,僅能將探測(cè)器的數(shù)據(jù)讀出速率限制為24MHz。而本文敘述方法處理1個(gè)像素只需要1個(gè)時(shí)鐘周期,同樣在FPGA處理頻率設(shè)為120MHz的條件下,探測(cè)器的數(shù)據(jù)讀出速率能夠達(dá)到120MHz。從表2可知,星敏感器輸出星像坐標(biāo)的周期穩(wěn)定在46ms,所以星敏感器的數(shù)據(jù)更新率能夠達(dá)到21.7Hz。因此采用本文方法提取星像坐標(biāo)時(shí),星敏感器的數(shù)據(jù)更新率明顯提高。 從實(shí)驗(yàn)結(jié)果可以得出,采用行列聚類并行的星像坐標(biāo)方法提取坐標(biāo)時(shí),在相同工作頻率且不降低星像坐標(biāo)精度的前提下,提取星像坐標(biāo)的時(shí)間僅為文獻(xiàn)[3]敘述方法的21.1%,大大減少了提取星像坐標(biāo)的時(shí)間,為進(jìn)一步提高星敏感器的數(shù)據(jù)更新率奠定了基礎(chǔ)。 采用大面陣圖像傳感器是星敏感器提高精度的重要手段,也是發(fā)展的必然趨勢(shì)[13-14]。而隨著傳感器面陣的增加,數(shù)據(jù)讀出時(shí)間也必然增加,傳統(tǒng)方法難以提高星敏感器的數(shù)據(jù)更新率。本文敘述方法可在探測(cè)器高數(shù)據(jù)輸出速率的條件下,實(shí)現(xiàn)對(duì)恒星星像坐標(biāo)的實(shí)時(shí)提取,并達(dá)到1個(gè)時(shí)鐘周期處理完1個(gè)像素的目的,與現(xiàn)有的實(shí)時(shí)提取方法相比,可使星敏感器的數(shù)據(jù)更新率提高近5倍,因此該方法不但具有實(shí)時(shí)性,而且具有較好的魯棒性。2 實(shí)驗(yàn)結(jié)果
2.1 坐標(biāo)提取精度測(cè)試
2.2 數(shù)據(jù)更新率測(cè)試
3 結(jié)論