7.3 Sim-to-Real 迁移:Domain Randomization 与域适应 在仿真里跑得再完美的策略,搬上真机往往立刻失败——这就是 Reality Gap。怎么让仿真训练的策略在真实世界也工作?这是 Sim-to-Real 迁移要解决的核心问题。 7.3.1 Reality Gap 的来源 第 7.2 节列出了 Reality Gap 的几个维度,这里更具体地拆解: Gap 类型 | 具体表现 | 例子 物理 Gap | 仿真物理参数与真实不一致 | 摩擦系数、质量、惯性 接触 Gap | 接触模型简化 | 软接触、塑性变形 感知 Gap | 渲染图像与真实图像差异 | 纹理、光照、噪声 动力学 Gap | 关节动力学简化 | 电机摩擦、谐波减速器非线性 传感器 Gap |
在仿真里跑得再完美的策略,搬上真机往往立刻失败——这就是 Reality Gap。怎么让仿真训练的策略在真实世界也工作?这是 Sim-to-Real 迁移要解决的核心问题。
第 7.2 节列出了 Reality Gap 的几个维度,这里更具体地拆解:
| Gap 类型 | 具体表现 | 例子 |
|---|---|---|
| 物理 Gap | 仿真物理参数与真实不一致 | 摩擦系数、质量、惯性 |
| 接触 Gap | 接触模型简化 | 软接触、塑性变形 |
| 感知 Gap | 渲染图像与真实图像差异 | 纹理、光照、噪声 |
| 动力学 Gap | 关节动力学简化 | 电机摩擦、谐波减速器非线性 |
| 传感器 Gap | 传感器模型简化 | 相机畸变、CMOS 噪声、IMU 漂移 |
| 分布 Gap | 仿真物体分布与真实不同 | 物体形状、布局多样性 |
下面分别展开。
Domain Randomization(DR) 是 Sim-to-Real 最成功的策略之一,OpenAI 在 Dactyl 解魔方中验证。核心思想:让仿真环境参数大幅随机化,让真实世界成为随机化的「一个特例」。
ASCII 流程: [仿真训练] ├── 随机化光照(强度、方向、颜色) ├── 随机化纹理(物体表面、桌面) ├── 随机化相机(内参、外参、噪声) ├── 随机化物体(质量、摩擦、形状) └── 随机化动力学(电机摩擦、控制延迟) ↓ [策略学到的鲁棒表征] ↓ [真机部署] → 真实环境 = DR 的一个采样
让仿真渲染的图像大范围变化:
| 随机化维度 | 范围 |
|---|---|
| 光照强度 | 0.3x - 3x |
| 光照方向 | 任意方向 |
| 光照颜色 | RGB 各通道 |
| 物体纹理 | 程序生成(噪声、条纹) |
| 背景纹理 | 随机图像 |
| 相机位姿 | ±10cm, ±10° |
| 相机内参 | 焦距 ±20% |
策略学到的不再是「具体颜色」,而是「几何结构」——这种表征对真实图像的视觉差异鲁棒。
让物理参数大范围变化:
| 随机化维度 | 范围 |
|---|---|
| 物体质量 | ±50% |
| 摩擦系数 | 0.1 - 1.0 |
| 关节摩擦 | ±100% |
| 控制延迟 | 0-50ms |
| 外扰 | 随机推力 |
策略学会处理广泛的物理参数,迁移到真机时面对的物理特性是它训练分布的一个采样。
OpenAI 2019 年的 Dactyl 用 DR 训练灵巧手解魔方,证明 DR 的可行性。但代价是:
💡 DR 的艺术:随机化范围要 刚好覆盖真实分布,不大不小。这是工程经验,没有理论指导。
Domain Adaptation(DA) 走另一条路:让仿真图像看起来像真实图像,缩小感知 Gap。
把仿真图像和真实图像送给一个判别器,判别器试图区分两者。编码器同时优化「让判别器分不清」+「下游任务表现好」:
仿真图像 → 编码器 → 特征 → 任务头 → 动作 ↓ 判别器 → 这是仿真还是真实? ↑ 真实图像 → 编码器 → 特征
训练目标:
学到的编码器对真实图像也能输出有效特征。
用 GAN 把仿真图像翻译为「看起来真实」的图像:
仿真图像 → CycleGAN → 看起来真实的图像 → 训练策略
这种方式直接生成「真实风格」的训练数据。
| 优势 | 劣势 |
|---|---|
| 缩小感知 Gap | 需要真实图像样本 |
| 不牺牲性能 | GAN 训练不稳定 |
| 与 DR 兼容 | 工程复杂 |
DR 和 DA 经常组合使用:DR 处理物理 Gap,DA 处理感知 Gap。
系统辨识(System Identification) 走第三条路:测量真机参数,让仿真匹配。
| 参数 | 辨识方法 |
|---|---|
| 关节摩擦 | 让关节自由滑动,测减速 |
| 关节惯性 | 给已知力矩,测加速度 |
| 电机常数 | 给电流,测力矩 |
| 控制延迟 | 发指令,测响应时间 |
| 物体摩擦 | 倾斜法、滑动实验 |
| 相机内参 | 张正友标定 |
辨识后的仿真物理上接近真机,训练的策略更容易迁移。
双层 Agent(Two-tier Agent) 把策略分为两层:
[仿真训练的高层策略] ← 在仿真中学 ↓ 高层指令(如「向左 5cm」) [真实底层控制器] ← 真机上的传统控制 ↓ 关节力矩 [真机执行]
高层策略学的是「抽象动作」(如末端位移、子目标),底层用真实控制器精确执行。
VLA + 传统控制分层架构(5.4/6.4 节)本质就是双层 Agent。VLA 学高层,传统控制做底层。
直接 zero-shot 部署有风险。渐进式 Sim-to-Real 是更稳健的策略:
阶段:
第 4 步采集的数据反哺第 2 步,形成数据飞轮。
部署前要在仿真中验证策略。验证要点:
但仿真验证不能 100% 保证真机成功——这正是 Reality Gap 的本质。真机部署必须有人类监督兜底,逐步放开自主度。
最新的研究方向是 Real2Sim2Real:
这种闭环让仿真与真实差距最小化,是当前 Sim-to-Real 的前沿方向。
总结一套生产级 Sim-to-Real 流程:
⚠️ 现实判断:完全 zero-shot Sim-to-Real 仍困难,仿真 + 少量真机微调 是当前主流。NeRF/3DGS Real2Sim 让仿真更接近真实,是缩小 gap 的新希望。
| 失败原因 | 表现 | 应对 |
|---|---|---|
| DR 范围错 | 训练时学不到东西 / 真机仍失败 | 反复调随机化范围 |
| 物理简化太多 | 真机行为完全不同 | 加接触模型、摩擦模型 |
| 传感器噪声未建模 | 真机感知失效 | 加真实噪声模型 |
| 过拟合仿真 bug | 仿真里超好,真机全废 | 多仿真环境测试 |
| 任务定义错 | 仿真目标与真机不匹配 | 精心设计奖励/损失 |
下一节《7.4 数据引擎与具身基础模型》将讨论数据规模化的更高维度——Open X-Embodiment、合成数据、自动标注、数据农场。