Heidi Labs
GitHub TrendingGitHub Trending 项目约 7 分钟2,788 字

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