倒立擺

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

該環境是 MuJoCo 環境的一部分,其中包含有關該環境的通用資訊。

動作空間

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

觀測空間

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

匯入

gymnasium.make("InvertedPendulum-v5")

描述

該環境是推車倒立擺環境,基於 Barto、Sutton 和 Anderson 在 “能解決複雜學習控制問題的類神經自適應單元” 中的工作,與經典環境類似,但現在由 Mujoco 物理模擬器提供支援——允許進行更復雜的實驗(例如改變重力效應)。該環境由一個可線性移動的推車組成,推車一端連線一根杆,另一端自由。推車可以向左或向右推動,目標是透過對推車施加力來使杆在推車頂部保持平衡。

動作空間

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

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

編號

動作

控制最小值

控制最大值

名稱(在相應的XML檔案中)

關節

型別(單位)

0

施加在推車上的力

-3

3

滑塊

滑動

力(牛頓)

觀測空間

觀測空間由以下部分(按順序)組成

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

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

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

編號

觀測

最小值

最大值

名稱(在相應的XML檔案中)

關節

型別(單位)

0

推車沿線性表面的位置

-Inf

Inf

滑塊

滑動

位置(米)

1

杆在推車上的垂直角度

-Inf

Inf

鉸鏈

鉸鏈

角度(弧度)

2

推車的線速度

-Inf

Inf

滑塊

滑動

速度(米/秒)

3

杆在推車上的角速度

-Inf

Inf

鉸鏈

鉸鏈

角速度(弧度/秒)

獎勵

目標是儘可能長時間地保持倒立擺直立(在一定角度限制內)——因此,對於杆保持直立的每個時間步,都會給予 +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 個時間步。

引數

倒立擺提供了一系列引數來修改觀測空間、獎勵函式、初始狀態和終止條件。這些引數可以在 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,這是一個用於指定觀測空間組成(例如 qpos, qvel)的字典,有助於為 MuJoCo 環境構建工具和包裝器。

    • 新增 frame_skip 引數,用於配置 dtstep() 的持續時間),預設值因環境而異,請查閱環境文件頁面。

    • 修復 bug:healthy_reward 之前在每個時間步都給予(即使倒立擺不健康),現在僅當倒立擺健康(未終止)時才給予(相關 GitHub issue)。

    • 新增 xml_file 引數。

    • 新增 reset_noise_scale 引數以設定初始狀態的範圍。

    • 新增 info["reward_survive"],其中包含獎勵。

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

  • v3:該環境沒有 v3 版本。已移至 gymnasium-robotics 倉庫

  • v2:所有連續控制環境現在都使用 mujoco-py >= 1.5。已移至 gymnasium-robotics 倉庫

  • v1:基於機器人的任務(包括倒立擺)的最大時間步數提高到 1000。

  • v0:初始版本釋出。