赛车 (Car Racing)¶
此环境是 Box2D 环境的一部分,其中包含有关该环境的常规信息。
动作空间 |
|
观测空间 |
|
import |
|
描述¶
这是最简单的像素学习控制任务——一个俯视视角的赛车环境。每一集生成的赛道都是随机的。
窗口底部显示了一些指标以及 RGB 状态缓冲区。从左到右依次为:真实速度、四个 ABS 传感器、方向盘位置和陀螺仪。若要亲自游玩(对人类来说速度相当快),请输入
python gymnasium/envs/box2d/car_racing.py
记住:这是一辆动力强劲的后轮驱动汽车——不要在转弯的同时踩油门。
动作空间¶
如果是连续动作空间,共有 3 个动作:
0: 转向,-1 为完全左转,+1 为完全右转
1: 油门
2: 刹车
如果是离散动作空间,共有 5 个动作:
0: 不做任何操作
1: 向右转向
2: 向左转向
3: 油门
4: 刹车
观测空间¶
一张 96x96 的俯视视角 RGB 图像,包含赛车和赛道。
奖励(Rewards)¶
奖励机制为:每一帧 -0.1 分,每访问一个赛道地块获得 +1000/N 分,其中 N 是赛道地块的总数。例如,如果你在 732 帧内完成了比赛,你的奖励是 1000 - 0.1*732 = 926.8 分。
起始状态¶
赛车在路中心静止起步。
回合终止(Episode Termination)¶
当访问所有地块后,本集结束。赛车也可以跑出赛道区域(即远离轨道),这种情况下赛车会获得 -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指定智能体使用连续动作 (true) 还是离散动作 (false)。关于每个动作的描述请参见动作空间部分。
重置参数 (Reset Arguments)¶
传递选项 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.
制作人员(Credits)¶
由 Oleg Klimov 创建