跳到主要内容

概述

接口定义章节描述 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_idflow_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

具体名称在当前版本中保持稳定,后续如需兼容性变更,应通过能力发现或版本字段表达