SuperAPI AI 工具集

rerun-mcap

数据与分析

查看项目

更新于 10-16 00:20

技能介绍

用途:将 MCAP 录制文件摄取为 Rerun 的惰性 chunk 流,便于后续可视化与处理。

主要能力:McapReader 把 MCAP 文件转成流,每个 topic 在自身路径上生成一个实体,消息负载由可插拔解码器解析。默认解码器(decoders=None)下,消息 schema 名决定 topic 变成什么:foxglove.FrameTransforms 变为 Transform3D,foxglove.CameraCalibration 变为 Pinhole,foxglove.CompressedVideo 变为 VideoStream 加 CoordinateFrame,其他 foxglove 已知类型与 ros2 已知类型映射到对应 archetype;自定义 protobuf schema 则落为单个 <schema.name>:message 结构体,需用 DeriveLens 加 Selector 附加语义。MCAP 内嵌的 URDF 也可摄取。

使用方式: from rerun.chunk import McapReader reader = McapReader(mcap_path) stream = reader.stream() 实体路径即 topic 名,可提前过滤:McapReader(path).stream().filter(content="/sensors/**")。topic 正则使用 RE2 语法且不锚定,cam 会匹配 /external/cam_low 与 /camera_info,需要时显式锚定(^/external/cam)。优先在 reader 层过滤,避免被排除的 topic 被解码。

限制与注意:空流且无报错可能因正则未匹配任何 topic,或通道解码器未产出任何行;可用 Chunk.format() 检查,或先用 mcap CLI 对比 topic 名。timeline_type="timestamp" 会把 MCAP 日志时间解释为自 epoch 起的墙钟纳秒,时钟错误时应在 reader 用 timestamp_offset_ns 修正。解码器子集可能静默跳过无人认领的 topic,topic 缺失时可重试 decoders=None。仅在需要无负载的原始记录元数据或重写容器时,才改用低层 mcap.reader.make_reader。示例修复透镜与数据集相关,盲目套用可能损坏正确标定。