MuJoCo¶
MuJoCo 代表多关节动力学与接触。它是一款物理引擎,用于促进机器人技术、生物力学、图形和动画以及其他需要快速准确仿真的领域的研发。机器人与其环境之间存在物理接触 - MuJoCo 尝试通过追求物理准确性和计算效率来获得对可能的物理接触动力学的真实物理模拟。
可以安装包括 MuJoCo 仿真器在内的这些环境的唯一依赖项,方法是:
pip install gymnasium[mujoco]
截至 2021 年 10 月,DeepMind 已收购 MuJoCo 并在 2022 年将其开源,使其对所有人免费。在健身房中使用 MuJoCo 需要安装框架 mujoco
(此依赖项与上面的命令一起安装)。有关安装 MuJoCo 引擎的说明,请参阅其网站和GitHub 存储库.
对于 MuJoCo v3
及更早版本的环境,需要 mujoco-py
框架(pip install gymnasium[mujoco-py]
),可在GitHub 存储库中找到。
共有 11 个 MuJoCo 环境(按复杂程度大致递增排列)
机器人 |
简短说明 |
---|---|
CartPoles |
|
InvertedPendulum |
CartPole 环境的 MuJoCo 版本(具有连续动作) |
InvertedDoublePendulum |
CartPole 环境的 2 根杆变体 |
手臂 |
|
Reacher |
2D 手臂,目标是到达物体 |
Pusher |
3D 手臂,目标是将物体推送到目标位置 |
2D 跑步者 |
|
HalfCheetah |
2D 四足动物,目标是跑步 |
Hopper |
2D 单足动物,目标是跳跃 |
Walker2d |
2D 两足动物,目标是行走 |
游泳者 |
|
Swimmer |
3D 机器人,目标是游泳 |
四足动物 |
|
Ant |
3D 四足动物,目标是跑步 |
人形两足动物 |
|
Humanoid |
3D 人形机器人,目标是跑步 |
HumanoidStandup |
3D 人形机器人,目标是站起来 |
所有这些环境在初始状态方面都是随机的,在固定初始状态中添加了高斯噪声以增加随机性。健身房中 MuJoCo 环境的状态空间由两个部分组成,这两个部分被展平并连接在一起:身体部位和关节的位置(mujoco.MjData.qpos
)及其相应的速度(mujoco.MjData.qvel
)(有关更多信息,请参阅MuJoCo 物理状态文档)。
在健身房环境中,这组环境可以被认为更难通过策略解决。
可以通过更改 xml_file
参数和/或调整其类的参数来配置环境。
版本¶
健身房包括以下版本的环境
版本 |
仿真器 |
说明 |
---|---|---|
|
|
推荐(大多数功能,最少的错误) |
|
|
为可重复性而维护 |
|
|
已弃用,为可重复性而保留(支持有限) |
|
|
已弃用,为可重复性而保留(支持有限) |
有关更多信息,请参阅每个环境的“版本历史记录”部分。
v1
及更早版本不再包含在健身房中。
跨版本比较训练性能¶
假设使用了相同/默认参数,v2
和 v3
的训练性能相同。
v2
/v3
和 v4
的训练性能不能直接比较,因为仿真器发生了变化,但除 Ant 和 Humanoid 之外,结果是可以比较的(有关更多信息,请参阅GitHub 评论 #1和GitHub 评论 #2)。
v4
和 v5
的训练性能不同,因为环境发生了许多变化,但 Half Cheetah 和 Swimmer 表现出相同的行为,Pusher 和 Swimmer 非常接近(有关更多信息,请参阅GitHub 问题)。
精确可重复性¶
注意:由于浮点运算顺序,MuJoCo 仿真器的确切行为在 mujoco
版本之间略有不同(有关更多信息,请参阅其文档)。如果需要精确的可重复性,除了对实验使用 seed
之外,还应使用相同的仿真器版本。
渲染参数¶
除了通用的健身房参数和环境特定参数外,所有 MuJoCo 环境还接受以下参数来配置渲染器
env = gymnasium.make("Ant-v5", render_mode="rgb_array", width=1280, height=720)
参数 |
类型 |
默认值 |
描述 |
---|---|---|---|
|
int |
|
渲染窗口的宽度 |
|
int |
|
int |
|
camera_id |
|
None |
|
camera_name |
|
str | None |
|
default_camera_config |
|
dict[str, float | int] | None |
|
int |
|
max_geom |
|
要渲染的几何对象的最大数量(对第三方环境有用) |
|
visual_options |
Dict[int, bool]
包含 mjVisual 标志和值对的字典,例如 {mujoco.mjtVisFlag.mjVIS_CONTACTPOINT: True, mujoco.mjtVisFlag.mjVIS_CONTACTFORCE: True}
(显示接触点和力)。
渲染后端¶ |
MuJoCo 仿真器使用 OpenGL 渲染图像,可以使用 3 个不同的后端“glfw”(默认)、“egl”、“omesa”,可以通过设置环境变量来选择这些后端。 |
描述 |
---|---|---|
|
环境变量 |
glfw |
|
|
egl |
|
|
omesa |
MUJOCO_GL=omesa