跳转到内容

正在加载搜索…

worker 协议

worker 是位于 HTTP 之后的一个机器人,可以是仿真的,也可以是真实的:harness serve --factory module:create_environment [--options FILE] [--port P] [--contract C --embodiment E](src/harness_policy/core/worker.py)。一次处理一个请求;默认只监听回环地址(绑定其他网络接口需要 HARNESS_WORKER_TOKEN,作为 bearer token 发送)。src/harness_policy/core/robot.py(RemoteEnvironment)是客户端。

POST /rpc {"method": "...", "arguments": {...}} -> {"result": ...} | {"error": "..."}
方法 参数 结果
describe {protocol_version: 1, name, tools}
reset task, seed 第一个观测:{episode_id, step, instruction, state, images}
call name, arguments 环境某个方法的结果,见下文
名称 参数 结果
profile 静态信息:关节组、动作限制、控制频率、相机、机械臂基座、夹爪常量、规划器限制、安全层(shield)选项、return_to_start、步数上限(原生 contract)
state episode_id step、ended、joint_position(双臂 ARX X5 上为 14 个:左臂 6 个关节、左夹爪、右臂 6 个关节、右夹爪)、left_ee_pose、right_ee_pose(link6,[x, y, z, qw, qx, qy, qz],env 坐标系)
tick episode_id、step、command(绝对关节目标),可选 cameras {executed, shield: {verdict, command, reasons}, state[, observation]}
observe episode_id、cameras、image_format、quality {state, images (data URLs), intrinsics, camera_to_world (OpenCV convention), image_size}
fk command(关节) {arm: link6 pose}
ik episode_id、arm、pose 从当前关节出发的 {success, joints}
plan episode_id、arm、pose 或 joints、raw 按控制频率的 {success, waypoints}(raw:规划器自己的路径)
policy_obs episode_id RoboDojo 评测客户端交给策略的观测(用于 run_policy)
claim_outcome episode_id 一个 token,由 driver 在 reset 之后领取一次
outcome token {success, reward, process_score, terminated, truncated, steps}
action_spec 仅 RoboDojo:每条机械臂的安装位姿、关节限位和速度限制;控制频率

每个 worker 都遵守的规则:

  • episode 和步。 tick 指明它所针对的 episode 和计算时的步;过时的 tick 会被拒绝,且绝不会再次执行。可能已执行的运动绝不会被静默重试。
  • 安全层在这里运行。 每条 tick 命令在到达机器人之前都会被检查(episode 运行时);程序无法绕过它。
  • 结果受保护。 只有 token 的持有者(driver)可以读取它;程序和模型永远看不到它。

--contract xpolicylab --embodiment arx_x5 把每个结果过滤为 XPolicyLab 官方客户端交给策略的内容:夹爪取其最后一次命令值,内参和 camera_to_world 来自 embodiment,profile 和状态中没有步数上限(src/harness_policy/core/contract.py)。此时 profile 中写明 observation_contract: "xpolicylab"、gripper_feedback: "commanded"。

工厂 benchmark
benches.robodojo.runtime:create_environment RoboDojo,每个进程一个任务(Benchmark)
benches.robotwin.runtime:create_environment RoboTwin 2.0,每个进程一个任务
harness_policy.connectors.xpolicylab.Bridge 不由 harness serve 提供:XPolicyLab 连接器,一个以 XPolicyLab 客户端作为机器人的 worker