鐘擺¶

此環境是經典控制環境的一部分,其中包含關於環境的一般資訊。
動作空間 |
|
觀察空間 |
|
導入 |
|
描述¶
倒立擺擺盪問題基於控制理論中的經典問題。 系統由一端連接到固定點,另一端自由的鐘擺組成。 鐘擺從隨機位置開始,目標是對自由端施加扭矩,使其擺動到直立位置,使其重心正好在固定點上方。
下圖指定了用於實現鐘擺動力學方程式的坐標系統。
x-y
: 鐘擺末端的笛卡爾坐標,單位為米。theta
: 弧度角。tau
: 扭矩,單位為N m
。 定義為正值(逆時針方向)。
動作空間¶
動作是一個形狀為 (1,)
的 ndarray
,表示施加在鐘擺自由端的扭矩。
編號 |
動作 |
最小值 |
最大值 |
---|---|---|---|
0 |
扭矩 |
-2.0 |
2.0 |
觀察空間¶
觀察是一個形狀為 (3,)
的 ndarray
,表示鐘擺自由端的 x-y 坐標及其角速度。
編號 |
觀察 |
最小值 |
最大值 |
---|---|---|---|
0 |
x = cos(theta) |
-1.0 |
1.0 |
1 |
y = sin(theta) |
-1.0 |
1.0 |
2 |
角速度 |
-8.0 |
8.0 |
獎勵¶
獎勵函數定義為
r = -(theta2 + 0.1 * theta_dt2 + 0.001 * torque2)
其中 theta
是鐘擺的角度,標準化在 [-pi, pi] 之間(0 為直立位置)。 根據以上方程式,可獲得的最小獎勵為 -(pi2 + 0.1 * 82 + 0.001 * 22) = -16.2736044,而最大獎勵為零(鐘擺處於直立位置,速度為零且未施加扭矩)。
起始狀態¶
起始狀態是 [-pi, pi] 中的隨機角度和 [-1,1] 中的隨機角速度。
回合截斷¶
回合在 200 個時間步後截斷。
參數¶
g
: .
Pendulum 有兩個用於 gymnasium.make
的參數,其中 render_mode
和 g
表示用於計算鐘擺動力學的重力加速度,單位為 (m s-2)。 預設值為 g = 10.0
。 在重置時, options
參數允許使用者更改用於確定新隨機狀態的邊界。
>>> import gymnasium as gym
>>> env = gym.make("Pendulum-v1", render_mode="rgb_array", g=9.81) # default g=10.0
>>> env
<TimeLimit<OrderEnforcing<PassiveEnvChecker<PendulumEnv<Pendulum-v1>>>>>
>>> env.reset(seed=123, options={"low": -0.7, "high": 0.5}) # default low=-0.6, high=-0.5
(array([ 0.4123625 , 0.91101986, -0.89235795], dtype=float32), {})
版本歷史¶
v1:簡化數學方程式,行為沒有差異。
v0:初始版本發布