見出し画像

安価に高精度なGPSラップタイマー・走行ラインロガーを構築する方法 ver.3.5 〜u-blox M9 × Android × RaceChrono 設定ガイド〜

【免責事項】 本コンテンツの情報に基づき実施した操作・作業・購入によって生じた損害・損失について、当方は一切の責任を負いかねます。なお、OS・ソフトウェアのバージョンや個別の実行環境等によっては、記載内容と異なる結果となる場合がございます。

1. 概要

本システムは、市販の数万円クラスのデータロガーに匹敵する「20Hz(1秒間に20回測位)」の超高精度な走行ログを、数千円の外付けGPSモジュールとスマートフォン(Android)を組み合わせて実現するものです。

最大の特長は、更新レートを20Hzまで引き上げることで、「いつ、どこで、どのように走ったか」という走行ラインを滑らかかつ正確に記録できる点にあります。サーキットのポンダーとのタイム誤差も、130周以上走って平均絶対誤差で"0.022秒以内"を記録。正確な走行ラインと速度グラフを重ね合わせることで、「コンマ数秒をどこで削るか」という高度なライディング分析を可能にします。

2. 必要なもの

【ハードウェア】

  • 外付けGPS: u-blox M9搭載モジュール → AliExpressにてQUESCAN製のものが4千円前後で購入可能。スマホと繋ぐ際に変換アダプタを噛ませないため、Type-C端子のものを推奨。※四系統の衛星(GPS, GLONASS, Galileo, BeiDou)を同時受信できるM9チップが必須です。

  • スマートフォン: Pixelシリーズ等、処理能力の高いAndroid端末

  • PC: GPSチップの初期設定用のWindows搭載機

【ソフトウェア】

  • u-center (Windows用): u-blox公式の設定ソフト。チップの設定書き換えに使用(無償)

  • GNSS Master (Androidアプリ): GPSデータをスマホに橋渡しする中継アプリ(無償)

  • RaceChrono (Androidアプリ): ラップタイム計測・分析のメインアプリ(Pro版は有償だが、本システムは無償版で問題なし)

  • 最新AI: 難しいことはClaudeに、簡単なことはGeminiに聞こう!

【参考:筆者環境】

UBX-M9140-KB搭載GNSSレシーバー、Pixel 9a(Andoroid16)、ThinkPad(Windows10ESU)、8BL-PC40、桶川スポーツランド

3. 手順

ステップ1:GPSチップの初期化設定(PC作業)

まずPCにGPSを繋ぎ、u-centerを使ってチップをサーキット専用の「爆速仕様」に書き換えます。

  1. View > Messages View を開く。

  2. UBX > CFG > RATE : Measurement Period を 50ms に変更(=20Hz)。 → 1000ms ÷ 50ms = 20回/秒。数値が小さいほど高頻度になります。

  3. UBX > CFG > PRT : Baudrate を 460800 に変更。 → GPSとスマホ間のデータ転送速度です。20Hzで大量のデータを送るため、デフォルト(9600)では詰まってしまいます。この値に合わせてGNSS Master側も同じ数値を設定することが重要です。

  4. UBX > CFG > NAV5 : Dynamic Model を 4 - Automotive に変更。 → GPSチップが「今どんな乗り物に乗っているか」を想定するモードです。Automotiveにすることで、高速・高加速度の動きに対して測位フィルタが最適化されます。バイクでも車でも、このモードが最も適しています。

  5. UBX > CFG > CFG: Save current configuration を選択し、画面右側の「Devices」で「BBR」と「FLASH」(または全選択)が青くハイライトされていることを確認してから、[Send] ボタンで設定を保存。※これにより、電源を切っても設定が保持されます。

ステップ2:スマホの仲介アプリ設定(Android作業)

スマホ側で外部GPSを「自分自身のGPS」として認識させる設定です。

  1. 開発者オプション: Androidの設定から「仮の現在地情報アプリを選択」で [GNSS Master] を指定。

  2. GNSS Masterの設定:

  • Receiver 設定で USB Serial を選択。

  • Baudrate を 460800 に設定。

  • ホーム画面で Mock Location をON。

3. 接続: USBを繋ぎ、アクセス許可が出たら「はい」。Data Rate が動き出せば成功です。

⚠️ 注意:Androidのバッテリー最適化設定 走行中にスマホの画面をオフにしてポケットやカウル内に収納する場合、Androidの機能によって「GNSS Master」や「RaceChrono」がバックグラウンドの不要アプリと判断され、強制終了してログが途切れることがあります。必ずAndroidの設定から対象アプリの「バッテリー使用量の最適化」を『制限なし』等に変更しておいてください。

ステップ3:RaceChronoの設定

  • 設定 > GPSレシーバー: 「内蔵GPS」を選択。※GNSS Masterがデータを流し込んでいるため、アプリ上は内蔵扱いになります。

  • 動作確認: 計測画面から左下の⋀ボタンでGPS画面を表示し、「20Hz」と表示されていれば完了です。

ステップ4:バイクへの取り付け

  • 向き: 配線が出ている側を「後方」にすると、走行風や振動によるダメージを軽減できます。

  • 角度: アンテナのセラミック面を空に向け、水平に設置。

  • 場所: 金属やカーボンに覆われない場所(テールカウル内やメーター付近)がベストです。

4. 運用のアドバイス💡

  • 走行ラインのズレ: GPSの絶対精度により、地図上のラインが数メートルズレることがあります。RaceChronoのマップ編集機能で「位置のオフセット修正」を行えば、綺麗な走行ラインに重なります。

  • コースイン前: 空が開けた場所で5分ほど静止させると、測位が安定し、1本目からのログ精度が上がります。ただし、「7.その他」に記載の通り熱対策を推奨します。

5. 精度

「スマホ+数千円の外付けGPS」という安価な構成で、果たしてどこまで正確なタイム計測ができるのか。実際にサーキットを走行して取得したラップデータを用いて、その精度を検証してみました。

検証に使用したのは、5月2日と5月4日の2日間の走行で記録した合計134周分のデータです。サーキットのポンダーと本システムのタイムを比較・分析したところ、平均絶対誤差はわずか「0.022秒」という結果になりました。プラスとマイナスのズレが相殺されないよう厳密に計算して、この数値です。

データの分布を詳しく見ていくと、134周のうち大半のラップで誤差は0.02秒未満にしっかりと収束しています。一方で、2周だけ0.1秒台のズレが生じたラップもありました。原因は特定できていませんが、瞬間的な衛星捕捉状況の悪化により、ライン通過時の座標にわずかなブレが生じたためと考えられます。逆に言えば、そうした外れ値のデータを含めても全体の平均絶対誤差が0.02秒台に収まっているということです。

6. Q&A

Q. これは何?
A. GPSデータを「外付けGPS → 中継アプリ → RaceChrono」の経路で流し込み、サーキット走行でのラップタイムや、走行ラインをスマホに正確に記録することを狙ったシステムです。こんな事ができるのは、Androidにスマホの外部で受信したGPSデータを内蔵のGPSデータに置き換える機能があるからです。

Q. 導入するメリットは?
A. 専用のGPSラップタイマー(数万円)を買わなくても、普段使っているスマホと数千円の外付けGPSだけで、同等クラス(と思われる)の高精度な計測環境が手に入ることです。

Q. いくらかかるの?
A. AndroidスマホやPCをすでにお持ちであれば、追加でかかる費用は、外付けGPS購入にかかる4千円前後のみです。

Q. iPhoneでは使えないの?
A. 残念ながら、本システムはAndroid専用です。中核となる「外部GPSのデータをスマホ内蔵GPSに差し替える(モック位置情報)」機能が、iOSには存在しないためです。

Q. 車でも使える?
A. もちろん使えます。それどころか屋根に外付けGPSを貼り付けて使用すれば、姿勢変化の少ない分バイクより高精度に記録できる気がします。

Q. こんなことしなくても、RaceChronoはスマホ単体で使えるけど?
A. その通り、スマホ単体でもタイム計測や走行ラインの記録は可能です。ただしスマホ内蔵のGPSは1Hz駆動(1秒に1回GPSを測位)のため、精度が低くなります。時速100kmの場合、1秒間に約28m移動することを考えると正確なデータを取得することが難しいと分かると思います。
高性能な外付けGPSを用いることで、スマホ内蔵GPSの20倍(20Hz)測位します。

Q. Androidの「開発者向けオプション」をいじるって書いてあるけど、スマホがおかしくなったりしない?
A. 大丈夫です。これはAndroidに「外部のGPSデータを、あたかも自分が受信したかのように扱ってね(仮の現在地情報アプリ)」と指示するために必要な、Android公式の機能です。マニュアルに書かれている設定以外をむやみに変更しなければ、普段のスマホ利用に悪影響はありません。

Q. 一回準備すればずっと使えるの?
A. AndroidのOSアップデート(セキュリティ強化など)やRaceChronoの仕様変更により、突然使えなくなる恐れがあります。筆者がサーキットを走る上で必要なシステムなので、興味の続く限りは仕様変更に適応できる仕組みを考え続けるつもりです。

Q. 20Hz(0.05秒に1回)の測位なのに誤差平均が0.02秒っておかしくない?
A. 鋭い質問です!「0.05秒間隔でしか測位しないなら、誤差は最大0.05秒になるはず」という直感は正しいのですが、実際にはもう少し複雑です。RaceChronoはスタート/フィニッシュラインの通過を「直前と直後の2点間の位置を線形補間」して検出します。たとえば、ライン手前0.03秒の位置と、ライン通過後0.02秒の位置のデータがあれば、その間のどこでラインを越えたかを計算で割り出せます。これにより、測位間隔(0.05秒)より細かい精度でタイムを推定できるわけです。一方で誤差がゼロにならないのは、GPSの絶対位置精度(数メートルのブレ)や、衛星配置・天候条件等による電波受信の乱れが影響しているためです。今回の0.02秒という数値は、この補間計算とGPS精度が組み合わさった「現実的な限界値」と解釈しています。

Q. 筆者はどんな人?
A. 育児と労働の合間にサーキット走行を楽しむ中年ライダーです。理系じゃないよ。私文卒だよ。

7. その他(Tips & 注意点)

  • u-blox M9の最大能力は25Hzですが、安定性を優先し20Hz駆動としています。

  • M10というM9より新しいチップが存在しますが、M10は省電力・小型化に振った設計のため、今回の高頻度ログ用途ではM9がより適任です。

  • 2本目以降の走行でGNSS MasterにDataRateが表示されない事象が複数回ありました。GPSへの熱の影響かもしれません。

  • 中継アプリについてはGPS Connectorを用いても同様の結果になると思います。また、使いやすい中継アプリの開発に挑戦中です。

  • M-LAPという国産のラップタイマーアプリがあり、タイム計測の精度はRaceChronoと変わりません。しかし、ここぞという時にエラーで走行ラインが記録されない事象が多発したため(原因不明)、使用を諦めました。

  • スマホも外付けGPSも熱に弱いため、走行と走行の間にはスマホを車体から外す、外付けGPSには遮光のためにタオルなどを被せる、といった対策を推奨します。

  • 振動と熱対策のために外付けGPSにゴム足をつけました。未テスト。

8. 最後に

ここまで記載した内容もまだ試行錯誤中であり、より良い機材、アプリ、設定等があれば教えていただけると嬉しいです。

いいなと思ったら応援しよう!