賽車

../../../_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 指定智慧體是具有連續(真)還是離散(假)動作。有關每個動作的描述,請參閱動作空間部分。

重置引數

傳遞選項 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: 完成一圈時將截斷 (truncation) 更改為終止 (termination) (1.0.0)

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

  • v0: 原始版本

參考文獻

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

致謝

由 Oleg Klimov 建立