倒立雙擺¶
該環境屬於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: 初始版本釋出。