August 28, 2024
译者按
原文链接:https://shorturl.at/xqOCp
本文据原文整理而来,有不当之处欢迎联系我们指出
coScene 自成立之初,一直在服务中低速自动驾驶公司、自主机器人和具身机器人公司。不同于自动驾驶公司呈现的碎片化特点(各家可能采用不同的消息中间件),机器人公司越来越多的沿用 ROS 系统。
自 2007 年出世以来,ROS 历经 17 年的发展, ROS2 也日臻成熟。特别是前不久 Google 收购两家围绕 ROS 生态进行商业化的公司,让一些人感叹 “收购机器人界的「Android」,谷歌豪赌未来五十年” 。
那么,在 ROS 系统上,该使用什么样的格式存储数据,使用何种数据可视化工具对数据进行可视化?这些问题都是目前行业存在的痛点问题。
刻行时空结合自己的经验和行业的最佳实践,推荐使用 MCAP 作为 ROS 上的默认格式。
如果您从事机器人或自动驾驶车辆数据方面的工作,那么您可能对高效存储和传输多模态传感器数据所面临的挑战并不陌生。这可能会在与外部供应商共享数据时造成一些麻烦: 如何发送包含大量激光雷达、雷达、相机和校准数据的记录? 如何打包和转换数据,使其与供应商的系统兼容?
这就是 MCAP 格式的用武之地。
什么是 MCAP
MCAP,即 Message Capture,是一种开源容器文件格式,专门针对存储来自多传感器(如激光雷达、雷达、摄像头、GPS、IMU 等)以及数据流(如校准数据、传感器元数据、物体检测等)的带时间戳数据而进行优化。
为什么是 MCAP
与现有的机器人数据格式相比,MCAP 具有以下五点优势:
异构数据支持:MCAP可以在单个文件中存储多种序列化格式 ( Protobuf、ROS、JSON 等) 的数据,使得我们能够在一个自包含的格式中处理来自不同传感器和源的数据。
高性能写入:MCAP 使用追加式结构,针对高吞吐量数据写入进行了优化,最小化了磁盘 I/O,并降低了录制中断导致数据损坏的风险。
高效数据访问:MCAP 文件包含可选索引,支持远程连接下的快速随机访问和跳转,这使得我们可以高效地提取数据子集进行分析,而无需读取整个文件。
广泛语言支持:MCAP 拥有 C++、Python、Go、Rust 等多种语言的原生库,可以轻松集成到各种机器人和汽车软件堆栈中。
自描述性:MCAP 将消息模式直接嵌入到文件中,即使随着定义的变化,文件也能保持可读性,无需依赖外部资源。还可以存储校准数据和其他元数据。
结合以上五点优势,使得 MCAP 非常适合于汽车和机器人领域中录制和共享高频率的多模态传感器数据。
MCAP 与 ROS
ROS 1 的数据包很难与非 ROS 工具一起使用,而使用 SQLite 的 ROS 2 数据包也不是完全独立的。 对于使用 ROS 的团队来说,MCAP 为摆脱现有 ROS bag 格式的限制提供了升级途径。
令人兴奋的是,ROS 2 社区已决定采用 MCAP 作为默认数据包格式,从 2023 年 5 月发布的 ROS 2 Iron Irwini 开始。 这意味着您现在可以在 ROS 2 中以 MCAP 格式进行本地记录,并充分利用其开箱即用的优势。
coScene对于 MCAP 的支持
在 coScene,我们一直在寻找更简单的方式帮助我们的客户利用含有多传感器数据的新数据范式的时空数据。因此,我们很高兴地宣布,我们已经支持对 MCAP 格式数据的上传、下载以及数据可视化。这项功能目前已经发布到了我们的 SaaS 版本,如果您想尝试,可以与我们联系或直接登录尝试可视化 MCAP 格式的文件。
coScene 团队在服务机器人行业的工作中,已经认识到 MCAP 格式的明显优势,十分建议大家使用它,以解决 ROS bag 等现有格式的不足之处。我们相信 MCAP 有潜力成为一种标准化的格式,并大大简化整个行业的数据管理。支持 MCAP 是我们致力于为机器人和自动驾驶数据提供最佳工具的努力的一部分。
不管是机器人还是自动驾驶行业,可能都关心数据如何从 MCAP 格式转变成训练时用的数据。这一方面的工作,刻行时空正在与一些头部厂商合作,一起探索潜在的方案。如果您感兴趣,也非常欢迎您来联系我们。