在真实机器人上运行
访问真实机器人的方式与 RoboDojo-Real 相同:agent 被导出为一个 XPolicyLab 策略文件夹,由评测方的客户端驱动机器人并调用该策略。agent 本身不变;机器人对应的是一个 embodiment profile 和一个为它提供的运动学服务。
1. embodiment profile
Section titled “1. embodiment profile”embodiments/<name>/embodiment.toml 存放 agent 可以知道的机器人信息:关节组和关节限位、指尖偏移和工具轴、夹爪开度、控制频率、规划器限制、安全层(shield)的限制以及相机。embodiments/arx_x5 是 RoboDojo 的仿真 ARX X5;embodiments/piper 是一对 AgileX PiPER 机械臂,填入了 PiPER URDF 中的数据,并标记为 calibrated = false。
profile 要在真实运行之前在其实验台上标定。需要测量并写入:
| 键 | 测量内容 |
|---|---|
arm_bases |
每条机械臂在 env 坐标系中的安装位姿 |
table_z |
桌面在 env 坐标系中的高度 |
[shield] workspace |
指尖可以到达而不会撞到实验台的范围框 |
[calibration.<camera>] |
内参,以及 camera_to_world(头部相机)或 camera_on_link6(腕部相机),采用 OpenCV 约定 |
gripper_empty_opening, gripper_full_stroke_seconds |
空夹爪闭合时的读数,以及完整行程所需的时间 |
control_hz |
评测方客户端请求动作的频率 |
kinematics_service, planner_world |
为该机器人提供的 kinematics 类服务(fk、ik、plan_path)及其规划器的 world;services/kinematics.toml 是 ARX X5 的(RoboDojo 的 cuRobo 规划器,配合 x5/curobo.yml) |
然后设置 calibrated = true。harness export xpolicylab --embodiment <name> 会拒绝未标定的 profile,也会拒绝没有自己的 kinematics_service 的非 ARX X5 profile:安全层的限制和每个基于相机的 skill 都依赖这些值,安全层的工作空间检查和笛卡尔检查会运行运动学服务的 fk。
2. 导出并运行
Section titled “2. 导出并运行”harness export xpolicylab --name HarnessPolicy --out XPolicyLab/policy/HarnessPolicy --embodiment piper该文件夹在机器人的客户端上像任何 XPolicyLab 策略一样运行。每次试验期间都由一个人握着急停按钮;这次运行的 trace 会记录安全层的每一次拒绝。
在新机器人上可用的部分
Section titled “在新机器人上可用的部分”有了已标定的 profile 及其运动学服务,关节空间中的程序、guard、handler 和安全层都能在新机器人上运行:安全层的关节边界就是 profile 的 action_low/action_high,其工作空间检查和跳变检查通过机器人自己的 fk 进行。run_policy 可以在任何机器人上运行学习型策略,但 RoboDojo 发布的 checkpoint(Simate、G0.5 等)是在仿真 ARX X5 上训练的:在其他机器人上需要一个为它训练的策略。解析型 skill(locate、pick、release、push)还需要机器人的工具坐标系:它们假定工具沿 ARX X5 的 link6 x 轴,因此工具指向其他轴的机器人(PiPER 的 tool_axis_link6 = [0, 0, 1])要等几何计算读取该键之后才能运行它们。prompt(prompts/robodojo)描述的是 ARX X5 的工作空间。
identity 命名的是 agent,因此对每个机器人都相同;agent.json 记录该文件夹导出时所针对的 embodiment,README 中的命令和 --check 使用它的 XPolicyLab env_cfg_type。