唐 君 李 偉
(海軍大連艦艇學(xué)院航海系 大連116018)
天文自動導(dǎo)航系統(tǒng)采用大、小兩個視場同時同軸的觀測方法[1],針對大視場觀測天區(qū)范圍大、分辨率低;小視場觀測天區(qū)范圍小、分辨率高的特點,采用大、小視場結(jié)合辨識的方法,即大視場確定視軸的初始指向,為小視場提供先驗信息(視軸所指向的天區(qū)區(qū)號[2]),小視場在已知的天區(qū)信息的條件下進行精確的星信息匹配和天體辨識[3]。為了滿足天文自動導(dǎo)航系統(tǒng)的應(yīng)用需求,本文從原始星庫[4]的構(gòu)造入手,提出了一套較為完整的、面向大小雙視場的導(dǎo)航星庫和三角形星庫[5]的構(gòu)造方法。
源星庫是指從基本星表SKYMAP SKY2000 Version 4 Master Catalog中所提取的,經(jīng)過變星處理,雙星處理,數(shù)據(jù)格式轉(zhuǎn)換后生成的以供后續(xù)處理使用的導(dǎo)航星庫。
基本星表SKYMAP SKY2000 Version 4 Master Catalog中包括大量的變星[6]。由于變星視星等的不確定性,不利于星圖的識別,需對變星作剔除處理。Combined General Catalogue of Variable Stars變星表是SKY2000星表變星信息的主要來源之一,在對變星進行處理時,基于變星表信息,剔除星等變化較大的變星,對最大星等與最小星等差值不大于星敏感器[7]的星等誤差(可達0.2個星等)的變星予以保留。由于變星星表中的星號與基本星表中的星號并不完全一致,但兩星表中的星名信息完全一致,所以本文通過星名匹配的方法進行查找?;贛ATLAB程序,變星處理算法步驟如下:
Step 1 初始化,從基本星表中提取出導(dǎo)航星的星表文件star.txt,從變星星表中提取出變星的星表文件gvcs.txt;
Step 2 從star.txt中提取出星名name1和對應(yīng)的導(dǎo)航星的星號num;
Step 3 從gvcs.txt中提取出變星的星名name2;
Step 4 將每個name2與name1逐個比對,如果strncmp(name2,name1)==1,記錄星name1的星號num;
Step 5 從star.txt中剔除星號為num的星得到新的導(dǎo)航星星表文件。
基本星表中包括大量的雙星[8]。雙星間的角距[9]一般很小,雙星與其它星間的角距相差甚小,在建立星庫時必須進行剔除。在實際應(yīng)用中,定義星對角距小于一定角距門限(一般 ≤0.1°)的兩顆星為雙星,在建立導(dǎo)航星庫時,僅保留其中星等較低的星,剔除星等較高的星。
由于在天體識別的過程中,三角形信息表對雙星間的角距存在最小值要求,而最小值往往大于0.1°,因此,對于三角形星庫的構(gòu)造來說雙星的影響并不明顯,但為增強源星庫的應(yīng)用性以及為姿態(tài)計算做準備,雙星處理仍然必不可少。
SKY2000主星表包含了299,167顆星,視星等范圍從-1.4400到13.8100,并給出了恒星的詳細信息[10]。SKY2000主星表的數(shù)據(jù)格式如下:星號、赤經(jīng)時、赤經(jīng)分、赤經(jīng)秒、赤緯度、赤緯分、赤緯秒、赤經(jīng)自行、赤緯自行、星等、視差、徑向速度。根據(jù)星庫構(gòu)造要求,通過Matlab程序?qū)崿F(xiàn)了數(shù)據(jù)的格式轉(zhuǎn)換:星號、赤經(jīng)、赤緯、赤經(jīng)自行、赤緯自行、星等、視差徑向速度,其中赤經(jīng)自行和赤緯自行較之SKY2000星表初始數(shù)據(jù)都乘以了100,以便和項目的VC程序格式要求匹配。至此,源星庫構(gòu)造完畢。生成的star.txt文件可以通過簡單的星等控制的方法,快速生成視場所需要的各種星等的導(dǎo)航星庫。
天文自動導(dǎo)航系統(tǒng)的大視場用于天體辨識,確定視軸的初始指向,為小視場的精確天體辨識和姿態(tài)計算提供先驗信息,因此大視場要求對全天區(qū)一定星等的導(dǎo)航星進行星庫構(gòu)造。
圖1 源星庫生成過程
1)由于大視場觀測的天區(qū)范圍大,視場內(nèi)星體數(shù)量多,因而對星庫中導(dǎo)航星的數(shù)量需求較少。
2)由于大視場的分辨率相對較低,為保證能夠有效識別,要求導(dǎo)航星為星等較低的亮星。
3)要滿足在任何天區(qū)的視場范圍內(nèi)具有3顆以上的亮星,從而保證導(dǎo)航星庫的完備性。
根據(jù)以上的選取原則,從源星庫star.txt中提取星等小于5.8的導(dǎo)航星構(gòu)成大視場的導(dǎo)航星庫star5.8.txt,其中含有導(dǎo)航星4844顆,隨機取出的10000個視場中,星體個數(shù)多于3顆的概率在99.90%以上,滿足要求。
星等較低的亮星容易被星敏感器[11]觀測到,由亮星構(gòu)造的星三角形也最經(jīng)常被使用。由于亮星在天空中的分布不均勻,某些區(qū)域亮星非常集中,亮星之間的分開角較小,不利于提高姿態(tài)計算的精度?;谶@種前提,對每顆星賦予各自的優(yōu)先等級,分為A類星和B類星,以A類星為主構(gòu)造星三角形,可以減少儲存的三角形的數(shù)量,降低比對的次數(shù),進而節(jié)約比對時間。
圖2 有序三角形的構(gòu)成
對導(dǎo)航星分等,我們以某顆被判星為中心,適當(dāng)選取的劃分半徑R做圓,如果在該圓內(nèi)沒有低于該星星等的導(dǎo)航星存在,則該星被確定為A類星,反之,為B類星,構(gòu)造三角形時以A類星為主進行構(gòu)造。如果以某一A類星為中心的范圍內(nèi),有多于1顆以上的局域暗星存在,則該星被稱為較優(yōu)A類星,記為A+類星。如圖2所示,星三角形從大到小的三個角距被分別稱為第一角距J1、第二角距J2和第三星角距J3。第一角距J1由1號星和2號星組成,第二角距J2由1號星和3號星組成,第三角距J3由2號星和3號星組成。
構(gòu)造三角形星庫時,在一定的星角距閾值范圍內(nèi),以A類星為主構(gòu)造三角形,根據(jù)天體辨識的需求,三角形星庫中每個有序存儲單元中存儲了7項信息,分別為3顆星的星號和按降序排列的3個星間角距,以及該三角形的天區(qū)屬性,這種存儲方法有效解決了大視場三角形星庫繁瑣的全天區(qū)遍歷查找的冗余問題,節(jié)省了辨識時間。為了節(jié)省三角形信息的訪問時間,本文中的三角形星庫角距的搜索過程并沒有通過索引表和線性表的訪問,而是根據(jù)角距信息的降序排列在程序中直接進行折半查找。
以往的索引表和線性表的角距訪問過程把從星圖提取出的觀測星按一定規(guī)則構(gòu)成有序三角形,按照角距從大到小的原則,從有序三角形中提取前兩個星角距作為索引參量,訪問索引表,獲得該類三角形在線性表中的入口地址和該類三角形的數(shù)量,通過該入口地址訪問線性表;從線性表中獲得某三角形在三角形信息表中的地址,通過該地址訪問三角形信息表;在三角形信息表中得到導(dǎo)航星三角形的信息,并進行模式匹配;如果匹配成功,則通過構(gòu)成三角形的導(dǎo)航星的星號訪問導(dǎo)航星信息表,獲得該星的星表信息,并進行觀測時刻的恒星視位置計算。星角距訪問成功的前提是要有索引表文件和線性表文件的存在。由于需要存儲全天區(qū)所有導(dǎo)航星的三角形信息,所以索引表文件和線性表文件需要占用較大的內(nèi)存空間,如圖3所示。
圖3 省略索引表和線性表的星庫訪問過程
本文在三角形星庫的構(gòu)造過程中加入了天區(qū)屬性信息,所以在訪問時省略了對索引表和線性表的查找步驟,通過直接鎖定某一天區(qū)范圍內(nèi)的三角形信息進行區(qū)域內(nèi)的匹配訪問,經(jīng)實驗驗證,采用本文的三角形信息訪問方法,至少節(jié)省了5M的內(nèi)存空間和100ms的訪問時間。
本文根據(jù)大視場的視場角要求,采用球矩陣法[12]將天區(qū)分為288個15°× 15°的天區(qū),在已知天頂坐標后,通過天區(qū)赤經(jīng)、赤緯的上下限來確定大天區(qū),具體方法為:當(dāng)已知天頂?shù)淖鴺藭r,決定大天區(qū)的赤緯(南緯為“-”,北緯為“+”)的上限,可通過增加(減少)20°+視場/2+2°(誤差影響)到天頂赤緯,再除以15°加上7,取這個數(shù)據(jù)的整數(shù)部分就是赤緯分區(qū)號數(shù)的上限(下限)。
赤經(jīng)的上下限的求法與赤緯相似,但由于隨緯度不同赤經(jīng)弧長不同,需根據(jù)緯度,加或減20°+視場/2+2°(誤差影響)除以天頂赤緯的余弦值,然后除以15°,取整后加1。當(dāng)上下限對應(yīng)的天區(qū)跨在0°赤經(jīng)時,求取方法與赤緯相似。由此確定大天區(qū),在識別時,只對具有該大天區(qū)相應(yīng)天區(qū)屬性的星三角形進行比對,提高了星三角形的匹配效率。
小視場具有較高的分辨率,視場越小分辨率越高,姿態(tài)計算的精度也就越高。本文采用的是2.0°×2.0°的小視場。但隨著視場的減小,觀測到的天區(qū)范圍也將減小,觀測到的恒星等會增加。為滿足辨識要求,必須提高導(dǎo)航星的星等,而這又無法避免的造成導(dǎo)航星庫的容量急劇增加,影響了辨識時間和辨識效率。為解決這一系列的矛盾,本文對小視場導(dǎo)航星庫和三角形星庫采用多文件按區(qū)存儲的方法。
導(dǎo)航星庫應(yīng)該保證任意視場內(nèi)至少有三顆導(dǎo)航星的概率接近100%,才能保證導(dǎo)航星庫的全天區(qū)覆蓋。
分別以1.0°×1.0°,1.5°*1.5°,2.0°× 2.0°視場在全天球上隨機取出10000個視場,在9等星星庫的條件下,選取適當(dāng)?shù)姆謱影霃絉,視場中至少有三顆星的概率如下。
表1 視場含有≥3顆亮星概率
從表中可見,2°*2°視場中至少有三顆星的概率為99.80%,滿足全天區(qū)覆蓋要求。根據(jù)小視場對導(dǎo)航星的要求,從源星庫中提取出9.0星等以下的所有導(dǎo)航星生成star9.0.txt星庫文件。采用球矩陣法,按視場角的要求,把天區(qū)分成180×90個2.0°×2.0°的小區(qū)。根據(jù)star9.0.txt星庫文件中導(dǎo)航星赤經(jīng)、赤緯信息,進行天區(qū)分屬,把屬于某一小區(qū)的導(dǎo)航星信息存儲到一個個以區(qū)號命名的文件中。該存儲方法可以根據(jù)大視場提供的先驗信息直接鎖定所需要的區(qū)號文件,簡化了導(dǎo)航星信息的查找過程。
小視場三角形星庫的存儲信息和大視場相比,缺少了天區(qū)屬性信息,這是因為大視場三角形星庫容量較小,所有三角形信息都存儲的在一個文件下,程序需要通過天區(qū)屬性信息進行三角形匹配。而小視場三角形星庫信息容量巨大,所以采用和小視場導(dǎo)航星庫相似的方法,把星三角形進行天區(qū)分屬,然后把每個三角形信息存儲到相對應(yīng)的區(qū)號文件中,而且導(dǎo)航星區(qū)文件和三角形區(qū)文件采用根據(jù)大視場先驗信息指定讀取的方法,大大節(jié)省了程序運行的內(nèi)存開銷。
本文通過構(gòu)造源星庫并對存儲信息進行處理和格式整合,為導(dǎo)航星庫和三角形星庫的構(gòu)造提供了便利。采用大天區(qū)的確定和為大視場三角形星庫增加天區(qū)屬性的方法,改進了以往對三角形星庫進行遍歷查找所帶來索引速度慢、存儲容量大的不足。本文中面向視場的星庫構(gòu)造方法:大視場的星庫構(gòu)造,生成的是全天區(qū)的導(dǎo)航星庫和三角形星庫,而小視場的星庫構(gòu)造,生成的則是按區(qū)存儲的導(dǎo)航星庫和三角形星庫,該方法與前人的星庫構(gòu)造方法相比,具有更優(yōu)的適用性,節(jié)約了存儲容量,有效提高了天體辨識效率。