ToolConvoyToolConvoyv2.6
MISC

MCAP 转 CSV — 在线免费将 ROS2 机器人日志转为 CSV

将 ROS2 MCAP 机器人日志文件转换为 CSV 表格。提取带有时间戳和十六进制载荷的通道消息。100% 隐私安全 —— 数据全程不离本机。

● 本地运行 · 仅在浏览器中页面加载以来工具发出的网络请求:0 次

MCAP 文件就像是机器人的「黑匣子」 —— 每一次传感器读数、每一条控制指令、每一条诊断消息都会加上时间戳并存储下来,供后续回放与分析。该格式是二进制且结构化的:一条条记录按顺序排列,每条记录都有一个标识其类型的 opcode(header、channel declaration、message、schema definition、chunk 等)、一个 64 位的记录长度,以及一条与记录类型对应的 payload。MCAP 转 CSV 工具读取这段二进制流,把最常用的数据提取到 CSV 表格中:通道元数据(topic 名称、message encoding、schema ID)、schema 定义,以及带有日志时间戳和十六进制编码 payload 的消息数据。每个通道单独成一块 CSV,便于按 topic 单独分析。

MCAP 格式由 Foxglove 设计,是 ROS2 的录制标准,取代了 ROS1 的 bag 格式。相比旧格式,它有几个优势:自描述(schema 内嵌在文件里)、支持多种压缩编解码器、二进制结构定义清晰且带有固定 magic number(\u0089MCAP0\u00d1\u001a)、与语言无关,C++、Python、TypeScript、Go 都有官方库。浏览器工具借助这一固定的二进制结构来解析记录,无需任何运行时依赖 —— 仅靠每个浏览器内置的 JavaScript DataView 和 Uint8Array API 即可。

最常见的用例是这样的:一位机器人工程师在机器人上录制了一段测试运行,产出一个 500 MB 的 MCAP 文件,需要在不必启动完整 ROS2 工具链的前提下查看某个特定 topic —— 比如 /imu 加速计数据。浏览器工具把该通道的消息提取为带时间戳和十六进制 payload 的 CSV。工程师在 Excel 中打开这个 CSV,画出时间戳那一列,校验数据率是否正确。文件由 FileReader API 在本地读取,没有任何字节被上传。如果需要完整的解压和 schema 感知解码,mcap-cli 和 Foxglove Studio 提供更高一级的功能。

广告

使用方法

  1. 拖入你的 MCAP 文件

    把 `.mcap` 文件拖到上传区。MCAP 是 ROS2(Robot Operating System 2)的标准录制格式,用于在机器人运行期间记录传感器数据、控制指令、诊断信息以及节点间的通信。

  2. 查看提取的数据

    工具会解析 MCAP 的二进制结构,提取通道(ROS2 topics)、schema(消息定义)以及消息。每个通道的消息以 CSV 块的形式输出,包含日志时间戳、序列号和十六进制编码的载荷数据。文件元数据(profile、library)以及通道 / schema 摘要也会一并包含在内。

  3. 下载为 CSV

    把输出下载为 `.csv` 文件。可以导入到 Excel、Python pandas 或 MATLAB 中进行可视化、统计分析或归档。十六进制载荷可以依据通道元数据中的消息 schema 定义解码为结构化数据。

常见问题

什么是 MCAP?

MCAP(读作 'em-cap')是 ROS2 的标准录制与回放格式,由 Foxglove 设计。它以二进制格式存储机器人 topic 上的带时间戳消息,并支持可选的 chunk 压缩。它是 ROS1 `.bag` 格式在 ROS2 上的继任者,用于在机器人测试和部署期间记录与回放传感器数据、执行器指令和诊断信息。

会提取哪些数据?

文件头:MCAP profile 以及生成它的 library。通道:每个 ROS2 topic 对应的 channel ID、topic 名称、message encoding,以及关联的 schema ID。Schema:schema 名称、encoding 以及原始 schema 数据。消息:每个通道的消息包含日志时间戳(自 epoch 起的纳秒数)、消息序列号,以及 payload 的前 64 字节(以十六进制形式)。

我的机器人数据会被上传吗?

不会。所有处理完全在你的浏览器中运行,使用 FileReader API 和 JavaScript 字节解析。MCAP 文件在本地读取,永远不会上传到任何服务器。页面加载完成后可以离线使用。机器人日志可能包含敏感数据 —— 专有算法、测试结果和系统诊断 —— 这些数据不应该离开你的机器。

如何处理 chunk 压缩?

MCAP 文件可以选择使用 chunk 压缩(LZ4 或 ZSTD)来节省存储。本工具解析未压缩的记录,并能识别 chunk 记录(opcode 0x06),但不会解压 chunk payload。压缩 chunk 内的消息不会被提取。处理压缩文件请使用 mcap-cli 或 Foxglove Studio。

本工具与 mcap-cli 和 Foxglove 相比如何?

mcap-cli(`pip install mcap`)提供完整的命令行内省能力,包括解压和 schema 感知的消息解码。Foxglove Studio 提供完整的 GUI,可以绘制时序图、3D 可视化以及点云渲染。浏览器工具填补了轻量级的空白 —— 无需安装 ROS2 工具链就能在 Excel 中快速查看,方便与非机器人领域的同事分享数据子集。

限制说明

  • 不做 chunk 解压存储在压缩 chunk(LZ4 或 ZSTD)中的消息不会被提取。工具能识别 chunk 记录,但不会解压它们。需要完整的解压支持请使用 mcap-cli 或 Foxglove。
  • 不做 schema 感知解码消息 payload 以原始十六进制字符串输出。工具不使用 schema 定义把消息解码为带类型的字段(如 float32、string、自定义 ROS2 消息类型)。需要类型化解码请配合 ROS2 消息定义使用 mcap-cli。
  • 不支持 ROS1 bagROS1 `.bag` 文件使用完全不同的格式,基于 SQLite 数据库加上自定义记录类型。本工具只支持 ROS2 引入的 MCAP 格式。处理 ROS1 bag 文件请使用 `rosbag` 或 `bagpy`。

平台说明

macOS
无需安装 ROS2 或 mcap-cli,就可以在浏览器中查看 ROS2 机器人产出的 MCAP 文件。完整解码请 `pip install mcap`,然后运行 `mcap info file.mcap && mcap cat file.mcap`。
Windows
Windows 上的 ROS2 产出的 MCAP 文件兼容本工具。完整的 ROS2 工具链请通过 Chocolatey 安装 ROS2 Humble 或更新版本,或下载 ROS2 的 Windows 二进制包。
Linux
`mcap-cli`(`pip install mcap`)是 MCAP 内省的标准 CLI 工具。ROS2 自带的 `ros2 bag info` 也能提供类似的元数据。浏览器工具适合在没有终端时快速查看,或与非机器人领域的团队成员分享数据。
Web
完全在浏览器中运行。MCAP 数据不会上传到任何服务器。机器人日志文件可能包含专有的传感器配置、调参参数和测试数据,这些内容应该留在你的本机。
广告
广告