Skip to content

YuyaIwata/drive_recorder_data_viewer_python

Repository files navigation

Sensor Analysis - ドライブレコーダー センサーデータ解析ツール

ドライブレコーダーのAVIファイルに埋め込まれた加速度センサーおよびGPSデータを抽出・可視化するツール群です。

対応機種について 本ツールは ユピテル Y-3000 のAVIファイルでのみ動作確認を行っています。 他機種のドライブレコーダーでは、センサーデータの埋め込み形式が異なる可能性があります。

機能

  • AVIファイルからセンサーデータ(加速度・GPS)を抽出
  • 加速度データのグラフ作成(SVG出力)
  • 動画再生と同期したセンサーデータのリアルタイム表示
  • OpenStreetMap地図上でのGPS軌跡表示
  • 加速度センサーを活用したGPS外れ値検出

必要環境

  • Python 3.13以上
  • uv(パッケージマネージャー)

インストール

cd sensor-analysis
uv sync

使用方法

1. センサーデータの抽出(CSV出力)

uv run python extract_sensor_data.py <入力ディレクトリ> [出力CSVファイル]

例:

uv run python extract_sensor_data.py ../ sensor_data.csv

出力フィールド:

  • timestamp: タイムスタンプ
  • accel_x, accel_y, accel_z: 加速度(G単位)
  • gps_latitude, gps_longitude: GPS座標(10進度)

2. 加速度グラフの作成

uv run python plot_acceleration.py [CSVファイル] [出力画像ファイル]

例:

uv run python plot_acceleration.py sensor_data.csv acceleration_graph.svg

3. 動画プレイヤー(センサー同期表示)

uv run python video_player_with_sensor.py <AVIファイル or ディレクトリ>

例:

# 単一ファイル
uv run python video_player_with_sensor.py ../00065980_20251109_113943_NOML_1.avi

# ディレクトリ内の全ファイル
uv run python video_player_with_sensor.py ../

# ワイルドカード
uv run python video_player_with_sensor.py ../*_1.avi

操作方法:

キー 動作
スペース 再生/一時停止
q 終了
→/l 5秒進む
←/h 5秒戻る
n 次のファイル
p 前のファイル

ウィンドウサイズは自由に変更可能です。

センサーデータ仕様

AVIファイル構造

Stream #0: Video (H.264, 1920x1080, 29fps)
Stream #1: Audio (PCM 16-bit, 16kHz)
Stream #2: Subtitle (センサーデータ, 72バイト/サンプル, 17Hz)

センサーデータ構造(72バイト)

オフセット サイズ 内容
40-43 4 bytes 加速度Z(float LE, G単位)
44-47 4 bytes 加速度X(float LE, G単位)
48-51 4 bytes 加速度Y(float LE, G単位)
60-63 4 bytes GPS緯度(float LE, NMEA形式)
64-67 4 bytes GPS経度(float LE, NMEA形式)

GPS座標変換

GPS座標はNMEA形式(DDMM.MMMM)で格納されています。

def nmea_to_decimal(nmea_value):
    degrees = int(nmea_value / 100)
    minutes = nmea_value - (degrees * 100)
    return degrees + (minutes / 60.0)

# 例: 3538.01 → 35.6335°

GPS外れ値検出アルゴリズム

加速度センサーと組み合わせて以下の条件でGPS外れ値を検出します:

  1. 物理的に不可能な速度: 180km/h(50m/s)を超える移動
  2. 静止中の異常移動: 加速度変動が小さいのにGPSが15m以上移動
  3. 加速度なしの高速移動: 加速度が小さいのに108km/h以上で移動

ファイル構成

sensor-analysis/
├── README.md                 # このファイル
├── pyproject.toml            # プロジェクト設定
├── extract_sensor_data.py    # センサーデータ抽出スクリプト
├── plot_acceleration.py      # 加速度グラフ作成スクリプト
├── video_player_with_sensor.py  # 動画プレイヤー
└── .map_cache/               # 地図タイルキャッシュ

ライセンス

このプロジェクトはMIT Licenseの下で公開されています。

サードパーティライセンス

このプロジェクトは以下のオープンソースライブラリを使用しています:

ライブラリ ライセンス
matplotlib BSD-style License
NumPy BSD 3-Clause License
OpenCV Apache License 2.0
pandas BSD 3-Clause License
requests Apache License 2.0

地図データ

地図表示にはOpenStreetMapのタイルを使用しています。

© OpenStreetMap contributors (ODbL)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages