MuJoCo – 高级物理仿真引擎
摘要
Google DeepMind 维护的 MuJoCo 是一款高性能开源物理引擎,提供 C/Python API 与 Unity 插件,专为机器人与机器学习研究设计。
查看缓存全文
缓存时间: 2026/04/22 09:29
google-deepmind/mujoco
源码:https://github.com/google-deepmind/mujoco
MuJoCo 是 Multi-Joint dynamics with Contact 的缩写,是一款通用物理引擎,旨在为机器人学、生物力学、图形与动画、机器学习以及其他需要快速、精确模拟铰接结构与环境交互的领域提供研发便利。本仓库由 Google DeepMind(https://www.deepmind.com/)维护。MuJoCo 提供 C API,面向研究人员与开发者。其运行时仿真模块经高度优化,性能优先,直接操作由内置 XML 编译器预分配的低级数据结构。库内集成原生 GUI 的交互式可视化,基于 OpenGL 渲染。MuJoCo 还公开大量用于计算物理相关量的工具函数,同时提供 [Python 绑定] 及 [Unity] 游戏引擎插件。
文档
MuJoCo 文档见 [mujoco.readthedocs.io]。下一版本的新功能可在“latest”分支的 [changelog] 中查看。
快速开始
使用 MuJoCo 最轻松的两种方式:
-
在本机运行
simulate
该视频(https://www.youtube.com/watch?v=P83tKA1iz2Y)演示了simulate(MuJoCo 原生交互查看器)的录屏。按文档 [快速开始] 部分的步骤即可在本机启动simulate。 -
在线体验 IPython Notebook
Python 用户可直接在 Google Colab 运行我们的教程 notebook:- 入门 教程:MuJoCo 基础 在 Colab 打开
- 模型编辑 教程:程序化创建与修改模型 在 Colab 打开
- rollout 教程:多线程
rollout模块用法 在 Colab 打开 - LQR 教程:设计线性二次控制器,实现单腿人形平衡 在 Colab 打开
- 最小二乘 教程:使用 Python 非线性最小二乘求解器 在 Colab 打开
- MJX 教程:MuJoCo XLA(基于 JAX 的 MuJoCo 分支)示例 在 Colab 打开
- 可微物理 教程:利用 MuJoCo 物理步的解析梯度训练运动策略 在 Colab 打开
安装
预编译二进制
GitHub [releases 页面] 提供已发布的预编译二进制,支持 Linux(x86-64 与 AArch64)、Windows(仅 x86-64)与 macOS(通用)。推荐普通用户采用此方式。
从源码构建
需自行编译的用户请参考文档的[从源码构建]部分。注意 main 分支的最新提交可能不稳定。
Python(≥3.10)
原生 Python 绑定已内置 MuJoCo,可直接通过 [PyPI] 安装:
pip install mujoco
Linux 预编译 wheel 目标为 manylinux2014,兼容发行版列表见此处(https://github.com/pypa/manylinux)。更多编译细节见文档的 [Python 绑定] 部分。
版本管理
我们力争每月第一周发布新版。自 3.5.0 起采用修改后的语义化版本规则,详见 versioning。
贡献
我们欢迎社区参与:提问、求助、错误报告、功能需求。阅读 贡献者指南 与 风格指南 了解如何提交错误、功能请求或更大规模的贡献。
提问
请在 GitHub “求助” 讨论区(https://github.com/google-deepmind/mujoco/discussions/categories/asking-for-help)提出具体问题或求助。
错误报告与功能请求
GitHub Issues(https://github.com/google-deepmind/mujoco/issues)专用于错误报告、功能请求及其他开发相关主题。
相关软件
MuJoCo 已被众多环境库采用。下面列出部分绑定与转换工具。
绑定
以下项目为不同语言提供 MuJoCo 接口:
官方绑定:
- Python 绑定(https://mujoco.readthedocs.io/en/stable/python.html)
- dm_control(https://github.com/google-deepmind/dm_control):Google DeepMind 的环境栈,含 PyMJCF(https://github.com/google-deepmind/dm_control/blob/main/dm_control/mjcf/README.md),可程序化操作 MuJoCo 模型。
- JavaScript 绑定与 WebAssembly 支持(灵感来自社区项目 stillonearth(https://github.com/stillonearth)与 zalo(https://github.com/zalo);mjswan(https://github.com/ttktjmt/mjswan)在此基础上新增实时策略控制、交互式施力等功能)。
- C# 绑定与 Unity 插件(https://mujoco.readthedocs.io/en/stable/unity.html)
第三方绑定:
- MATLAB Simulink:Simulink Blockset for MuJoCo Simulator(https://github.com/mathworks-robotics/mujoco-simulink-blockset),作者 Manoj Velmurugan(https://github.com/vmanoj1996)。
- Swift:swift-mujoco(https://github.com/liuliu/swift-mujoco)
- Java:mujoco-java(https://github.com/CommonWealthRobotics/mujoco-java)
- Julia:MuJoCo.jl(https://github.com/JamieMair/MuJoCo.jl)
- Rust:MuJoCo-rs(https://github.com/davidhozic/mujoco-rs)
转换工具
- OpenSim:MyoConverter(https://github.com/MyoHub/myoconverter)可将 OpenSim 模型转为 MJCF。
- SDFormat:gz-mujoco(https://github.com/gazebosim/gz-mujoco/)实现 SDFormat ↔ MJCF 双向转换。
- OBJ:obj2mjcf(https://github.com/kevinzakka/obj2mjcf)用于把复合 OBJ 文件转为可加载的 MJCF 模型。
- Onshape:Onshape to Robot(https://github.com/rhoban/onshape-to-robot)将 onshape(https://www.onshape.com/en/)CAD 装配体转为 MJCF。
引用
若您在发表论文时使用 MuJoCo,请引用:
@inproceedings{todorov2012mujoco,
title={MuJoCo: A physics engine for model-based control},
author={Todorov, Emanuel and Erez, Tom and Tassa, Yuval},
booktitle={2012 IEEE/RSJ International Conference on Intelligent Robots and Systems},
pages={5026--5033},
year={2012},
organization={IEEE},
doi={10.1109/IROS.2012.6386109}
}
许可证与免责声明
Copyright 2021 DeepMind Technologies Limited。
箱体碰撞代码(engine_collision_box.c(https://github.com/google-deepmind/mujoco/blob/main/src/engine/engine_collision_box.c))Copyright 2016 Svetoslav Kolev。
doc 目录下的 ReStructuredText 文档、图片与视频采用 Creative Commons Attribution 4.0 (CC BY 4.0) 许可,详见 https://creativecommons.org/licenses/by/4.0/legalcode。
源代码采用 Apache License, Version 2.0,详见 https://www.apache.org/licenses/LICENSE-2.0。
本产品并非 Google 官方支持产品。
相似文章
Python 中更快的物理模拟
OpenAI 开源 mujoco-py,一个使用 MuJoCo 引擎的高性能 Python 机器人模拟库,具有无头 GPU 渲染和 VR 交互支持,性能提升约 40 倍。
MuJoCo-Drones-Gym:用于控制与强化学习的GPU加速多无人机仿真器
本文介绍MuJoCo-Drones-Gym,一个基于MuJoCo的GPU加速多无人机仿真器,支持灵活的物理模型、动作接口和观测空间,适用于强化学习与控制研究。
@guanqi_he: 我们发布了 Wuji MJLab,一个用于灵巧手操作的开源 MuJoCo 环境。它包含一个立方体重新定向…
Wuji MJLab 是一个用于灵巧手操作的开源 MuJoCo 环境,包含立方体重新定向任务、sim2real 流水线以及在 Wuji Hand 上的部署。它基于 mjlab,并包括预训练的 PPO 策略。
DexJoCo: 面向任务的灵巧操作在MuJoCo上的基准测试与工具包
DexJoCo 提出了一个面向任务的灵巧操作在 MuJoCo 中的基准测试与工具包,包含11个功能性任务、一个低成本数据采集系统,以及全面评估,揭示了当前灵巧操作策略的局限性。
@Modular: Mojo 拥有极简的样板代码、严格的类型系统以及编译时验证,所有这些都使其非常适合……
Modular 发布了开源的 Mojo 智能体技能,帮助 AI 编码智能体生成正确且地道的 Mojo 代码,包括一个将 CUDA 内核代码翻译为 Mojo 的演示。Mojo 的极简样板代码、严格的类型系统和编译时验证使其适用于智能体工作流。