概述
接口定义章节描述 NRCP 当前版本可用的协议层接口与业务层接口。协议层接口用于建立 Flow、关闭 Flow、报告错误、恢复 Session 等通用能力;业务层接口用于机械狗基础控制与状态反馈
当前版本接口分为两类:
| 类别 | 说明 |
|---|---|
| 协议层接口 | Flow 协商、Flow 关闭、ACK、Error、Heartbeat、Recovery 等 |
| 业务层接口 | 切换模式、切换步态、速度指令、状态反馈等 |
默认约定
- 协议控制类 Payload 默认使用 JSON;
- 业务 Operation 默认使用 JSON;
- 高频控制 Flow 与状态反馈 Flow 默认使用 Raw Binary;
- 非 Flow 消息使用
channel_id = 0; - Flow Data 必须使用已建立 Flow 的
channel_id和flow_epoch; - Flow 只有在本地连接状态为
CONNECTED时允许建立和运行; - 当前版本不包含认证、权限 Scope、控制权租约和 Action/Task 机制;
与 ROS 的边界
NRCP Raw Binary Schema 不要求与 ROS Message 完全等价。通信网关负责在 NRCP 与内部 ROS 通信之间做映射
典型映射规则:
- 网关向 ROS 发布消息时,可按本地策略填充 ROS Header、
frame_id、时间戳和缺省字段; - 网关向控制终端发送状态 Flow 时,NRCP Header 中的
source_mono_timestamp表达发送方单调时间戳; - Raw Binary Payload 只承载控制终端需要直接解析的业务字段;
- ROS 坐标系、单位、Topic 名称与缺省字段应由具体业务 Flow 页面或网关实现文档补充;
NRCP 文档只规定外部控制终端与通信网关之间的 Wire Format 和协议语义,不规定通信网关收到某个 Flow Data 后必须如何调用 ROS API
命名约定
Operation Name 使用路径风格命名,例如 /robot/mode/set
Flow Name 使用 Topic 风格命名,例如 /cmd_vel、/imu、/battery_status
具体名称在当前版本中保持稳定,后续如需兼容性变更,应通过能力发现或版本字段表达