Carla Gym

1. Gym简介

Gym是一类用于强化学习的环境,从官网中的一段代码示例就能看到这个环境的主要构成部分。

  • 创建环境gym.make()
  • 重置环境env.reset()
  • 执行单步动作env.step()
  • 关闭环境env.close()
  • 渲染环境env.render()

2. 如何定义Gym环境

如果想用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

你可能感兴趣的:(自动驾驶,机器学习,numpy,人工智能)