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

硬體規格¶
| 項目 | 規格 |
|---|---|
| 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 Params 並 Reboot 後,Mission Planner Status 應顯示:
- gpsstatus ≥
3(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_CHECK、EK3_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:
- 確認偵測 — BMM150 應以外部羅盤身分出現(若無其他外部羅盤,通常為 priority 1)
- 停用內部羅盤 — 為求最佳 yaw 表現,外部羅盤健康時應取消內部羅盤勾選(SparkNavi Blue 無內部羅盤,本步驟自動完成)
- 設定方向 — 設
COMPASS_ORIENT對應 GPS 模組的實際安裝方向(PCB 絲印的箭頭應指向機頭;若有旋轉,依此設定) - 校正 — 執行 on-board 或 Mag 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 修正資料。