用于强化学习的自动驾驶仿真场景highway-env(2): obs,action,dynamics

在用于强化学习的自动驾驶仿真场景highway-env(1)中,我们简要说明如何使用该仿真场景。

本文重心为关键的场景配置说明。

I、Observation

所有的环境都包含观测模型。可以通过config来配置对应模型。

观测就是使用一种合适的数学模型将周围交互环境表征出来。对应到强化学习中的state!比如car的位置朝向起点、终点等特征。

1. kinematic

最常用的一种表征环境的形式。

通过list的形式,将所有的vehicle的坐标的速度表示出来。
形如:
用于强化学习的自动驾驶仿真场景highway-env(2): obs,action,dynamics_第1张图片

  • 上表中共包含四个feature,横纵坐标和速度。

  • ego-vehicle总是在第一排。

  • 如果配置参数中的normalize=True,意味着所有参数都统一伸缩固定比例。

  • 如果参数absolute = False,所有的坐标值是指相对于ego-vehicle而言

2. 其他形式

grayscale image

config:

config = {
       "observation": {
           "type": "GrayscaleObservation",
           "observation_shape": (128, 64),
           "stack_size": 4,
           "weights": [0.2989, 0.5870, 0.1140],  # weights for RGB conversion
           "scaling": 1.75,
       },
       "policy_frequency": 2
   }

用于强化学习的自动驾驶仿真场景highway-env(2): obs,action,dynamics_第2张图片
occpancy grid栅格表示

config

"observation": {
    "type": "OccupancyGrid",
    "vehicles_count": 15,
    "features": ["presence", "x", "y", "vx", "vy", "cos_h", "sin_h"],
    "features_range": {
        "x": [-100, 100],
        "y": [-100, 100],
        "vx": [-20, 20],
        "vy": [-20, 20]
    },
    "grid_size": [[-27.5, 27.5], [-27.5, 27.5]],
    "grid_step": [5, 5],
    "absolute": False
}

效果如下:
第一个维度的presence表征当前的小车相对于ego vehicle的位置。
用于强化学习的自动驾驶仿真场景highway-env(2): obs,action,dynamics_第3张图片
time to collision碰撞时间

config

"observation": {
    "type": "TimeToCollision"
    "horizon": 10
}

基于当前速度,计算可能发生的碰撞时间。这种表征模式感觉不太好用。

II、Actions

与状态的表征一样,仿真平台同样提供很多动作类型的描述。

1. continuous actions

这种action类型允许agent直接设置Kinematic Bicycle Model. 通过throttle 和 steering angle

关于该模型的详细描述,参见论文

Philip Polack, Florent Altché, and Brigitte D’Andréa-Novel. The Kinematic Bicycle Model : a Consistent Model for Planning Feasible Trajectories for Autonomous Vehicles ? IEEE Intelligent Vehicles Symposium, pages 6–8, 2017.

公式表述如下:

用于强化学习的自动驾驶仿真场景highway-env(2): obs,action,dynamics_第4张图片
其中, x , y x, y x,y为车辆的pos, v v v为车辆的前向速度, ψ \psi ψ为车体朝向角, β \beta β为车重心的slip angle, δ \delta δ 为方向盘命令的前轮转动角度。

这些计算将会出现在对应的step()function中。

2. discrete meta-actions

continuous low-level control的基础上,增加了一层speed and steering controllers,从而实现ego-vehicle按照设定速度自动follow road

meta-actions包括改变速度和改变lane,可用于为底层控制器setpoint

ACTIONS_ALL = {
        0: 'LANE_LEFT',
        1: 'IDLE',
        2: 'LANE_RIGHT',
        3: 'FASTER',
        4: 'SLOWER'
    }

longitudinal纵向控制与lateral横向控制的action,都可以通过对应参数选择是否开启。

3. manual control

env也能单纯用于仿真器

import gym
import highway_env

env = gym.make("highway-v0")
env.configure({
    "manual_control": True
})
env.reset()
done = False
while not done:
    env.step(env.action_space.sample())
    env.render()

这个时候使用手动控制就好。使用上下左右键盘控制小车的变道与加减速。

III、Dynamics

dynamics部分主要描述车辆的运动和行为。

1. roads

roads是由RoadNetwork + Vehicle共同构成。

1.1 lane

主要包括如下几种:

  • StraightLane
  • SineLane: A sinusoidal lane.
  • CircularLane

1.2 road

road-network: road的拓扑结构图,edge用lane表示,nodes用intersections表示

1.3 road regulation

交通规则,定义车辆的哪种行为拥有较高的优先权。

当前仅仅实现了靠右行,避障等基础规则。当然你可以基于源码进行扩展。

2. Vehicles

主要叙述车的物理与行为模型。

2.1 kinematics

在前文描述continuous action 的时候已经介绍过这种运动学模型。

2.2 control

控制器使得小车能够按照既定速度既定轨道行进。在调用act() function的时候,执行对应的控制。纵向的控制主要是对应油门开度。而横向的控制需要对应到方向盘转角。
longitudinal controller
a = K p ( v r − v ) a=K_p(v_r-v) a=Kp(vrv)
a a a是车辆的加速度,对应油门开度。
v v v是车子当前速度。
v r v_r vr是参考车速(reference)
K p K_p Kp是比例调节参数

lateral controller

一个简单的比例微分控制器。

position control:

v l a t , r = − K p , l a t Δ l a t v_{lat,r}=-K_{p,lat}\Delta_{lat} vlat,r=Kp,latΔlat
Δ ψ r = a r c s i n ( v l a t , r v ) \Delta\psi_r=arcsin(\frac{v_{lat,r}}{v}) Δψr=arcsin(vvlat,r)

  • Δ l a t \Delta_{lat} Δlat指的是车的横向位置与lane中线的距离
  • Δ ψ r \Delta\psi_r Δψr指的是应用横向速度命令时的朝向变化

Heading control:
ψ r = ψ L + Δ ψ r \psi_r = \psi_L+\Delta\psi_r ψr=ψL+Δψr ψ ˙ r = K p , ψ ( ψ r − ψ ) \dot\psi_r=K_{p,\psi}(\psi_r-\psi) ψ˙r=Kp,ψ(ψrψ) δ = a r c s i n ( l 2 v ψ ˙ r ) \delta=arcsin(\frac{l}{2v}\dot\psi_r) δ=arcsin(2vlψ˙r)

  • ψ r \psi_r ψr 目标车辆相对于要follow的lane的方向的朝向,就是以followed lane作为参考系的target的朝向
  • ψ L \psi_L ψLlane的朝向
  • ψ ˙ r \dot\psi_r ψ˙r yaw角速度
  • δ \delta δ 前轮的角度控制

2.3 behavior

对于其他的仿真vehicles,运动学的实现更为简单。

Longitudinal Behavior

纵向的加速度模型,使用如下模型 Intelligent Driver Model (IDM)表示:

出自论文:

Martin Treiber, Ansgar Hennecke, and Dirk Helbing. Congested traffic states in empirical observations and microscopic simulations. Physical Review E - Statistical Physics, Plasmas, Fluids, and Related Interdisciplinary Topics, 62(2):1805–1824, 2000.

用于强化学习的自动驾驶仿真场景highway-env(2): obs,action,dynamics_第5张图片
v是车速,d是与前车的距离,a、b分别是最大加速度和最大减速度。
v 0 v_0 v0: target_velocity
T: desired time gap,时间间隔
d 0 d_0 d0: jam distance, 安全距离

Lateral Behavior

变道的决策通过模型Minimizing Overall Braking Induced by Lane change(MOBIL)给出。论文出处:

Arne Kesting, Martin Treiber, and Dirk Helbing. General lane-changing model MOBIL for car-following models. Transportation Research Record, 2007. doi:10.3141/1999-10.

安全情况:不会超车:
在这里插入图片描述

激励方案:

用于强化学习的自动驾驶仿真场景highway-env(2): obs,action,dynamics_第6张图片

其中:

  • 下标c表示center-vehicle,也就是ego-vehicle
  • a , a ~ a, \tilde{a} a,a~分别描述车变道前后的加速度
  • Δ a t h \Delta a_{th} Δath:触发变道的加速度阈值threshold
  • b s a f e b_{safe} bsafe:变道时候最大制动加速度(brake)

你可能感兴趣的:(强化学习)