徐 倩 宋茂忠
(南京航空航天大學(xué)電子信息工程學(xué)院 南京 211106)
GLONASS 實(shí)時模擬器普遍使用的是DSP+FPGA 架構(gòu),以DSP 為控制核心進(jìn)行復(fù)雜的數(shù)字運(yùn)算[1~2]。DSP 端需要實(shí)時將計算的衛(wèi)星號、載波頻率字、碼頻率字、碼初相和電文初相等數(shù)據(jù)傳送給FPGA 處理[3]。GLONASS ICD 建議采用四階Run?ge-Kutta數(shù)值積分法來計算衛(wèi)星位置[7~8],該算法需反復(fù)迭代,積分步驟太多,難以滿足GLONASS模擬器的實(shí)時計算[4]。
針對GLONASS 積分運(yùn)算的弊端,柯福陽等提出了自動積分步長的龍格庫塔積分法,在原有積分模型基礎(chǔ)上進(jìn)行優(yōu)化,但是效果有限[5],朱海波等提出了一種快速定軌方法,每一歷元只需由上一歷元信息通過一次積分即可算出,但是歷元之間的數(shù)據(jù)具有依賴性[6]。積分法如果想在一段較長的時間內(nèi)保持計算精度,必然意味著反復(fù)迭代。
而開普勒軌道根數(shù)法計算衛(wèi)星位置,公式簡單,無需反復(fù)迭代[9~10],本文提出了一種基于開普勒軌道根數(shù)的GLONASS 衛(wèi)星定位算法,通過導(dǎo)航電文先獲得多組衛(wèi)星的位置矢量數(shù)據(jù),然后通過擬合算法將GLONASS衛(wèi)星位置的計算通過一組軌道參數(shù)來實(shí)現(xiàn)。所有位置的計算只依賴于一組星歷參數(shù),滿足了模擬器實(shí)時傳輸數(shù)據(jù)的需要。
軌道根數(shù)可以用于描述衛(wèi)星在太空中運(yùn)行位置、運(yùn)動方向等狀態(tài)信息。對軌道根數(shù)的求解精確程度也大大影響著我們定位算法的精確度。軌道根數(shù)的擬合大多數(shù)利用的是衛(wèi)星在運(yùn)行軌道中的位置坐標(biāo),擬合出的結(jié)果表示為六個開普勒軌道根數(shù)和九個攝動調(diào)和參數(shù)[11]。
由于GPS是目前最為成熟的衛(wèi)星系統(tǒng),我們以GPS的6個開普勒軌道參數(shù)和9個攝動參數(shù)作為狀態(tài)參數(shù)進(jìn)行擬合。由多個離散的衛(wèi)星地固坐標(biāo)位置,可以擬合出相應(yīng)的狀態(tài)參數(shù)。這里離散的坐標(biāo)位置我們通過GLONASS 的導(dǎo)航電文,由Run?ge-Kutta積分算出。
根據(jù)GPS衛(wèi)星位置的計算方法,我們列出算法的狀態(tài)方程和觀測方程為
式中Y是觀測列矢量,含m個觀測量,每個列矢量都對應(yīng)相應(yīng)時刻的衛(wèi)星位置分量。t是位置坐標(biāo)對應(yīng)的時刻,t0是狀態(tài)參數(shù)的參考時刻,X表示衛(wèi)星的狀態(tài)參數(shù),X0即是待估測的狀態(tài)參數(shù),這里取
由于式(1)和式(2)都不是線性方程,無法直接求解。于是為了求解,我們必須將這兩個方程線性化,并進(jìn)行迭代求解。
令Xi0是狀態(tài)參數(shù)X0的第i次迭代的初值,由此可以將式(2)在Xi0處進(jìn)行展開,舍去二階以上的小量,得
令
x0表示狀態(tài)參數(shù)第i次迭代的初值Xi0所求的值X0的差:
y表示t時刻下的觀測列矢量與第i次迭代的初值Xi0所求的觀測列矢量的差:
于是,
式中:v為誤差方程。
根據(jù)最小二乘原理,可得
因此,每次迭代后,狀態(tài)參數(shù)為
當(dāng)滿足式(12)時,不再迭代。
經(jīng)過轉(zhuǎn)換可得
由式(13)和式(14)可推出觀測列矢量對所求狀態(tài)矢量的偏導(dǎo)數(shù),這里不再給出推導(dǎo)過程。
將所得偏導(dǎo)數(shù)計算結(jié)果帶入式(7),經(jīng)式(10)反復(fù)迭代后,即可求得滿足精度需求的6 個開普勒軌道根數(shù)和9 個攝動參數(shù),再將該參數(shù)用于GLONASS 模擬器計算衛(wèi)星位置,即可實(shí)現(xiàn)在滿足衛(wèi)星位置精度需求的同時,極大地降低了求解的時間復(fù)雜度。
選用GLONASS 導(dǎo)航系統(tǒng)7 號衛(wèi)星的數(shù)據(jù)進(jìn)行測試,第一個歷元選取2017 年5 月12 日10 時15分,擬合算法共選取了8 個歷元,歷元間隔3 分鐘,第一個歷元為2017 年5 月12 日10 時15 分,最后一個歷元間隔為2017 年5 月12 日10 時36 分。由于導(dǎo)航電文只能提供15分、45分時刻的導(dǎo)航數(shù)據(jù),因此其他時刻的衛(wèi)星位置數(shù)據(jù)只能通過其最近時刻的已知衛(wèi)星位置數(shù)據(jù)用Runge-Kutta積分法算出。
圖1是由8 個衛(wèi)星位置擬合出的6 個開普勒軌道參數(shù)和9 個攝動參數(shù)結(jié)果。對應(yīng)的時間是GPS周1948,GPS周內(nèi)秒339300.000。
圖1 3分鐘間隔擬合開普勒參數(shù)
圖2是兩種方法計算出的八個點(diǎn)的衛(wèi)星位置誤差圖,不同坐標(biāo)分量由不同顏色表示。
圖2 不同坐標(biāo)分量的誤差圖
由圖2 可知,隨著時間的后移,外推能力逐漸減弱,誤差開始增大。在圖3 所示的時間內(nèi),衛(wèi)星位置外推算法的精確性都可以得到保證,各個坐標(biāo)分量的誤差不超過40cm,GLONASS 導(dǎo)航電文每隔30min 更新一次,最大外推時間為前后15min,該擬合算法完全可以滿足GLONASS衛(wèi)星導(dǎo)航系統(tǒng)的精度需求。
上述數(shù)據(jù)是由原始數(shù)據(jù)每3min 一個衛(wèi)星位置擬合得出,為了獲得更加精確的擬合結(jié)果,我們還可以改變衛(wèi)星位置的間隔時間,研究不同間隔時間下的衛(wèi)星位置擬合出的開普勒參數(shù)所計算出的衛(wèi)星位置的精確性。
圖3~5是GLONASS 5 號 衛(wèi) 星 在2020 年2 月21日2 時15 開始的以2min 間隔、3min 間隔、4min 間隔、8min 間隔、12min 間隔下的擬合結(jié)果計算出的衛(wèi)星位置不同分量下的對比誤差圖。
圖3 不同間隔下的X軸的誤差圖
圖4 不同間隔下的Y軸的誤差圖
圖5 不同間隔下的Z軸的誤差圖
由圖可知,用于擬合的衛(wèi)星位置間隔越小,擬合出的開普勒參數(shù)精度相對越高,計算出的衛(wèi)星位置越精確;所有間隔的擬合精度都呈現(xiàn)出了隨著外推時間的推移,精度越來越低的現(xiàn)象,在GLONASS衛(wèi)星前后外推15min 的時間內(nèi),小間隔擬合能夠保持一個較高的精度,滿足了實(shí)時衛(wèi)星導(dǎo)航模擬器的計算需求。
本文設(shè)計的開普勒參數(shù)擬合算法能夠生成較為精確的開普勒軌道根數(shù),擬合外推時間遠(yuǎn)大于GLONASS 星歷的最大外推時間,可在不改變GLONASS 廣播電文參數(shù)的前提下,在客戶端用于GLONASS 衛(wèi)星導(dǎo)航系統(tǒng)衛(wèi)星位置的計算。算法只需通過C++軟件平臺實(shí)現(xiàn),成本低、效率高,能夠更精確、更快地計算出衛(wèi)星位置,避免了Runge-Kutta積分的反復(fù)迭代,具有一定應(yīng)用價值。