倒單擺¶

此環境是 Mujoco 環境的一部分,其中包含有關該環境的一般資訊。
動作空間 |
|
觀察空間 |
|
導入 |
|
描述¶
此環境源自控制理論,並基於 Barto、Sutton 和 Anderson 在「可以解決困難學習控制問題的類神經適應元件」 中的工作,建立在倒立擺環境之上,並由 Mujoco 物理模擬器提供支持 - 允許更複雜的實驗(例如改變重力或約束的影響)。此環境涉及一個可以線性移動的台車,一個桿子連接到該台車,第二個桿子連接到第一個桿子的另一端(使第二個桿子成為唯一具有自由端的桿子)。台車可以向左或向右推動,目標是透過對台車施加連續力來平衡第一個桿子頂部的第二個桿子,而第一個桿子又在台車頂部。
動作空間¶
代理人接收一個包含 1 個元素的向量作為動作。動作空間是一個連續的 (action)
,範圍在 [-1, 1]
內,其中 action
代表施加在台車上的數值力(大小代表力的量,符號代表方向)
編號 |
動作 |
控制最小值 |
控制最大值 |
名稱(在相應的 XML 檔案中) |
關節 |
類型 (單位) |
---|---|---|---|---|---|---|
0 |
施加在台車上的力 |
-1 |
1 |
滑塊 |
滑動 |
力 (N) |
觀察空間¶
觀察空間包含以下部分(依序)
qpos (1 個元素): 機器人台車的位置值。
sin(qpos) (2 個元素): 桿子角度的正弦值。
cos(qpos) (2 個元素): 桿子角度的餘弦值。
qvel (3 個元素): 這些個別身體部位的速度(其導數)。
qfrc_constraint (1 個元素): 台車的約束力。對於每個自由度 (3) 的接觸點都有一個約束力。MuJoCo 對約束的處理和處理方式是模擬器獨有的,並且基於他們的研究。更多資訊可以在他們的文件或他們的論文 「具有接觸和約束的分析可逆動力學:MuJoCo 中的理論和實作」 中找到。
觀察空間是一個 Box(-Inf, Inf, (9,), float64)
,其中元素如下
編號 |
觀察 |
最小值 |
最大值 |
名稱(在相應的 XML 檔案中) |
關節 |
類型 (單位) |
---|---|---|---|---|---|---|
0 |
台車沿線性表面的位置 |
-Inf |
Inf |
滑塊 |
滑動 |
位置 (m) |
1 |
台車和第一個桿子之間角度的正弦值 |
-Inf |
Inf |
sin(hinge) |
hinge |
無單位 |
2 |
兩個桿子之間角度的正弦值 |
-Inf |
Inf |
sin(hinge2) |
hinge |
無單位 |
3 |
台車和第一個桿子之間角度的餘弦值 |
-Inf |
Inf |
cos(hinge) |
hinge |
無單位 |
4 |
兩個桿子之間角度的餘弦值 |
-Inf |
Inf |
cos(hinge2) |
hinge |
無單位 |
5 |
台車的速度 |
-Inf |
Inf |
滑塊 |
滑動 |
速度 (m/s) |
6 |
台車和第一個桿子之間角度的角速度 |
-Inf |
Inf |
hinge |
hinge |
角速度 (rad/s) |
7 |
兩個桿子之間角度的角速度 |
-Inf |
Inf |
hinge2 |
hinge |
角速度 (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 個時間步。
參數¶
InvertedDoublePendulum 提供一系列參數來修改觀察空間、獎勵函數、初始狀態和終止條件。這些參數可以在 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()
的持續時間),預設值因環境而異,請查看環境文件頁面。修正錯誤:
healthy_reward
在每個步驟都會給予(即使擺錘不健康),現在只有在 DoublePendulum 健康(未終止)時才會給予(相關的 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 版本。
v2:所有連續控制環境現在都使用 mujoco-py >= 1.50。
v1:針對基於機器人的任務(包括倒單擺),max_time_steps 已提高至 1000。
v0:初始版本發佈。