赛车

../../../_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 创建