Skip to main content
实时采集的传感器数据(触觉、IMU、手部追踪等)转瞬即逝——录制功能将这些数据持久化到文件,供后续离线分析、算法调试或数据集构建使用。Wuji SDK 内置录制引擎,将多通道传感器数据同步写入 MCAP 格式文件。整体流程分三步:
  1. 创建录制器 — 用 TopicRecorder 创建录制器,选择压缩算法
  2. 注册通道 — 调用 recorder.record(sub) 注册要录制的订阅通道,支持设备资源和全局资源混合注册
  3. 开始录制 — 调用 await recorder.start(path) 启动录制,返回 RecordingHandle 控制句柄
录制过程中可随时暂停和恢复,也可通过Episode 切换将连续采集拆分为多个文件。录制引擎内置录制监控,实时跟踪丢帧率、帧间抖动和同步偏差等指标。录制结束后返回录制摘要,汇总统计信息。
如需直接运行代码,见页面底部示例。

压缩选项

创建 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 接口参考。