2017年 秋期 応用情報技術者試験 問7
ドライブレコーダ
H社は、カーアクセサリ用品の開発会社である。H社では、このたび、ドライブレコーダ(以下、レコーダという)を設計することになった。
レコーダは、自動車運転時における周囲の状況を撮影し、急停止、衝突など(以下、衝撃という)を検出すると、衝撃までの最大10秒間及び衝撃後20秒間の動画に、GPS情報を含めて動画ファイルとしてSDカード(以下、SDという)に保存する。
[レコーダの基本動作]
図1にレコーダのハードウェア構成を示す。
(1)電源投入後の動作
各ハードウェアは、電源投入で起動し、次のとおり動作を開始する。
① 制御装置は、衝撃センサの割込みを有効にし、カメラに撮影を指示する。
② GPSモジュールは、GPS情報の取得を開始する。取得したGPS情報を1秒ごとに制御装置に通知し、GPS情報を取得できないときは通知しない。
GPS情報には、GPSから得られた位置及び時刻が含まれる。
③ 制御装置は、最初のGPS情報を受け取ると、GPS情報から時刻を取り出してシステム時刻に設定し、その後、ソフトウェアでシステム時刻を逐次更新する。
また、GPS情報を取得できるときは、GPS情報の時刻によって1時間ごとにシステム時刻を補正する。
④ 制御装置は、カメラから1フレームごとの画像データを受け取り、記録バッファに書き込む。このとき、GPS情報があれば、画像データに含めて記録バッファに書き込む。
(2)衝撃検出時の動作
・衝撃センサは、衝撃を検出すると、制御装置に割込みで通知する。
・制御装置は、衝撃センサからの割込みを受けると記録バッファに書き込まれている画像データを動画ファイルとしてSDに保存する。
(3)電源断時の動作
レコーダは電源断となっても最低30秒間は動作を維持できる二次電池を内蔵している。電源断となったときには、衝撃センサからの割込みを禁止とし、二次電池から電力を供給する。この結果、レコーダがaしているときに電源断となっても、動画ファイルの破損を防止できる。
[記録バッファ]
記録バッファは、画像データを書き込むためのFIFO構成のメモリである。カメラで撮影した画像データが書き込まれ、動画ファイルをSDに保存するとき、その画像データが読み出される。読み出された画像データは記録バッファから削除される。
画像データが読み出されずに記録バッファの空き容量がなくなったときは、最も古い画像データから順に破棄され、常に最新の画像データが書き込まれていることになる。
カメラはFフレーム/秒で画像を撮影する。1フレームの画像データはGPS情報を含めてNバイトである。
記録バッファには、衝撃検出直前の10秒間分の画像データが書き込まれる。さらに、動画ファイルの保存の処理遅れを考慮して、10.5秒間分の画像データを書き込むことができる容量とする。
[動画ファイルの保存]
動画ファイルは、SDの空き容量が十分であれば、衝撃を検出したシステム時刻(YYYYMMDD_hhmmss)をファイル名として保存される。ここで、YYYY、MM、DD、hh、mm、ssは、それぞれ西暦年、月、日、時、分、秒を表す。
なお、システム時刻が設定されていないときは、動画ファイルを保存しない。
(i)制御装置は、衝撃センサからの割込みを受けると、記録バッファに書き込まれている最大10秒間分の画像データを圧縮して動画ファイルとしてSDに保存する。保存に要する時間は最大100ミリ秒である。
(ii)以降20秒間、記録バッファに書き込まれる画像データを待ち受け、新しい画像データが書き込まれると、逐次、圧縮して動画ファイルに追記する。
(iii)SDに動画ファイルを保存中に再度衝撃センサからの割込みを受けると、受けた時点から20秒間、(ii)と同様に画像データを圧縮して動画ファイルに追記する。
[レコーダのタスク構成]
表1にレコーダのタスク構成を示す。
各タスクはイベントドリブン方式で制御され、イベントを受信すると必要な処理を行う。
衝撃センサが衝撃を検出すると割込みで通知し、割込み処理プログラムは保存タスクに衝撃イベントを送信する。
タスク | 主な動作 |
---|---|
録画タスク | ・カメラからの画像データを1フレームごとに記録バッファに書き込む。このとき、GPS情報があれば画像データに含める。保存タスクに画像格納イベントを送信する。 ・GPSタスクからGPS取得イベントを受信すると、GPS情報を保存する。 |
保存タスク | ・記録バッファの画像データを動画ファイルとしてSDに保存する。 |
GPSタスク | ・1秒ごとにGPS情報を取得し、録画タスクにGPS取得イベントを送信する。 ・電源投入直後及び1時間ごとに、GPS情報の時刻をシステム時刻に設定する。 |
タイマタスク | ・指定された時間が経過するとタイマ満了イベントを送信する。 |
[保存タスクの動作]
図2に保存タスクの状態遷移図を示す。
(1)イベント待ち
衝撃イベントを受信すると、衝撃検出前データ保存状態に遷移する。
(2)衝撃検出前データ保存
タイマにe秒を設定し、動画ファイルを生成する。次に、記録バッファに書き込まれている画像データを読み出して動画ファイルに追記する。記録バッファに書き込まれている最大10秒分の画像データを全て保存すると、衝撃検出後データ保存状態に遷移する。
(3)衝撃検出後データ保存
各種イベントを受信してイベントに応じた処理を行う。
・画像格納イベントを受信すると、記録バッファから1フレーム分の画像データを読み出し、動画ファイルに追記する。
・衝撃イベントを受信すると、設定してあるタイマ要求を取り消し、タイマに新たにf秒を設定する。
・タイマ満了イベントを受信すると、動画ファイルの保存を終了し、イベント待ち状態に遷移する。