跳转至

具身仿真:物理引擎、Sim-to-Real 与框架对比

背景知识
  • 具身智能数据管线:数据获取的三条路径(遥操作 / 仿真 / 视频)及管线各阶段 → 详见
  • 具身智能数据类型:图像、本体感知、动作、语言指令四元组 → 详见
  • 扩散模型:Diffusion Policy 等策略的生成基础 → 详见

仿真是具身数据规模化的唯一路径——GPU 并行仿真可以做到百万级 episode/天,成本趋近于零。但仿真数据的价值取决于一个根本问题:在仿真中训练的策略能否迁移到真机(Sim-to-Real)。本文围绕这个核心问题展开。

两大技术路线

仿真框架按物理引擎的执行位置分为两大阵营,选择哪条路线本质上是规模 vs 精度的权衡:

路线 代表 并行规模 接触精度 适用场景
GPU 并行 Isaac Lab、ManiSkill 单卡 4096+ 环境 中(迭代求解器) 大规模 RL、视觉策略
CPU 高保真 MuJoCo 单环境快但不并行 高(凸优化求解器) 精细操控研究、轨迹优化

GPU 路线靠大规模并行 + 域随机化暴力弥补物理精度不足;CPU 路线靠精确的接触力学减少 sim-to-real gap,但规模受限。


物理引擎:接触力学是核心分歧

机器人操控的核心难点是接触——抓取、推动、装配都涉及复杂的接触力学。不同引擎对接触问题的建模方式决定了仿真精度的上限。

MuJoCo:凸优化接触模型

MuJoCo 将接触力定义为凸优化问题的解——最小化接触空间中的动能,约束为不穿透和摩擦锥1

  • 椭圆摩擦锥:比常见的金字塔近似更物理准确,支持各向异性摩擦
  • 唯一解:凸优化保证全局最优,不像互补性求解器(LCP/NCP)那样有局部极小值
  • 可逆动力学:软接触模型使得接触力仅是位置/速度的函数,支持从轨迹反推力矩——这对从示教数据学习至关重要

这是 MuJoCo 被视为操控研究金标准的根本原因:接触稳定、无求解器伪影、支持基于梯度的轨迹优化。

PhysX(Isaac Lab / ManiSkill):迭代求解器

PhysX 使用 Temporal Gauss-Seidel (TGS) 迭代求解器,在速度和精度之间取折衷:

  • 速度快,原生 GPU 并行
  • 需要预分配静态缓冲区gpu_max_rigid_contact_count 等),缓冲区不足时静默丢弃接触——这是 Isaac Lab 最隐蔽的 sim-to-real 陷阱
  • 接触精度不如 MuJoCo,但可通过域随机化弥补

MuJoCo XLA (MJX):两条路线的融合

MuJoCo 的 GPU 加速尝试,提供两个后端:

  • MJX-JAX:纯 JAX 实现,完全可微分(支持自动微分),可跑在 GPU/TPU 上
  • MJX-Warp:NVIDIA Warp 内核,吞吐量更高但不可微

MJX 让 MuJoCo 的精确接触模型也能做到 GPU 批量仿真,但成熟度不如 Isaac Lab。


主要框架的技术特色

NVIDIA Isaac Lab

  • 架构:所有物理状态暴露为 PyTorch 张量([num_envs, state_dim]),策略直接在 GPU 上读写,无 CPU 往返
  • 渲染:RTX 光追渲染(支持 DLSS 加速),输出直接为 PyTorch 张量(RGB / depth / segmentation),实现视觉策略的端到端 GPU 训练
  • 域随机化:系统性支持物理参数(质量/摩擦/阻尼)、视觉参数(纹理/光照)、执行器参数(延迟/增益)的 per-environment 随机化,可按课程学习调度
  • 多后端:Isaac Lab 3.0 支持 PhysX / Newton (MuJoCo-Warp) / OvPhysX,通过工厂模式切换

ManiSkill / SAPIEN

  • 异构仿真(独有优势):不同并行环境可以加载不同几何体、不同关节数的机器人——Isaac Lab 要求所有环境结构一致。这意味着单次训练可覆盖多种物体形状,直接提升泛化能力
  • 观测模式切换:同一环境一键切换 state / RGB-D / 点云 / 法线等观测模式,方便从 state-based 调试切换到 vision-based 训练
  • 吞吐量:State 仿真 200K+ FPS,带渲染 30K+ FPS(内存占用约为 Isaac Lab 的 1/2-1/3)

Genesis

  • 多物理引擎统一:将 7 种求解器(刚体、MPM 颗粒、FEM 弹性体、PBD 布料、SPH 流体、纤维、工具约束)整合到同一框架,通过中央 Coupler 类协调跨求解器的动量交换
  • 技术意义:机器人操控经常涉及多种物理(抓布料、倒液体),传统框架只有刚体仿真,Genesis 是第一个系统性解决多物理耦合的具身仿真框架
  • 跨平台编译:通过 Quadrants 编译器将 Python 代码降低到 CUDA / ROCm / Metal / Vulkan / x86 / ARM64

Habitat(Meta)

  • 定位差异:基于真实 3D 扫描(Matterport3D、HM3D)的导航与人机交互仿真,不是物理操控仿真
  • Habitat 3.0:引入可变形人体模型,支持人-机协作任务(社交导航、协作整理),真人可通过 VR 控制虚拟人
  • 物理引擎简单(主要是碰撞检测),不适合接触密集的操控任务

Sim-to-Real Gap:来源与跨越

仿真数据训练的策略在真机上性能下降,gap 来自四个层面:

来源 具体表现 影响程度
物理 gap 接触力学简化(点接触 vs 分布式压力)、摩擦模型不精确(忽略 Stribeck 效应)、柔性体近似 最高
执行器 gap 电机响应延迟、齿轮间隙、力矩饱和、控制器非线性
传感器 gap 仿真传感器无噪声/无延迟、标定误差
视觉 gap 渲染与真实场景的光照/纹理/材质差异 中(视觉策略)

接触密集任务(装配、灵巧手操控)的 gap 最大——接触引入离散模式切换(接触/不接触),微小参数变化可导致完全不同的行为。

策略一:域随机化 — 用噪声换鲁棒性

在仿真中随机化物理/视觉/执行器参数,迫使策略学会对建模误差的鲁棒性:

随机化类型 常见参数 典型范围
物理参数 质量、惯量、摩擦系数、弹性系数 ±20-50%
执行器参数 PD 增益、控制延迟、力矩上限、电机摩擦 ±10-30%
视觉参数 纹理、光照强度/方向、相机内参 大范围替换
运动学参数 连杆长度、关节偏移、质心位置 ±5-10%

为什么有效:在多样化的参数分布上训练等价于隐式正则化——策略不会过拟合到仿真器的特定数值行为。

Automatic Domain Randomization (ADR) 进一步自动化了参数范围选择:度量策略在随机化环境和参考环境之间的性能差异,自动扩大差异大的参数范围,直至收敛2

策略二:系统辨识 — 让仿真逼近真实

不是让策略鲁棒,而是让仿真器的参数尽量匹配真实物理:

\[\theta^* = \arg\min_\theta \|x_{sim}(\theta) - x_{real}\|^2\]
方法 做法 需要真机数据?
经典优化 Gauss-Newton 最小化轨迹预测误差,有限差分 Jacobian 是(在线)
DROPO 基于似然函数拟合参数分布,仅需离线数据 是(离线即可)
VLM 引导 视觉语言模型分析仿真/真实视频差异,提供结构化诊断信号 是(视频)

MuJoCo 的可逆动力学在此有独特优势——可以从真机轨迹直接反推力矩,精确辨识执行器参数。

策略三:Teacher-Student 蒸馏 — 解耦任务与感知

两阶段训练,将"解决任务"和"处理真实感知"解耦:

Stage 1: Teacher(仿真,特权观测)
  - 输入:完整物理状态(ground truth 位姿、速度、接触力)
  - 无域随机化,干净仿真
  - 目标:学会最优策略

Stage 2: Student(域随机化,传感器观测)
  - 输入:仅传感器数据(相机、编码器)
  - 损失:MSE(π_student(o_sensor), π_teacher(o_privileged))
  - 域随机化施加在 student 的观测上
  - 目标:从 teacher 的行为中学会感知→动作映射

核心价值:Teacher 在理想条件下解决任务规划,Student 只需学会在噪声感知下复现 Teacher 的行为——两个问题分别解决比端到端容易得多。


框架选型速查

需求场景 推荐框架 理由
大规模 RL + 视觉策略 Isaac Lab GPU 并行 + RTX 渲染端到端
精细操控 / 轨迹优化 MuJoCo 凸优化接触模型,可微分(MJX)
多物体泛化 ManiSkill 异构仿真:不同环境不同物体
涉及布料/液体/柔性体 Genesis 多物理引擎耦合
室内导航 / 人机交互 Habitat 3.0 真实 3D 扫描 + 可变形人体

参考资料


  1. Todorov et al. MuJoCo: A physics engine for model-based control. IROS 2012. https://mujoco.org/ 

  2. OpenAI. Solving Rubik's Cube with a Robot Hand. 2019. https://arxiv.org/abs/1910.07113