定位的本質,就是精準測距
衛星定位可歸結為一句話:若你已知自己與數個已知位置參考點的距離,就能推算出自己的位置。那些衛星就是已知的參考點——在兩萬公里高空,持續廣播自身的位置與時間。
以時間量測距離
衛星訊號以光速傳播。每筆訊號都「標記」了精確的發射時間;接收端記錄抵達時間,兩者的時間差 Δt 乘以光速 c,即得出衛星到接收端的距離。此處的尺度相當驚人:1 奈秒的時間誤差 ≈ 0.3 公尺的測距誤差。這就是為何每顆衛星都搭載原子鐘,將時間精準維持在奈秒等級。
但為維持低成本,接收端採用普通的石英時鐘,帶有一個未知的「時鐘偏差」。因此我們實際量測到的並非真實距離,而是帶有偏差的「虛擬距離」——這個術語正是後續一切的關鍵。
三球交會,四星定位
知道與一顆衛星的距離,能將你定位在該衛星周圍的球面上;兩顆衛星,兩個球面交會出一個圓;三顆衛星,三個球面交會於一點——這就是「三邊測量」。那麼為何手機總是說「至少需要 4 顆衛星」?因為在 x, y, z 座標之外,還有第四個未知數:接收端的時鐘偏差。四個未知數至少需要四顆衛星,以聯立方程組一併求解。可視衛星越多,解算結果就越穩定、越精確。
衛星此刻在哪裡?——星曆
要以衛星作為參考,首先必須精確知道它的位置。每顆衛星在其導航訊息中廣播一組星曆參數——本質上是克卜勒軌道元素加上一系列擾動修正。將它們代入公式,接收機就能計算出衛星在任意瞬間的 3D 位置與速度。星曆會隨時間「失效」,因此必須持續更新。
時間是整個系統的靈魂
整個 GNSS 仰賴共同的時間基準(GPS 時間、北斗時間……)。衛星時鐘漂移、相對論效應、發射與接收端的硬體延遲——任何時間上的偏差都會直接放大為公尺級的定位誤差。就實際意義而言,定位首先且根本上是一個時間問題。
從太空廣播的究竟是什麼
衛星訊號其實是疊加在一起的三層結構。理解這三層,你就明白「用於測距的時間資訊」究竟藏在哪裡。
① 載波是數 GHz 的正弦波,負責將訊號「承載」到接收機。② 測距碼(PRN)是一組公開的偽隨機 0/1 序列,就像每顆衛星獨一無二的「指紋」:讓接收機能從同一頻率中分辨不同衛星(這就是 CDMA),也正是它攜帶了用於測距的精確時間資訊。③ 導航電文是最慢的資料層,向接收機廣播星曆、時鐘參數、衛星健康狀態等資訊。
現代系統更同時在多個頻率上廣播(GPS L1/L2/L5、北斗 B1/B2/B3……)。多星系、多頻段不僅讓可視衛星更多、提升遮蔽下的可靠度——雙頻組合更能直接消除大部分電離層誤差。這就是高精度定位的基礎,也正是我們的模擬器能在1176–1610 MHz 範圍內平行運行 48 個通道的原因。
訊號在途中經歷了什麼
從衛星到接收機超過 20,000 公里的路程中,訊號會一層一層被「打折」。要模擬得逼真、定位得精準,就必須逐一建模這些損耗——這正是專業模擬器與玩具之間的分水嶺。
主要的「折扣」包括:電離層延遲(隨太陽活動劇烈變化;通常以 Klobuchar 8 參數模型修正)、對流層延遲(取決於衛星仰角與測站海拔)、相對論效應(衛星移動速度快且處於較弱的重力場,導致其時鐘走得較快,必須修正——包含軌道離心率項)、群延遲 TGD/ISC(不同頻率間的硬體延遲偏差)、多路徑(經建築物/地面反射的訊號疊加在直射波上),以及衛星時鐘偏差(以 a0/a1/a2 多項式描述)。
這正是為什麼我們內建了完整的損耗與誤差模型鏈——Klobuchar 電離層、仰角相依的對流層、相對論與群延遲修正、仰角基礎的功率衰減。因此輸出的並非「理想訊號」,而是趨近真實天空的訊號;唯有如此,您用它執行的測試才真正有意義。
以軟體重建整片天空
GNSS 訊號模擬器所做的,就是將先前的流程「反向」執行:給定一個場景(時間、地點、運動軌跡),它計算每顆衛星相對於接收機的位置、虛擬距離與都卜勒,合成對應的射頻訊號,並饋入接收機。它將研發與測試從真實天氣和真實軌跡中解放出來——在合法的封閉環境內,您可以隨需重現任何場景:微弱訊號、高動態、特定星座組態……
這條路並非從零開始。在開源社群中,像 GPS-SDR-SIM 與 GNSS-SDR 等專案,早期就證明了可以「用軟體定義無線電(SDR)產生 GNSS 基頻訊號」——通常是單星座、單頻率,離線產生 IQ 檔案再回放。我們站在這些成果之上,但將其再推升一個數量級,達到工程級可用性。
首先,可靠性。舊式離線檔案方法無法執行長時間測試。我們打造了即時訊號引擎,支援7×24 連續運作——不掉訊、長時間運行無累積漂移——讓耐久測試與無人值守監控終於變得可行。
其次,成本。高階訊號源動輒六位數價格。我們在演算法層面深度優化,使引擎相容低成本 SDR 裝置,將實驗室等級的能力拉低到一般使用者可負擔的價位——讓更多團隊與個人真正用得起。
最後,效能。相較於單衛星、單頻率的原型,我們提供跨多星座、多頻段並行的 48 個通道——搭配前一節的完整誤差模型與1 kHz 更新率——在定位速度與精度上都帶來實質增益,足以驗證高動態、高精度的場景。更詳細的功能清單,請參閱首頁的 規格。
接收器如何完成定位
前面章節從系統角度說明了定位原理,本章則轉向接收端。對接收器而言,一次定位通常經歷四個階段——擷取、追蹤、解調與解算——在毫秒至秒級的時間內連續完成,隨後持續輸出定位結果。
擷取與追蹤
開機後,接收器必須先在雜訊中找到衛星訊號。衛星相對於地面高速移動,因此載波帶有明顯的都卜勒偏移,測距碼也帶有未知的碼相位。在擷取階段,接收器以本地複製的測距碼,在「都卜勒頻率 × 碼相位」的二維搜尋空間中與接收訊號進行相關運算;當兩者對齊且相關值出現明顯峰值時,即判定已擷取到該顆衛星。接著進入追蹤階段:碼追蹤迴路(DLL)維持碼相位對齊,載波追蹤迴路(PLL)維持載波鎖定,兩者共同確保接收器能穩定且連續地從訊號中讀取觀測量。若任一迴路失鎖,就必須重新擷取。
解調、解算與首次定位時間
追蹤穩定後,接收器完成位元同步與訊框同步,解調出導航電文,取得星曆與時鐘偏差等參數;據此計算該時刻每顆衛星的位置,再結合各自的虛擬距離,透過最小平方法或卡爾曼濾波器解算出接收器的位置、速度與時間(PVT)。從開機到首次輸出座標的時間稱為首次定位時間(TTFF):無任何先驗資訊的冷啟動通常需數十秒,而擁有快取星曆與概略位置的暖啟動往往只需數秒。可見衛星數越多、幾何分布越好(PDOP 越小),解算結果就越穩定、越精確。
手機等消費性裝置:應用層無法觸及訊號細節
有一點值得特別強調:在手機這類消費性裝置上,訊號接收、降頻、擷取、追蹤與訊息解調,全由 GNSS 晶片(或 SoC 內的射頻與基頻區塊)搭配作業系統底層共同處理。應用程式通常無法碰觸原始觀測量或訊號處理流程,只能透過系統定位服務取得最終結論——一組附帶精度估算的經緯度座標。(某些平台雖開放讀取原始量測值的介面,但並非每部裝置皆支援,且仍受系統授權與框架限制。)
這也說明了為何定位測試應作用於訊號層或系統層,而非在應用層修改數值:模擬器的目標是晶片本身。它在射頻前端重播足夠逼真的衛星訊號,讓整條鏈路以真實邏輯執行擷取、追蹤與求解,裝置自行算出預設位置——唯有這樣的驗證才具可信度,也唯有如此才能涵蓋弱訊號、多路徑與高動態等真實條件下的行為。
知其然,更知其所以然
從太空中一道微弱的訊號波束,到螢幕上一個穩定的座標,其間層層疊疊的測距、求解、計時與誤差模型協同運作。理解箇中原理,你將更清楚一部優秀的模擬器該在何處下功夫;而我們正是沿著這三條軸線——可靠性、成本與效能——將一個開源原型打磨成足以承擔嚴肅工程任務的產品。
想了解更多具體功能與合作方式,請回到產品首頁,或直接與我們聯繫。
AnyLocate 規格
以下為核心規格摘要;「✓」表示支援,其餘為具體數值。完整參數請參閱隨軟體提供之使用手冊及您的實際版本。