Gym是一类用于强化学习的环境,从官网中的一段代码示例就能看到这个环境的主要构成部分。
gym.make()
env.reset()
env.step()
env.close()
env.render()
如果想用Gym的环境的话,我们需要定义以下内容:
2.1 状态空间
observation_space_dict = {
'camera': spaces.Box(low=0, high=255, shape=(self.obs_size, self.obs_size, 3), dtype=np.uint8),
'lidar': spaces.Box(low=0, high=255, shape=(self.obs_size, self.obs_size, 3), dtype=np.uint8),
'birdeye': spaces.Box(low=0, high=255, shape=(self.obs_size, self.obs_size, 3), dtype=np.uint8),
'state': spaces.Box(np.array([-2, -1, -5, 0]), np.array([2, 1, 30, 1]), dtype=np.float32)
}
如果我们在源代码调用_get_obs()函数,就可以得到上述四个观测,它们的维度分别是三个(255,255,3)的图像('camera'、'lidar'、'birdeye'),和一个(4,)的'state'(与车道线的横向距离,与车道线的夹角,当前速度,和前方车辆的距离)
2.1 动作空间
self.discrete = params['discrete']
self.discrete_act = [params['discrete_acc'], params['discrete_steer']] # acc, steer
self.n_acc = len(self.discrete_act[0])
self.n_steer = len(self.discrete_act[1])
if self.discrete:
self.action_space = spaces.Discrete(self.n_acc*self.n_steer)
else:
self.action_space = spaces.Box(np.array([params['continuous_accel_range'][0],
params['continuous_steer_range'][0]]), np.array([params['continuous_accel_range'][1],
params['continuous_steer_range'][1]]), dtype=np.float32) # acc, steer
References:
[1] gym-carla环境实现DQN算法_Wqc423的博客-CSDN博客
[2] Carla封装Gym指南 - 知乎
[3] Installation — Stable Baselines 2.10.3a0 documentation