外观
路线对照Isaac Lab14 天前
三条栈不是精度排名
Isaac Lab 跑在 Isaac Sim 上,PhysX,环境数可以拉到上千,相机和激光要走渲染。MuJoCo MJX 把同一个 MuJoCo 模型放进 JAX,单卡上步态迭代快,Playground 的定位就是分钟级训练和零样本上机。Legged Gym 是 Rudin 等人那套 Isaac Gym 代码,2021–2024 的大量四足论文从这里长出来。Isaac Gym 预览版已经停更,新项目不要把它当长期基座。
| Isaac Lab | MJX / Playground | Legged Gym | |
|---|---|---|---|
| 目录 id | isaac-lab | google-deepmind-mujoco、mujoco-playground | 无独立卡,上游是 leggedrobotics/legged_gym |
| 物理 | PhysX | MuJoCo | PhysX(Isaac Gym) |
| 适合 | 要相机、要和 NVIDIA 部署对齐、人形接触 | 要快、要 JAX、先把盲走策略上机 | 复现旧论文 |
| 宇树现成仓库 | unitree_rl_lab、unitree_sim_isaaclab | 可用 menagerie 模型,再自己接部署 | unitree_rl_gym |
| 安装 | Isaac Sim 版本必须和 Lab tag 对齐 | pip/jax 即可 | 旧驱动和 Isaac Gym 轮子 |
目录里的 Isaac Lab 卡写着:v3.0.0 对应 Isaac Sim 6.0,v2.3 对应 4.5/5.0/5.1,v2.1 对应 4.5。tag 和 Sim 对不上时,报错看起来像 URDF 导入失败,实际是 Python 绑定版本错了。
unitree_rl_lab 已经覆盖 Go2、H1、G1。unitree_rl_gym 是更早的 Gym 风格实现。两套的观测向量顺序不一样,策略网络不能互换权重。
什么时候用哪条
- 只有关节编码器和 IMU,目标是平地或轻度崎岖行走:MJX 或
unitree_rl_gym都够。Playground 更适合新实验。 - 要深度图、要和操作策略放在同一个 Isaac 场景里:Isaac Lab。
- 论文附录写的是
legged_gym的某个 commit:用那个 commit 复现,复现完再迁到 Lab 或 MJX。中途换物理引擎等于重做随机化。
G1 基础版目录规格是 23 DoF,仿真里常见 29 DoF。随机化加在错误的关节上,真机手臂会跟着腿的残差抖。
域随机化清单
下面是类别,不是一组可以直接粘贴的范围。legged_gym 的 LeggedRobotCfg.domain_rand 和 Isaac Lab 的事件项名字不同,数值要从你要对齐的那份配置抄。
训练时随机化:
- 地面静摩擦、动摩擦
- 恢复系数(不是每份配置都有)
- 基座质量、各连杆质量缩放
- 质心偏移
- 电机强度或扭矩限制缩放
- PD 增益缩放
- 关节摩擦和阻尼
- 动作延迟(步数)
- 外力推力的间隔和大小
- 初始关节位置、基座高度和速度
- 地形高度场(如果策略声称能上楼梯)
观测侧随机化:
- 关节位置、关节速度噪声
- IMU 角速度和投影重力噪声
- 编码器偏置
不要随机化、或者只在最后阶段轻轻加的:
- 重力常数。它会把所有尺度带偏,真机对不上。
- 把摩擦拉到仿真里已经打滑的区间。策略会学成滑步,上真机膝关节超载。
上机前的最小核对:
- 仿真默认站立高度和真机站立高度差在厘米级,而不是用错误的骨盆高度硬撑。
- 动作是相对默认姿态的残差,还是绝对位置。两边不一致,第一步就会蹲下去。
- 策略频率和底层伺服频率。常见是策略 50 Hz、电机位置环更高。部署代码里的 decimation 要和训练一致。
- 先在
unitree_mujoco里回放,再上吊架,再松吊架。不要从 Isaac 渲染窗口直接下发到电机。
和操作策略的边界
这条路线是腿。手臂的模仿学习不要和腿的 PPO 共用一个动作向量。G1 上身若用 GR00T 或 π0,下身应保持厂商行走控制器或单独的行走策略,两边的时钟用时间戳对齐,而不是塞进同一个 step()。
来源
本页事实对应的公开页面,以原文为准。
- Isaac Lab访问 2026-10-14
- MuJoCo MJX访问 2026-10-14