面向真机迁移的域随机化

本页是域随机化的部署检查清单。关于契约层(Manager-Based event term 与 backend 必须实现什么),见 域随机化 Contract。

随机化什么,按优先级排序

类别

示例

为什么重要

执行器动力学

PD 增益、动作缩放、任务 owner 启用时的单步动作延迟

硬件上策略振荡的首要驱动因素。

质量 / 惯量

躯干质量、连杆质心偏移、负载

影响平衡与跟踪裕度。

摩擦

足 ↔ 地面 μ、手 ↔ 物体 μ

手内方块任务没有它就会失败。

观测噪声

IMU 噪声、关节编码器偏置、部署侧观测历史

让 actor 输入贴近部署侧传感器行为。

外力

推力、阵风、对负载的拖拽

对未建模扰动的鲁棒性。

复位状态

初始姿态、初始速度

降低在回合边界处的脆弱性。

经验法则

如果某个参数会实质性地影响闭环响应,而你又没有部署侧的测量,那就不要把相关结论写进 文档;只有在记录了为何该范围合理之后,才在任务 owner 中编码一个保守范围。

UniLab 如何组织 DR

Manager-Based 任务在 owner YAML 的 env.events 中声明 reset 与 interval 随机化,由 manager 生命周期执行。

legacy 任务级 provider 协议已移除。能力边界见 域随机化 Contract。

配方:起始范围

以所选 owner YAML 为准。以下是一个 PD 增益片段;绝对增益范围应与机器人的 控制参数一起评估。

env:
  events:
    pd_gains:
      func: unilab.envs.mdp.pd_gains
      mode: reset
      params:
        kp_range: [17.5, 70.0]
        kd_range: [0.25, 1.0]
        operation: abs

课程:随技能逐步加大 DR

在第 0 步就过于激进的 DR 会让学习停滞。UniLab 的课程辅助工具由任务自身拥有;把它们的 字段保留在所选的 owner YAML 中,不要在训练脚本里添加 Python 侧的解释。

验证 DR 覆盖

训练之后,在配置中扫动 DR 范围的同时,对照同一后端 owner YAML 回放检查点:

uv run eval --algo ppo --task go2_joystick_flat --sim mujoco --load-run -1

为每个扫动点记录奖励分量与任务成功指标。一次陡降或奖励分量的不连续,就是 DR 范围 改变了任务契约、而不仅仅是拓宽部署覆盖的证据。

另请参阅