倒單擺

../../../_images/inverted_pendulum.gif

此環境是 Mujoco 環境的一部分,其中包含有關環境的一般信息。

動作空間

Box(-3.0, 3.0, (1,), float32)

觀察空間

Box(-inf, inf, (4,), float64)

導入

gymnasium.make("InvertedPendulum-v5")

描述

此環境是 Cartpole 環境,基於 Barto、Sutton 和 Anderson 在 「Neuronlike adaptive elements that can solve difficult learning control problems」 中的工作,就像在經典環境中一樣,但現在由 Mujoco 物理模擬器提供支持 - 允許更複雜的實驗(例如改變重力的影響)。此環境包含一個可以線性移動的車,一端連接桿子,另一端自由。可以左右推動車子,目標是通過對車子施力來平衡車子頂部的桿子。

動作空間

智能體採用一個 1 元素向量作為動作。

動作空間是 [-3, 3] 中的連續 (action),其中 action 表示施加在車上的數值力(幅度表示力的大小,符號表示方向)

編號

動作

控制最小值

控制最大值

名稱 (在相應的 XML 文件中)

關節

類型 (單位)

0

施加在車上的力

-3

3

slider

slide

力 (N)

觀察空間

觀察空間由以下部分組成(依序)

  • qpos (2 元素): 機器人車子和桿子的位置值。

  • qvel (2 元素): 車子和桿子的速度(它們的導數)。

觀察空間是 Box(-Inf, Inf, (4,), float64),其中元素如下

編號

觀察

最小值

最大值

名稱 (在相應的 XML 文件中)

關節

類型 (單位)

0

車子沿線性表面的位置

-Inf

Inf

slider

slide

位置 (m)

1

桿子在車子上的垂直角度

-Inf

Inf

hinge

hinge

角度 (rad)

2

車子的線性速度

-Inf

Inf

slider

slide

速度 (m/s)

3

桿子在車子上的角速度

-Inf

Inf

hinge

hinge

角速度 (rad/s)

獎勵

目標是盡可能長時間保持倒單擺直立(在一定的角度限制內) - 因此,對於桿子直立的每個時間步,都會給予 +1 的獎勵。

如果桿子直立,則認為:\(|angle| < 0.2\)

並且 info 也包含獎勵。

初始狀態

初始位置狀態為 \(\mathcal{U}_{[-reset\_noise\_scale imes I_{2}, reset\_noise\_scale imes I_{2}]}\)。初始速度狀態為 \(\mathcal{U}_{[-reset\_noise\_scale imes I_{2}, reset\_noise\_scale imes I_{2}]}\)

其中 \(\mathcal{U}\) 是多元均勻連續分佈。

劇集結束

終止

當倒單擺不健康時,環境終止。如果發生以下任何情況,倒單擺將被認為是不健康的

  1. 任何狀態空間值不再是有限值。

  2. 桿子和車子之間垂直角度的絕對值大於 0.2 弧度。

截斷

劇集的默認持續時間為 1000 個時間步。

參數

InvertedPendulum 提供了一系列參數來修改觀察空間、獎勵函數、初始狀態和終止條件。這些參數可以在 gymnasium.make 中以以下方式應用

import gymnasium as gym
env = gym.make('InvertedPendulum-v5', reset_noise_scale=0.1)

參數

類型

預設

描述

xml_file

str

"inverted_pendulum.xml"

MuJoCo 模型的路徑

reset_noise_scale

float

0.01

初始位置和速度的隨機擾動的比例(請參閱 Starting State 部分)

版本歷史

  • v5

    • 最低 mujoco 版本現在為 2.3.3。

    • 添加了對使用 xml_file 參數的完全自定義/第三方 mujoco 模型(以前只能對現有模型進行少量更改)的支持。

    • 添加了 default_camera_config 參數,一個用於設置 mj_camera 屬性的字典,主要用於自定義環境。

    • 添加了 env.observation_structure,一個用於指定觀察空間組成的字典(例如 qposqvel),對於為 MuJoCo 環境構建工具和封裝器很有用。

    • 添加了 frame_skip 參數,用於配置 dtstep() 的持續時間),默認值因環境而異,請查看環境文檔頁面。

    • 修復錯誤:healthy_reward 在每個步驟都會給出(即使擺不健康),現在僅在擺健康(未終止)時給出(相關 GitHub issue)。

    • 添加了 xml_file 參數。

    • 添加了 reset_noise_scale 參數以設置初始狀態的範圍。

    • 添加了包含獎勵的 info["reward_survive"]

  • v4:所有 MuJoCo 環境現在都使用 mujoco >= 2.1.3 中的 MuJoCo 綁定。

  • v3:此環境沒有 v3 版本發布。

  • v2:所有連續控制環境現在都使用 mujoco-py >= 1.5。

  • v1:對於基於機器人的任務(包括倒單擺),max_time_steps 提高到 1000。

  • v0:初始版本發布。