接口(ibrobot_msgs)概述
相关源码文件
以下文件被用作生成此 wiki 页面的上下文:
本节提供 IB-Robot 框架内 ROS 接口定义的高层概览,这些定义集中在 ibrobot_msgs 包中。它是所有 ROS 2 消息类型、服务与 action 的统一注册中心,支撑 RoboFrame 具身 AI 系统内的通信与协调。该包强制执行严格的 schema 版本化与契约校验,保证各系统组件间的互操作性与一致性。
关于特定接口的详细描述与用例(包括技能契约、感知与推理相关消息),请参阅链接的子页面。
1. ibrobot_msgs 概览
ibrobot_msgs 包是所有 ROS 2 通信接口定义的单一来源。它包含支撑系统操作的消息(msg)、服务(srv)与 action(action)定义,覆盖技能执行、原语命令、任务工作流、感知结果、抓取规划、推理请求与分布式动作分发。
ibrobot_msgs 的要点:
它为所有对外请求与内部协调消息提供 schema。
它对关键请求严格强制版本化,保证兼容性与安全性。
它封装复杂的任务、技能与工作流绑定身份,在分布式组件间维持一致的调度与执行语义。
接口通过 src/ibrobot_msgs/ 中的 CMakeLists.txt 使用 ROSIDL 生成器生成,其中枚举了全部支持的类型,包括超过 70 个消息定义以及大量服务与 action 文件 src/ibrobot_msgs/CMakeLists.txt:11-133。
2. Schema 版本化与契约校验
为保持前向兼容并安全演进系统,ibrobot_msgs 对核心请求类型强制显式 schema 版本化:
四个主要公开请求类型——
SkillCommand.Goal、PrimitiveCommand.Goal、ValidateSkill.Request、ValidatePrimitive.Request——以强制的uint32 schema_version字段开头。允许的 schema 版本为
{1, 2};其他值触发SKILL_SCHEMA_INVALID错误,阻止不兼容运行。
Schema 版本区别:
v1 仅支持操作(manipulation)相关字段,含 10 种原语类型与 3 种控制模式;禁止导航相关字段。
v2 增加额外导航字段与原语(
nav_straight、nav_turn、nav_abs_coordinate)并要求显式版本标记。
该版本化方案强制在接口变化时原子重建所有相关节点(skill_library、safety_guard、embodied_agent、robot_skill_cli),防止混合版本部署 src/ibrobot_msgs/README.md:5-28。
规划与任务请求内的工作流步骤同样镜像 schema 版本化,以对齐能力声明与执行器逻辑 src/embodied_common/embodied_common/workflow_contracts.py:34-154。
3. 主要接口类别
3.1 消息(msg/)
消息定义覆盖广泛的系统概念,如:
任务与技能执行:
TaskCommand、TaskStatus、SkillCapabilityStatus、DispatchBinding封装请求、状态报告、能力就绪与任务身份信封。感知与抓取:
Detection2D、GraspCandidate、SceneObservation、SemanticObject3D等消息支撑语义地图与物体操作。推理与流水线状态:
InferencePolicySummary、DistributedInferenceRequest、InferenceOutcome支撑分布式模型推理协调。音频与视觉:
SpeechDirection、SynthesizedAudio跟踪音频事件;VideoStreamDescriptor与VideoStreamStatus管理视频传输。人体动作模仿:
HumanHandState与MHandProFrame携带用于重定向到机器人臂的感知输入状态。
这些消息支撑从感知到决策再到物理执行的丰富数据流编排 src/ibrobot_msgs/CMakeLists.txt:22-70。
3.2 服务(srv/)
服务接口提供 RPC 风格交互,用于:
校验:
ValidateSkill.srv、ValidatePrimitive.srv动态校验契约一致性。感知与推理:
YoloXDetect.srv、PearParameterPredict.srv、PlanGrasp.srv、GenerateMasks.srv调用模型服务。Agent 规划:
PrepareAgentPlan.srv、ConfirmAgentPlan.srv管理 NL 规划快照的生命周期。技能目录与网关控制:
GetSkillGatewayStatus.srv、ReloadSkillCatalog.srv。
RPC 服务为紧耦合的感知、技能准入、规划确认与基准测试提供必要的同步协调点 src/ibrobot_msgs/CMakeLists.txt:89-131。
3.3 Action(action/)
ROS action 表达带反馈、结果与目标状态的异步、可取消任务。该包为以下场景定义 action:
技能与原语命令(
SkillCommand.action、PrimitiveCommand.action)物体操作(
PickObject.action、PlaceObject.action)模仿与人体动作(
ImitateHumanMotion.action)情景录制(
RecordEpisode.action)推理分发(
DispatchInfer.action、ScheduledDispatchInfer.action)Agent 规划执行(
ExecuteAgentPlan.action),与自然语言规划流集成。
Action 建模具身机器人技能与系统级编排核心的异步、有状态行为 src/ibrobot_msgs/CMakeLists.txt:71-88。
4. DispatchBinding:强类型任务信封
DispatchBinding 消息封装强类型的任务/版本信封,由所有委托与原语技能调度携带。它整合:
任务身份字段:
task_id、root_task_id执行契约:
task_budget运行时注册表纪元与摘要期望,用于强制代码/数据快照一致性
工作流步骤索引与租约 nonce,用于编排多步工作流
该信封统一了临时 ID,支持在异步、分布式执行间进行精确的身份传播、安全检查与契约强制 src/ibrobot_msgs/msg/DispatchBinding.msg。
5. 与子页面的关系
本概览为理解 RoboFrame 的 ROS 接口层奠定基础。以下子页面覆盖特定接口领域,提供详细描述、契约与使用模式:
10.1 技能与原语契约
探讨SkillCommand与PrimitiveCommand等 action 接口、校验服务、任务与工作流状态消息,以及DispatchBinding契约强制机制——这些对技能执行与安全绑定至关重要。10.2 感知、抓取与推理接口
聚焦感知相关服务与消息,如PickObject、PlanGrasp、DetectSegment,以及DispatchInfer与DistributedInference等推理分发请求。本节详述语义感知与抓取通信。
6. 示例图:通过技能执行接口将自然语言映射到代码实体
flowchart TD
NL("Natural Language Command")
AgentPlan["ibrobot_msgs/srv/PrepareAgentPlan.srv"]
ConfirmPlan["ibrobot_msgs/srv/ConfirmAgentPlan.srv"]
ExecutePlan["ibrobot_msgs/action/ExecuteAgentPlan.action"]
SkillCmdAction["ibrobot_msgs/action/SkillCommand.action"]
DispatchBindingMsg["ibrobot_msgs/msg/DispatchBinding.msg"]
TaskCmdMsg["ibrobot_msgs/msg/TaskCommand.msg"]
TaskStatusMsg["ibrobot_msgs/msg/TaskStatus.msg"]
NL -->|raw_command + workflow_steps| AgentPlan
AgentPlan -->|validated plan| ConfirmPlan
ConfirmPlan -->|confirmed plan| ExecutePlan
ExecutePlan -->|skill goal with DispatchBinding| SkillCmdAction
SkillCmdAction -->|task identity| DispatchBindingMsg
SkillCmdAction --> TaskCmdMsg
SkillCmdAction --> TaskStatusMsg
该流程展示了从自然语言命令处理到紧密绑定、经 schema 校验的技能执行请求的流水线,这些请求携带强任务身份信封,用于 RoboFrame 中安全的调度与监控。
7. 示例图:感知到抓取到执行的接口桥接
flowchart TD
ImgInput["sensor_msgs/Image"]
YoloXService["ibrobot_msgs/srv/YoloXDetect.srv"]
PearService["ibrobot_msgs/srv/PearParameterPredict.srv"]
GraspPlanService["ibrobot_msgs/srv/PlanGrasp.srv"]
PickObjectAction["ibrobot_msgs/action/PickObject.action"]
GraspCandidateMsg["ibrobot_msgs/msg/GraspCandidate.msg"]
ImgInput --> YoloXService
YoloXService --> PearService
PearService --> GraspPlanService
GraspPlanService --> GraspCandidateMsg
GraspCandidateMsg --> PickObjectAction
该图突出感知服务与消息的链式使用,最终汇聚为以 ROS action 形式分发的可执行抓取命令。
总结
ibrobot_msgs 包是 RoboFrame ROS 2 接口架构的关键枢纽。它定义了一套全面、版本化且受契约守护的消息、服务与 action,实现任务管理、技能执行、感知集成、推理分发与分布式协调。这一基础层保证具身 AI 系统内可扩展且稳定的通信。
技能执行契约、任务工作流与原语命令语义的详情见[技能与原语契约(10.1)]。与感知、抓取规划及推理工作流相关的接口见[感知、抓取与推理接口(10.2)]。
来源:src/ibrobot_msgs/CMakeLists.txt:11-133, src/ibrobot_msgs/README.md:1-139, src/embodied_common/embodied_common/workflow_contracts.py:34-154, src/ibrobot_msgs/msg/DispatchBinding.msg, src/ibrobot_msgs/srv/YoloXDetect.srv, src/ibrobot_msgs/srv/PrepareAgentPlan.srv, src/ibrobot_msgs/action/ExecuteAgentPlan.action