外观
机器人控制与 Sim2Real
一句话定位:这一页讲清楚机器人 RL 为什么必须在仿真里学、怎么把仿真里学会的东西搬到真实机器上——从仿真器生态、sim-to-real 鸿沟、域随机化,到 OpenAI 灵巧手、ANYmal 四足、RMA 抓取三个真实案例,最后诚实回答"为什么工业机器人大部分不用 RL"。
一、机器人的 RL 问题设定
1. 与 Atari 完全不同的战场
机器人与游戏的 RL 问题有本质区别,先看对照:
| 维度 | Atari 游戏 | 机器人控制 |
|---|---|---|
| 动作空间 | 离散(≤18 个按键) | 连续(关节力矩/位置,几十到上百维) |
| 状态 | 像素画面 | 关节角度、角速度、IMU、力/触觉传感器 |
| 试错成本 | 毫秒级模拟,几乎免费 | 真实硬件:秒级、可能损坏 |
| 奖励 | 游戏得分,天然可用 | 需要手工定义(如"前进"),常稀疏 |
| 安全 | 无 | 第一优先级(人机安全、设备安全) |
| 评估 | 分数可复现 | 真实物理实验昂贵、难以精确复现 |
两个核心矛盾:连续动作空间决定了算法家族(SAC/PPO 为主,见Actor-Critic 家族);样本昂贵决定了学习必须发生在仿真或离线数据里。
2. 为什么"在真实机器人上跑 RL"几乎不可能
一个直观的账:
- 深度 RL 学到"能走的四足步态"通常需要数千万到数亿个环境步(PPO 这类 on-policy 算法尤其如此)。
- 真实机器人每步(步态控制中一个控制周期,约 20–50ms)都在磨损电机、消耗时间。
- 试错中策略必然先跌跌撞撞,撞墙、摔跤、翻车会直接损坏硬件——这本身就是训练的一部分,但真实世界付不起这个学费。
因此 2016 年以来,机器人 RL 的主流路径是:在仿真器里大规模试错学习,再把策略迁移到真实机器人,即 Sim-to-Real。仿真器让"学费"从真实设备的千元级/次降到 GPU 上的近乎零。
TIP
这里有一个判断值得记住:机器人 RL 的难点从来不是算法,而是"数据从哪来"。仿真提供数据、但数据"长歪了"(sim gap);真实数据干净、但几乎拿不到足够的量。机器人 RL 的工程史就是弥合这对矛盾的历史。关于"环境即产品"的系统论述见RL 系统解剖。
二、仿真器与真实鸿沟
1. 主流仿真器生态
| 仿真器 | 类型 | 特点 | 适用 |
|---|---|---|---|
| MuJoCo | 连续体接触仿真 | 快、数值稳、学术默认 | 研究、抓取/操作 |
| PyBullet | 开源刚体仿真 | 免费、Python API | 原型验证 |
| Isaac Gym / Isaac Lab(NVIDIA) | GPU 并行刚体仿真 | 单卡上万并行环境 | 大规模并行训练 |
| Brax(Google/JAX) | 纯 JAX 可微仿真 | GPU/TPU 并行,微秒级 | 大规模 RL 研究 |
| DM Control(DeepMind) | 经典控制基准 | 与 MuJoCo 同源 | 评估基准 |
| NVIDIA Omniverse/Isaac Sim | 物理+渲染一体 | 高保真渲染+物理 | 视觉-操作迁移 |
选型建议与安装要点见数据集与工具档案。
2. Sim-to-Real Gap 从哪来
仿真与真实之间的差异(domain gap)有五个主要来源:
| 差异来源 | 表现 | 影响 |
|---|---|---|
| 动力学模型误差 | 摩擦系数、质量分布、执行器延迟不准确 | 策略在真机上的力/力矩输出失配 |
| 视觉渲染差异 | 材质、光照、纹理、传感器噪声不同 | 依赖视觉的策略"认不出来" |
| 执行器特性 | 真实电机有带宽、死区、摩擦、温漂 | 高频动作失真、过热 |
| 传感噪声 | 真实 IMU/编码器有噪声与漂移 | 状态估计误差被策略放大 |
| 非平稳 | 电池电压下降、关节磨损、地面打滑 | 同一个策略时好时坏 |
这就是"仿真赢、真机输"的根源:策略在仿真里学的"最优解"往往过度依赖仿真里的特定细节——这正是常见陷阱与反模式页"环境 bug 静默影响学习"的机器人版本。
3. 弥合鸿沟的方法分类学
业界对 sim-to-real gap 的解法可以分成四大类,理解分类比记住单个技巧更重要:
| 方法类 | 思想 | 代表 | 适用 |
|---|---|---|---|
| 域随机化(Domain Randomization) | 训练时随机化参数,逼出鲁棒策略 | Tobin 2017、OpenAI 灵巧手 | 参数范围可估、希望零样本迁移 |
| 系统辨识/代理物理(System ID / Proxy Physics) | 先调仿真器参数使其更接近真实 | Hwangbo 2019(ANYmal) | 动力学误差主导、真实数据可采集 |
| 自适应(Adaptation) | 测试时在线识别环境并调整 | RMA 2021、Kumar 2021 | 环境持续变化、需要持续稳定 |
| 真机微调(Real-world Fine-tuning) | 仿真预训练 + 真实数据微调 | OpenAI 魔方(1% 真实数据) | 真实数据少但能获取、安全可控 |
方法论要点:四种不是互斥的,工业项目常常先用系统辨识缩小 gap,再域随机化增强鲁棒性,最后真机微调收官。选型依据是"gap 的主要来源是什么":参数不精确→辨识/随机化;环境动态变化→自适应;渲染不真实→视觉随机化。
三、域随机化(Domain Randomization):让策略"没见过世面"也得会应对
1. 核心思想
域随机化(Domain Randomization,Tobin et al., 2017)的做法极其朴素:训练时把仿真里的物理/视觉参数当作随机变量,在每个 episode 开头随机采样一组参数:
text
每次训练 reset 时随机采样:
μ_friction ~ U[0.3, 1.0] 摩擦系数
m_joint ~ U[0.8, 1.2]×标称值 质量
光照/纹理/相机位置 随机化 视觉参数
......
学习目标是"对所有这些参数都稳健"的策略直觉:把"仿真不准"变成"仿真什么都可能",逼策略学到不依赖任何单一参数取值的鲁棒行为。训练出的策略直接部署到真实机器人,实现 zero-shot 迁移。
2. 两种域随机化的对比
| 类型 | 随机化对象 | 代表工作 | 优点 | 局限 |
|---|---|---|---|---|
| 随机化物理参数 | 摩擦、质量、阻尼等 | Peng 2018、Hwangbo 2019 | 无需真实数据 | 参数范围需手工设定 |
| 随机化视觉 | 纹理、光照、相机位姿 | Tobin 2017、Bousmalis 2018 | 解决"认不出" | 对真实世界类型覆盖有限 |
| 自动域随机化(ADP) | 用"真实评估+仿真生成"自动扩范围 | OpenAI 2019(灵巧手) | 范围自动扩张 | 需要真实环境做校验 |
WARNING
域随机化的隐藏成本:它把"仿真准确"的负担转移给了"随机化范围的选择"。范围太小,迁移失败;范围太大,策略学到"过度保守"的行为(例如四足机器人把所有动作都做得非常小心)。范围选择本身要靠真机实验迭代,并不免费。
四、案例一:OpenAI 灵巧手(Dexterous In-Hand Manipulation)
1. 2018 旋转方块
OpenAI(Andrychowicz et al., 2018)让 Shadow Dexterous Hand(24 自由度仿人手)在手掌中旋转一个三色方块到指定朝向。这个任务对人类都算灵巧操作,此前没有机器人学会过。做法:
- 1952 个并行仿真环境(数千 CPU 核),使用异步 PPO 训练。
- 域随机化:摩擦、质量、方块大小、纹理全部随机化。
- 相当于积累了约 100 年的真实操作经验(等效年份,论文原文的说法),训练耗时约 50 个小时的模拟。
- 部署:策略零样本迁移到真实灵巧手,成功率约 50%(相对仿真中的接近 100%)。
2. 2019 魔方(Rubik's Cube)
2019 年 OpenAI 把同一平台推向"单手解魔方"。这个任务的难度等级提升:需要长时间记忆(哪一面是哪个颜色)。解法:
- ADP(Automatic Domain Randomization):不再手工定随机化范围,而是先用真实机器人收集数据评估策略,若失败则自动扩大仿真中的随机化范围再重训,循环直至真机成功。
- LSTM 策略网络:给策略一个隐状态,让它跨时间整合视觉信息,解决"遮挡期间丢失目标状态"的问题。
- 结果:在 50% 随机初始状态下,真实机器人解魔方的成功率约 20%(并用了真实世界收集的 1% 数据微调,成功率再提升)。
INFO
灵巧手案例说明一个关键点:sim-to-real 不只是"训练技巧"问题,还包含"模型结构"问题。魔方任务中的 LSTM 记忆正是为了弥合"仿真里假设观察完全、真实中观察会丢失"的差距。要理解这种"部分可观测→记忆"的映射,可回看多臂老虎机到完整 RL 的演进逻辑——状态表示永远在跟着任务变。
五、案例二:ANYmal 四足:RL 跑赢传统控制器
1. 2019:学会跑步
ETH Zürich 团队(Hwangbo et al., 2019, Science Robotics)在 ANYmal 四足机器人上训练行走/跑步,训练完全在仿真中完成,零样本迁移到真机。当时的关键结论:
- 用**代理物理(proxy physics)**微调动力学模型,让仿真中的腿-地接触行为更接近真实,再配合随机化训练。
- 学到的步态在速度、鲁棒性上超过了此前手工设计的模型预测控制(MPC)步态,且能适应上坡、碎石等非理想地形。
2. 2020:感知步态
Lee et al. (2020, Science Robotics) 在同一个平台上进一步实现感知运动(perceptive locomotion):利用机载摄像头感知地形(岩石、台阶、坡道),跨越不可见地形。工程要点:
- 仿真中的地形随机采样,包括训练阶段完全模拟的"看不见的区域"。
- 训练出的上层策略(high-level)选择步态模式、下层控制器执行——分层的先例也出现在自动驾驶的分层决策里。
- 实机演示:在草地、乱石、雪地、斜坡上稳定行走。
3. 算法侧:为什么是 PPO
这些四足工作几乎都使用 PPO(或 PPO 变体),原因与策略梯度方法页的分析一致:
| 需求 | PPO 的对应能力 |
|---|---|
| 连续动作、随机策略 | 高斯策略 + 重参数化采样 |
| 训练稳定性(跑几千小时仿真不崩) | clip 裁剪限制每步更新幅度 |
| 只需当前策略的数据 | on-policy,仿真数据便宜,无所谓样本效率 |
| 简单可靠 | 超参少、默认值就能跑 |
在样本效率优先(如真实数据微调)的场景才换 SAC,见连续控制为什么是 SAC 的主场。
六、案例三:抓取与操作:RMA 与真机微调
1. RMA:把"自适应"也学出来
2021 年,Kumar 等人提出 RMA(Rapid Motor Adaptation),针对"仿真训练→真机"中动力学失配随环境变化的问题:
- 第一阶段:在仿真中同时训练一个策略网络和一个"环境编码器"——编码器从一段观测历史(约 0.5 秒的关节/IMU 数据)推断"这个环境当前的动力学参数向量"。
- 第二阶段:把编码器输出拼进策略输入,测试时编码器用真实传感器读数在线推断,策略据此实时调整发力。
结果:RMA 训练出的四足策略迁移到真实 ANYmal 后,在负载、摩擦未知的情况下,抗扰动能力显著超过静态域随机化策略。
2. 真机微调与 Sim2Real 强化
另一条路线是"仿真预训练 + 真机微调"(Sim2Real + Fine-tuning)。典型实践:
- 先在仿真里学一个能完成大部分任务的粗策略(解决"从 0 开始"的危险)。
- 再到真实机器人上用**样本效率高的 off-policy 算法(SAC)**微调少量回合。
- 需要安全机制:动作限制、力限制、急停——这是常见陷阱与反模式里"安全护栏"一节的正面案例。
TIP
工程上最容易犯的错是把"仿真收敛"当成"问题解决"。判定一个 sim-to-real 管线是否合格的唯一标准是真实部署的指标,仿真数字只用于对比内部消融。任何"只看仿真曲线就交付"的流程都要被打回——这与评估与基准页"别只看一个指标"的精神一致。
3. 案例四:抓取与操作的工业现实
抓取(picking)是最接近落地的操作任务,但工业界对"RL 抓取"的态度高度分化:
| 路线 | 做法 | 现状 |
|---|---|---|
| 经典视觉伺服 | 传统感知+抓取规划 | 工业绝对主流(如码垛、分拣) |
| 深度 RL 抓取 | 仿真学策略→迁移 | 研究活跃,落地少见(容器、随机物品分拣有试点) |
| 深度监督抓取 | 用大量标注/自监督数据学"抓取点"(非 RL) | Google、亚马逊等的实际落地路线 |
为什么 RL 抓取落地难:抓取的难点在"感知几何"(识别可抓位置)而不是"控制"——而几何识别更适合监督学习;RL 的价值在"策略决策"(抓哪个、怎么规划),只有当物体动态、遮挡、需要顺序操作时(如卸货、清仓)才体现出来。这再次印证:RL 进入真实系统前,先问清楚难点到底在感知还是决策。
4. 真实数据为什么这么贵
再往下挖一层:真实机器人数据的"贵"不只在采集,还在处理:
| 成本项 | 具体内容 | 相对仿真的放大倍数 |
|---|---|---|
| 采集 | 真机操作耗时、人工介入 | 10^3–10^4 倍时间 |
| 标注 | 人工标目标、标轨迹、标安全事件 | 显著 |
| 清洗 | 传感器噪声、失败片段甄别 | 明显 |
| 复现 | 真机实验结果不可精确复现 | 无法比(仿真可重置) |
| 风险 | 损坏硬件、伤人风险 | 无法量化 |
工程推论:真实数据在机器人 RL 里的定位不是"训练主力",而是"校准与验证"。正确的用法是:仿真学主体策略,真实数据只用来(a)校验 sim gap、(b)微调最后一个百分点、(c)做最终验收。试图用真实数据训练全部策略,是机器人 RL 项目最常见的预算黑洞。
七、现实检查:为什么多数工业机器人不用 RL
1. 传统控制为什么还占主流
工业机器人(焊接、喷涂、装配、码垛)绝大多数仍然使用经典控制:
- PID / 计算力矩控制:动力学已知时,解算快、可解释、稳定性有数学保证。
- MPC(模型预测控制):滚动优化 + 约束满足,处理复杂轨迹和约束。
- 轨迹规划:预编程或示教,确定、可审计、好调试。
| 维度 | 传统控制 | 深度 RL 控制 |
|---|---|---|
| 可解释性 | 高(参数即物理量) | 低(黑箱策略) |
| 安全保证 | 有理论边界 | 靠经验与护栏 |
| 数据需求 | 模型参数标定即可 | 海量交互 |
| 泛化到"没见过的环境" | 弱 | 强(数据够的话) |
| 维护 | 工程师能修 | 出了事难定位 |
2. 什么情况下 RL 才值得上
一个可用的决策框架(与RL 设计原则页的决策清单呼应):
- 任务难以手工编程:步态、抓取、在混乱环境中导航——规则写不出来的部分。
- 有可用的仿真器:动力学或视觉有保真度,域随机化能覆盖差距。
- 策略错误代价可承受:或可以靠护栏兜底。
- 有持续的数据反馈环:能持续收集真实数据改进。
四条全满足,RL 的性价比才成立;否则用经典控制/启发式更稳。
八、算法侧主角:PPO 与 SAC
最后把算法侧收个尾。机器人 RL 的算法谱系非常集中:
text
连续控制任务
├─ on-policy(样本贵但稳):PPO ← 机器人主流
│ └─ 变体:PPO + 域随机化 / ADP / RMA 编码器
├─ off-policy(样本效率高):SAC(真机微调)← TD3 的近亲
└─ 基于模型(样本效率最高):Dreamer / TD-MPC2 ← 前沿方向| 算法 | on/off-policy | 样本效率 | 稳定性 | 机器人使用场景 |
|---|---|---|---|---|
| PPO | on | 低 | 高 | 仿真大规模训练(主流) |
| SAC | off | 高 | 中 | 真机微调、样本受限 |
| TD3 | off | 高 | 中 | 确定性策略任务 |
| DreamerV3/TD-MPC2 | model-based | 很高 | 中高 | 数据稀缺、泛化研究(前沿) |
详细的算法对比与选型见Actor-Critic 家族和框架与工具怎么选;基于模型路线见基于模型的 RL。
WARNING
不要把 Atari 那套超参直接搬到机器人:Atari 的 PPO 学习率、网络宽度在连续控制里往往要么不收敛要么太慢。机器人任务请从机器人领域论文的公开超参出发(如 ANYmal 工作公开了完整训练配置),再按调参与超参数优化的顺序微调。
九、真机部署协议与安全清单
无论算法多好,真机部署是 sim-to-real 的最后一关。工程上必须遵守的协议:
1. 真机实验的四个阶段
text
阶段 1 仿真验证:策略在多种随机化配置下稳定收敛
阶段 2 硬件在环(HIL):真机控制器跑仿真信号,验证接口
阶段 3 受限真机:慢速、小范围、有安全员,单次实验限量
阶段 4 逐步放开:监控指标(成功率、力/矩超限次数)达标才放宽2. 安全护栏清单
| 护栏 | 做法 | 目的 |
|---|---|---|
| 物理限位 | 关节角度/力矩硬限位 | 防止策略输出危险动作 |
| 急停 | 人工急停按钮+自动安全阈值 | 不可逆错误前切断 |
| 动作滤波 | 低通滤波、速率限制 | 平滑高频抖动 |
| 监控 | 实时记录力/位/状态,超限自动降级 | 失败可归因 |
| 回退策略 | 安全状态控制器(如零力矩、预设姿态) | 策略失效时自动接管 |
DANGER
真机实验的隐藏成本是"一次实验失败可能要重新标定整个系统":碰撞可能损坏传感器、改变动力学参数,让此前的仿真校准全部失效。所以工业界铁律是"仿真里 95% 的把握,才上真机 5% 的预算"。想更系统地理解这种成本结构,见RL 系统解剖的"环境即产品"。
3. 从论文到复现:机器人 RL 的检查清单
读一篇机器人 RL 论文并试图复现时,用这份清单做"可行性体检":
| 检查项 | 论文应该给 | 给不出时的处理 |
|---|---|---|
| 仿真器与版本 | MuJoCo/Isaac + 版本号、模型文件 | 用开源替代环境,结果只能参考 |
| 奖励函数全文 | 每个奖励项的公式与系数 | 缺失时几乎无法对齐结果 |
| 超参表 | 学习率、γ、GAE λ、clip、网络结构 | 从官方实现或 issue 里挖 |
| 域随机化范围 | 随机化参数及分布 | 范围不同=两个任务 |
| 训练预算 | 环境步数、并行数、时长 | 算力预算不齐结果不可比 |
| 迁移协议 | 真机测试次数、成功率定义 | 没有真实部署数据=仿真实验 |
三个现实提醒:
- 机器人论文的"成功率"高度依赖环境细节(初始随机、奖励 shaping),不同实现间差 20–30 个百分点是常态;
- 开源实现优先于自己从头写——先跑通官方代码再改动,这是常见陷阱与反模式页"复现论文失败诊断清单"的正面姿势;
- 仿真结果与真实部署的差距,只有真机数据能最终裁决——论文里的"sim-to-real 成功"也要看它迁移到了什么硬件、什么难度。
延伸阅读
- Actor-Critic 家族 —— SAC/PPO/TD3 的谱系与连续控制选型。
- 策略梯度方法 —— PPO clip 目标的机制与实现。
- 基于模型的 RL 与世界模型 —— 机器人上"先学动力学再规划"的路线与模型误差陷阱。
- 框架与工具怎么选 —— Isaac Gym/Brax/SB3 在机器人任务上的取舍。
- 数据集与工具档案 —— MuJoCo、Isaac、DM Control 等仿真器清单。
- 常见陷阱与反模式 —— 安全护栏、样本效率错觉在机器人工程中的具体形态。
参考资料
- Tobin, J., et al. (2017). Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World. arXiv:1703.06907.
- Peng, X. B., et al. (2018). Sim-to-Real Transfer of Robotic Control with Dynamics Randomization. ICRA 2018.(arXiv:1805.09932)
- Bousmalis, K., et al. (2018). Using Simulation and Domain Adaptation to Improve Efficiency of Deep Robotic Grasping. ICRA 2018.(arXiv:1710.06537)
- Andrychowicz, M., et al. (2020). Learning Dexterous In-Hand Manipulation. IJRR 39(1), 3–20.(arXiv:1808.00177)
- OpenAI et al. (2019). Solving Rubik's Cube with a Robot Hand. arXiv:1910.07113.
- Hwangbo, J., et al. (2019). Learning Locomotion Using Deep Reinforcement Learning. Science Robotics, 4(29), eaau5872.
- Lee, J., et al. (2020). Learning Quadrupedal Locomotion over Challenging Terrain. Science Robotics, 5(47), eabc5986.
- Kumar, A., et al. (2021). RMA: Rapid Motor Adaptation for Legged Robots. arXiv:2109.06113.(RSS 2021)
- Haarnoja, T., et al. (2018). Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor. arXiv:1801.01290.
- Schulman, J., et al. (2017). Proximal Policy Optimization Algorithms. arXiv:1707.06347.
- Todorov, E., Erez, T., & Tassa, Y. (2012). MuJoCo: A Physics Engine for Model-Based Control. IROS 2012.