Skip to content

机器人控制与 Sim2Real

本页速览 真实物理试错太贵,仿真学习成为主流:仿真器生态(MuJoCo、Isaac)、域随机化、Sim2Real 鸿沟与弥合;OpenAI 灵巧手、ANYmal 四足、抓取等案例。

机器人控制与 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 设计原则页的决策清单呼应):

  1. 任务难以手工编程:步态、抓取、在混乱环境中导航——规则写不出来的部分。
  2. 有可用的仿真器:动力学或视觉有保真度,域随机化能覆盖差距。
  3. 策略错误代价可承受:或可以靠护栏兜底。
  4. 有持续的数据反馈环:能持续收集真实数据改进。

四条全满足,RL 的性价比才成立;否则用经典控制/启发式更稳。

八、算法侧主角:PPO 与 SAC ​

最后把算法侧收个尾。机器人 RL 的算法谱系非常集中:

text
连续控制任务
 ├─ on-policy(样本贵但稳):PPO ← 机器人主流
 │    └─ 变体:PPO + 域随机化 / ADP / RMA 编码器
 ├─ off-policy(样本效率高):SAC(真机微调)← TD3 的近亲
 └─ 基于模型(样本效率最高):Dreamer / TD-MPC2 ← 前沿方向
算法on/off-policy样本效率稳定性机器人使用场景
PPOon低高仿真大规模训练(主流)
SACoff高中真机微调、样本受限
TD3off高中确定性策略任务
DreamerV3/TD-MPC2model-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 里挖
域随机化范围随机化参数及分布范围不同=两个任务
训练预算环境步数、并行数、时长算力预算不齐结果不可比
迁移协议真机测试次数、成功率定义没有真实部署数据=仿真实验

三个现实提醒:

  1. 机器人论文的"成功率"高度依赖环境细节(初始随机、奖励 shaping),不同实现间差 20–30 个百分点是常态;
  2. 开源实现优先于自己从头写——先跑通官方代码再改动,这是常见陷阱与反模式页"复现论文失败诊断清单"的正面姿势;
  3. 仿真结果与真实部署的差距,只有真机数据能最终裁决——论文里的"sim-to-real 成功"也要看它迁移到了什么硬件、什么难度。

延伸阅读 ​

参考资料 ​

  • 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.