賽車

../../../_images/car_racing.gif

此環境是 Box2D 環境的一部分,其中包含關於環境的一般資訊。

動作空間

Box([-1. 0. 0.], 1.0, (3,), float32)

觀察空間

Box(0, 255, (96, 96, 3), uint8)

import

gymnasium.make("CarRacing-v3")

描述

最容易從像素學習的控制任務 - 俯視賽車環境。 生成的賽道在每個 episode 都是隨機的。

一些指示器與狀態 RGB 緩衝區一起顯示在視窗底部。 從左到右:真實速度、四個 ABS 感測器、方向盤位置和陀螺儀。 若要自己玩(對人類來說相當快),請輸入

python gymnasium/envs/box2d/car_racing.py

請記住:這是一輛強大的後輪驅動汽車 - 不要同時踩油門和轉彎。

動作空間

如果是連續的,則有 3 個動作

  • 0:轉向,-1 是完全向左,+1 是完全向右

  • 1:油門

  • 2:煞車

如果是離散的,則有 5 個動作

  • 0:什麼都不做

  • 1:向左轉向

  • 2:向右轉向

  • 3:油門

  • 4:煞車

觀察空間

汽車和賽道的俯視 96x96 RGB 圖像。

獎勵

獎勵是每幀 -0.1,以及對於訪問的每個賽道圖塊 +1000/N,其中 N 是賽道中訪問的圖塊總數。 例如,如果您在 732 幀內完成,您的獎勵為 1000 - 0.1*732 = 926.8 點。

起始狀態

汽車在道路中央靜止啟動。

Episode 終止

當所有圖塊都被訪問時,episode 完成。 汽車也可能駛出遊玩區 - 也就是說,遠離賽道,在這種情況下,它將收到 -100 獎勵並結束。

參數

>>> import gymnasium as gym
>>> env = gym.make("CarRacing-v3", render_mode="rgb_array", lap_complete_percent=0.95, domain_randomize=False, continuous=False)
>>> env
<TimeLimit<OrderEnforcing<PassiveEnvChecker<CarRacing<CarRacing-v3>>>>>

  • lap_complete_percent=0.95 指示在被視為完成一圈之前,智能體必須訪問的圖塊百分比。

  • domain_randomize=False 啟用環境的領域隨機化變體。 在這種情況下,背景和賽道顏色在每次重置時都不同。

  • continuous=True 將環境轉換為使用離散動作空間。 離散動作空間有 5 個動作:[什麼都不做、左、右、油門、煞車]。

重置參數

傳遞選項 options["randomize"] = True 將按需變更環境的目前顏色。 相應地,傳遞選項 options["randomize"] = False 將不會變更環境的目前顏色。 domain_randomize 必須在初始化時為 True,此參數才能運作。

>>> import gymnasium as gym
>>> env = gym.make("CarRacing-v3", domain_randomize=True)

# normal reset, this changes the colour scheme by default
>>> obs, _ = env.reset()

# reset with colour scheme change
>>> randomize_obs, _ = env.reset(options={"randomize": True})

# reset with no colour scheme change
>>> non_random_obs, _ = env.reset(options={"randomize": False})

版本歷史

  • v2:完成一圈時將截斷變更為終止 (1.0.0)

  • v1:變更賽道完成邏輯並新增領域隨機化 (0.24.0)

  • v0:原始版本

參考文獻

  • Chris Campbell (2014), http://www.iforce2d.net/b2dtut/top-down-car.

致謝

由 Oleg Klimov 建立