賽車

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

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

動作空間

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

觀測空間

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

匯入

gymnasium.make("CarRacing-v3")

說明

最容易從像素學習的控制任務 - 由上而下的賽車環境。 每次回合產生的賽道都是隨機的。

一些指標會顯示在視窗底部以及狀態 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 分。

起始狀態

汽車在道路中心靜止開始。

回合終止

當所有圖塊都被訪問時,回合結束。 汽車也可以開出遊玩區域,也就是說,遠離賽道,在這種情況下,它將獲得 -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 建立