MuJoCo:多关节接触动力学物理引擎
本文目录
MuJoCo 代表 Multi-Joint dynamics with Contact(带接触的多关节动力学)。它是一个通用物理引擎,旨在促进机器人学、生物力学、图形学与动画、机器学习,以及其他需要快速、准确模拟关节结构与所处环境交互的领域的研究与开发。
本仓库由 Google DeepMind 维护。
MuJoCo 具有 C API,面向研究人员和开发者。运行时仿真模块经过调优以最大化性能,并运行在由内置 XML 编译器预分配的低层数据结构上。该库包含原生桌面窗口和网页浏览器中的交互式可视化。MuJoCo 还暴露大量用于计算物理相关量的实用函数。
我们还提供 Python 绑定和 Unity 游戏引擎插件。
文档#
MuJoCo 的文档位于 mujoco.readthedocs.io。下一个版本即将推出的功能可在“latest”分支的 changelog 中找到。
入门#
在浏览器中试用 MuJoCo。 访问 mujoco.org,无需安装即可在桌面或移动设备上探索 MuJoCo;或打开 live.mujoco.org,在 WebAssembly 版 MuJoCo Studio 应用中检查并拖放你自己的模型(由于在 WebAssembly 中运行,比原生 C 慢)。
在你的机器上运行查看器。 按照文档中的入门指南,下载预构建版本,并在你的机器上运行 MuJoCo Studio 应用或经典的 simulate 查看器(本视频中展示)。
探索我们的在线 IPython notebook。 如果你是 Python 用户,可以从 Google Colab 上运行的教程 notebook 开始:
- 入门教程讲授 MuJoCo 基础知识:
- 模型编辑教程展示如何以编程方式创建和编辑模型:
- rollout 教程展示如何使用多线程 rollout 模块:
- LQR 教程合成线性二次型控制器,让一个人形机器人单腿保持平衡:
- 最小二乘教程解释如何使用基于 Python 的非线性最小二乘求解器:
- MJX 教程提供 MuJoCo XLA 的使用示例,MuJoCo XLA 是 MuJoCo 用 JAX 编写的分支:
- 可微分物理教程训练移动策略,其解析梯度从 MuJoCo 的物理步长自动推导:
安装#
预构建二进制文件#
带版本号的发布版可从 GitHub releases 页面获取预编译二进制文件,支持 Linux(x86-64 和 AArch64)、Windows(仅 x86-64)和 macOS(通用)。这是使用该软件的推荐方式。
从源码构建#
希望从源码构建 MuJoCo 的用户应查阅文档中的从源码构建部分。但请注意,main 分支顶端的提交可能不稳定。
Python(>= 3.11)#
原生 Python 绑定(预打包了一份 MuJoCo)可通过 PyPI 安装:
pip install mujoco
注意,预构建的 Linux wheel 面向 manylinux2014,兼容发行版见此。有关从源码构建绑定等更多信息,请参阅文档的 Python 绑定部分。
版本管理#
我们力争每月第一周发布 MuJoCo。从 3.5.0 起,我们的版本标准改为修改版语义化版本(modified Semantic Versioning),详情见 versioning。
贡献#
我们欢迎社区参与:提问、请求帮助、缺陷报告和功能请求。要了解缺陷报告、功能请求以及更宏大的贡献,请参阅贡献者指南和风格指南。
提问#
欢迎通过 GitHub “Asking for Help” Discussion 提问和请求帮助,问题应聚焦于具体问题或疑问。
缺陷报告和功能请求#
GitHub Issues 保留给缺陷报告、功能请求以及其他与开发相关的主题。
相关软件#
MuJoCo 是众多环境包的骨干。下面列出若干绑定和转换器。
绑定#
这些包让各种语言的用户访问 MuJoCo 功能:
第一方绑定:
- Python 绑定
- dm_control,Google DeepMind 的相关环境栈,包含 PyMJCF,一个以编程方式操作 MuJoCo 模型的模块。
- JavaScript 绑定和 WebAssembly 支持(受 stillonearth 和 zalo 的社区项目启发;mjswan 在这些基础上扩展了实时策略控制、交互式力施加等)。
- C# 绑定和 Unity 插件
第三方绑定:
- MATLAB Simulink:Manoj Velmurugan 的 Simulink Blockset for MuJoCo Simulator。
- 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.
Box collision code(engine_collision_box.c)的版权归 Svetoslav Kolev 所有,Copyright 2016。
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 官方支持的产品。
关于#
Multi-Joint dynamics with Contact。一个通用物理模拟器。
mujoco.org
主题:mujoco、physics、robotics
资源:Readme、Apache-2.0 license、Contributing、Security policy