倒立双摆¶

该环境属于Mujoco环境,其中包含有关该环境的通用信息。
动作空间 |
|
观测空间 |
|
导入 |
|
描述¶
该环境源于控制理论,并基于Barto、Sutton和Anderson在“能够解决困难学习控制问题的类神经自适应单元”中的工作,在车杆环境的基础上构建,由Mujoco物理模拟器驱动——允许进行更复杂的实验(例如改变重力或约束的影响)。这个环境涉及一个可以线性移动的小车,一根杆子连接在小车上,第二根杆子连接在第一根杆子的另一端(使第二根杆子成为唯一一端自由的杆子)。小车可以向左或向右推动,目标是通过对小车施加连续力来平衡第二根杆子在第一根杆子上方,而第一根杆子又在小车上方。
动作空间¶
智能体采取1个元素的向量作为动作。动作空间是一个在[-1, 1]
范围内的连续(action)
,其中action
表示施加在小车上的数值力(幅度表示力的大小,符号表示方向)。
编号 |
动作 |
控制最小值 |
控制最大值 |
名称(在相应的XML文件中) |
关节 |
类型 (单位) |
---|---|---|---|---|---|---|
0 |
施加在小车上的力 |
-1 |
1 |
滑块 |
滑动 |
力 (N) |
观测空间¶
观测空间由以下部分组成(按顺序):
qpos (1个元素): 机器人小车的位置值。
sin(qpos) (2个元素): 杆子角度的正弦值。
cos(qpos) (2个元素): 杆子角度的余弦值。
qvel (3个元素): 这些独立身体部分的速度(它们的导数)。
qfrc_constraint (1个元素): 小车的约束力。每个自由度有1个接触约束力(共3个)。MuJoCo处理约束的方法是模拟器独有的,并且基于他们的研究。更多信息可以在他们的文档或他们的论文“具有接触和约束的解析可逆动力学:MuJoCo中的理论与实现”中找到。
观测空间是Box(-Inf, Inf, (9,), float64)
,其中元素如下:
编号 |
观测 |
最小值 |
最大值 |
名称(在相应的XML文件中) |
关节 |
类型 (单位) |
---|---|---|---|---|---|---|
0 |
小车沿线性表面的位置 |
-Inf |
Inf |
滑块 |
滑动 |
位置 (m) |
1 |
小车与第一根杆子之间角度的正弦 |
-Inf |
Inf |
sin(铰链) |
铰链 |
无单位 |
2 |
两根杆子之间角度的正弦 |
-Inf |
Inf |
sin(铰链2) |
铰链 |
无单位 |
3 |
小车与第一根杆子之间角度的余弦 |
-Inf |
Inf |
cos(铰链) |
铰链 |
无单位 |
4 |
两根杆子之间角度的余弦 |
-Inf |
Inf |
cos(铰链2) |
铰链 |
无单位 |
5 |
小车速度 |
-Inf |
Inf |
滑块 |
滑动 |
速度 (m/s) |
6 |
小车与第一根杆子之间角度的角速度 |
-Inf |
Inf |
铰链 |
铰链 |
角速度 (rad/s) |
7 |
两根杆子之间角度的角速度 |
-Inf |
Inf |
铰链2 |
铰链 |
角速度 (rad/s) |
8 |
约束力 - x |
-Inf |
Inf |
滑块 |
滑动 |
力 (N) |
已排除 |
约束力 - y |
-Inf |
Inf |
滑块 |
滑动 |
力 (N) |
已排除 |
约束力 - z |
-Inf |
Inf |
滑块 |
滑动 |
力 (N) |
奖励¶
总奖励为:奖励 = 存活奖励 - 距离惩罚 - 速度惩罚。
存活奖励: 倒立摆在健康状态下的每个时间步(参见“回合结束”部分中的定义),都会获得固定值
healthy_reward
(默认为\(10\))的奖励。距离惩罚: 该奖励衡量第二根摆的尖端(唯一的自由端)移动了多远,计算公式为\(0.01 x_{pole2-tip}^2 + (y_{pole2-tip}-2)^2\),其中\(x_{pole2-tip}, y_{pole2-tip}\)是第二根杆子尖端的xy坐标。
速度惩罚: 一个负奖励,惩罚智能体移动过快。\(10^{-3} \omega_1 + 5 \times 10^{-3} \omega_2\),其中\(\omega_1, \omega_2\)是铰链的角速度。
info
包含各个奖励项。
起始状态¶
初始位置状态是\(\mathcal{U}_{[-reset\_noise\_scale \times I_{3}, reset\_noise\_scale \times I_{3}]}\)。初始速度状态是\(\mathcal{N}(0_{3}, reset\_noise\_scale^2 \times I_{3})\)。
其中\(\mathcal{N}\)是多元正态分布,\(\mathcal{U}\)是多元均匀连续分布。
回合结束¶
终止¶
当倒立双摆不健康时,环境终止。如果发生以下任何一种情况,倒立双摆被视为不健康:
1. 终止:第二根杆子尖端的y坐标\(\leq 1\)。
注意:当所有部件都垂直堆叠在一起时,系统的最大站立高度为1.2米。
截断¶
一个回合的默认持续时间是1000个时间步。
参数¶
倒立双摆提供了多种参数来修改观测空间、奖励函数、初始状态和终止条件。这些参数可以在gymnasium.make
中按以下方式应用:
import gymnasium as gym
env = gym.make('InvertedDoublePendulum-v5', healthy_reward=10, ...)
参数 |
类型 |
默认值 |
描述 |
---|---|---|---|
|
str |
|
MuJoCo模型的路径 |
|
float |
|
如果摆是 |
|
float |
|
初始位置和速度随机扰动的尺度(参见 |
版本历史¶
v5
最低
mujoco
版本现在是2.3.3。增加了
default_camera_config
参数,一个用于设置mj_camera
属性的字典,主要用于自定义环境。增加了
frame_skip
参数,用于配置dt
(step()
的持续时间),默认值因环境而异,请查看环境文档页面。修复了bug:
healthy_reward
在每一步都会给出(即使摆不健康),现在只有在双摆健康(未终止)时才给出(相关GitHub问题)。将铰链的
qfrc_constraint
(“约束力”)从观测空间中排除(因为它总是0,因此不向智能体提供有用信息,从而略微加快了训练速度)(相关GitHub问题)。增加了
xml_file
参数。增加了
reset_noise_scale
参数以设置初始状态的范围。增加了
healthy_reward
参数以配置奖励函数(默认值与v4
中的有效值相同)。在
info
中添加了单独的奖励项(info["reward_survive"]
、info["distance_penalty"]
、info["velocity_penalty"]
)。
v4: 所有MuJoCo环境现在都使用mujoco >= 2.1.3 中的MuJoCo绑定。
v3: 该环境没有v3版本发布。已移至gymnasium-robotics仓库。
v2: 所有连续控制环境现在都使用mujoco-py >= 1.50。已移至gymnasium-robotics仓库。
v1: 基于机器人的任务(包括倒立摆)的最大时间步数增加到1000。
v0: 初始版本发布。