Reacher¶

此環境是 Mujoco 環境的一部分,其中包含有關環境的一般資訊。
動作空間 |
|
觀察空間 |
|
匯入 |
|
描述¶
「Reacher」是一個雙關節機器手臂。目標是移動機器人的末端執行器(稱為指尖)靠近隨機位置產生的目標。
動作空間¶

動作空間是一個 Box(-1, 1, (2,), float32)
。動作 (a, b)
代表施加在鉸鏈關節上的扭矩。
編號 |
動作 |
控制最小值 |
控制最大值 |
名稱(在對應的 XML 檔案中) |
關節 |
類型(單位) |
---|---|---|---|---|---|---|
0 |
施加在第一個鉸鏈上的扭矩(將連結連接到固定點) |
-1 |
1 |
joint0 |
鉸鏈 |
扭矩 (N m) |
1 |
施加在第二個鉸鏈上的扭矩(連接兩個連結) |
-1 |
1 |
joint1 |
鉸鏈 |
扭矩 (N m) |
觀察空間¶
觀察空間包含以下部分(依序)
cos(qpos) (2 個元素): 兩個手臂角度的餘弦值。
sin(qpos) (2 個元素): 兩個手臂角度的正弦值。
qpos (2 個元素): 目標的座標。
qvel (2 個元素): 手臂的角速度(它們的導數)。
xpos (2 個元素): 目標與 reacher 之間的向量。
觀察空間是一個 Box(-Inf, Inf, (10,), float64)
,其中元素如下
編號 |
觀察 |
最小值 |
最大值 |
名稱(在對應的 XML 檔案中) |
關節 |
類型(單位) |
---|---|---|---|---|---|---|
0 |
第一個手臂角度的餘弦值 |
-Inf |
Inf |
cos(joint0) |
鉸鏈 |
無單位 |
1 |
第二個手臂角度的餘弦值 |
-Inf |
Inf |
cos(joint1) |
鉸鏈 |
無單位 |
2 |
第一個手臂角度的正弦值 |
-Inf |
Inf |
sin(joint0) |
鉸鏈 |
無單位 |
3 |
第二個手臂角度的正弦值 |
-Inf |
Inf |
sin(joint1) |
鉸鏈 |
無單位 |
4 |
目標的 x 座標 |
-Inf |
Inf |
target_x |
滑動 |
位置 (m) |
5 |
目標的 y 座標 |
-Inf |
Inf |
target_y |
滑動 |
位置 (m) |
6 |
第一個手臂的角速度 |
-Inf |
Inf |
joint0 |
鉸鏈 |
角速度 (rad/s) |
7 |
第二個手臂的角速度 |
-Inf |
Inf |
joint1 |
鉸鏈 |
角速度 (rad/s) |
8 |
position_fingertip - position_target 的 x 值 |
-Inf |
Inf |
不適用 |
滑動 |
位置 (m) |
9 |
position_fingertip - position_target 的 y 值 |
-Inf |
Inf |
不適用 |
滑動 |
位置 (m) |
已排除 |
position_fingertip - position_target 的 z 值(因為 reacher 是 2d,所以恆為 0) |
-Inf |
Inf |
不適用 |
滑動 |
位置 (m) |
大多數健身房環境只會在 .xml
檔案中回傳關節的位置和速度,作為環境的狀態。但是,在 reacher 中,狀態是透過僅組合位置和速度的某些元素,並對其執行某些函數轉換來建立的。reacher.xml
包含這 4 個關節
編號 |
觀察 |
最小值 |
最大值 |
名稱(在對應的 XML 檔案中) |
關節 |
單位 |
---|---|---|---|---|---|---|
0 |
第一個手臂的角度 |
-Inf |
Inf |
joint0 |
鉸鏈 |
角度 (rad) |
1 |
第二個手臂的角度 |
-Inf |
Inf |
joint1 |
鉸鏈 |
角度 (rad) |
2 |
目標的 x 座標 |
-Inf |
Inf |
target_x |
滑動 |
位置 (m) |
3 |
目標的 y 座標 |
-Inf |
Inf |
target_y |
滑動 |
位置 (m) |
獎勵¶
總獎勵為:獎勵 = 獎勵_距離 + 獎勵_控制。
獎勵_距離:此獎勵衡量 reacher 的指尖(未連接的末端)與目標的距離,如果 reacher 的指尖離目標更遠,則會指派更負面的值。它是 \(-w_{near} \|(P_{fingertip} - P_{target})\|_2\)。其中 \(w_{near}\) 是
reward_near_weight
(預設為 \(1\))。獎勵_控制:一個負獎勵,用於懲罰 walker 採取過大的動作。它是以動作的負平方歐幾里得範數來衡量的,即 \(-w_{control} \|action\|_2^2\)。其中 \(w_{control}\) 是
reward_control_weight
。(預設為 \(0.1\))
info
包含個別獎勵項。
起始狀態¶
reacher 手臂的初始位置狀態是 \(\mathcal{U}_{[-0.1 \times I_{2}, 0.1 \times I_{2}]}\)。目標的位置狀態(永久)是 \(\mathcal{S}(0.2)\)。Reacher 手臂的初始速度狀態是 \(\mathcal{U}_{[-0.005 \times 1_{2}, 0.005 \times 1_{2}]}\)。物件的速度狀態(永久)是 \(0_2\)。
其中 \(\mathcal{U}\) 是多元均勻連續分佈,而 \(\mathcal{S}\) 是均勻連續球面分佈。
預設影格率為 \(2\),每個影格持續時間為 \(0.01\),因此 dt = 5 * 0.01 = 0.02。
回合結束¶
終止¶
Reacher 永遠不會終止。
截斷¶
回合的預設持續時間為 50 個時間步長。
引數¶
Reacher 提供一系列參數來修改觀察空間、獎勵函數、初始狀態和終止條件。這些參數可以在 gymnasium.make
期間以以下方式應用
import gymnasium as gym
env = gym.make('Reacher-v5', xml_file=...)
參數 |
類型 |
預設值 |
描述 |
---|---|---|---|
|
str |
|
MuJoCo 模型的路徑 |
|
float |
|
reward_dist 項的權重(請參閱 |
|
float |
|
reward_control 項的權重(請參閱 |
版本歷史¶
v5
現在最低
mujoco
版本為 2.3.3。新增
default_camera_config
引數,這是用於設定mj_camera
屬性的字典,主要用於自訂環境。新增
frame_skip
引數,用於設定dt
(step()
的持續時間),預設值因環境而異,請查看環境文件頁面。修正錯誤:
reward_distance
是基於物理步驟之前的狀態,現在它是基於物理步驟之後的狀態(相關 GitHub 問題)。從觀察空間中移除
"z - position_fingertip"
,因為它始終為 0,因此不會為代理提供任何有用資訊,這應該會導致訓練速度略微加快(相關的 GitHub issue)。新增
xml_file
參數。新增
reward_dist_weight
、reward_control_weight
參數以配置獎勵函數(預設值與v4
中的效果相同)。修正
info["reward_ctrl"]
未乘以獎勵權重的問題。
v4:所有 MuJoCo 環境現在都使用 mujoco >= 2.1.3 中的 MuJoCo 綁定。
v3:此環境沒有 v3 版本。
v2:所有連續控制環境現在都使用 mujoco-py >= 1.50。
v1:機器人相關任務的最大時間步數提高到 1000(不包括最大時間步數為 50 的 reacher)。為環境新增了 reward_threshold。
v0:初始版本發佈。