跳到主要内容

执行器(Executor)

执行器接收规划器产出的执行方案,按照机器人任务描述语言(Robot Task Description Language,RTDL)的 sequenceparalleldo 结构调度,并以事件流返回执行结果。当前外部 do 调用只走模型上下文协议(Model Context Protocol,MCP);目标为执行器自身时执行进程内置工具。gRPC 用于下表的方案控制面和技能的 Driver(CMD_ACTIVATE) 激活,执行器不直接读写 ROS 2 话题。安全监督器(Sentinel)尚未实现,能力分发链路当前不会经过其策略检查,详见系统组件

能力约定 TOML 在 capabilities/system/executor/,接口定义语言(Interface Definition Language,IDL)文件在 capabilities/lib/executor/capabilities/lib/module_health/

接口

能力约定 ID模式当前实现传输载荷(IDL)能力约定 TOML
robonix/system/executor/executerpc_server_streamgRPCexecutor/Executepilot/Plan → 流 executor/RtdlEventsystem/executor/execute.v1.toml
robonix/system/executor/control_planrpcgRPCexecutor/ControlPlansystem/executor/control_plan.v1.toml
robonix/system/executor/cancel_all_plansrpcgRPCexecutor/CancelAllsystem/executor/cancel_all_plans.v1.toml
robonix/system/executor/list_active_plansrpcgRPCexecutor/ListActivePlanssystem/executor/list_active_plans.v1.toml
robonix/system/executor/get_healthrpcgRPCmodule_health/GetModuleHealthsystem/executor/get_health.toml

上表 5 条标准约定由内置执行器以 gRPC 注册。它们与下面的运行时 MCP 内置工具不是同一接口面。

Execute(plan: pilot/Plan) 流回 RtdlEventplan_started 表示方案开始,node_state 携带节点状态与叶子调用结果,plan_complete 给出方案终态。

运行时内置工具

执行器还会在 Atlas 中注册 10 条 robonix/system/executor/builtin/* MCP 能力:read_filewrite_filepatch_filelist_dirrun_commandcancel_planget_all_plansget_plan_statusstop_plan_atread_capability_doc。它们在 Atlas 中声明为 MCP 传输,但目标提供方正是 Executor 自身时,分发器会改走进程内实现,不连接其 internal://... 记账端点。这些能力没有标准 TOML;它们是当前内置实现的运行时表面,并会进入规划器的可调用目录。

文件与命令工具以 ROBONIX_WORKSPACE 为边界;未设置时使用执行器的当前工作目录。部署方应把该目录和执行器进程权限视为模型可操作的安全边界。

方案控制

control_plan 是执行器控制面,不会创建新的 RTDL 方案。请求字段如下:

字段含义
actioncancelcancel_allstop_at
plan_idcancelstop_at 的目标方案 ID
op_idstop_at 的目标操作 ID
whenon_enter 表示执行该操作前停止;on_complete 表示该操作完成后停止。空值默认为 on_complete
wait_mscancelcancel_all 等待方案退出的最长时间;0 使用默认值 5000 ms

响应中的 success 表示请求是否合法并已被接受。对 cancel / cancel_allcompleted 表示目标方案是否在等待期限内离开活动表;对 stop_at,实现会在成功设置停止点后直接返回 completed=true,并不表示目标方案已经结束。取消是尽力而为:尚未执行的顺序节点会被跳过,正在运行且定义了取消接口的异步调用会收到取消请求,同步调用可能自然返回后才结束。

cancel_all_plans 是保留的无参数兼容接口,只返回是否成功;新控制路径应使用 control_plan(action="cancel_all"),以获得等待结果和说明文本。

查询活动方案

list_active_plans 返回 plans_json。其顶层结构为:

{
"count": 1,
"plans": [
{
"plan_id": "...",
"description": "...",
"op_count": 2,
"cancelled": false,
"stop_points": 0,
"ops": [
{
"op_id": "1",
"kind": "do",
"description": "...",
"provider_id": "mapping",
"contract_id": "robonix/service/map/save_map",
"state": "running"
}
]
}
]
}

该快照来自执行器的活动方案表。方案进入终态后会从表中移除,不应把历史记录与活动方案混在一起解释。