MuJoCo 是 Multi-Joint dynamics with Contact 的缩写,意为多关节动力学与接触。它是一个通用物理引擎,旨在促进机器人学、生物力学、图形和动画、机器学习等领域的研究和开发,这些领域需要快速准确地模拟与环境交互的关节结构。
该仓库由 Google DeepMind 维护。
MuJoCo 提供 C 语言 API,面向研究人员和开发者。运行时模拟模块经过优化以最大化性能,并操作由内置 XML 编译器预分配的低级数据结构。该库包括交互式可视化功能,具有原生 GUI,使用 OpenGL 渲染。MuJoCo 还提供大量用于计算物理相关量的实用函数。
我们还提供 [Python 绑定] 和 [Unity] 游戏引擎插件。
文档
MuJoCo 的文档可在 [mujoco.readthedocs.io] 找到。即将发布的新功能可以在最新分支的 [更新日志] 中查看。
入门
有两种简单的方法可以开始使用 MuJoCo:
-
在您的机器上运行
simulate
。 这个视频 展示了simulate
(MuJoCo 的原生交互式查看器)的屏幕录像。按照文档 [入门] 部分的步骤,在您的机器上运行simulate
。 -
探索我们的在线 IPython 笔记本。 如果您是 Python 用户,可以从我们在 Google Colab 上运行的教程笔记本开始:
- 入门 教程讲解 MuJoCo 基础知识:
- LQR 教程合成线性二次型控制器,使人形机器人单腿平衡:
- 最小二乘 教程解释如何使用基于 Python 的非线性最小二乘求解器:
- MJX 教程提供 MuJoCo XLA(用 JAX 编写的 MuJoCo 分支)的使用示例:
- 可微分物理 教程使用从 MuJoCo 物理步骤自动推导的解析梯度训练运动策略:
安装
预编译二进制文件
版本发布可从 GitHub [发布页面] 获取预编译二进制文件,支持 Linux(x86-64 和 AArch64)、Windows(仅 x86-64)和 macOS(通用)。这是推荐的使用方式。
从源代码构建
希望从源代码构建 MuJoCo 的用户应参考文档的 [从源代码构建] 部分。但请注意,main
分支顶部的提交可能不稳定。
Python(>= 3.8)
原生 Python 绑定(预打包了 MuJoCo 副本)可通过以下命令从 [PyPI] 安装:
pip install mujoco
注意:预构建的 Linux wheels 针对 manylinux2014
,请参阅 此处 了解兼容的发行版。有关从源代码构建绑定等更多信息,请参阅文档的 [Python 绑定] 部分。
贡献
我们欢迎社区参与:提问、寻求帮助、报告错误和提出功能请求。要了解更多关于错误报告、功能请求和更雄心勃勃的贡献,请查阅我们的 贡献者指南 和 风格指南。
提问
我们欢迎在 GitHub Issues 页面上提出问题和寻求帮助,请聚焦于特定问题或疑问。
Discussions 应用于讨论可能需要多方参与的更广泛问题。
以下是提出好问题的一些指导原则:
-
搜索现有的问题或议题,看是否涉及相同主题。
您可以在现有线程上添加评论或开启新的线程。如果您开启新线程,且存在相关线程,请链接到它们。
-
使用清晰具体的标题。尝试包含关键词,使您的问题易于他人将来查找。
-
简要介绍自己和您的项目背景。
如果您的专业水平特别高或特别低,且这可能与我们对您知识的假设有关,请也说明这一点。
-
退一步告诉我们你想要达成什么目标,如果我们了解你的目标,我们可能会建议一种不同于你正在遇到问题的解决方案。
-
让其他人易于重现问题或理解你的问题。
如果需要模型,请包含它。尽量使模型最小化:删除与你问题无关的元素。纯XML模型应内联。需要二进制资产(网格、纹理)的模型,应作为.zip文件附加。请确保在附加之前所包含的模型是可加载的。
-
如果相关,请包含说明性的截图或视频。
-
告诉我们你是如何访问MuJoCo的(C API、Python绑定等),以及你使用的MuJoCo版本和操作系统。
相关软件
MuJoCo是许多环境包的骨干,但这里无法一一列举。以下我们重点关注绑定和转换器。
绑定
这些包让各种语言的用户能够访问MuJoCo功能:
第一方绑定:
- Python绑定
- dm_control, Google DeepMind的相关环境栈,包括PyMJCF,一个用于程序化操作MuJoCo模型的模块。
- C#绑定和Unity插件
第三方绑定:
-
WebAssembly: mujoco_wasm 由@zalo开发,@kevinzakka贡献,基于@stillonearth的emscripten构建。
:arrow_right: 点击此处在浏览器中体验MuJoCo的实时演示。
-
MATLAB Simulink: MuJoCo模拟器的Simulink模块集,由Manoj Velmurugan开发。
-
Swift: swift-mujoco
-
Java: mujoco-java
-
Julia: MuJoCo.jl
转换器
- OpenSim: MyoConverter将OpenSim模型转换为MJCF。
- SDFormat: gz-mujoco是一个双向SDFormat <-> MJCF转换工具。
- OBJ: obj2mjcf是一个将复合OBJ文件转换为可加载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}
}
许可和免责声明
版权所有 2021 DeepMind Technologies Limited。
Box碰撞代码(engine_collision_box.c)版权所有 2016 Svetoslav Kolev。
doc目录中的ReStructuredText文档、图像和视频根据知识共享署名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官方支持的产品。