倒立摆¶
此环境是 Mujoco 环境的一部分,其中包含有关该环境的常规信息。
动作空间 |
|
观测空间 |
|
import |
|
描述¶
该环境是 Cartpole 环境,基于 Barto, Sutton 和 Anderson 在 “Neuronlike adaptive elements that can solve difficult learning control problems” 一文中的工作,与经典环境一样,但现在由 Mujoco 物理引擎驱动——允许进行更复杂的实验(例如改变重力的影响)。该环境由一个可以在线性轨道上移动的小车组成,小车一端连接着一根杆,另一端自由。可以通过向小车施加作用力使其向左或向右移动,目标是通过对小车施加力来保持杆在小车顶部平衡。
动作空间¶
智能体使用一个 1 元素的向量作为动作。
动作空间是一个连续的 (action),取值范围为 [-3, 3],其中 action 表示施加在小车上的数值力(其大小表示力的大小,符号表示方向)。
编号 |
动作 |
控制最小值 |
控制最大值 |
名称(对应 XML 文件) |
关节 |
类型(单位) |
|---|---|---|---|---|---|---|
0 |
施加在小车上的力 |
-3 |
3 |
滑块 |
slide |
力 (N) |
观测空间¶
观测空间由以下部分组成(按顺序)
qpos (2 元素): 机器人小车和杆的位置值。
qvel (2 元素): 小车和杆的速度(位置的导数)。
观测空间是一个 Box(-Inf, Inf, (4,), float64),其中各元素含义如下:
编号 |
观测值 |
最小值 |
最大值 |
名称(对应 XML 文件) |
关节 |
类型(单位) |
|---|---|---|---|---|---|---|
0 |
小车沿线性表面的位置 |
-Inf |
Inf |
滑块 |
slide |
位置 (m) |
1 |
杆相对于小车的垂直角度 |
-Inf |
Inf |
铰链 (hinge) |
铰链 (hinge) |
角度 (rad) |
2 |
小车的线性速度 |
-Inf |
Inf |
滑块 |
slide |
速度 (m/s) |
3 |
杆相对于小车的角速度 |
-Inf |
Inf |
铰链 (hinge) |
铰链 (hinge) |
角速度 (rad/s) |
奖励(Rewards)¶
目标是尽可能长时间地保持倒立摆直立(在一定的角度限制内)——因此,对于杆保持直立的每一个时间步,都会给予 +1 的奖励。
若满足 \(|angle| < 0.2\),则认为杆是直立的。
且 info 也包含奖励值。
起始状态¶
初始位置状态为 \(\mathcal{U}_{[-reset\_noise\_scale \times I_{2}, reset\_noise\_scale \times I_{2}]}\)。初始速度状态为 \(\mathcal{U}_{[-reset\_noise\_scale \times I_{2}, reset\_noise\_scale \times I_{2}]}\)。
其中 \(\mathcal{U}\) 是多元均匀连续分布。
回合结束¶
终止¶
当倒立摆处于“不健康”状态时,环境终止。如果发生以下任何情况,倒立摆即被视为“不健康”:
状态空间中的任何值不再是有限的。
杆与小车之间的垂直角度的绝对值大于 0.2 弧度。
截断¶
一集的默认持续时间为 1000 个时间步。
参数¶
InvertedPendulum 提供了一系列参数来修改观测空间、奖励函数、初始状态和终止条件。这些参数可以在 gymnasium.make 时通过以下方式应用:
import gymnasium as gym
env = gym.make('InvertedPendulum-v5', reset_noise_scale=0.1)
参数 |
类型 |
默认值 |
描述 |
|---|---|---|---|
|
str |
|
MuJoCo 模型的路径 |
|
float |
|
初始位置和速度的随机扰动比例(参见 |
版本历史¶
v5
最低
mujoco版本现为 2.3.3。添加了对使用
xml_file参数的完全自定义/第三方mujoco模型的支持(此前只能对现有模型进行少量更改)。添加了
default_camera_config参数,这是一个用于设置mj_camera属性的字典,主要对自定义环境有用。添加了
env.observation_structure,一个用于指定观测空间组成(例如qpos,qvel)的字典,对构建 MuJoCo 环境的工具和包装器很有用。添加了
frame_skip参数,用于配置dt(step()的持续时间),默认值因环境而异,请检查环境文档页面。Bug 修复:此前
healthy_reward在每一步都会给予(即使摆处于不健康状态),现在仅在摆健康(未终止)时才给予(相关 GitHub issue)。添加了
xml_file参数。添加了
reset_noise_scale参数以设置初始状态的范围。添加了包含奖励值的
info["reward_survive"]。
v4:所有 MuJoCo 环境现在使用 mujoco >= 2.1.3 的绑定。
v3:此环境没有 v3 版本。已迁移至 gymnasium-robotics 仓库。
v2: 所有连续控制环境现在都使用 mujoco-py >= 1.5。已迁移至 gymnasium-robotics 仓库。
v1: 机器人相关任务(包括倒立摆)的 max_time_steps 提高到 1000。
v0:初始版本发布。