技術維基

GNSS 定位:原理與訊號模擬實作

GPS、北斗、伽利略、GLONASS — 四大全球導航衛星系統,讓一顆成本幾美元的晶片就能算出自己在地球上任何角落的位置。這份手冊用淺白語言說明定位究竟如何發生、訊號沿途會打哪些「折扣」,以及我們的 GNSS 訊號模擬器如何在合法封閉環境中忠實「重現」這一切。

≈ 閱讀 12 分鐘· 6 個章節
01 · 核心原理 · 原理

定位的本質,就是精準測距

衛星定位可歸結為一句話:若你已知自己與數個已知位置參考點的距離,就能推算出自己的位置。那些衛星就是已知的參考點——在兩萬公里高空,持續廣播自身的位置與時間。

以時間量測距離

衛星訊號以光速傳播。每筆訊號都「標記」了精確的發射時間;接收端記錄抵達時間,兩者的時間差 Δt 乘以光速 c,即得出衛星到接收端的距離。此處的尺度相當驚人:1 奈秒的時間誤差 ≈ 0.3 公尺的測距誤差。這就是為何每顆衛星都搭載原子鐘,將時間精準維持在奈秒等級。

但為維持低成本,接收端採用普通的石英時鐘,帶有一個未知的「時鐘偏差」。因此我們實際量測到的並非真實距離,而是帶有偏差的「虛擬距離」——這個術語正是後續一切的關鍵。

三球交會,四星定位

知道與一顆衛星的距離,能將你定位在該衛星周圍的球面上;兩顆衛星,兩個球面交會出一個圓;三顆衛星,三個球面交會於一點——這就是「三邊測量」。那麼為何手機總是說「至少需要 4 顆衛星」?因為在 x, y, z 座標之外,還有第四個未知數:接收端的時鐘偏差。四個未知數至少需要四顆衛星,以聯立方程組一併求解。可視衛星越多,解算結果就越穩定、越精確。

GROUND r₁r₂r₃Δt 接收端
圖 1 · 三球交會與四星求解(第四顆衛星解算接收機時鐘偏差 Δt)

衛星此刻在哪裡?——星曆

要以衛星作為參考,首先必須精確知道它的位置。每顆衛星在其導航訊息中廣播一組星曆參數——本質上是克卜勒軌道元素加上一系列擾動修正。將它們代入公式,接收機就能計算出衛星在任意瞬間的 3D 位置與速度。星曆會隨時間「失效」,因此必須持續更新。

時間是整個系統的靈魂

整個 GNSS 仰賴共同的時間基準(GPS 時間、北斗時間……)。衛星時鐘漂移、相對論效應、發射與接收端的硬體延遲——任何時間上的偏差都會直接放大為公尺級的定位誤差。就實際意義而言,定位首先且根本上是一個時間問題

02 · 訊號 · 訊號

從太空廣播的究竟是什麼

衛星訊號其實是疊加在一起的三層結構。理解這三層,你就明白「用於測距的時間資訊」究竟藏在哪裡。

① 載波CARRIER ② 測距碼PRN / CDMA ③ 導航訊息NAV DATA 調變結合BPSK
圖 2 · 載波 × 測距碼 × 導航電文 — 三層調變

① 載波是數 GHz 的正弦波,負責將訊號「承載」到接收機。② 測距碼(PRN)是一組公開的偽隨機 0/1 序列,就像每顆衛星獨一無二的「指紋」:讓接收機能從同一頻率中分辨不同衛星(這就是 CDMA),也正是它攜帶了用於測距的精確時間資訊。③ 導航電文是最慢的資料層,向接收機廣播星曆、時鐘參數、衛星健康狀態等資訊。

現代系統更同時在多個頻率上廣播(GPS L1/L2/L5、北斗 B1/B2/B3……)。多星系、多頻段不僅讓可視衛星更多、提升遮蔽下的可靠度——雙頻組合更能直接消除大部分電離層誤差。這就是高精度定位的基礎,也正是我們的模擬器能在1176–1610 MHz 範圍內平行運行 48 個通道的原因。

03 · 傳播誤差 · 傳播

訊號在途中經歷了什麼

從衛星到接收機超過 20,000 公里的路程中,訊號會一層一層被「打折」。要模擬得逼真、定位得精準,就必須逐一建模這些損耗——這正是專業模擬器與玩具之間的分水嶺。

電離層延遲Klobuchar 8 參數 對流層延遲仰角/高度相依 相對論 · 群延遲TGD / ISC 建築物 · 反射體 多路徑反射 接收機
圖 3 · 訊號路徑上的主要誤差來源

主要的「折扣」包括:電離層延遲(隨太陽活動劇烈變化;通常以 Klobuchar 8 參數模型修正)、對流層延遲(取決於衛星仰角與測站海拔)、相對論效應(衛星移動速度快且處於較弱的重力場,導致其時鐘走得較快,必須修正——包含軌道離心率項)、群延遲 TGD/ISC(不同頻率間的硬體延遲偏差)、多路徑(經建築物/地面反射的訊號疊加在直射波上),以及衛星時鐘偏差(以 a0/a1/a2 多項式描述)。

這正是為什麼我們內建了完整的損耗與誤差模型鏈——Klobuchar 電離層、仰角相依的對流層、相對論與群延遲修正、仰角基礎的功率衰減。因此輸出的並非「理想訊號」,而是趨近真實天空的訊號;唯有如此,您用它執行的測試才真正有意義。

04 · 我們的實作 · 實作

以軟體重建整片天空

GNSS 訊號模擬器所做的,就是將先前的流程「反向」執行:給定一個場景(時間、地點、運動軌跡),它計算每顆衛星相對於接收機的位置、虛擬距離與都卜勒,合成對應的射頻訊號,並饋入接收機。它將研發與測試從真實天氣和真實軌跡中解放出來——在合法的封閉環境內,您可以隨需重現任何場景:微弱訊號、高動態、特定星座組態……

這條路並非從零開始。在開源社群中,像 GPS-SDR-SIM 與 GNSS-SDR 等專案,早期就證明了可以「用軟體定義無線電(SDR)產生 GNSS 基頻訊號」——通常是單星座、單頻率,離線產生 IQ 檔案再回放。我們站在這些成果之上,但將其再推升一個數量級,達到工程級可用性。

即時訊號引擎 · 7×24 連續運作 · 無掉訊 / 無漂移 場景與星曆SCENARIO 衛星軌道解算POS · RANGE 調變與合成CODE × CARRIER 誤差與損耗模型PROPAGATION IQ → SDR 射頻RF FRONT-END Klobuchar · 對流層 · 相對論效應 · 群延遲相容低成本 SDR→ 進入接收機天線
圖 4 · 從場景到射頻:軟體定義的 GNSS 訊號產生流程

首先,可靠性。舊式離線檔案方法無法執行長時間測試。我們打造了即時訊號引擎,支援7×24 連續運作——不掉訊、長時間運行無累積漂移——讓耐久測試與無人值守監控終於變得可行。

其次,成本。高階訊號源動輒六位數價格。我們在演算法層面深度優化,使引擎相容低成本 SDR 裝置,將實驗室等級的能力拉低到一般使用者可負擔的價位——讓更多團隊與個人真正用得起。

最後,效能。相較於單衛星、單頻率的原型,我們提供跨多星座、多頻段並行的 48 個通道——搭配前一節的完整誤差模型與1 kHz 更新率——在定位速度與精度上都帶來實質增益,足以驗證高動態、高精度的場景。更詳細的功能清單,請參閱首頁的 規格

05 · 接收端 · 接收端

接收器如何完成定位

前面章節從系統角度說明了定位原理,本章則轉向接收端。對接收器而言,一次定位通常經歷四個階段——擷取、追蹤、解調與解算——在毫秒至秒級的時間內連續完成,隨後持續輸出定位結果。

擷取與追蹤

開機後,接收器必須先在雜訊中找到衛星訊號。衛星相對於地面高速移動,因此載波帶有明顯的都卜勒偏移,測距碼也帶有未知的碼相位。在擷取階段,接收器以本地複製的測距碼,在「都卜勒頻率 × 碼相位」的二維搜尋空間中與接收訊號進行相關運算;當兩者對齊且相關值出現明顯峰值時,即判定已擷取到該顆衛星。接著進入追蹤階段:碼追蹤迴路(DLL)維持碼相位對齊,載波追蹤迴路(PLL)維持載波鎖定,兩者共同確保接收器能穩定且連續地從訊號中讀取觀測量。若任一迴路失鎖,就必須重新擷取。

解調、解算與首次定位時間

追蹤穩定後,接收器完成位元同步與訊框同步,解調出導航電文,取得星曆與時鐘偏差等參數;據此計算該時刻每顆衛星的位置,再結合各自的虛擬距離,透過最小平方法或卡爾曼濾波器解算出接收器的位置、速度與時間(PVT)。從開機到首次輸出座標的時間稱為首次定位時間(TTFF):無任何先驗資訊的冷啟動通常需數十秒,而擁有快取星曆與概略位置的暖啟動往往只需數秒。可見衛星數越多、幾何分布越好(PDOP 越小),解算結果就越穩定、越精確。

GNSS 晶片 + 作業系統底層(應用程式不可見) 天線ANTENNA 射頻前端射頻 / 降頻轉換 擷取 · 追蹤DLL / PLL 解調 · 求解PVT 應用層 · APP 系統定位服務LOCATION SVC APP經緯度 + 精度 僅有定位結果,別無其他
圖 5 · 接收機訊號處理鏈:應用層僅取得最終座標,永遠無法接觸訊號細節

手機等消費性裝置:應用層無法觸及訊號細節

有一點值得特別強調:在手機這類消費性裝置上,訊號接收、降頻、擷取、追蹤與訊息解調,全由 GNSS 晶片(或 SoC 內的射頻與基頻區塊)搭配作業系統底層共同處理。應用程式通常無法碰觸原始觀測量或訊號處理流程,只能透過系統定位服務取得最終結論——一組附帶精度估算的經緯度座標。(某些平台雖開放讀取原始量測值的介面,但並非每部裝置皆支援,且仍受系統授權與框架限制。)

這也說明了為何定位測試應作用於訊號層或系統層,而非在應用層修改數值:模擬器的目標是晶片本身。它在射頻前端重播足夠逼真的衛星訊號,讓整條鏈路以真實邏輯執行擷取、追蹤與求解,裝置自行算出預設位置——唯有這樣的驗證才具可信度,也唯有如此才能涵蓋弱訊號、多路徑與高動態等真實條件下的行為。

06 · 結語 · 結語

知其然,更知其所以然

從太空中一道微弱的訊號波束,到螢幕上一個穩定的座標,其間層層疊疊的測距、求解、計時與誤差模型協同運作。理解箇中原理,你將更清楚一部優秀的模擬器該在何處下功夫;而我們正是沿著這三條軸線——可靠性、成本與效能——將一個開源原型打磨成足以承擔嚴肅工程任務的產品。

想了解更多具體功能與合作方式,請回到產品首頁,或直接與我們聯繫。

↑ 回到頂端
附錄 · 完整規格 · 附錄

AnyLocate 規格

以下為核心規格摘要;「✓」表示支援,其餘為具體數值。完整參數請參閱隨軟體提供之使用手冊及您的實際版本。

01 頻段 / 衛星星系 衛星星系
GPSL1CA / L1C
北斗 (BDS)B1I / B1C
GalileoE1 / E5a
GLONASSG1 / G2
02 通道與射頻 RF / 通道
通道數48
射頻頻段1176 – 1610 MHz
IQ 量化2 / 4 / 8 / 16 位元
天線單通道發射
觀測量輸出
射頻功率可調整
輸出SDR 即時串流 · 離線 IQ 檔案
並行通道數動態調整(上限隨主機運算能力 / SDR 頻寬擴展)
03 場景模擬 SCENARIOS
靜態固定點
基本動態模擬
自訂動態軌跡
7×24 連續運行
覆蓋範圍全球任意地點 / 任意時間
時間系統UTC · GPS · BeiDou · Galileo · GLONASS
多星座混合模擬任意星座/訊號組合
04 動態模擬 DYNAMICS
更新率1 kHz
速度≤ 100 m/s
加速度≤ 2 G
定位精度≤ 5 m
都卜勒效應根據衛星與接收器相對速度即時建模
05 誤差與傳播模型 傳播
電離層模型Klobuchar 8 參數
對流層模型仰角 / 高度相依
衛星時鐘模型a0/a1/a2 多項式
相對論修正離心率項
群延遲TGD / ISC 訊號間偏差
仰角功率衰減
06 注入與進階功能 進階功能
自訂星曆注入
即時星曆熱切換運作中平滑切換,全程鎖定(交叉淡入淡出)
導航訊息注入
操控 / 週數翻轉
UTC 模型
衛星選擇控制可依星座 / PRN 遮罩單一衛星 + 仰角遮罩
設定檔格式JSON / XML
外部介面MCP / CLI
// 完整規格手冊隨軟體提供 · 實際功能取決於您的版本