Skip to content

录制协议

本节主要介绍机器人端简化版内置录制器的只读就绪检查、Service 协议格式、单次录制操作以及端到端录制交付闭环 Demo 的执行规范。

只读就绪检查与挂载点校验

  • Shell 归属:就绪检查和 record_once.py 均在机器人端执行。
  • 风险等级:可控风险。
    • 影响:开始会持续占用磁盘及算力资源;
    • 注意:在停止和落盘完成前禁止断电。
  • 就绪检查
bash
ros2 service list | grep -x /mcap_recorder_service
findmnt -T /home/realman/ssd
df -h /home/realman/ssd
du -sh /home/realman/ssd/mcap_recording \
  /home/realman/ssd/mcap_recorded \
  /home/realman/ssd/mcap_compressed \
  /home/realman/ssd/rm_mcap 2>/dev/null
python3 examples/04_data_recording/record_once.py --help

TIP

本页面引用的 examples/ 脚本请通过正式交付渠道提供的交付包获取,并使用与软件版本匹配的交付包版本;文档中的路径仅用于说明脚本结构。

提醒

  • findmnt -T 的输出必须明确显示 /home/realman/ssd 本身是挂载目标,且挂载源必须为 /dev/... 块设备。
  • 安全阻断:若目标仅为系统盘下的同名普通目录、或挂载类型为 NFS / tmpfs / bind 挂载以及没有 NVMe 挂载时,严禁启动录制,防止大量高频数据写入系统根分区导致系统崩溃。
  • 目录结构与边界
目录当前观察角色客户使用边界
mcap_recording简化版正在录制/收尾中的目录不拉取、不删除;结果未知时先查状态。
mcap_recorded简化版停止后完成目录本手册录制交付 Demo 的正式来源
mcap_compressed压缩处理候选目录参考信息;未形成客户压缩闭环
rm_mcap平台版数据与上传检查点根目录参考信息;不得与简化版完成目录混用

Service 协议格式

Service 接口为 /mcap_recorder_service,其类型为 rm_robot_interfaces/srv/StringCmd。其 data 字段承载如下 JSON:

json
{
  "operate": 1,
  "command": "capture",
  "sence_id": "kitchen",
  "task_id": "pick_001",
  "operator_id": "op01",
  "device_id": "110"
}
  • operate:必须为整型。1 表示启动录制,0 表示停止录制。字符串 "1" 在旧版录制器上有导致进程异常的实机记录,严禁传入。
  • command:固定填入 "capture"。未闭环验证的 query / compress 接口不得作为正式接口调用。
  • sence_id / task_id / operator_id / device_id:四个标识字段必须非空。此内容将参与物理目录命名,严禁包含路径分隔符 (/)、控制字符或 Shell 元字符
  • 成功响应判据:服务返回的 JSON 对象中,status 字段必须为精确整数 0false0.0 及字符串 "0" 均视为非法响应)。

单次录制控制与异常处理

本交付包的单次录制示例会生成 16 位唯一 run ID,并写入 task_id,在停止后只接受本次新增且精确匹配的一个普通目录:

bash
python3 examples/04_data_recording/record_once.py \
  --scene kitchen --task pick_001 --operator op01 --device 110 --duration 10
  • 时钟缓冲提醒:录制器启动后约有 1 秒 的 Topic 订阅跳过窗口,关键业务动作应在状态确认后另行留出缓冲时间,切勿将 Service 响应时刻等同于首帧记录时刻
  • 预打印元数据机制record_once.py 在发送 start 前会先打印紧凑 JSON(形如 {"status":"prepared","run_id":"...","meta":{...}}),以便在请求超时时追溯真实的后台任务状态。正常完成后再输出带同一 run ID 和完成目录的 JSON。
  • 成功判据:start 与 stop 均返回精确整数 status: 0,且 preparedcompleted 两行的 Run ID 严格一致,最终生成对应的全路径目录 /home/realman/ssd/mcap_recorded/<完整目录名>
  • 超时失败处理:请求超时不能证明录制未生效,严禁立即重试 start。必须先利用 prepared 行的同一组元数据查录制中目录、完成目录、录制器日志和服务状态;若 stop 响应超时,须在人工核对日志后用同一元数据做一次受控停止。如果结果不唯一,保留现场,不自动挑选或删除。