毎晩Geminiと話しながら作ったラリコンアプリがようやく完成。
名付けてRally-Com


今回はDrive Rally用、Average Rally用2種(Global版とJapan版)の合計3種類のモードを搭載しています。
Drive Rallyモードは、

速度指定に伴うon time走行の指示を必要としない、単純にTripのみの仕様。
一番上の部分はODOになっていますが、WタップでExtra Trip3として機能します。
その他は基本的な+、-の補正と、リバースボタンon中のTrip減算機能、一時停止機能やCalibration機能を備えます。
あとは、gpxファイルを保存する機能も。
Average Rally用は、前述の通り、グローバル版と日本版の二種を用意していますが、
<GL版>

<JA版>

2つの大きな違いは、
GL版がスタート前にSpeed Chart(コマ図間距離や指定速度などの走行データ)をプリセットして、それに従って走行するというバージョン(どうやら海外ではこういうのが主流らしい)で、

JA版は事前にプリセットせず、走行しながら指定速度を入力していくもの。
どちらもCPで

到着時間、距離、リスタート時間の設定、リスタート時の指定速度の入力ができます。
JA版はアベレージラリー用のラリコンに近い挙動になっているのではないかと思います。使ったことないから分らんけど(笑)。
私がこれまで使っていたアプリは、事前にSpeed Chartをプリセットしておいて、それに従ってon time走行できているかどうかが表示されるというものでしたが、
とても不便だったのは、途中のパスコントロール(PC)での速度変更に対応していないということ。
代用としてTC(CP)処理をして新しいTarget Speedを入力していましたが、TC処理をすると、それまでの理想時間とのギャップは全てリセットされてしまうのです。
なので、看板PC(〇〇の看板から××km/hに速度変更という指示)までに必ず誤差0秒を目指して走行しなければならず、これがとても難しかったんですね。
何故なら、看板パスコンのある道路が交通量のある道路だと、自分本位な速度で調整しながら走ることができないから。
プリセットしたSpeed Chartとは別に速度を変更するというのは、どうやら海外のTSDラリーでは考えられないようで、このような処理をする機能は他のTSDラリー用の海外のアプリでも存在しない様子。
なので、今回は走行中に設定した指定速度への変更を、任意の位置でactive化する機能を追加しました。
GL版はこれまで私が使っていたアプリと基本的に似ていますが、そこが一番の違いですね。
これまで使っていたアプリは、各ボタンや表示項目はデフォルトで用意されたものの他に、オリジナルで何を表示させるか、表示させる大きさや位置を細かく調整できたため、私は自分で独自のデザインを作っていましたが、自分用のアプリ作成においては、慣れ親しんだそのデザインに近いものを構築しました(その代わり変更不可)。
そして、何よりも一番大きな違いは、Tripの測位に車のECUからのデータを使用するということ。
これまで使っていたアプリがGPS測位だったのに対して、自分で作ったアプリは、OBD2アダプタからBluetooth接続で車速データ(PID 0D)を抜き出して、その速度と時間の積分でTripを計算する仕様です。
これによって、トンネルや山林など、GPSの電波が届かなかったりするところで、Tripを正確に算出することができます。
ただし、車速データは整数なので、実際の走行距離との誤差が出る可能性があるため、GPS測位による移動距離(最大10Hzまで対応)で誤差を算出して補正しつつ、デバイスの加速度センサーを利用しての補完も行うようにしています。
GPS補完するにあたり、精度の低いGPSデータを使うのは意味が無いので、設定項目の中に「GPS Accuracy 〇m未満時のみ」というような項目を設けて、精度が低い場合には補完に使わないようにしています。
また、トンネル内はGPSが使えないので、停止、低速発進については加速度センサーを使って補完するようになっています。
OBD2からの車速データ上で速度が出ていても、実際にGPS測位で移動していなければ、タイヤがスリップしていると判断して距離を加算しないようにすることもできます。
逆にOBD2が無い場合は、普通にGPS測位のラリコンアプリとして機能しますが、その際も加速度センサーが補完します。
そして、OBD2は、一般的なELM327でも使用できますが、私が使用しているOBDLink MX+のような高いサンプリングレートのアダプタを使用する場合には、より高精度に測位するようにするモードへの切り替えスイッチを備えます。
これらは全てのモードでTrip算出に使用しているロジックです。結果的にこれまで使用していたアプリよりはそこそこ精度が高いのではないかと思います。
一応デバッグ作業は終わったので、3/8に茨城県南部で開催される無料のアベレージラリー体験会で実際に使って試してみたいと思います。