OBD2スキャンツールから取れるデータの時間間隔について | 愛車の性能を手軽に見える化5
パーツを交換した後の効果を簡単に見える化するアプリの開発では、スマートフォンと汎用OBDスキャンツールから取れるデータの活用を研究していました。
しかし、OBDツールから取れるデータは荒すぎて、僅かな性能差を表現できないので使わない事にしました。
しかし折角研究した事を眠らせておくのはもったいないので、何かの役に立つかもしれないと期待を込めてこうしてまとめておきました。
個人で車両性能を分析したり、新たにサービス開発される方の役にたったら幸いです。
誰でも買えるBluetooth接続のOBDスキャンツールを利用
OBDスキャンツールやデータ取得アプリは高性能が謳われたものから格安品までピンキリです。
スキャンツールを説明しようと、するとそれだけで1コンテンツ作成できてしまいます。
このコンテンツは、一般的に手に入るELM325を使ったBluetooth接続のスキャンツールを利用することを前提に記載しています。
また、OBDスキャンツールには車両データ取得以外にもエラーコードのリセットなど様々な機能がありますが、このコンテンツは自動車の走行データを取得することだけに特化してまとめています。
性能を可視化するには走行時の時系列データを使う
自動車の走行性能を表現する代表的な指標は加速度です。
加速度はm/s2という単位で表される通り、時間あたりの速度変化量です。
言い変えると、ある時間間隔内で移動した距離を、その時間間隔を秒数に変換した値で割ると加速度になります。
なぜ加速度が代表的な指標かというと、加速度が分かれば車重などの基本データがあれば、馬力やトルクなどの馴染みがある表現に変換することができるからです。
なので、実際に走行した時間の流れにそったデータを使うことでより事実に近い性能を表現することができます。
ただ難しいのは、事実を表すことはできても、その事実を比較したときに出た差がパーツを交換したことによるものか、と影響要素を明確にすることが難しいのです。
これが研究開発の肝になっています。
データは最低でも0.05秒(20Hz)間隔で欲しい
加速度は、時間あたりの速度変化量です。くどいようですが、この時間あたりという所が肝です。
車は、例えばこの時間あたりが1秒だとした時、この1秒の間に速度ってどれだけ変化するでしょうか。
スポーツ走行するオーナーさん達なら1秒の間にいろんな事(変化)が起こると想像できるはずです。(車にとって1秒は本当に長い)
段差を越えたり、ハンドル操作することで抵抗が増え、速度変化量が変わってしまいます。
なので可能な限りピュアな速度変化量が測定できるほど、性能差の測定精度が上がるのです。
なぜ0.05秒かとハッキリ説明することはできませんが、市販されているモータースポーツ用のデータロガーで20Hzとか10Hz(0.1秒)という仕様になっていることから、納得いただけるはずです。
無線のOBDスキャンツールからデータを取得する場合、1秒(1Hz)から0.5秒(5Hz)が限界
OBDスキャンツールマニアの方なら、ツールの仕様書にデータ取得間隔が明記されていないことにお気づきだと思います。
これはおそらくELM325の技術的制約だと思われるのですが、記録するデータ項目を増やすほど取得できるデータ間隔が長くなります。
例えばエンジン回転数1項目だけを取得する場合、最速で0.5秒(5Hz)間隔で取得できます。しかしスロットル開度や車速など項目を3つにすると、1秒(Hz)間隔になってしまいます。これを4つ5つと増やすと3秒4秒と間隔が長くなってしまします。
一方USB接続式のツール場合、0.1秒(10Hz)間隔であることが多いようです。(今回の開発では、USB接続式はコードが邪魔でスマートではないので除外しています。)
スマートフォンのGPSデータは1秒(1Hz)間隔固定
OBD以外にも、加速度の取得方法はいくつかありますので検討してみました。
- スマートフォンのGPSから算出される速度
- スマートフォンの加速度センサーから取得できる加速度
GPSの話をすると、1コンテンツ以上書けてしまうのでここでは割愛しますが、iPhoneかAndroid系スマホかに関わらずGPSから取得できるデータの最小間隔は1秒(1Hz)です。(Androidの公式デベロッパードキュメントに記載がありました。)
GPSデータの取得は、バッテリー消耗が著しいようで1秒に設定したのだと思われます。
デジスパイスやXGPS160などの外部接続GPSロガーが販売されているのは、こういった理由からです。
スマートフォンの加速度センサーの値は100Hz以上に設定可能
スマートフォンに搭載されている加速度センサーからデータを取得する場合、機種によっては最大で400Hz以上の時間間隔で取得できるようです。
開発要件としては20Hzで良いので十分です。
Android系かiPhoneかに関わらずx、y、zの3軸加速度が取得できます。
なので開発としてはz軸(進行方向)の加速度センサーの値を取得する方向で考えています。
実現したいのは、シャシダイグラフに似たイメージで表現すること
パーツ交換効果を表現するには、どんな表現方法が良いのかずっと試行錯誤しています。でも結局行き着くのは、シャシダイにのせたような性能曲線のイメージです。
今現在候補にしているのが、以下のように回転数に対する加速度をプロットして表示するグラフです。
このグラフの下に、測定条件として結果に納得できるような補足情報を添えたいと思っています。
一見うまく表現できているように見えますが、課題はたくさんあります。
代表的なものを書いておきます。
一つがエンジン回転数の取得です。OBD2から取得すると0.5秒間隔が最小です。これをOBDを経由せずもっと細かく検出する方法を開発中です。
二つ目が、アクセルの中間領域の効果の見える化です。上のサンプル画面は2速フルスロットル(アクセルベタ踏み)のデータです。
日常のアクセル開度領域は5〜20%ですのでこの領域での効果を見える化したいと考えています。アクセル開度のデータは取れないので、これに代わる指標での表現方法を開発中です。
メンバー募集中
TSUNAGIサービスを一緒に推進してくださる仲間を募集しています。
波形データのフィルタリングが得意でアプリ実装に挑戦してみたいエンジニアの方
シンプルなUXデザインとAndroidとiOSアプリの開発を専門にしているエンジニアの方
CEO
を募集しています。
現在のプロトタイプの効果検証ができた後、資金調達して一気にスケールアップしていきたいと考えています。
TSUNAGIのミッションに共感して一緒にやってもいいよと思ってくださる方は、ぜひお声かけください。