MuJoCo¶











MuJoCo 代表 Multi-Joint dynamics with Contact(多关节动力学与接触)。它是一个物理引擎,旨在促进机器人技术、生物力学、图形和动画以及其他需要快速准确仿真的领域的研究和开发。机器人与其环境之间存在物理接触 - MuJoCo 致力于为可能的物理接触动力学获得逼真的物理仿真,目标是物理精度和计算效率。
此环境集(包含 MuJoCo 模拟器)的独特依赖项可以通过以下方式安装
pip install gymnasium[mujoco]
截至 2021 年 10 月,DeepMind 收购了 MuJoCo,并在 2022 年将其开源,使其对所有人免费。将 MuJoCo 与 Gymnasium 一起使用需要安装框架 mujoco
(此依赖项与上述命令一起安装)。有关安装 MuJoCo 引擎的说明,请访问其网站和GitHub 存储库。
对于 MuJoCo v3
环境和更旧版本,需要 mujoco-py
框架(pip install gymnasium[mujoco-py]
),可以在 GitHub 存储库中找到。
共有十一个 MuJoCo 环境(大致按复杂性递增排列)
机器人 |
简短描述 |
---|---|
CartPoles(倒立摆系列) |
|
InvertedPendulum(倒立摆) |
CartPole 环境的 MuJoCo 版本(具有连续动作) |
InvertedDoublePendulum(倒立双摆) |
CartPole 环境的 2 杆变体 |
Arms(手臂) |
|
Reacher(抓取器) |
2d 手臂,目标是抓取物体 |
Pusher(推杆) |
3d 手臂,目标是将物体推到目标位置 |
2D Runners(2D 跑步者) |
|
HalfCheetah(半猎豹) |
2d 四足动物,目标是奔跑 |
Hopper(跳跃者) |
2d 单足动物,目标是跳跃 |
Walker2d(二维步行者) |
2d 双足动物,目标是行走 |
Swimmers(游泳者) |
|
Swimmer(游泳者) |
3d 机器人,目标是游泳 |
Quarduped(四足动物) |
|
Ant(蚂蚁) |
3d 四足动物,目标是奔跑 |
Humanoid Bipeds(人形双足动物) |
|
Humanoid(人形机器人) |
3d 人形机器人,目标是奔跑 |
HumanoidStandup(人形机器人站立) |
3d 人形机器人,目标是站立 |
所有这些环境在其初始状态方面都是随机的,高斯噪声被添加到固定的初始状态以增加随机性。Gymnasium 中 MuJoCo 环境的状态空间由两个部分组成,它们被展平并连接在一起:身体部位和关节的位置 (mujoco.MjData.qpos
) 及其相应的速度 (mujoco.MjData.qvel
)(更多信息请参见 MuJoCo 物理状态文档)。
在 Gymnasium 环境中,这组环境可以被认为更难以通过策略解决。
可以通过更改 xml_file
参数和/或调整其类的参数来配置环境。
版本¶
Gymnasium 包括以下环境版本
版本 |
模拟器 |
注释 |
---|---|---|
|
|
推荐(功能最多,错误最少) |
|
|
为可重复性维护 |
|
|
已弃用,保留用于可重复性(有限支持) |
|
|
已弃用,保留用于可重复性(有限支持) |
有关更多信息,请参阅每个环境的“版本历史”部分。
v1
及更旧版本不再包含在 Gymnasium 中。
跨版本比较训练性能¶
假设使用相同/默认参数,v2
和 v3
的训练性能相同。
v2
/v3
和 v4
的训练性能不可直接比较,因为更改为较新的模拟器,但非 Ant 和非 Humanoids 的结果是可比较的(有关更多信息,请参阅 GitHub 评论 #1 和 GitHub 评论 #2)。
v4
和 v5
的训练性能不同,因为环境发生了很多变化,但 Half Cheetah 和 Swimmer 表现出相同的行为,Pusher 和 Swimmer 接近(有关更多信息,请参阅 GitHub Issue)。
精确的可重复性¶
注意:由于浮点运算排序(更多信息请参阅其文档),MuJoCo 模拟器的确切行为在 mujoco
版本之间略有变化,如果需要精确的可重复性,除了为实验使用 seed
之外,还应使用相同的模拟器版本。
渲染参数¶
除了通用的 Gymnasium 参数和特定于环境的参数之外,所有 MuJoCo 环境还接受以下参数来配置渲染器
env = gymnasium.make("Ant-v5", render_mode="rgb_array", width=1280, height=720)
参数 |
类型 |
默认值 |
描述 |
---|---|---|---|
|
str |
|
渲染结果的模态。必须是 |
|
int |
|
渲染窗口的宽度 |
|
int |
|
渲染窗口的高度 |
|
int | None |
|
用于渲染窗口的相机 ID |
|
str | None |
|
用于渲染窗口的相机名称(与 |
|
dict[str, float | int] | None |
|
mjvCamera 属性 |
|
int |
|
要渲染的最大几何对象数量(对第三方环境很有用) |
|
Dict[int, bool] |
|
包含 mjVisual 标志和值对的字典,例如 |
渲染后端¶
MuJoCo 模拟器使用 OpenGL 渲染图像,可以使用 3 种不同的后端“glfw”(默认)、“egl”、“omesa”,可以通过设置环境变量来选择。
后端 |
环境变量 |
描述 |
---|---|---|
|
|
使用 GPU 上的窗口系统渲染 |
|
|
在 GPU 上无头渲染 |
|
|
在 CPU 上无头渲染 |
有关 MuJoCo/OpenGL 文档的更多信息。