用于强化学习的自动驾驶仿真场景highway-env(2): obs,action,dynamics中,我们详细说明仿真环境中的环境如何构建, 车辆的action都有哪些,如何对车辆进行运动学建模以及进行相应的横纵向控制。

本文,我们来说明用于强化学习的奖励机制,以及整个仿真环境构建的图形学基础。

I、Rewards

选择合适的奖励function来驱动实现最优的驾驶行为,这不是简单的事情。

reward机制定义在_reward() method中。

most environment

在大多数的场景中,我们通常关注两个主要特征:

  • 时间
  • 避障

因此,我们可以设计Reward funciotn如下所示:

R ( s , a ) = a ∗ v − v m i n v m a x − v m i n − b ∗ c o l l i s i o n R(s,a) = a*\frac{v-v_{min}}{v_{max}-v{min}}-b*collision R(s,a)=avmaxvminvvminbcollision

具体参数含义显而易见。

reward的正则化也很有必要。尤其是在deep reinforcement learning

goal environments

在parking 场景,奖励需要根据goal来制定。

R ( s , a ) = − ∣ ∣ s − s g ∣ ∣ W , p p − b ∗ c o l l i s i o n R(s,a) = -||s-s_{g}||^p_{W,p}-b*collision R(s,a)=ssgW,ppbcollision

其中 S g S_g Sg的状态表示,不包含速度,仅包含位置和朝向。

使用p-norm而不是欧氏距离来度量,目的是可以实现narrower spike of reward(较窄的奖励峰值)

II、Graphics

图形化的实现,需要以来pygame.

在生成window的时候,通过env.render()实现。
更新win的时候,需要用env.reset()
举个例子:

env = gym.make("roundabout-v0")
env.configure({
    "screen_width": 640,
    "screen_height": 480
})
env.reset()
env.render()

输出的效果如下:

在这里插入图片描述