SparkNavi F9P GPS 模組設定

SparkNavi F9P GPS 模組 整合 u-blox ZED-F9P-04B 多頻 RTK 接收器與 BMM150 羅盤於 36.5 × 36.5 mm 板上。可在 SparkNavi Blue 飛控板上作為 GPS1GPS2 或同時雙 GPS 使用,並相容 Pixhawk / ArduPilot / iNAV 韌體。

SparkNavi F9P GPS 模組


硬體規格

項目 規格
GNSS 接收器 u-blox ZED-F9P-04B(多頻 L1 / L2 / E5b)
支援衛星系統 GPS(L1C/A L2C)、GLONASS(L1OF L2OF)、Galileo(E1-B/C E5b)、BeiDou(B1I B2I)、QZSS(L1C/A L2C)
SBAS WAAS、EGNOS、MSAS、GAGAN、SouthPAN
精度 (視天線而定) <1 cm 搭配基站可達 35 km · 1 cm 搭配 NTRIP 可達 35 km · 4 cm SSR · 1.5 m 單獨運作 · 0.9 m SBAS
更新率 預設 1 Hz · 最高效能 10 Hz · 降效能可達 20 Hz
首次定位 冷啟動 25 秒 / 熱啟動 2 秒 · RTK 首次定位 35 秒冷啟動
羅盤 Bosch BMM150(I²C 三軸磁力計)
功能 Base & Rover、RAW UBX 輸出
介面 UART × 1、USB Type-C × 1
工作溫度 −40°C 至 +85°C
尺寸 36.5 × 36.5 mm,鎖孔間距 30.5 × 30.5 mm,10.0 g
產地 台灣設計與製造

天線選擇決定實際精度

上述厘米級精度需搭配 多頻天線,涵蓋 L1 / L2 / E5b 全頻段,並具備相位中心穩定與抗多路徑特性(通常為測繪等級的螺旋或 patch 天線)。若使用一般單頻 patch 天線,即使有 RTK 修正,實際精度仍會退回單獨運作 / SBAS 等級。天線選擇是本模組可達精度最大的單一影響因素。


硬體接線

SparkNavi F9P 模組使用 6-pin 連接器:

Pin 信號 說明
1 +5V 模組電源
2 GPS RX UART 接收(由飛控 TX)
3 GPS TX UART 發送(至飛控 RX)
4 SCL I²C 時脈(BMM150 羅盤)
5 SDA I²C 資料(BMM150 羅盤)
6 GND 接地

接到 SparkNavi Blue GPS1

SparkNavi Blue 的 GPS1 為 8-pin 連接器,前 5 個信號腳位與 F9P 模組一對一對應;Blue 的 6–7 腳(SAFETY_SWITCH / LED)在本模組未使用。

Blue GPS1 Pin 信號 SparkNavi F9P Pin
1 +5V 1(+5V)
2 GPS1_TX 2(GPS RX)
3 GPS1_RX 3(GPS TX)
4 I2C2_SCL 4(SCL)
5 I2C2_SDA 5(SDA)
6 SAFETY_SWITCH —(不接)
7 SAFETY_SWITCH_LED —(不接)
8 GND 6(GND)

接到 SparkNavi Blue GPS2

SparkNavi Blue 的 GPS2 為 6-pin 連接器,與 F9P 模組一對一直接對應。

Blue GPS2 Pin 信號 SparkNavi F9P Pin
1 +5V 1(+5V)
2 GPS2_TX 2(GPS RX)
3 GPS2_RX 3(GPS TX)
4 I2C2_SCL 4(SCL)
5 I2C2_SDA 5(SDA)
6 GND 6(GND)

Note

GPS1 與 GPS2 在 SparkNavi Blue 上共用同一條 I²C2 匯流排。同時接兩顆 SparkNavi F9P 時,兩顆 BMM150 羅盤皆會以不同位址被 ArduPilot 偵測到,並自動指派為主要與次要外部羅盤。


ArduPilot 參數 — 單一 GPS(主要)

只接一顆 SparkNavi F9P 模組到 GPS1 時,ArduPilot 預設的串列埠設定(GPS UART 230 400 baud)已可直接使用。需確認的關鍵參數:

參數 數值 說明
GPS1_TYPE 2(u-Blox) u-blox 驅動程式(自動偵測 F9P)
GPS_AUTO_CONFIG 3 啟動時清除非 ArduPilot 設定並套用預設值(建議 u-blox Gen 9+ 模組使用)
GPS_AUTO_SWITCH 1(Use best) 預設值,依定位品質切換
GPS_PRIMARY 0(GPS1) 第一個 GPS 為主要

Write ParamsReboot 後,Mission Planner Status 應顯示:

  • gpsstatus3(3D fix);4 = DGPS,5 = RTK Float,6 = RTK Fixed
  • satcount 在天空無遮蔽時通常 20–30 以上(多衛星系統)

ArduPilot 參數 — 雙 GPS

使用兩顆 SparkNavi F9P 模組(GPS1 + GPS2)時,兩者均為相同的多頻 F9P 單元。建議切換策略為 Blend

參數 數值 說明
GPS1_TYPE 2(u-Blox) 主要 GPS
GPS2_TYPE 2(u-Blox) 次要 GPS
GPS_AUTO_CONFIG 3 啟動時清空 u-blox 設定
GPS_AUTO_SWITCH 2(Blend) 將兩組解算結果平均
GPS_PRIMARY 0(GPS1) 非混合時 GPS1 為主要
GPS_INJECT_TO 127(Broadcast) 將 RTCM 修正資料同時送至兩顆 GPS — RTK + NTRIP 必設

為什麼兩顆相同 F9P 要用 Blend?

GPS_AUTO_SWITCH = 2(Blend)專為 兩顆相同型號、相同品質的 GPS 設計。兩顆 F9P 正常情況下會產生品質相當的解算結果,blending 可抑制任一單元的瞬時誤差。如果兩顆 GPS 不對稱(例如一顆 F9P + 一顆 M8N),應使用 4(Use Primary if 3D fix)。


GPS 自動配置(GPS_AUTO_CONFIG)

GPS_AUTO_CONFIG 控制 ArduPilot 是否在啟動時改寫 GPS 模組的內部設定:

數值 行為 何時使用
0 停用自動配置 僅當你已透過 u-center 寫入自訂 GPS 設定時 — SparkNavi F9P 不建議
1 自動配置串列 GPS 模組 預設值,適用大多數情境
2 同時自動配置 DroneCAN GPS 模組 設定 GPS for Yaw / Moving Baseline(DroneCAN 接線)時必要
3 清除所有非 ArduPilot 的 u-blox 設定並重新套用預設 SparkNavi F9P 建議值 — 每次啟動皆保證乾淨的已知配置(u-blox Gen 9+)

從 Moving Baseline 模式回復

若曾設為 GPS_AUTO_CONFIG = 2 用於 Moving Baseline,之後要恢復一般(非 moving baseline)運作時,需連接到 DroneCAN 週邊裝置手動將內部 GPSx_TYPE 參數還原為預設值。詳見 ArduPilot Positioning Landing Page


GPS 自動切換(GPS_AUTO_SWITCH)

接兩顆 GPS 時,GPS_AUTO_SWITCH 決定 ArduPilot 採用哪一組解算:

數值 行為 適用情境
0 Use Primary 永遠使用 GPS_PRIMARY 指定的 GPS 次要 GPS 僅為被動備用時
1 Use Best 取定位狀態較佳者(RTK > DGPS > 3D);相同則取衛星數較多者 兩顆 GPS 品質相當的一般預設
2 Blend 將兩組解算結果平均 兩顆相同的 SparkNavi F9P — 建議使用
4 Use Primary if 3D fix 只要主要 GPS 有 3D fix 就使用,失去時才切換至次要 不對稱配置(例如 F9P + M8N 備用)

EKF3 也支援 GPS affinity 與 lane switching:EKF lane 可綁定特定 GPS 實例,該 GPS 變得不健康時整條 lane 會被切換。當 GPS_PRIMARY 用於 lane 且 GPS_AUTO_SWITCH 啟用時,lane 會跟隨 auto-switch 的決策。


GPS 抗干擾設定(EK3_OPTIONS bit 0)

對於在電磁雜訊較多或可能遭遇干擾環境下運作的平台(國防與工業 UAV 常見需求),ArduPilot 提供 EKF3 抗干擾機制:

啟用 EK3_OPTIONS bit 0(JammingExpected)後,EKF3 行為將改為:當 GPS 訊號丟失超過 2 秒且推算導航(dead reckoning)可行時,需重新通過起飛前對齊 GPS 品質檢查(EK3_GPS_CHECKEK3_CHECK_SCALE)才能再次使用 GPS。

此機制可避免「重新鎖定後立即取用可能已損毀的 GPS 資料」— 這正是蓄意干擾或欺騙下的典型失效模式。

關於「推算導航(dead reckoning)」的範疇

這裡所說的 dead reckoning,是 EKF3 在 GPS 短暫丟失期間,利用 IMU、磁力計、氣壓計等內部感測器進行的 短時間位置外推,有效時間以 計,而非分鐘以上。它與光纖陀螺 / 環形雷射陀螺(FOG / RLG)類的 戰術級純慣性導航(可獨立運作數分鐘至更久)在原理與精度量級上皆不同,不應混為一談。

因此,本選項解決的是「GPS 訊號被短暫干擾、隨後恢復」這類情境下的解算品質保護,而 不是 提供「長時間完全失去 GPS 訊號」下的飛行能力。長時間 GPS-denied 操作需要其他感測器來源,例如 光流 + 雷射測距、視覺慣性里程計(VIO)、SLAM,或外部精準導航資料注入;進一步參考 ArduPilot 的 GPS / Non-GPS Transitions 文件。

運作情境提醒

ArduPilot 預設行為假設電磁環境良性,GPS 重新鎖定後立刻採用。對於可能遭遇干擾的場景(國防、爭議空域附近、高功率 RF 發射源附近),啟用此選項提供重要安全餘裕。請務必搭配適當的 failsafe 設定(GPS 失效時 RTL / Loiter),並在實際運作情境下測試。


BMM150 羅盤

板載 BMM150 由 ArduPilot 自動在 I²C2 匯流排上偵測。

接線並重啟後,在 Mission Planner Setup → Mandatory Hardware → Compass:

  1. 確認偵測 — BMM150 應以外部羅盤身分出現(若無其他外部羅盤,通常為 priority 1)
  2. 停用內部羅盤 — 為求最佳 yaw 表現,外部羅盤健康時應取消內部羅盤勾選(SparkNavi Blue 無內部羅盤,本步驟自動完成)
  3. 設定方向 — 設 COMPASS_ORIENT 對應 GPS 模組的實際安裝方向(PCB 絲印的箭頭應指向機頭;若有旋轉,依此設定)
  4. 校正 — 執行 on-boardMag Cal 校正流程,將機身繞各軸旋轉

雙 GPS 的羅盤優先順序

兩顆 SparkNavi F9P 同時連接時,兩顆 BMM150 羅盤都會出現在 I²C2 上。設定 COMPASS_PRIO1_ID / COMPASS_PRIO2_ID(用 Compass 設定畫面中顯示的 device ID),讓 遠離電氣雜訊源(ESC、電源線)的 GPS 模組上的羅盤成為 priority 1。


驗證

完成設定後,Mission Planner HUD 應顯示:

  • 戶外 30 秒內取得 3D Fix 或更佳定位
  • 天空無遮蔽時 Sat count 通常 20–30 以上
  • HDOP 1 分鐘內低於 1.0
  • 啟用基站 / NTRIP 修正後約 35 秒取得 RTK Fixed

RTK 運作時,設 GPS_INJECT_TO = 127 並透過 Mission Planner(Initial Setup → Optional Hardware → RTK GPS Inject)或自訂 NTRIP 客戶端串流 RTCM3 修正資料。


進階參考