面向真机迁移的域随机化¶
本页是域随机化的部署检查清单。关于契约层(一个 DR provider 必须实现什么),见 Domain Randomization 契约。
随机化什么,按优先级排序¶
类别 |
示例 |
为什么重要 |
|---|---|---|
执行器动力学 |
PD 增益、动作缩放、任务 owner 启用时的单步动作延迟 |
硬件上策略振荡的首要驱动因素。 |
质量 / 惯量 |
躯干质量、连杆质心偏移、负载 |
影响平衡与跟踪裕度。 |
摩擦 |
足 ↔ 地面 μ、手 ↔ 物体 μ |
手内方块任务没有它就会失败。 |
观测噪声 |
IMU 噪声、关节编码器偏置、部署侧观测历史 |
让 actor 输入贴近部署侧传感器行为。 |
外力 |
推力、阵风、对负载的拖拽 |
对未建模扰动的鲁棒性。 |
复位状态 |
初始姿态、初始速度 |
降低在回合边界处的脆弱性。 |
经验法则
如果某个参数会实质性地影响闭环响应,而你又没有部署侧的测量,那就不要把相关结论写进 文档;只有在记录了为何该范围合理之后,才在任务 owner 中编码一个保守范围。
UniLab 如何组织 DR¶
Manager-Based 任务在 owner YAML 的 env.events 中声明 reset 与 interval
随机化,由 manager 生命周期执行。示例见
src/unilab/conf/ppo/task/quadruped_joystick_rough/base.yaml。
任务也可以通过任务级 provider(src/unilab/dr/provider.py 中的
DomainRandomizationProvider 接口)接入 src/unilab/dr/manager.py;目前仓内
没有任务使用这条路径。两条路径的能力边界见
Domain Randomization 契约。
配方:起始范围¶
以所选 owner YAML 为准。Go2 rough owner 组合
src/unilab/conf/ppo/task/quadruped_joystick_rough/base.yaml,其中声明基座质量、
质心、PD 增益和周期推扰。以下是该共享 owner 的 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 motrix --load-run -1
为每个扫动点记录奖励分量与任务成功指标。一次陡降或奖励分量的不连续,就是 DR 范围 改变了任务契约、而不仅仅是拓宽部署覆盖的证据。