域随机化:让真实世界只是"策略见过的又一个变体"
域随机化的思路是:别试图把仿真完美对齐现实,而是把仿真参数随机化得足够宽,让现实看起来只是策略已经见过的一个变化。这是 sim-to-real 机器人学习里杠杆最高的技术之一,而且很容易接到现有 MuJoCo(或其他模拟器)管线上。
核心思想
如果策略在以下宽分布上训练:光照条件、物体颜色/纹理、相机位置与镜头畸变、摩擦/质量/阻尼值、传感器噪声水平——那么真实世界只是策略已经学会处理的分布里的又一个样本,而不是分布外的冲击。
三类随机化(原文主线)
视觉随机化:打视觉差距——随机物体颜色(geom_rgba 均匀采样)、随机光照(light_diffuse、light_pos 抖动)、随机桌面/背景材质颜色。MuJoCo 里几行 numpy 即可。
动力学随机化:打物理差距——随机摩擦系数(0.4–1.2)、物体质量(0.05–0.3 kg)、执行器增益(×0.85–1.15)。
感知与延迟随机化(常被忽略但影响很大):给观测加图像噪声(std 0.02)、关节位置噪声(std 0.01),并模拟可变传感器延迟——可选地返回延迟 N 步的观测,让策略学会在信息迟到时仍稳健。
实践建议
- 随机化范围要"宽到现实落在分布内":范围太窄等于没随机化,范围太宽可能学不到可用的语义;
- 延迟随机化是被低估的一环:真机控制回路的信息迟到是常态,仿真里不模拟、真机上就翻车;
- 与系统辨识搭配:先对齐基础动力学,再随机化剩余不确定性,而不是把随机化当万能兜底。
来源:Domain Randomization for Robust Robot Learning - DEV Community