# ROS2 SQLite bag 如何转换为 MCAP

> 原文链接：https://robotics.hellobike.com/pitfalls/2023-10-27-robotics-se-104976
> 频道：pitfalls | 更新日期：2023-10-27 | 标签：auto, stackexchange, ros2, rosbag, mcap
> 核心摘要：可用 mcap convert 或 ros2 bag convert 将 ROS2 SQLite .db3 转为 MCAP，需先加载消息定义。

# ROS2 SQLite bag 如何转换为 MCAP

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Convert ROS2 SQLite bag to MCAP format](https://robotics.stackexchange.com/questions/104976/convert-ros2-sqlite-bag-to-mcap-format)（Robotics Stack Exchange #104976）

**状态**：已解决

## 问题

提问者有 SQLite 格式 ROS2 bag，想转为 MCAP，但找不到示例或工具；缺少消息定义时会报 `failed to find schema` 或提示未知类型。

## 环境

ROS 2

## 解决办法

1. 构建并使用 `mcap` CLI：安装 `golang-go`，克隆 `foxglove/mcap`，在 `mcap/go` 下执行 `make -C cli/mcap build`。
2. 在转换前 `source` 含有所需消息定义的 ROS2 工作空间，例如 `/opt/ros/humble/setup.bash` 或自定义工作空间。
3. 进入 `.db3` 所在目录，执行 `mcap convert foo.db3 foo.mcap`，再用 `mcap info foo.mcap` 检查。
4. 也可用 `ros2 bag convert`：在 YAML 中设置 `output_bags`、`uri`、`storage_id: mcap`、`all: true`，然后执行 `ros2 bag convert -i 输入.db3 -o convert.yaml`。

原问题作者：Ken Y-N；采纳答案作者：Lucas Walter。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #104976：Convert ROS2 SQLite bag to MCAP format](https://robotics.stackexchange.com/questions/104976/convert-ros2-sqlite-bag-to-mcap-format)