Tools
rosbag 解析ワークフロー
bag 解析は Foxglove (可視化)・Jupyter/Python (深い分析)・スクリプト (反復) の 3 層で分担、WebUI に組み込むと責務過剰
要点: bag 解析は WebUI に組み込まず、Foxglove (可視化)・Jupyter や Python スクリプト (深い分析)・CI (反復自動化) の 3 層で分担する。WebUI は bag の list と Foxglove へのジャンプまでにとどめる。
分担
| 層 | ツール | 責務 |
|---|---|---|
| 操作・一覧 | WebUI | 実機操作、bag list + metadata、Foxglove へのジャンプ |
| 可視化 | Foxglove | bag 再生、panel で raw data 表示、時系列 plot |
| 深い分析 | Jupyter notebook (Python) | scipy/pandas/matplotlib で自由 |
| 反復・共通分析 | 専用スクリプト (analyze_*.py) | 定型分析、HTML/PNG レポート出力 |
| 自動化 | CI / GitHub Actions | test run 毎に bag → 分析スクリプト → 結果コミット |
なぜ WebUI に組み込まないか
- WebUI = リアルタイム操作、bag 解析 = post-hoc の探索的作業。モードが違う
- 状態管理: WebUI は state 軽い設計に向いてる、bag 分析は state 重い (大容量 file + 計算)
- UI の使い方: WebUI は「押す」中心、分析は「掘る」中心
両方乗せると「デバッガ」と「分析ツール」の 2 役になってどっちも中途半端。
WebUI の bag 関連責務 (最小)
- bag list: 記録済み bag の一覧 (mtime、size、topic 一覧、duration)
- Foxglove ジャンプ: bag を開いた状態で Foxglove 起動する URL 生成
- (任意) タグ付け: 「正常」「異常」「gs_usb 疑い」等のメタデータ
- 管理: 削除・アーカイブ・移動
Foxglove との連携
Foxglove は URL 経由で bag を開ける:
https://app.foxglove.dev/?ds=rosbag2&ds.url=<bag URL>WebUI backend が bag を HTTP で expose → Foxglove が URL 指定で開く。Layout も layoutUrl で指定できる。
Python での分析
rosbag2_py または mcap パッケージで bag を Python から読める:
from rosbag2_py import SequentialReader, StorageOptions, ConverterOptions
reader = SequentialReader()
reader.open(
StorageOptions(uri='path/to/bag', storage_id='mcap'),
ConverterOptions('', ''),
)
while reader.has_next():
topic, data, t = reader.read_next()
# data はシリアライズされたバイト列、rclpy deserialize が要るPandas DataFrame にしてしまえば以降は matplotlib/seaborn の世界。
反復分析のスクリプト化
Python スクリプトを固定パターン化して:
- 引数: bag path
- 出力: HTML or PNG or Markdown レポート
- 例:
analyze_velocity_tracking.py <bag>→ 追従遅延の統計 + Plot
これを CI で走らせれば、実験のたびに自動レポート生成。
AI 支援 (LLM 経由の分析)
- 「この bag の velocity 追従遅延を出して」→ LLM が rosbag2_py + numpy で分析、結果を chat + オプションでノート化
- 「この bag と前回の bag を比較」→ diff レポート生成
- 「異常箇所を見つけて」→ statistical outlier detection
会話ベースで柔軟に定義できるので、専用 UI 作るより効率的なことが多い。
推奨アーキテクチャ
実機
↓ bag 記録
[ローカル bag file / object storage / etc.]
↓ ↓ ↓
WebUI Foxglove Jupyter/script
一覧・ 可視化 分析
ジャンプ ↓
レポート (HTML/PDF/markdown)
↓
ノートサイト (project 側に記録)選び方
| 状況 | 使うツール |
|---|---|
| 今すぐ 1 回だけ見たい | Foxglove |
| 数値を出したい (統計) | Python (notebook or script) |
| 何度もやる分析 | script 化 → 引数化 |
| Test run 毎に見たい | CI で script 自動実行 |
| 「なんか変」を発掘したい | LLM に bag と質問を渡す |
関連
最終更新: