notes
Tools

rosbag 解析ワークフロー

bag 解析は Foxglove (可視化)・Jupyter/Python (深い分析)・スクリプト (反復) の 3 層で分担、WebUI に組み込むと責務過剰

要点: bag 解析は WebUI に組み込まず、Foxglove (可視化)・Jupyter や Python スクリプト (深い分析)・CI (反復自動化) の 3 層で分担する。WebUI は bag の list と Foxglove へのジャンプまでにとどめる。

分担#

層ツール責務
操作・一覧WebUI実機操作、bag list + metadata、Foxglove へのジャンプ
可視化Foxglovebag 再生、panel で raw data 表示、時系列 plot
深い分析Jupyter notebook (Python)scipy/pandas/matplotlib で自由
反復・共通分析専用スクリプト (analyze_*.py)定型分析、HTML/PNG レポート出力
自動化CI / GitHub Actionstest 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 と質問を渡す

関連#

最終更新:

On this page