【EDR】
世の中に、「EDR」すなわち"Event Data Recorder"というものがあります。あることがらについて、周辺状況のデータを記録する装置ですね。
たとえば、「1時間おきの気温の変化」なんて天気予報で見たことがありますよね。あれが典型です。「気温データ」ということがらについて、データを記録してるのです。
自動車の世界では、レーシングカーなどでありますよね。アクセル開度、ブレーキ、速度、加速度、燃料残量…等々を記録しているもの。(リアルタイムに集計しているものは、レース中継などでご覧になったことが…?)
その中でも、特に、「あることが起こったとき」に、そのデータ記録を行うものがあります。
…例えば、「クルマに大きな衝撃が加わったとき」です。一般的には「事故、またはそれに類する衝撃を伴う回避行動」と考えてよいでしょう。
どんなデータを記録するかと言うと、まずは加速度。そして、ブレーキ、アクセル…何よりも、「その時の映像」。
これらをまとめた機械を、通常「ドライブレコーダ」等と呼びます。多くのタクシー会社で装着車を増やしていますから、モノ自体はきっと各種メディアでご覧になったことがあると思います。いわく、「交通事故時に自車の過失割合が大幅に少ないことが証明できた」から、「装着している(万一の際には記録が残る)というプレッシャーから、ドライバーが安全運転を心がけるようになった」というものまで。
昨今、この「ドライブレーコーダ」を、このようなプロ向けではなく、個人向けに開発して販売している企業も何社か見受けられるようになって来ました。(各社名称が違いますので、以降「EDR」と書きますが…)
また昨今、いわゆる「バカ車」というか「バカドライバー」の増加により、「危ねぇなコノヤロー!」と、周りのクルマに叫びたくなるような状況、言い換えれば、「あんなのに事故られて、コッチのせいにされたりしたら、たまったモンじゃない!」という経験をすることが非常に増えてきたような気がします。
EDRは基本的に高価なシステムでしたが、記録パラメータを絞り、安価に供給するメーカーも出てきました。
2009年1月、ホームセンターの初売りチラシを見ていたら、ついに特売で1万円を切ったモデルが。セルオートの「番兵ちゃん」というモノ。
安価ゆえ、速度等のロガーにはならないが、スペックを見ると、
・8FPS/640x480、衝突前10秒、衝突後5秒
・最低照度10lux
・画角:上下60度、左右80度
と、「まあ、必要最低限のスペックは満たしているような気がする」というレベル。
…買っちゃいました。バカドライバー増殖に対する保険、かな。
取り付けるより、まず先にやることがありますよね…? もちろん、「分解」。
←背面 (取り付けたとき、車内に来る側)
右側に、データ吐き出し用のUSBコネクタ。
黄色いコイン電池は、おそらく時刻等の保持用だと思われる。
あと、よくわかんない画像のハードウェアエンコーダ?
←前面 (車外を向く側)
矢印の先が、カメラ。
マルで囲ってあるのが、5V1.5Fのキャパシタ。
事故った場合は、当然、車両の電源供給が遮断されることが考えられる。
その際、このキャパシタの電力で、「事故前10秒、事故後5秒」の記録を行える…らしいよ。
取り付け方法? んなもん、Tipsも何も無い。貼り付けるだけである。よって割愛。
…というワケにも行かないか。なお、実は道路運送車両法に貼り付け位置の定義があり、大雑把に言うと「フロントガラスの、上部20%以内」である。
なおかつ、
・当然ながら、車外を見渡せる位置でなくてはならない。
・マニュアル録画スイッチは本体についているため、走行中に手の届くところでなくてはならない。
・起動確認は本体内蔵LEDであるため、それが見える位置でなくてはならない。
・かつ、走行時にできるだけ司会の邪魔にならない位置ではならない。
と考えると、実は結構難儀する。
散々考えた挙げ句、ド定番のルームミラー前方に配置。
まんなかの目玉みたいのがEDR。向かって左、白いテープで止まっているのはETCのアンテナ。
これに、アクセサリ電源を給電して終了。ちなみにシガライター接続のケーブルは付属するが、そんなもん邪魔っけなので、テキトーに給電。
位置さえ決まれば、作業時間は15分。
さて、走らせてみる。ちゃんと、衝撃を感知して動いているようである。
では、実際に画像を見てみましょう。
これが、無加工でぶっこ抜いた640x480ドットの画像データです。
夜間、ヘッドライトのみ、雪面、っていう状況でこんなもんです。
X軸加速度が-0.684G、Y軸が0.008G、Z軸が0.948G。
先のUSBメモリ内のデータを専用再生ソフトに食わせると、動画として見れるわけですが…。
まあ、ご多聞に漏れず、この手の「専用ソフト」ってのが使いやすかったためしが無い。
だいたい、フツーの形式で画像を吐き出せないってのが、「ドライブレコーダー」としては面白くない。
これがその再生ソフト。ちなみにテスト機のVistaだと、なんと横763x縦726ドットも占有する。
(ちなみにこれ↓は1/2に縮小)
だいたい、アイコンが何がなんだか分からない。もうちょっとシンプルにしてくれれば良いのに。
「無いものは作っちゃえ」のビンボー精神が、本サイトのウリである。
単に「動画」を抜き出すか、せめて1フレームごとの画像を抜き出せるようにしたいですな。そうすると、その画像をwebに上げたり…と、いろいろ面白いことが出来そうです。
さて。
まず、番兵ちゃん(の再生ソフト)が扱う実データである、拡張子がbpcであるデータのフォーマットを見て行きます。すなわち、一度「再生ソフト」でもって、USBメモリから吸い上げた後のデータですな。
大雑把には、いわゆる「モーションJPEG」ってヤツでして、まずよくわからないヘッダがあり、その後、4バイトで1枚のJPEG画像のデータサイズ、実JPEGデータ、また4バイトでデータサイズ、実データ…と、延々続きます。↑こんな感じ。ちなみにリトルエンディアンです。
00h〜63h 4バイト それなり 4バイト それなり 4バイト それなり … 4バイト それなり ファイル全体のヘッダ 画像Aの
サイズ画像Aの実データ 画像Bの
サイズ画像Bの実データ 画像Cの
サイズ画像Cの実データ … 画像nの
サイズ画像nの実データ
というわけで、示されたサイズごとに切り出していけば、単純に130枚程度のJPEG画像が出来上がります。ちなみに総枚数については130「前後」であり、データによって枚数が異なります。
―――ここまでは、割と素直。
が、一つ問題が。この画像A→画像B→画像Cの格納順が、そのまま時間軸順になっているのかと思ったら、これが大間違い。無茶苦茶な(規則性が全然わからない)並び順で入っています。
とはいえたかだか130枚くらいですから、ざーっと流してみれば、「あ、このシーン!」とかってのはすぐ見つけられます。
「ドライブ途中で撮った、面白いもの画像」を探すだけなら、まあ、これで役に立つのですが…。
でもここまで来たら、きちんと配列情報も書き出したくなり、まして純正ソフトでは加速度情報も表示されているわけですから、それも織り込んでみたくなります。
というわけで、「切り出した、1枚のJPEG画像」を検分してみます。すると、本来のJPEG画像データが終了した後に、謎のフッタが付いていることが判明。おそらくは、ここにその手のデータが織り込まれていると思われます。で、苦労話はサクっと飛ばして、判明したのが以下の配置。
まず、JPEGのフッタコメント開始は「FF FE」で規定されています。そこから数えると…↑こんなカンジになっています。
フッタ先頭からの長さ 1 2 3 4 5 6 7 8 9 0A 0B 0C 0D 0E 0F 10 11 … 19 1A 1B 1C 1D 1E … 25 26 27 28 29 2A … 4F 50 51 52 データ FF FE 00 xx 52 47 41 00 56 31 31 00 xx xx 00 00 xx … xx xx xx xx xx xx … xx xx xx xx xx xx … 50 00 FF D9 参考 R G A V 1 1 順 … 年 月 日 時 分 秒 … Y Y X X Z Z … 解説 (1) (2) (3) (4) (5) (6) (7) (8) (9)
- (1)「FF FE」
- 何のことはない、JPEGで規定されている「フッタ(末尾コメント)ここから開始」の識別子です。ココに文句言ったってはじまらない。
- (2)「RGA…」
- ASCIIで「RGA V11」と書いてあります。あまり意味はないと思われます。おそらく、エンコーダの名前って言うか規格名って言うか…?
「Record Gravity Application Version 1.1」か何か…かな?- (3)「順」の解説
- この1バイトが、個々のファイルの記録順です。多分、カウンタを00〜FFまで回しっぱなしにしておいて、画像が記録された時点でのカウンタ情報をそのままブチ込んであると思われます。ハードウェアエンコーダが、キャッシュからRAWデータを読んでひたすらJPEG化、そんでもって、「出来た順」でモーションJPEGに書き込んでいるのでしょう。ですので、この1バイト情報を基準に並び替えれば、時系列順の並びになります。
(え、カウンタを回しっぱなしにしてるんなら、場合によっちゃ「FE→FF→00→01」とか、跨いじゃう場合が出てくるだろって?
鋭いねぇ。うーん、確かにそんな気はするんだよねぇ…。その辺は未検証です。だって、見りゃ判るじゃん、それ(^^;;;; )- (4)「時刻情報」の解説
- これも特段のヒネリはないですね。それぞれ1バイトで記載されています。なお、「年」については西暦の下2桁(10進で)のみ記録されています。(2100年問題…)
ですので、例えば「2001年 02月 03日 04時05分06秒」なら「01 02 03 04 05 06」と記録されています。
なお、おそらくは「秒」以下の単位、すなわち「0.1秒単位」とかの記録は行われていないものと考えられます。
- (5)の解説
- 2バイトで、その画像時点での「Y軸加速度」が記録されています。ちなみに、YXGの全ての加速度とも、リトルエンディアンです。
2バイトを符号付16ビットと解釈し、その「数値」を下記のように換算します。
Y軸加速度 は 「数値/256 − 0.0352」で近似の値が求められます。
この「定数付き線形」という形状から推測するに、このデータはGセンサー(つまりADコンバータ)の出力をそのまま垂れ流しているだけと思われます。
16進の「1」の差が、10進における1/256(≒0.00390625)の差です。0Gのときに、0.0352程度の基準値を出力している、という意味です。
中学校のときに教わりましたね、「一次関数」ってヤツですよ。
ですので、もしかしたらこの定数0.0352は、管理人の買った個体のみ(AD出力が補正されている?)に適用される、という可能性も無くはないですが…。
たとえば、これ以外のヘッダやフッタの部分で「補正度○○」というデータが入っている、とか、そういう感じですね。そこまでは知らぬ。- (6)の解説
- 同じく、X軸加速度です。ただし、定数が違いますので注意。
X軸加速度は「数値/256 − 0.1165」で近似されます。Y軸とはADのセンターが違うんですな。- (7)の解説
- 同じく、Z軸加速度です。ただし、今度は定数どころか係数まで違います。
Z軸加速度は、「数値/384 − 0.3359」で近似されます。
「数値/384」ってのが一見謎ですが、これ、もとは、「数値/256 × (2/3)」というか、「2/3/256 × 数値」ですね。
おそらく、Z軸だけは違うセンサーを使っていると思われます。- (8)の解説
- これはちょっと話がややこしいです。はい、先生の話をちゃんと聞くように。
実は、このフッタのサイズ自体が各画像(1枚々々のJPEG)によって違います。ちなみに、「8の倍数+2バイト」になっているのは確かなようです。
たとえば、この例のフッタは、52h(=82d)バイトですから、50h(=80d)バイト+2バイト、の長さです。多分「8の倍数の長さのフッタ本体」+「FFD9で示される"EOF"」という解釈だと思われます。(または、「FFFEで示される"コメント開始識別子"」+「8の倍数のフッタ本体」か…)
で、この例のフッタだと、4Fhバイト目に「50h」と書いてあります。当然、4Fhの次は50hバイト目ですね。
で、「8の倍数の1つ手前の数字(この場合50h)」と、「その次のアドレス(50h)」が一致した場合には、フッタの終端を意味する…というか、「フッタのサイズ(つまり50h)」を意味しているのではないか、と思うのですが…。いずれの画像のフッタも、最後の4バイトはこのような構成になっています。
または、もっと簡単に、「EOF識別子(FFD9)の前の2バイトは、リトルエンディアン16ビットで、フッタサイズを記載している」かも。- (9)の解説
- 何のことはない、上にも書きましたが、「FF D9」はJPEGのEOFを表す識別子です。これも文句言ったってどうにもなりません。
…で、このフッタを全てのJPEGファイル分を並べてダンプでもして見ていただくと判るんですが、19〜1E以降の部分、たとえば2D〜32の2バイトずつなんか、実に、怪しいです。なんというか、「ADの出力で、アナログ入力がNCになっているのでノイズを拾っている…」みたいなカンジのデータを吐き出しています。ということは、このボード(またはADチップ)は、「もっと多くの種類のログを取れる」という仕様なのだと思います。
この「番兵ちゃん」は、廉価版であるが故に、ログ数を絞っていると。逆に言えば、チャンネル数を減らすことで低価格を実現しているのでしょう。ありがたいことです。
(…ということは、上手くすれば、「アクセル開度」「ブレーキ踏量」「速度」等々を追加回路でログ取ることも不可能じゃない…かも。)
…と、ここまで判明すれば、あとは特に実装にあたって問題になる部分はありません。テキトーにプログラムを組みます。
なお管理人は、ExcelのVBAで作ってみました(←そんなことにExcelを使うな)。 だって、面倒がないんだもん。
先にお見せした「雪道」の画像は、この手法で切り出した生データです。管理人による再圧縮等は行っていませんので、データ形式が気になる人はそのまま画像をお持ち帰りになって、解析して見て下さい。
というわけで、「1万円で出来るEDR講座」でしたが、いかがでしょうか。
結局、1月に買って、これを製作している3月現在、いまだになーんにも起こっていません(笑)。
ただ、あくまで「保険」ですからねぇ…。その辺をどう考えるかは、人それぞれですが、アタシは「1万かけてもいいかな」って思います。
(c) Copyright by mazda.bongo.ne.jp 2009
mailto: brawny@h2.dion.ne.jp
Thanks for visiting !