86(ZN6)の車載動画に載せるテレメトリを増やしたい その2

yagihash
·

これは何?

の続き。

「次やること」のうち以下の2点に取り組んだのでそのメモ。

  • RaceChronoから出力したCSVをTelemetry Overlayに食わせるフォーマットにノーストレスで変換する方法を用意する

  • 実際の走行動画と合わせてみる

CSVの変換

RaceChronoの生CSVそのままだと何点か不都合があり、Telemetry Overlayに食わせる前に何かしら変換する手順を挟みたい。具体的には以下の通り。

  • Brake PressureからBrake Positionの計算をおこなう必要がある

  • リアの車輪速がm/sで出てくるのでkm/hに変換する必要がある

  • CSVのヘッダ名をいじりたい

ブレーキについてはアクセルと異なりペダル位置そのものに対するセンサーはないため、液圧から踏力の計算をおこなう必要がある。一応前回紹介したCAN IDのまとめでもBrake Position算出のおすすめの計算式が提示されており、RaceChrono側で計算してから出力することもできるのだが、先に書いてしまうと出てくる数値が実際の数値が実態とかけ離れており、当面は液圧だけ取っておいて加工してからTelemetry Overlayに食わせる形としたい。

車輪速は最初からkm/hで出してくれるとありがたいのだが(実際RaceChronoの画面表示はkm/hになっている…)、仕方ないのでこちらで計算する。

ヘッダ名はTelemetry Overlay側でゲージのタイトルとしてそのまま参照されるので、表示に都合のよいものに変更しておきたい。

これらを毎回手作業でやるのは大変なので、ストレスフリーにやれるようにした。

以下の2つのやり方を検討したが、結局2つ目の方法でやることにした。

  1. スプレッドシートで編集

  2. やっつけで適当なコード書いて編集

RaceChronoから出力したCSVは一旦Google Driveに上げるので、そのままスプシで編集してしまうのが良さそうな気がしたのだが、結局変換用のシートを引き込んで適用してCSVエクスポートして手元に…という流れがどうも魅力的に見えず断念。GASとかしっかり使いこなせる人はこのやり方がいいのかもしれない。

結局Goでさらっとコード書いて元のCSVを食わせて変換済のCSVを吐き出すやつを作った。あんまりにも雑な仕事なのでここには載せないが、ある程度汎用的に使える感じに仕上がったら公開してもいいかもしれない、と思ってたんだけどとりあえず自分に必要なものはできあがってしまったし需要もなさそうなのでやる気がなくなってしまった。

RaceChronoが吐き出すCSVには3種類あって、今回はv2ってやつを使っている。v1はCAN BUSのデータを吐いてくれないっぽくて、v3はヘッダ行の癖が強く、v2がヘッダ行に一番癖がなくて扱いやすそうだったため。メタデータを先頭何行かに突っ込むの、仕方ないとは思うんだけどそのまま使うにはちょっと厄介なのでやめて欲しい気持ち…。

ゲージをキレイキレイする

まぁもうそんなに書くこともなくて、こんな感じになった。

まだいくつか課題はあって、ひとつは先にも述べたようにブレーキの踏み具合は液圧から計算している都合上、踏力100%の液圧としていくつくらいを想定しておくかでだいぶ感度が変わる。一例として紹介されていた計算式だと全然話にならないので富士のホームストレートエンドとかで踏力100%の液圧を取る必要がありそう。理屈上は停止状態でも奥まで踏み抜けば100%の液圧取れるのかもしれないが、温度依存性は多少ありそうな気もするし、実走行で取ったほうが確実な気がする。

もうひとつは同期の問題で、GoProの時刻(iPhoneと同期)とRaceChronoの時刻(Android端末と同期)が微妙にズレるのでTelemetry Overlay上で一発で綺麗に同期できない。これはGoProの時刻もAndroid側と同期すれば解決すると思うのだが、そこまでは試せていない。結局GoProをAndroid側に同期させるならラップタイムの表示もGPSロガーとの接続も全部RaceChronoにまとめたいな…となってしまう。

ぶっちゃけ別に全部Android側に倒しても問題はないのだが、使っている端末が割と古く(Pixel 4a)、かつ無線充電に対応していないので微妙に都合が悪い…。DigSpiceとの相性も不明で、できればGPSレシーバーは別に用意したい。いろいろとややこしいし、お金もかかる…。

次やること

NCのOBD2のポートはDefiのCAN Driverで回転信号と車速信号を取っている都合ですでに塞がっており、OBDLinkを使うのは諦めていたのだが、RaceChronoからCAN BUSモードで動かしているOBDLink LXはsniffしかしないようなので、理屈上は分岐しても同居できるのでは?と考えていて、とりあえずOBD2の分岐ケーブルを買ってみた。禁じ手ではあるよなぁとは思うのだが、もしうまくいけばNCでも使えることになるので、そうなるとそれなりにお金かける意味も出てきそうなので、とりあえずこれを試してみようと思う。

DefiのCAN DriverがどれくらいOBD2で喋ってるかに応じてRaceChrono側のリフレッシュレートに響くはずなので、分岐で動くかどうかと、使えるレベルのデータが取れるかが今のところの懸念。CAN Driver側は水温、インマニ圧、エンジン回転数、車速の4つしか取らないようなのでそんなに問題にはならないことを願う。

@yagihash
ぽんぽこぽん