ドライブレコーダーのAVIファイルに埋め込まれた加速度センサーおよびGPSデータを抽出・可視化するツール群です。
対応機種について 本ツールは ユピテル Y-3000 のAVIファイルでのみ動作確認を行っています。 他機種のドライブレコーダーでは、センサーデータの埋め込み形式が異なる可能性があります。
- AVIファイルからセンサーデータ(加速度・GPS)を抽出
- 加速度データのグラフ作成(SVG出力)
- 動画再生と同期したセンサーデータのリアルタイム表示
- OpenStreetMap地図上でのGPS軌跡表示
- 加速度センサーを活用したGPS外れ値検出
- Python 3.13以上
- uv(パッケージマネージャー)
cd sensor-analysis
uv syncuv 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進度)
uv run python plot_acceleration.py [CSVファイル] [出力画像ファイル]例:
uv run python plot_acceleration.py sensor_data.csv acceleration_graph.svguv 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 | 前のファイル |
ウィンドウサイズは自由に変更可能です。
Stream #0: Video (H.264, 1920x1080, 29fps)
Stream #1: Audio (PCM 16-bit, 16kHz)
Stream #2: Subtitle (センサーデータ, 72バイト/サンプル, 17Hz)
| オフセット | サイズ | 内容 |
|---|---|---|
| 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座標は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外れ値を検出します:
- 物理的に不可能な速度: 180km/h(50m/s)を超える移動
- 静止中の異常移動: 加速度変動が小さいのにGPSが15m以上移動
- 加速度なしの高速移動: 加速度が小さいのに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)