徐 倩 宋茂忠
(南京航空航天大學電子信息工程學院 南京 211106)
GLONASS 實時模擬器普遍使用的是DSP+FPGA 架構,以DSP 為控制核心進行復雜的數字運算[1~2]。DSP 端需要實時將計算的衛星號、載波頻率字、碼頻率字、碼初相和電文初相等數據傳送給FPGA 處理[3]。GLONASS ICD 建議采用四階Run?ge-Kutta數值積分法來計算衛星位置[7~8],該算法需反復迭代,積分步驟太多,難以滿足GLONASS模擬器的實時計算[4]。
針對GLONASS 積分運算的弊端,柯福陽等提出了自動積分步長的龍格庫塔積分法,在原有積分模型基礎上進行優化,但是效果有限[5],朱海波等提出了一種快速定軌方法,每一歷元只需由上一歷元信息通過一次積分即可算出,但是歷元之間的數據具有依賴性[6]。積分法如果想在一段較長的時間內保持計算精度,必然意味著反復迭代。
而開普勒軌道根數法計算衛星位置,公式簡單,無需反復迭代[9~10],本文提出了一種基于開普勒軌道根數的GLONASS 衛星定位算法,通過導航電文先獲得多組衛星的位置矢量數據,然后通過擬合算法將GLONASS衛星位置的計算通過一組軌道參數來實現。所有位置的計算只依賴于一組星歷參數,滿足了模擬器實時傳輸數據的需要。
軌道根數可以用于描述衛星在太空中運行位置、運動方向等狀態信息。對軌道根數的求解精確程度也大大影響著我們定位算法的精確度。軌道根數的擬合大多數利用的是衛星在運行軌道中的位置坐標,擬合出的結果表示為六個開普勒軌道根數和九個攝動調和參數[11]。
由于GPS是目前最為成熟的衛星系統,我們以GPS的6個開普勒軌道參數和9個攝動參數作為狀態參數進行擬合。由多個離散的衛星地固坐標位置,可以擬合出相應的狀態參數。這里離散的坐標位置我們通過GLONASS 的導航電文,由Run?ge-Kutta積分算出。
根據GPS衛星位置的計算方法,我們列出算法的狀態方程和觀測方程為
式中Y是觀測列矢量,含m個觀測量,每個列矢量都對應相應時刻的衛星位置分量。t是位置坐標對應的時刻,t0是狀態參數的參考時刻,X表示衛星的狀態參數,X0即是待估測的狀態參數,這里取
由于式(1)和式(2)都不是線性方程,無法直接求解。于是為了求解,我們必須將這兩個方程線性化,并進行迭代求解。
令Xi0是狀態參數X0的第i次迭代的初值,由此可以將式(2)在Xi0處進行展開,舍去二階以上的小量,得
令
x0表示狀態參數第i次迭代的初值Xi0所求的值X0的差:
y表示t時刻下的觀測列矢量與第i次迭代的初值Xi0所求的觀測列矢量的差:
于是,
式中:v為誤差方程。
根據最小二乘原理,可得
因此,每次迭代后,狀態參數為
當滿足式(12)時,不再迭代。
經過轉換可得
由式(13)和式(14)可推出觀測列矢量對所求狀態矢量的偏導數,這里不再給出推導過程。
將所得偏導數計算結果帶入式(7),經式(10)反復迭代后,即可求得滿足精度需求的6 個開普勒軌道根數和9 個攝動參數,再將該參數用于GLONASS 模擬器計算衛星位置,即可實現在滿足衛星位置精度需求的同時,極大地降低了求解的時間復雜度。
選用GLONASS 導航系統7 號衛星的數據進行測試,第一個歷元選取2017 年5 月12 日10 時15分,擬合算法共選取了8 個歷元,歷元間隔3 分鐘,第一個歷元為2017 年5 月12 日10 時15 分,最后一個歷元間隔為2017 年5 月12 日10 時36 分。由于導航電文只能提供15分、45分時刻的導航數據,因此其他時刻的衛星位置數據只能通過其最近時刻的已知衛星位置數據用Runge-Kutta積分法算出。
圖1是由8 個衛星位置擬合出的6 個開普勒軌道參數和9 個攝動參數結果。對應的時間是GPS周1948,GPS周內秒339300.000。

圖1 3分鐘間隔擬合開普勒參數
圖2是兩種方法計算出的八個點的衛星位置誤差圖,不同坐標分量由不同顏色表示。

圖2 不同坐標分量的誤差圖
由圖2 可知,隨著時間的后移,外推能力逐漸減弱,誤差開始增大。在圖3 所示的時間內,衛星位置外推算法的精確性都可以得到保證,各個坐標分量的誤差不超過40cm,GLONASS 導航電文每隔30min 更新一次,最大外推時間為前后15min,該擬合算法完全可以滿足GLONASS衛星導航系統的精度需求。
上述數據是由原始數據每3min 一個衛星位置擬合得出,為了獲得更加精確的擬合結果,我們還可以改變衛星位置的間隔時間,研究不同間隔時間下的衛星位置擬合出的開普勒參數所計算出的衛星位置的精確性。
圖3~5是GLONASS 5 號 衛 星 在2020 年2 月21日2 時15 開始的以2min 間隔、3min 間隔、4min 間隔、8min 間隔、12min 間隔下的擬合結果計算出的衛星位置不同分量下的對比誤差圖。

圖3 不同間隔下的X軸的誤差圖

圖4 不同間隔下的Y軸的誤差圖

圖5 不同間隔下的Z軸的誤差圖
由圖可知,用于擬合的衛星位置間隔越小,擬合出的開普勒參數精度相對越高,計算出的衛星位置越精確;所有間隔的擬合精度都呈現出了隨著外推時間的推移,精度越來越低的現象,在GLONASS衛星前后外推15min 的時間內,小間隔擬合能夠保持一個較高的精度,滿足了實時衛星導航模擬器的計算需求。
本文設計的開普勒參數擬合算法能夠生成較為精確的開普勒軌道根數,擬合外推時間遠大于GLONASS 星歷的最大外推時間,可在不改變GLONASS 廣播電文參數的前提下,在客戶端用于GLONASS 衛星導航系統衛星位置的計算。算法只需通過C++軟件平臺實現,成本低、效率高,能夠更精確、更快地計算出衛星位置,避免了Runge-Kutta積分的反復迭代,具有一定應用價值。