MuJoCo 是什么:概念与核心术语
一、MuJoCo 是什么:概念与核心术语
MuJoCo 是 Multi-Joint dynamics with Contact 的缩写,是一个专为接触丰富的多体动力学设计的物理引擎。它最早是闭源商业引擎,后来由 Google DeepMind 开源维护,现已成为机器人学习领域最常用的仿真环境之一(具体版本与许可以官方仓库为准)。
它解决的问题是「在大量接触、摩擦、碰撞的场景下,既要算得快又要算得准,还要能求导」。比如灵巧手抓取、四足机器人足地接触、机械臂在杂乱桌面里推挤物体——这些场景里接触是主要矛盾,而通用游戏引擎的接触求解往往不稳或不可微。MuJoCo 用凸优化形式的接触模型把这类问题解得很干净,因此成为强化学习研究的事实标准。
与相邻方案的区别
| 引擎 | 接触求解 | 可微分 | ROS 生态 | 典型用途 |
|---|---|---|---|---|
| MuJoCo | 精度高、稳定,碰撞检测快 | 支持(有限差分与 MJX) | 需自行桥接 | 接触丰富操作、RL 研究、控制算法验证 |
| Gazebo | 够用,宏观场景导向 | 不支持 | 原生 | ROS2 系统闭环仿真 |
| Isaac Sim | PhysX,支持 GPU 并行 | 不支持通用求导 | 有官方桥 | 合成数据、大规模并行 RL |
| Bullet | 通用,接触精度一般 | 不支持 | 可用 | 游戏、图形学场景 |
核心术语表
| 术语 | 含义 | 说明 |
|---|---|---|
| MJCF | MuJoCo 的 XML 模型格式 | 描述 body、joint、geom、actuator、sensor 等 |
| mjModel | 编译后的模型(只读) | 由 XML 编译而来,运行期不改 |
| mjData | 运行期状态(可写) | 存放 qpos、qvel、ctrl、接触信息等 |
| qpos / qvel | 广义位置与速度 | 关节的维度由关节类型决定 |
| actuator | 驱动器 | 常见类型有 motor、position、velocity、general |
| geom | 几何体 | 同时承担碰撞检测与可视化 |
| site | 附着在 body 上的标记点 | 常用于传感器位置与末端参考点 |
| tendon | 肌腱/传动 | 用来做耦合关节或绳索传动 |
| 求解器 | 接触与约束的求解方式 | 常见 PGS、CG、Newton,各有适用场景 |
| MJX | 基于 JAX 的 GPU 版本 | 可以把大量环境并行到 GPU 上 |

