跳转至
教學·感測器

GPS F9P 模組設定

適用: SparkNavi Blue · ArduPilot 4.6.x 以上 · u-blox ZED-F9P + BMM150

本指南涵蓋 SparkNavi F9P RTK GPS 模組接到 SparkNavi Blue 的接線、ArduPilot 重要參數,以及——更重要的——為什麼我們建議這樣設。完整硬體規格請參考 SparkNavi F9P 產品頁

1. 你需要的硬體

  • 1 顆 SparkNavi F9P 模組(雙 GPS / RTK Yaw 設定則需 2 顆)
  • 1 副多頻 L1/L2/E5b 天線 (實際精度取決於天線品質,比任何其他因素都重要)
  • SparkNavi Blue 隨附的 GPS 連接線
  • 安裝有 Mission Planner 的 Windows 電腦(或 QGroundControl)

2. 接線

SparkNavi Blue 提供兩個 GPS 接口:GPS1(8-pin)與 GPS2(6-pin)。兩者共用 I²C2 匯流排——這正是為什麼每顆 F9P 上的 BMM150 羅盤都能被自動偵測。

訊號 F9P 腳位 Blue GPS1 腳位 Blue GPS2 腳位
+5 V 1 1 1
UART RX 2 2 (TX) 2 (TX)
UART TX 3 3 (RX) 3 (RX)
I²C SCL 4 4 4
I²C SDA 5 5 5
GND 6 8 6

接 GPS1 時,腳位 6、7(safety switch + LED)保持斷路即可。

3. ArduPilot 參數

單顆 F9P(接於 GPS1):

參數 數值 說明
GPS1_TYPE 2 u-blox 驅動
GPS_AUTO_CONFIG 3 建議值——見 §4
GPS_AUTO_SWITCH 1 採用最佳訊號
GPS_PRIMARY 0 以 GPS1 為主

雙 F9P(兩顆相同模組分別接 GPS1 與 GPS2):

參數 數值 說明
GPS1_TYPE / GPS2_TYPE 2 / 2 兩者皆 u-blox
GPS_AUTO_CONFIG 3 與單顆設定相同——見 §4
GPS_AUTO_SWITCH 2 Blend 模式——見 §4
GPS_INJECT_TO 127 向兩顆廣播 RTCM 修正

寫入參數後重新啟動飛控

4. 為什麼這樣設定

這是大部分設定教學會略過、但對實際運用最關鍵的部分。

為什麼 GPS_AUTO_CONFIG = 3

ArduPilot 預設的 GPS_AUTO_CONFIG = 1 會在開機時用已知良好的預設值設定 GPS,但不會清除模組內可能殘留的舊設定(不同 baud rate、不同訊息頻率、不同 RTCM 過濾規則等)。對於 u-blox Gen 9 等級的模組(ZED-F9P 屬於這代),這些殘留設定可能會與 ArduPilot 想做的事互相干擾,產生難以追蹤的問題。

GPS_AUTO_CONFIG 設為 3 會讓 ArduPilot 先清除模組內所有非 ArduPilot 設定,再套用預設值。結果是一個可重現、可預測的開機狀態——這在模組會在不同機體間移轉,或是模組從外場回來而你無法確定它的設定歷史時,影響非常大。

為什麼兩顆相同 F9P 要用 GPS_AUTO_SWITCH = 2(Blend)

Blend 模式的設計前提是「兩顆 GPS 是同型號、解算品質接近」。兩顆 F9P 都收一樣的星座、若有注入 RTCM 修正也吃同一套,產出的解算在統計上是等價的。取兩者平均能壓制各自獨立的瞬時誤差——精度雖然只小幅提升,但很穩定。

這跟混搭設定(例如 F9P + M8N)的情境完全不同。混搭情境下 F9P 明顯更好,你不會想讓 M8N 把它平均下來;該情境下應該用 GPS_AUTO_SWITCH = 4(主 GPS 有 3D fix 時優先用主 GPS)。

EKF3 抗干擾機制(EK3_OPTIONS bit 0)

對於可能在 RF 受干擾環境作業的平台——國防、軍事空域附近、高功率廣播或雷達發射源附近——將 EK3_OPTIONS bit 0 設為 1 會改變 EKF3 在 GPS 恢復後的行為。GPS 重新鎖定後,不會立刻被導航濾波器採用;必須先重新通過 preflight 階段的 GPS 品質檢查。這能避免被人為破壞過的 GPS 訊號在恢復後立刻被信任。

這個選項不能做什麼

這只在「短時間干擾後 GPS 恢復」這種情境下保護解算品質。它不是無 GPS 環境下的導航替代方案。持續無 GPS 的飛行需要光流 + 測距、視覺慣性里程計,或外部位置注入。

5. SparkNavi Blue 特有注意事項

幾件用 Blue 接 F9P 時專屬、不在通用 ArduPilot 文件中的事項:

兩顆 BMM150 共用 I²C2。 兩顆 F9P 接到 Blue 時,兩個內建的 BMM150 磁力計都會出現在同一條 I²C 匯流排上、但有不同的 I²C 位址。ArduPilot 會自動將兩者識別為外部羅盤。SparkNavi Blue 沒有內部羅盤,所以這兩顆 BMM150 會自動成為主、次羅盤——你不需要手動關閉內部羅盤。

羅盤優先順序——選遠離雜訊源的那顆。 在兩顆外部羅盤的情境下,COMPASS_PRIO1_ID 應設定為實體位置上離 ESC、電源線、高電流路徑較遠那顆 BMM150 的 device ID(可在 Mission Planner 的 Compass 設定畫面找到 ID)。這是在裝兩顆 GPS 的多旋翼上能單獨改善 yaw 穩定性最有效的一招。

原廠接線無需改造。 Blue 隨附的 GPS 連接線已照 1 對 1 對應接好,可直接使用。若你自行製作連接線(例如客製機體),請依照 §2 的腳位對照表接。

6. 驗證

完成接線、寫參數、重啟後,在 Mission Planner 中應該看到:

  • 3D fix 在戶外空曠處 30 秒內取得
  • 衛星數 20–30+ 顆(多星座是 F9P 的強項)
  • HDOP 一分鐘內降到 1.0 以下
  • 若有 RTK:開始注入 RTCM 修正後約 35 秒內進入 RTK FloatRTK Fixed

若你看到 3D fix 但開了修正後一直停在 RTK Float(或更差),最常見的原因是 GPS_INJECT_TO 沒設成 127

7. 疑難排解

症狀 可能原因
偵測不到 GPS 接線方向反了,或 GPS1_TYPE = 0
有 3D fix 但 HDOP 很高 天線位置不好——太靠近碳纖維,或天空遮蔽
卡在 RTK Float 天線是單頻的,或注入的修正流不是多頻
Pre-arm 提示 Compass FAILED COMPASS_ORIENT 與 GPS 模組實體朝向不一致

延伸閱讀