Sim-to-Real 迁移


文档摘要

Sim-to-Real 迁移 本节摘要:在仿真器里训得再好、到硬件上就垮,说明策略只是「背下了仿真器」。现实鸿沟(Reality Gap)——仿真分布与真实分布的系统性差异——是部署型机器人 RL 的核心难题。本节讲透跨过它的三大工具:域随机化(Domain Randomization,训练时随机化仿真参数让策略泛化)、系统辨识(System Identification,先测真实参数再匹配仿真)、域适配(Domain Adaptation,用少量真实数据微调);以及 2026 年的主导配方——大规模并行仿真(Isaac Lab、MuJoCo MJX)+ 特权学习 teacher-student + 安全盾。

Sim-to-Real 迁移

本节摘要:在仿真器里训得再好、到硬件上就垮,说明策略只是「背下了仿真器」。现实鸿沟(Reality Gap)——仿真分布与真实分布的系统性差异——是部署型机器人 RL 的核心难题。本节讲透跨过它的三大工具:域随机化(Domain Randomization,训练时随机化仿真参数让策略泛化)、系统辨识(System Identification,先测真实参数再匹配仿真)、域适配(Domain Adaptation,用少量真实数据微调);以及 2026 年的主导配方——大规模并行仿真(Isaac Lab、MuJoCo MJX)+ 特权学习 teacher-student + 安全盾。你会在一个带「打滑」噪声的 GridWorld 上看到:固定 slip=0 训出来的策略,真实 slip>0 时灾难性跌落;而域随机化训出来的能在分布外优雅退化。这教的是「鲁棒性」如何被显式训练进策略。

对应原课程:Phase 9 · Lesson 11 · sim-to-real-transfer(原英文 phases/09-reinforcement-learning/11-sim-to-real-transfer/docs/en.md)。

学习目标

阅读完本节,你应当能够:

  1. 定义现实鸿沟,并列出它的典型来源(摩擦、相机畸变、电机延迟、风尘光)。
  2. 说明域随机化(DR) 的原理与代价:覆盖广但可能过保守。
  3. 区分系统辨识(SI)域适配(Real2Sim2Real、观测适配)各自的优劣。
  4. 描述 teacher-student 特权学习(Miki et al. 2022,ANYmal)的蒸馏流程。
  5. 写出 2026 年四足行走的标准配方(并行仿真 + DR + 特权 teacher + 本体感受 student + 安全盾)。

一、问题与直觉

训练真实机器人又慢、又危险、又贵。一个双足机器人要几百万回合才学会走;真实双足哪怕摔一次都坏硬件。仿真给你无限重置、确定性可复现、并行环境、零物理损伤。

但仿真器是错的。轴承的摩擦比 MuJoCo 模型大。相机有仿真器没算的镜头畸变。电机有 99% 仿真模型跳过的延迟、回差、饱和。风、尘、变化的光照会破坏在无菌渲染上训出来的策略。现实鸿沟——仿真分布与真实分布的系统性差异——是部署型机器人 RL 的核心难题。

你需要一个对 sim-to-real 分布漂移鲁棒的策略。三种历史方法:随机化仿真器(域随机化)、用少量真实数据适配策略(域适配/微调)、或先辨识真实系统参数再匹配(系统辨识)。2026 年的主导配方把三者结合,辅以大规模并行仿真(Isaac Sim、Isaac Lab、MuJoCo MJX 跑在 GPU 上)。

三大工具

域随机化(DR)。Tobin et al. 2017,Peng et al. 2018。训练时,随机化所有可能在真实机器人上不同的仿真参数:质量、摩擦系数、电机 PD 增益、传感器噪声、相机位置、光照、纹理、接触模型。策略学到一个「今天在哪个仿真里」的条件分布,并在整个跨度上泛化。如果真实机器人落在训练包络内,策略就能用。

  • 优点:无需真实数据。一个配方,多种机器人。
  • 缺点:过随机化的训练产出一个「万能」但过谨慎的策略。噪声太多 ≈ 正则太多。

系统辨识(SI)。训练前把仿真器参数拟合到真实数据。如果你能量出真实机器人臂关节的摩擦,就把它塞进仿真。然后训一个期望这些值的策略。需要接触真实系统,但能直接缩小现实鸿沟。

  • 优点:精确、低噪的训练目标。
  • 缺点:残差模型误差对策略不可见;小的未辨识效应(比如电机死区)仍会破坏部署。

域适配。在仿真里训,用少量真实数据微调。两种风味:

  • Real2Sim2Real:用真实滚动学一个残差仿真器 f(s, a, z) - f_sim(s, a),在修正后的仿真里训。无需多少真实数据就能闭合鸿沟。
  • 观测适配:训一个策略,通过学到的特征提取器(比如 GAN 像素到像素)把真实观测映到仿真式观测。控制器留在仿真里。

特权学习 / teacher-student

Miki et al. 2022(ANYmal 四足)。在仿真里训一个能访问特权信息(真实摩擦、地形高度、IMU 漂移)的 teacher。蒸馏一个只看真实传感器观测的 student。student 学会从历史里推断特权特征,跨物理参数鲁棒。

大规模并行仿真

2024-2026。Isaac Lab、MuJoCo MJX、Brax 都在单 GPU 上跑数千并行机器人。PPO 配 4096 并行仿生人,几小时收集数年经验。训练分布变宽,「现实鸿沟」缩小;DR 在那 4096 个环境各有不同随机参数时几乎免费。

2026 年真实配方(四足行走示例)

  1. 大规模并行仿真,域随机化重力、摩擦、电机增益、载荷。
  2. teacher 策略用特权信息(地形图、本体速度真值)训练。
  3. student 策略只用本体感受(腿关节编码器)从 teacher 蒸馏。
  4. 可选:在真实 IMU 上用自编码器做观测适配。
  5. 部署。在 10+ 环境上零样本。若失败,用安全约束 PPO 做几分钟真实微调。

💡 域随机化的精髓是「用多样性换鲁棒性」。你不再训一个对单一仿真最优的策略,而是训一个对一族仿真都还行的策略。真实世界只是这族里的又一个成员——只要它落在训练分布的包络内。代价是「保守」:策略不会在任何单一环境上最优,但在所有环境上都「不糟」。

二、从零实现

本节代码是域随机化在一个带噪声转移的 GridWorld 上的微型演示。我们训一个在「仿真」里经历随机化打滑概率的策略,然后在它训练时从未见过的「真实」打滑级别上评估。形状直接映射到 MuJoCo 到硬件的迁移。

Step 1:参数化仿真

def step(state, action, slip): if rng.random() < slip: action = random_perpendicular(action) ...

slip 是仿真器暴露的一个参数。真实机器人里它可以是摩擦、质量、电机增益——任何在仿真与真实间漂移的量。

Step 2:用 DR 训练

每回合开始,采样 slip ~ Uniform[0.0, 0.4]。训 PPO / Q 学习 / 任何算法。跑很多回合。

Step 3:在「真实」打滑上零样本评估

slip ∈ {0.0, 0.1, 0.2, 0.3, 0.5, 0.7} 上评估。前四个在训练支持内;0.50.7 在外。DR 训出来的策略应在支持内近最优、在外优雅退化。固定打滑训出来的策略会在训练打滑外脆弱。

Step 4:与窄训练对比

再训一个只在 slip = 0.0 上的策略。在同样的打滑扫描上评估。应看到真实打滑 > 0 时的灾难性跌落。

💡 Step 3 vs Step 4 的对比是本节最重要的实验。它直观显示「专精 vs 鲁棒」的取舍:窄训练在它的窄切片上更优,但一出切片就崩;DR 训练在每个点上都不是最优,但全程不崩。对部署型机器人,「不崩」远比「最优」重要——硬件摔不起。

三、框架对比

2026 年的 sim-to-real 栈:

领域 技术栈
足式行走(ANYmal、Spot、仿生人) Isaac Lab + DR + 特权 teacher/student
操作(灵巧手、抓取放置) Isaac Lab + DR + 视觉 DR-GAN
自动驾驶 CARLA / NVIDIA DRIVE Sim + DR + 真实微调
无人机竞速 RotorS / Flightmare + DR + 在线适配
指尖/手内操作 OpenAI Dactyl(前所未有的 DR 规模)
工业臂 MuJoCo-Warp + SI + 少量真实微调

对各种规模的控制,工作流一致:尽力拟合仿真,拟合不了的随机化,训超大策略,蒸馏,带安全盾部署

与 Isaac Lab / MuJoCo MJX 的对照

2026 年的 sim-to-real 工程几乎都建在 GPU 并行仿真器上。Isaac Lab(NVIDIA)在单 GPU 上跑 4096 并行机器人,每个环境可独立随机化参数——DR 几乎免费。MuJoCo MJX 是 MuJoCo 的 JAX 重写,同样支持数千并行环境,且与 JAX 的自动微分兼容(可做可微仿真)。本节的玩具 GridWorld + 随机 slip 是这套技术栈的最小可理解版本——把 slip 想成「摩擦」,把 GridWorld 想成「四足机器人」,数学完全同构。

四、可复用产物

本节产出一个可复用 skill(位于原课程 outputs/skill-sim2real-planner.md)。骨架:

--- name: sim2real-planner description: 为给定机器人 + 任务规划 sim-to-real 迁移管线,覆盖 DR、SI、安全。 version: 1.0.0 phase: 9 lesson: 11 tags: [rl, sim2real, robotics, domain-randomization] --- 给定一个机器人平台、一个任务、以及真实硬件时间访问,输出: 1. 现实鸿沟清单。疑似来源按预期影响排序(接触、感知、执行延迟、视觉)。 2. DR 参数。精确列表、范围、分布。每个范围对照真实测量论证。 3. SI 步骤。哪些参数要测;测量方法。 4. teacher/student 划分。teacher 用什么特权信息;student 用什么观测。 5. 安全盾。低层限位、急停、备份控制器。 拒绝没有 (a) 零样本仿真变体测试、(b) 安全盾、(c) 回滚计划就部署。 标记任何 DR 范围宽于真实测量变异性 3 倍的为可能过随机化。

五、练习

  1. 基础。 在固定打滑 GridWorld(slip=0.0)上训一个 Q 学习智能体。在 slip ∈ {0.0, 0.1, 0.3, 0.5} 上评估。画回报 vs 打滑。
  2. 进阶. 训一个 DR Q 学习智能体,slip ~ Uniform[0, 0.3]。评估同样的扫描。DR 在 slip=0.5(分布外)上买到多少?
  3. 挑战. 实现一个课程:从 slip=0.0 开始,每次策略达到最优的 90% 就扩大 DR 范围。测到达 slip=0.3 零样本所需的总环境步数,对比固定 DR 基线。

六、常见陷阱

  • 随机化太多。slip ∈ [0, 0.9] 上训,你的策略风险厌恶到从不试最优路径。匹配期望的真实分布,而非「什么都可能」。
  • 随机化太少。 在薄切片上训,策略完全无法泛化。用自适应课程(自动域随机化 ADR)——随策略改进而扩宽分布。
  • 参数空间辨识错。 随机化错的东西(真实鸿沟是电机延迟,你却随机化相机色调),DR 不帮忙。先剖析真实机器人。
  • 特权信息泄漏。 teacher 用全局状态做动作(不只是观测),会产出一个 student 跟不上的策略。确保 teacher 的策略在给定观测历史下可被 student 实现。
  • 仿真到仿真迁移失败。 若你的策略对一个更难的仿真变体不鲁棒,它对真实世界也不会鲁棒。部署前总在留出仿真变体上测。
  • 没有真实世界安全盾。 一个在仿真里 work、在真实里「也 work」但没低层安全盾的策略,仍可能坏硬件。加限速、限力矩、限关节角度的非学习控制器。

七、关键术语速查

术语 俗称 实际含义
现实鸿沟 「仿真到真实的差异」 训练与部署物理/感知间的分布漂移
域随机化 DR 「跨随机仿真训练」 训练时随机化仿真参数让策略泛化
系统辨识 SI 「测真实并拟合仿真」 估计真实物理参数;把仿真设成匹配
域适配 「在真实数据上微调」 仿真训练后的小规模真实微调;可适配观测或动力学
特权信息 「给 teacher 的真值」 仅仿真有的信息;student 必须从观测历史推断
teacher/student 「蒸馏特权→可观测」 teacher 带捷径训;student 学着不带捷径模仿
ADR 「自动域随机化」 随策略改进扩宽 DR 范围的课程
Real2Sim 「用真实数据闭合鸿沟」 学一个残差让仿真模仿真实滚动

本节要点回顾

  1. 现实鸿沟是仿真与真实在物理/感知上的系统性差异——摩擦、畸变、延迟、光照——是部署型机器人 RL 的核心难题。
  2. 域随机化:训练时随机化所有可能不同的参数,策略学到条件分布,真实落在包络内就能用;代价是可能过保守。
  3. 系统辨识:先测真实参数再匹配仿真,精确低噪;但残差模型误差对策略不可见。
  4. 域适配:Real2Sim2Real 学残差、观测适配用 GAN 映射,用少量真实数据闭合鸿沟。
  5. teacher-student 特权学习:teacher 用特权信息训,student 只用可观测,从历史推断特权特征——ANYmal 的配方。
  6. 大规模并行仿真(Isaac Lab、MJX) 让 DR 几乎免费,GPU 上 4096 并行环境数小时收集数年经验。
  7. 2026 年配方:并行仿真 + DR + 特权 teacher + 本体感受 student + 安全盾部署。
  8. 专精 vs 鲁棒:窄训练在窄切片更优但出切片即崩;DR 全程不崩——部署型机器人要「不崩」。

下一节,本章收官——游戏 RL 与推理时代:AlphaZero、MuZero、GRPO 如何用同一个「自博弈 + 搜索 + 策略改进」循环征服棋类与 LLM 推理。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U