Summary

Jeremy Leibs, a former Willow Garage engineer who helped design rosbag, traces the format’s evolution from V1.1 through V2.0 and then beyond to MCAP, explaining why each iteration was necessary and what design trade-offs were made. He argues that the same motivations — capturing live robot data, enabling offline replay and analysis, and reducing iteration time — now demand a new generation of AI-era tooling that Rerun is building.

作者是 rosbag 的原始設計者之一,詳細梳理了 ROS bag 格式從 V1.1、V1.2 到 V2.0 的演進,以及今日 MCAP、VRS 等後繼格式的取捨。文章以此為引,說明為什麼 AI 時代的機器人工具需要進一步演化,而 Rerun 正是這個下一代工具的嘗試。

Key Points

  • Rosbag 的核心目標:record(記錄)、move(搬移)、playback(回放),讓開發者脫離對實體機器人的依賴
  • V1.1 → V1.2:加入 message schema 嵌入 + 時間索引,解決版本相容與隨機存取問題
  • V2.0 引入 Chunk 分塊概念(群組壓縮,含 sub-index),讓 rxbag/rqt_bag 的 GUI 隨機存取成為可能
  • ROS2 轉向插件式儲存(sqlite3 後端),但犧牲了串流追加寫入和自包含 schema
  • MCAP(Foxglove 開發)是目前最接近 rosbag 精神的演化版,支援可擴充 serialization
  • 下一代工具需要的特性:跨 context 的資料可見性、first-class 關係模型、跨 run 的查詢/彙總、AI/ML 與機器人工作流程融合

Insights

rosbag 的 Chunk 概念(V2.0,~2010)和 Rerun 現代 Chunk 架構的設計動機高度相似:都是為了讓隨機存取和 GUI 工具成為可能。這篇文章是理解「為什麼 Rerun 用 chunk-based columnar storage」的最佳歷史背景。

ROS 格式因為深綁定 ROS message 序列化格式,造成生態系碎片化(各公司另起爐灶)。這是 MCAP 和 Rerun 都刻意解耦序列化層的根本原因。

Connections

Raw Excerpt

The initial goal of rosbag was to create this added value by enabling developers to easily record data about the live robot session, move that data somewhere else, and then later seamlessly playback that recorded data to make use of it in different ways.