房曉偉,鄒吉煒,陳茂勝,孔令波
(長光衛(wèi)星技術(shù)有限公司,吉林 長春 130000)
數(shù)字太陽敏是衛(wèi)星系統(tǒng)中的敏感部件,屬于在軌常開機(jī)設(shè)備,功能為獲取衛(wèi)星相對于太陽的角度,其可靠性及精度直接影響整顆小衛(wèi)星的性能.隨著現(xiàn)代小衛(wèi)星技術(shù)的發(fā)展,要求其星上單機(jī)設(shè)備精度高、可靠性高、抗空間環(huán)境能力強(qiáng),而數(shù)字太陽敏算法的實(shí)現(xiàn)方式及標(biāo)定方法決定了其驅(qū)動電路板的體積及可靠性,所以,研究如何提高數(shù)字太陽敏精度及可靠性成為了一項(xiàng)關(guān)鍵技術(shù).
目前,利用數(shù)字太陽敏作為敏感部件的小衛(wèi)星采用DSP或微控制器作為核心控制器件,其多集成圖像處理單元和浮點(diǎn)運(yùn)算單元(質(zhì)心提取),方便算法的實(shí)現(xiàn).但DSP或微控制器程序多在SRAM中運(yùn)行,其線程的執(zhí)行方式對于大數(shù)據(jù)量的圖像數(shù)據(jù)多需要外部存儲器,而且抗空間環(huán)境能力差、功耗高、數(shù)據(jù)更新率低、外圍電路復(fù)雜.而航天級DSP成本高,使整個(gè)太陽敏系統(tǒng)增加了功耗和成本.針對以上問題,提出了基于FPGA的高可靠數(shù)字太陽敏算法,該FPGA類型基于FLASH架構(gòu),片內(nèi)存儲程序,抗空間環(huán)境能力強(qiáng),在FPGA內(nèi)部利用Verilog HDL語言編寫圖像中值濾波算法及太陽光斑質(zhì)心提取算法,并設(shè)計(jì)了數(shù)字太陽敏系統(tǒng)的標(biāo)定方法,實(shí)現(xiàn)了太陽敏角度的輸出,提高了小衛(wèi)星數(shù)字太陽敏的可靠性和控制精度[1].
基于FPGA的高可靠數(shù)字太陽敏系統(tǒng)如圖1 所示,系統(tǒng)包括濾光片、圖像傳感器模塊、通訊、圖像傳輸、控制器、電源模塊.
圖1 數(shù)字太陽敏系統(tǒng)框圖Fig.1 Block diagram of a digital sun sensor system
濾光片:濾光片有小孔,用于過濾太陽光,將太陽光斑照射至圖像傳感器.
圖像傳感器模塊:采用安森美CMOS灰度圖像傳感器,分辨率為1 280×1 024,像元尺寸為 5 μm×5 μm,工作溫度范圍為-40 ℃~85 ℃,用于將濾光片之后的光線成像至圖像傳感器光敏面,作為數(shù)字太陽敏的輸入.
通訊模塊:通訊模塊用于數(shù)字太陽敏和外部通訊,采用CAN總線和星上通訊設(shè)置閾值和曝光時(shí)間,傳輸數(shù)字太陽敏質(zhì)心坐標(biāo)和太陽敏角度.
圖像傳輸:圖像傳輸模塊主要用于地面標(biāo)定測試,將圖像傳感器的圖像輸出至測試設(shè)備,進(jìn)而對標(biāo)定公式進(jìn)行提取.
電源模塊:電源模塊1向圖像傳感器、CAN收發(fā)器、FPGA模塊、圖像傳輸模塊提供3.3 V的數(shù)字電源;電源模塊2向圖像傳感器提供1.8 V的數(shù)字電源、FPGA模塊提供1.5 V的數(shù)字電源.
控制器:控制器采用基于FLASH型FPGA,無需外接程序存儲器,抗空間環(huán)境能力強(qiáng),具有高可靠性的特點(diǎn).在FPGA內(nèi)部首先上電對圖像傳感器進(jìn)行初始化,之后采集圖像,進(jìn)行圖像濾波、質(zhì)心提取,輸出質(zhì)心坐標(biāo)至通訊模塊,達(dá)到太陽光角度采集的目的[2].
數(shù)字太陽敏算法包括圖像預(yù)處理算法、質(zhì)心提取算法和標(biāo)定算法,均基于Verilog HDL語言實(shí)現(xiàn).圖像預(yù)處理算法用于濾除圖像中的噪聲和圖像分割,利于質(zhì)心提取;質(zhì)心圖提取算法用于提取太陽光斑在圖像中的坐標(biāo)值;標(biāo)定算法用于標(biāo)定太陽入射角和輸出之間的關(guān)系.
1)圖像濾波
由于采集的圖像中含有噪聲,故需要對采集的圖像進(jìn)行濾波.圖像濾波主要有高斯濾波、中值濾波和均值濾波,由于高斯濾波相對于中值濾波、均值濾波具有靈活性強(qiáng)、圖像更平滑、更利于質(zhì)心算法的計(jì)算,因此采用高斯濾波濾除圖像的噪聲,高斯濾波算子如圖2(a) 所示.
圖2 高斯濾波器模板及3×3像素區(qū)域Fig.2 Gaussian filter template and 3×3 pixel area
假設(shè)圖2(b) 代表圖像中3×3像素點(diǎn),則有
2z6+z7+2z8+z9),(1)
式中:G為濾波后的像素灰度值,z1~z9為3×3像素矩陣,z1~z9的灰度值代表圖像的灰度值.由于式(1)中乘除法系數(shù)均為2的冪次,因此利用FPGA的移位寄存器和加法器可實(shí)現(xiàn)公式(1)中的運(yùn)算[3].
對于圖像3×3像素矩陣的提取,采用RAM緩存3行,如圖3 所示,每行圖像像素個(gè)數(shù)為 1 280,并在每行圖像的末尾利用移位寄存器緩存3列像素,則得出圖像的3×3矩陣.
圖3 利用FPGA內(nèi)RAM緩存圖像3×3矩陣Fig.3 Using the RAM in the FPGA to cache the image 3×3 matrix
根據(jù)式(1)得出濾波后的像素G進(jìn)行圖像分割.
2) 圖像分割
由于太陽光斑在圖像傳感器所占用像素最大輪廓為50×50,圖像分辨率為1 280×1 024,故圖像中有很多非太陽光斑區(qū)域,屬于無效區(qū),如圖4 所示.
圖4 太陽光斑在圖像中成像示意圖Fig.4 Schematic diagram of the sun spot in the image
圖像中的無效區(qū)像素灰度值相對于太陽光斑較低,且像素區(qū)域較大,對于質(zhì)心提取算法計(jì)算量較大,影響質(zhì)心提取算法的效率,故需要對圖像進(jìn)行分割
式中:G為式(1)濾波之后的像素灰度值;Dth為灰度閾值;Y為分割后的像素灰度值.利用FPGA比較器可實(shí)現(xiàn)式(2)的運(yùn)算.
分割的特征為太陽光斑像素值明顯高于無效區(qū)像素值,故設(shè)計(jì)閾值Dth,對于圖像灰度值小于閾值Dth的像素,其灰度值為0,大于閾值Dth的像素值保持不變,從而將太陽光斑和無效區(qū)分割,無效區(qū)像素灰度值為0,為質(zhì)心提取算法大大減少了計(jì)算量,式(2)中Y實(shí)際有效的灰度值為太陽光斑的像元面積[4].
質(zhì)心提取算法采用權(quán)值法,原理是將每個(gè)像素的灰度值作為權(quán)值與像素坐標(biāo)相乘,累加運(yùn)算,遍歷整幅圖像,對于目標(biāo)圖像區(qū)域分辨率為m×n的圖像
圖5 所示為單精度浮點(diǎn)數(shù)除法原理框圖,首先利用FPGA異或運(yùn)算確定符號位s,根據(jù)FPGA整數(shù)加減法實(shí)現(xiàn)階碼運(yùn)算,其次在FPGA內(nèi)部利用整數(shù)減法實(shí)現(xiàn)尾數(shù)相除,最后對尾數(shù)進(jìn)行格式化處理,得出計(jì)算結(jié)果z.
圖5 浮點(diǎn)數(shù)除法Fig.5 Floating point division
由于太陽敏生產(chǎn)過程中,加工和安裝工藝存在誤差,而這些誤差會嚴(yán)重影響太陽敏的精度,故需要對太陽敏進(jìn)行標(biāo)定.
1) 標(biāo)定原理
太陽敏標(biāo)定系統(tǒng)包括太陽模擬器、三軸轉(zhuǎn)臺和太陽敏.如圖6 所示,太陽敏固定在三軸轉(zhuǎn)臺的安裝面上,通過轉(zhuǎn)動轉(zhuǎn)臺調(diào)整太陽光線的入射角度.
圖6 太陽敏標(biāo)定系統(tǒng)結(jié)構(gòu)圖Fig.6 Structure diagram of the sun sensitive calibration system
太陽敏光學(xué)系統(tǒng)由結(jié)構(gòu)孔、濾光片和圖像傳感器光敏面組成.太陽敏光線引入單元和傳感器關(guān)系,如圖7所示,太陽光線通過結(jié)構(gòu)光孔入射至濾光片發(fā)生折射,進(jìn)而照射至圖像傳感器光敏面上,形成太陽光斑.圖7 中f為濾光片焦距,H為濾光片厚度,?為數(shù)字式太陽敏感器相對于入射光線的高低角,r為相對于標(biāo)定中心點(diǎn)半徑[6].
圖7 太陽敏光線引入單元和傳感器關(guān)系框圖Fig.7 The block diagram of the relationship between the sun sensitive light introduction unit and the sensor
2) 標(biāo)定流程
太陽敏標(biāo)定方法流程包括以下步驟:
步驟一:旋轉(zhuǎn)轉(zhuǎn)臺滾動軸,對太陽敏中心點(diǎn)進(jìn)行尋找.繞滾動軸旋轉(zhuǎn)360°,采集若干點(diǎn),對采集的點(diǎn)進(jìn)行均值計(jì)算
式中:xi,yi分別為太陽敏輸出的第i組x,y質(zhì)心坐標(biāo);x0,y0分別為太陽敏輸出x,y質(zhì)心坐標(biāo)均值;Xave,Yave分別為x,y坐標(biāo)的離散度.對轉(zhuǎn)臺的偏航及俯仰方向進(jìn)行調(diào)整,使其離散度滿足設(shè)計(jì)要求,進(jìn)而確定太陽敏的中心點(diǎn)(x0,y0);
步驟二:調(diào)整轉(zhuǎn)臺與太陽光軸的角度,采集太陽光斑坐標(biāo),遍歷整幅光敏面,記錄若干組太陽光斑坐標(biāo)和太陽角度數(shù)據(jù),有
式中:r為相對于標(biāo)定中心點(diǎn)(x0,y0)的半徑;x0為標(biāo)定中心點(diǎn)的x向坐標(biāo);y0為標(biāo)定中心點(diǎn)的y向坐標(biāo);xci,yci分別為第i組數(shù)據(jù)的質(zhì)心坐標(biāo).
根據(jù)圖7,利用光學(xué)折射定律,有
式中:f為濾光片焦距;H為濾光片厚度;?為數(shù)字式太陽敏感器相對于入射光線的高低角;n為已知量濾光片的折射率[7].
將式(7)和式(8)對等,r為公共量;x0,y0,n為已知量;f,H為待求變量;?為轉(zhuǎn)臺調(diào)整輸出的若干組角度值;xci,yci為太陽敏在轉(zhuǎn)臺調(diào)整時(shí)輸出的質(zhì)心坐標(biāo).
步驟三:利用非線性方程最小二乘法的求解,在n組測試數(shù)據(jù)下尋找出最合適的值,得出濾光片焦距f、濾光片厚度H;
步驟四:圖8 所示為數(shù)字式太陽敏感器輸出角度定義.X向太陽角:太陽矢量在YOZ平面上的投影與OZ軸的夾角,即圖8 中β角.Y向太陽角:太陽矢量在XOZ平面上的投影與OZ軸的夾角,即圖5 中α角.由式(9)和式(10)得出太陽敏輸出質(zhì)心坐標(biāo)和角度的關(guān)系.
(9)
式中:θ為方位角;x0為標(biāo)定中心點(diǎn)的x向坐標(biāo);y0為標(biāo)定中心點(diǎn)的y向坐標(biāo);xci,yci分別為第i組數(shù)據(jù)的質(zhì)心坐標(biāo);α為X向太陽角;β為Y向太陽角.
圖8 數(shù)字式太陽敏感器輸出角度定義Fig.8 Definition of the output angle of the digital sun sensor
由于FPGA計(jì)算能力有限,故標(biāo)定公式的運(yùn)算可在后端中心機(jī)、微計(jì)算機(jī)等具有浮點(diǎn)運(yùn)算單元的單機(jī)中運(yùn)行,利用太陽敏輸出的質(zhì)心坐標(biāo)和式(7)~式(8)的標(biāo)定公式得出太陽敏角度信息[8].
為驗(yàn)證算法的可行性,搭建系統(tǒng)硬件結(jié)構(gòu)圖,如圖9 所示.
圖9 數(shù)字太陽敏系統(tǒng)硬件結(jié)構(gòu)圖Fig.9 Digital sun sensor system hardware structure diagram
數(shù)字太陽敏系統(tǒng)包括電源模塊1、電源模塊2、濾光片、圖像傳感器、通訊模塊、圖像傳輸模塊、FPGA smartfution2.
圖10(a)為采集的原始圖像,圖10(b)為高斯濾波后的圖像,圖10(c)為分割后圖像.
(a) 原始圖像
找到該數(shù)字式太陽敏的主點(diǎn):x0=499.01,y0=489.82,n=1.5;對數(shù)字太陽敏進(jìn)行采點(diǎn),如表1 所示.
表1 數(shù)字太陽敏標(biāo)定采樣點(diǎn)Tab.1 Sampling points for digital sun sensor calibration
將x0,y0,n帶入式(7)和式(8),得出f=1.27 mm,H=0.15 mm.
將f,H,x0,y0,n值帶入式(7)~式(10),根據(jù)FPGA輸出的灰度質(zhì)心坐標(biāo)xci,yci可得出α,β.
表2 為太陽敏精度計(jì)算,反映太陽敏輸出角度信息和實(shí)際三軸轉(zhuǎn)臺輸出角度的對比情況.
表2 數(shù)字太陽敏精度計(jì)算Tab.2 Digital sun sensor accuracy calculation
實(shí)驗(yàn)表明,角度更新速率大于35 Hz,測量范圍為-60°~+60°,測量精度優(yōu)于0.03°.
本文從實(shí)際工程應(yīng)用角度出發(fā),為了提高小衛(wèi)星數(shù)字太陽敏系統(tǒng)的可靠性和精度,分析得出了基于FLASH型FPGA的高可靠性能.系統(tǒng)采用FPGA smartfution2實(shí)現(xiàn)數(shù)字太陽敏算法及外圍時(shí)序的驅(qū)動[9].在FPGA內(nèi)利用Verilog HDL語言編寫浮點(diǎn)數(shù)除法運(yùn)算單元、圖像高斯濾波算法、太陽光斑質(zhì)心提取算法,并設(shè)計(jì)數(shù)字太陽敏系統(tǒng)的標(biāo)定方法.實(shí)驗(yàn)結(jié)果顯示:角度更新速率大于35 Hz,測量范圍為-60°~+60°,測量精度優(yōu)于0.03°,驗(yàn)證了該算法能夠滿足數(shù)字太陽敏設(shè)計(jì)要求,進(jìn)而提高了小衛(wèi)星姿態(tài)控制精度[10].