- 创建录制器 — 用
TopicRecorder创建录制器,选择压缩算法 - 注册通道 — 调用
recorder.record(sub)注册要录制的订阅通道,支持设备资源和全局资源混合注册 - 开始录制 — 调用
await recorder.start(path)启动录制,返回RecordingHandle控制句柄
如需直接运行代码,见页面底部示例。
压缩选项
创建TopicRecorder 时通过 compression 参数选择压缩算法:
消息时间戳
MCAP 文件里每条消息带两个时间字段。log_time 是主机收到该帧的时刻。publish_time 取数据帧 FrameHeader 的 timestamp_us,换算为纳秒写入,保留设备侧的事件时刻。两者分开保存后,对带有效设备侧时间戳的消息,下游可按 publish_time 对齐多路数据流,不受传输与排队延迟影响。回退为主机接收时刻的消息不在此列。
不带 FrameHeader 的资源(如普通标量参数),以及 timestamp_us 为 0 的帧,publish_time 回退为主机接收时刻。timestamp_us 的含义与时间同步状态有关,见时间同步与时间戳。
录制全局资源
跨设备合并的全局资源(如坐标变换)也可以录制,与设备资源混合注册:暂停与恢复
录制过程中可随时暂停和恢复。暂停期间设备数据仍在订阅,但不会写入文件。Episode 切换
同一个TopicRecorder 可多次调用 start() 切换输出文件,无需重新注册通道。适合将连续采集拆分为多个独立录制片段:
录制监控
录制期间可实时监控数据质量指标:channels)见通用数据类型 — QualityMetrics。
质量告警
录制引擎内置 SPC 告警机制,当质量指标持续超过阈值时触发告警:录制状态
监控录制的运行状态:录制摘要
handle.stop() 返回 RecordingSummary,包含录制的统计信息:
示例
综合演示暂停/恢复、录制监控、Episode 切换和录制摘要:接口清单
录制引擎只在 Python 接口提供,本页代码示例同样只有 Python 一侧。C 程序可用
wuji_<device>_subscribe_<stream>() 取到同一批帧数据,落盘格式、质量统计与 Episode 切换需要自行实现,接口见 C 接口参考。