Reviewed-on: #3
MuJoCo 是 Multi-Joint dynamics with Contact(带接触的多关节动力学)的缩写。它是一款通用物理引擎,旨在促进机器人学、生物力学、图形与动画、机器学习以及其他需要对与环境交互的多关节结构进行快速且精确仿真的领域的研究与开发。
本项目由 Google DeepMind 维护。
MuJoCo 提供 C API,面向研究人员和开发者。其实时仿真模块经过专门调优以实现极致性能,并运行在由内置 XML 编译器预先分配的底层数据结构之上。该库包含使用 OpenGL 渲染的原生 GUI 交互式可视化工具。MuJoCo 还提供了大量用于计算物理相关物理量的实用函数。
我们还提供了 Python 绑定 以及用于 Unity 游戏引擎的插件。
文档
MuJoCo 的文档可在 mujoco.readthedocs.io 查阅。下一个版本即将推出的新特性可以在 “latest” 分支的更新日志中找到。
快速入门
快速上手 MuJoCo 有两种简便途径:
-
在本地运行
simulate。 此视频展示了 MuJoCo 原生交互式查看器simulate的录屏。请按照文档中的快速入门部分描述的步骤在您的机器上运行simulate。 -
探索在线 IPython Notebook 教程。 如果您是 Python 用户,建议从运行在 Google Colab 上的教程 Notebook 开始:
- 入门教程讲解 MuJoCo 基础知识:
- 模型编辑教程演示如何通过代码程序化创建和编辑模型:
- rollout 教程介绍如何使用多线程
rollout模块: - LQR 教程演示如何合成线性二次型控制器(LQR),实现人形机器人单腿平衡:
- 最小二乘法教程解释如何使用基于 Python 的非线性最小二乘求解器:
- MJX 教程提供了 MuJoCo XLA 的使用示例,它是用 JAX 编写的 MuJoCo 分支版本:
- 可微物理教程展示如何利用从 MuJoCo 物理计算步中自动推导出的解析梯度来训练运动控制策略:
安装
预编译二进制文件
带有版本号的正式发行版预编译二进制文件可在 GitHub 发布页面 获取,支持 Linux(x86-64 和 AArch64)、Windows(仅限 x86-64)和 macOS(通用架构)。这是使用本软件的推荐方式。
从源码构建
希望从源码构建 MuJoCo 的用户请参阅文档中的从源码构建部分。但请注意,main 分支最新的提交可能不够稳定。
Python (>= 3.10)
原生 Python 绑定已预打包了 MuJoCo 副本,可以通过 PyPI 进行安装:
pip install mujoco
请注意,预构建的 Linux wheel 面向 manylinux2014,兼容的发行版参见此处。有关从源码构建绑定等更多信息,请参阅文档中的 Python 绑定部分。
版本规范
我们力求在每月的首周发布新版本 MuJoCo。自 3.5.0 版本起,我们的版本命名规范变更为修订版语义化版本控制(modified Semantic Versioning),详情请参阅 版本规范。
参与贡献
我们非常欢迎社区参与:包括提问、寻求帮助、错误报告以及功能建议。欲了解更多有关提交 Bug 报告、功能需求以及更深入贡献的指引,请参阅我们的贡献指南和代码风格指南。
提问与交流
欢迎在 GitHub 的 “Asking for Help” 讨论区 提出问题或寻求帮助,请尽量聚焦于具体的问题或疑问。
错误报告与功能需求
GitHub Issues 仅用于提交 Bug 报告、功能需求以及其他与开发相关的主题。
相关软件生态
MuJoCo 是许多仿真环境软件包的核心支撑。下面列出了一些语言绑定与格式转换器。
语言绑定
这些软件包为不同编程语言的用户提供了访问 MuJoCo 功能的接口:
第一方绑定:
- Python 绑定
- dm_control,Google DeepMind 的相关环境技术栈,包含了用于程序化操作 MuJoCo 模型的模块 PyMJCF。
- JavaScript 绑定与 WebAssembly 支持(灵感源于 stillonearth 和 zalo 的社区项目;mjswan 扩展了其实时策略控制、交互式施力等功能)。
- C# 绑定与 Unity 插件
第三方绑定:
- MATLAB Simulink: Simulink Blockset for MuJoCo Simulator(由 Manoj Velmurugan 开发)。
- Swift: swift-mujoco
- Java: mujoco-java
- Julia: MuJoCo.jl
- Rust: MuJoCo-rs
格式转换工具
- OpenSim: MyoConverter 将 OpenSim 模型转换为 MJCF。
- SDFormat: gz-mujoco 是 SDFormat 与 MJCF 之间的双向转换工具。
- OBJ: obj2mjcf 用于将组合 OBJ 文件转换为可加载的 MJCF 模型的脚本。
- onshape: Onshape to Robot 将 onshape 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)版权所有 © 2016 Svetoslav Kolev。
doc 目录下的 ReStructuredText 文档、图像和视频均依据知识共享署名 4.0 国际许可协议(Creative Commons Attribution 4.0, CC BY 4.0)提供。您可在 https://creativecommons.org/licenses/by/4.0/legalcode 获取该许可证副本。
源代码基于 Apache 许可证 2.0 版(Apache License, Version 2.0)授权。您可在 https://www.apache.org/licenses/LICENSE-2.0 获取许可证副本。
本项目不是 Google 官方支持的产品。
