2025年12月16日火曜日

u-blox M10 測位頻度改善

ちょっと前に買った中華激安 GPS ロガーに載っている u-blox M10 という GNSS チップ,公称 10Hz で測位できるはずだが,測位してから数分経つと測位頻度が 6-8Hz 程度に低下することに気づいた.
不思議なことに室内での実験ではなかなか再現せず,車内 & 自作 Android アプリで頻発するので,自作 Android アプリの問題かと思ったが,PC <--> GPS ロガーでも測位頻度が低下していることを確認.
ということでこの GPS ロガーの実力であることが確定(;´д⊂)

改めて u-blox M10 (GPS チップ) のデータシートを眺めてみると,

  • 測位処理は MCU が行っており,捕捉する衛星数が多いと更新頻度が落ちる
    • アジア地域は BeiDou (中国のやつ) が多いので測位頻度は落ちがち
  • High Performance Mode という MCU クロックを上げる設定を行うと,測位頻度は上げられる

らしい.

まずは High Performance Mode に設定してみたが,見た感じ変わってなさそう.
あんま変わらなかったのでやり方は詳しくは書かないが,ここの P13 に書いてある.

で次なる作戦.

  • BeiDou を無効化する.これだけで捕捉衛星が 3/5 くらいになる.
  • 不要な NMEA センテンス出力を無効化する
  • ただし自作アプリ以外ではそれらを無効化しないほうが良いので,本体 Flash への設定は行わず,電源 On の間だけ有効な設定にする

そのための設定は割と簡単で,u-blox M10 は UBX protocol なるものが公開されていて,適切なバイナリデータを Bluetooth 経由で書き込めば良い.
詳しくはこれを見れば全部載っている.GGA, GSA, GSV センテンスを止めて,BeiDou を使用しない設定をする Kotlin コードはこんな感じ.

で実際にやってみた結果,10Hz 出たヽ(´ー`)ノ
あと BeiDou を無効化することによる測位精度がどうなるか調べた結果 (上図の青: BeiDou 有り,橙: 無し),全く問題なかった.
BeiDou 有りの方はやはり所々ポイントが抜けているのが気になる.この座標情報からラップタイムを計算するから,ポイントが抜けていないほうがいいので,BeiDou 無しで運用することにした.

0 件のコメント:

コメントを投稿