域随机化
最后更新
域随机化指在训练时随机化仿真的物理参数,使策略不依赖任何一组特定参数。
microduck_rl 逐环境随机化这四个量:
| 随机化对象 | 为什么是它 |
|---|---|
| 电池电压 | 满电和快没电的鸭子,舵机能出的力矩不一样 |
| 负载下的电压跌落 | 多个舵机同时发力时电压会塌,直接影响步态 |
| 指令延迟 | 真实控制链路有延迟,策略必须对此鲁棒 |
| 摩擦力大小 | 个体差异与磨损 |
实现是 src/mjlab_microduck/actuator/ 里的 FrictionDRBamActuator。
和「加噪声」的区别
这是最容易混的一点:
随机化物理参数:每个并行环境里的机器人本身就不一样——这台电压高一点,那台摩擦大一点。策略必须学会一套在整个参数分布上都成立的控制方式。
往观测里加高斯噪声:机器人是同一台,只是策略看到的读数有抖动。策略学会的是「忽略噪声」,而不是「适应不同的机器」。
后者对传感器噪声有用,但解决不了 sim2real 的核心问题——真机和仿真的差异不是噪声,是系统性的参数偏移。
代价
随机化范围越大,策略越鲁棒,但性能上限越低——它必须为最差的情况留余量。范围设多宽是一个需要实验的取舍,不是越大越好。