数据采集与管理:
录制协议 本节主要介绍机器人端简化版内置录制器的只读就绪检查、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 --helpTIP
本页面引用的 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字段必须为精确整数0(false、0.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- 时钟缓冲提醒:录制器启动后约有
的 Topic 订阅跳过窗口,关键业务动作应在状态确认后另行留出缓冲时间,切勿将 Service 响应时刻等同于首帧记录时刻。 - 预打印元数据机制:
record_once.py在发送 start 前会先打印紧凑 JSON(形如{"status":"prepared","run_id":"...","meta":{...}}),以便在请求超时时追溯真实的后台任务状态。正常完成后再输出带同一 run ID 和完成目录的 JSON。 - 成功判据:start 与 stop 均返回精确整数
status: 0,且prepared与completed两行的 Run ID 严格一致,最终生成对应的全路径目录/home/realman/ssd/mcap_recorded/<完整目录名>。 - 超时失败处理:请求超时不能证明录制未生效,严禁立即重试 start。必须先利用
prepared行的同一组元数据查录制中目录、完成目录、录制器日志和服务状态;若 stop 响应超时,须在人工核对日志后用同一元数据做一次受控停止。如果结果不唯一,保留现场,不自动挑选或删除。

