google-deepmind/mujoco

GitHub: google-deepmind/mujoco

DeepMind维护的高性能通用物理引擎,专为机器人、强化学习和生物力学提供快速准确的关节动力学与环境接触模拟。

Stars: 12238 | Forks: 1368

MuJoCo

**MuJoCo** 代表 **Mu**lti-**Jo**int dynamics with **Co**ntact(接触和多关节动力学)。它是一个通用物理引擎,旨在促进机器人技术、生物力学、图形和动画、机器学习以及其他需要快速准确模拟关节结构与环境交互领域的研究与开发。 本仓库由 [Google DeepMind](https://www.deepmind.com/) 维护。 MuJoCo 拥有 C API,专为研究人员和开发人员设计。运行时模拟模块经过调优以最大化性能,并运行在由内置 XML 编译器预分配的低级数据结构上。该库包含带有原生 GUI 的交互式可视化功能,由 OpenGL 渲染。MuJoCo 还公开了大量用于计算物理相关量的实用函数。 我们还提供 [Python bindings] 和 [Unity] 游戏引擎的插件。 ## 文档 MuJoCo 的文档可以在 [mujoco.readthedocs.io] 找到。计划在下一个版本中发布的新功能可以在“latest”分支的 [changelog] 中找到。 ## 快速入门 开始使用 MuJoCo 有两种简单的方法: 1. **在您的机器上运行 `simulate`。** [此视频](https://www.youtube.com/watch?v=P83tKA1iz2Y) 展示了 `simulate`(MuJoCo 的原生交互式查看器)的屏幕录制。按照文档 [Getting Started] 部分描述的步骤,在您的机器上运行 `simulate`。 2. **探索我们的在线 IPython notebooks。** 如果您是 Python 用户,您可能希望从我们在 Google Colab 上运行的教程 notebooks 开始: - **入门** 教程讲授 MuJoCo 基础知识: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/tutorial.ipynb) - **模型编辑** 教程展示如何以编程方式创建和编辑模型: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/mjspec.ipynb) - **rollout** 教程展示如何使用多线程 `rollout` 模块: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/rollout.ipynb) - **LQR** 教程合成一个线性二次控制器,使拟人模型单腿平衡: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/LQR.ipynb) - **最小二乘法** 教程解释如何使用基于 Python 的非线性最小二乘求解器: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/least_squares.ipynb) - **MJX** 教程提供 [MuJoCo XLA](https://mujoco.readthedocs.io/en/stable/mjx.html)(一个用 JAX 编写的 MuJoCo 分支)的使用示例: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/mjx/tutorial.ipynb) - **可微物理** 教程使用从 MuJoCo 物理步骤自动导出的解析梯度训练运动策略: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/mjx/training_apg.ipynb) ## 安装 ### 预编译二进制文件 版本发布可作为预编译二进制文件从 GitHub [releases page] 获取,针对 Linux(x86-64 和 AArch64)、Windows(仅 x86-64)和 macOS(通用)构建。这是使用该软件的推荐方式。 ### 从源代码构建 希望从源代码构建 MuJoCo 的用户应查阅文档中的 [build from source] 部分。但是,请注意 `main` 分支顶端的提交可能不稳定。 ### Python (>= 3.10) 原生 Python bindings 自带一份 MuJoCo 副本,可以通过 [PyPI] 安装: ``` pip install mujoco ``` 请注意,预编译的 Linux wheels 针对 `manylinux2014`,有关兼容的发行版请参见 [此处](https://github.com/pypa/manylinux)。有关更多信息(例如从源代码构建 bindings),请参阅文档的 [Python bindings] 部分。 ## 版本控制 我们的目标是在每个月的第一周发布 MuJoCo。我们的版本控制标准在 3.5.0 版本中改为修改后的语义版本控制,详情请参见 [versioning](VERSIONING.md)。 ## 贡献 我们欢迎社区参与:提问、求助、错误报告和功能请求。要了解更多关于错误报告、功能请求以及更宏大的贡献,请参阅我们的 [contributors guide](CONTRIBUTING.md) 和 [style guide](STYLEGUIDE.md)。 ## 提问 欢迎通过 GitHub ["Asking for Help" Discussion](https://github.com/google-deepmind/mujoco/discussions/categories/asking-for-help) 提问和寻求帮助,且应侧重于特定的问题。 ## 错误报告和功能请求 GitHub [Issues](https://github.com/google-deepmind/mujoco/issues) 专门用于错误报告、功能请求和其他与开发相关的主题。 ## 相关软件 MuJoCo 是众多环境包的基石。下面我们列出几个 bindings 和转换器。 ### Bindings 这些包为各种语言的用户提供访问 MuJoCo 功能的接口: #### 第一方 bindings: - [Python bindings](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 bindings 和 WebAssembly 支持](/wasm/README.md)(灵感来自 [stillonearth](https://github.com/stillonearth) 和 [zalo](https://github.com/zalo) 的社区项目)。 - [C# bindings 和 Unity 插件](https://mujoco.readthedocs.io/en/stable/unity.html) #### 第三方 bindings: - **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} } ``` ## 许可证和免责声明 版权所有 2021 DeepMind Technologies Limited。 Box 碰撞代码([`engine_collision_box.c`](https://github.com/google-deepmind/mujoco/blob/main/src/engine/engine_collision_box.c))版权所有 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 产品。
标签:AI工具, Apex, C API, DeepMind, MuJoCo, OpenGL, Python绑定, Unity插件, 人工智能, 刚体动力学, 动画, 多关节动力学, 强化学习, 接触动力学, 机器人仿真, 机器学习, 物理引擎, 生物力学, 用户模式Hook绕过, 计算机图形学, 逆向工具