A collection of environments for autonomous driving and tactical decision-making tasks
An episode of one of the environments available in highway-env.
pip install --user git+https://github.com/eleurent/highway-env
import gym
import highway_env
env = gym.make("highway-v0")
done = False
while not done:
action = ... # Your agent code here
obs, reward, done, info = env.step(action)
env.render()
If you use the project in your work, please consider citing it with:
@misc{highway-env,
author = {Leurent, Edouard},
title = {An Environment for Autonomous Driving Decision-Making},
year = {2018},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/eleurent/highway-env}},
}
List of publications & submissions using highway-env
(please open a pull request to add missing entries):
- Approximate Robust Control of Uncertain Dynamical Systems (Dec 2018)
- Interval Prediction for Continuous-Time Systems with Parametric Uncertainties (Apr 2019)
- Practical Open-Loop Optimistic Planning (Apr 2019)
- α^α-Rank: Practically Scaling α-Rank through Stochastic Optimisation (Sep 2019)
- Social Attention for Autonomous Decision-Making in Dense Traffic (Nov 2019)
- Budgeted Reinforcement Learning in Continuous State Space (Dec 2019)
- Multi-View Reinforcement Learning (Dec 2019)
- Reinforcement learning for Dialogue Systems optimization with user adaptation (Dec 2019)
env = gym.make("highway-v0")
In this task, the ego-vehicle is driving on a multilane highway populated with other vehicles. The agent's objective is to reach a high speed while avoiding collisions with neighbouring vehicles. Driving on the right side of the road is also rewarded.
env = gym.make("merge-v0")
In this task, the ego-vehicle starts on a main highway but soon approaches a road junction with incoming vehicles on the access ramp. The agent's objective is now to maintain a high speed while making room for the vehicles so that they can safely merge in the traffic.
env = gym.make("roundabout-v0")
In this task, the ego-vehicle if approaching a roundabout with flowing traffic. It will follow its planned route automatically, but has to handle lane changes and longitudinal control to pass the roundabout as fast as possible while avoiding collisions.
The roundabout-v0 environment.
env = gym.make("parking-v0")
A goal-conditioned continuous control task in which the ego-vehicle must park in a given space with the appropriate heading.
env = gym.make("intersection-v0")
An intersection negotiation task with dense traffic.
The intersection-v0 environment.
New driving environments can easily be made from a set of building blocks.
A Road
is composed of a RoadNetwork
and a list of Vehicles
. The RoadNetwork
describes the topology of the road infrastructure as a graph, where edges represent lanes and nodes represent intersections. For every edge, the corresponding lane geometry is stored in a Lane
object as a parametrized center line curve, providing a local coordinate system.
The vehicles kinematics are represented in the Vehicle
class by a Kinematic Bicycle Model.
Where (x, y) is the vehicle position, v its forward speed and psi its heading. a is the acceleration command, β is the slip angle at the center of gravity, and δ is the front wheel angle used as a steering command.
The ControlledVehicle
class implements a low-level controller on top of a Vehicle
, allowing to track a given target speed and follow a target lane.
The vehicles populating the highway follow simple and realistic behaviours that dictate how they accelerate and steer on the road.
In the IDMVehicle
class,
- Longitudinal Model: the acceleration of the vehicle is given by the Intelligent Driver Model (IDM) from (Treiber et al, 2000).
- Lateral Model: the discrete lane change decisions are given by the MOBIL model from (Kesting et al, 2007).
In the LinearVehicle
class, the longitudinal and lateral behaviours are defined as linear weightings of several features, such as the distance and speed difference to the leading vehicle.
Agents solving the highway-env
environments are available in the RL-Agents repository.
pip install --user git+https://github.com/eleurent/rl-agents
The DQN agent solving highway-v0.
This model-free value-based reinforcement learning agent performs Q-learning with function approximation, using a neural network to represent the state-action value function Q.
The DDPG agent solving parking-v0.
This model-free policy-based reinforcement learning agent is optimized directly by gradient ascent. It uses Hindsight Experience Replay to efficiently learn how to solve a goal-conditioned task.
The Value Iteration agent solving highway-v0.
The Value Iteration is only compatible with finite discrete MDPs, so the environment is first approximated by a finite-mdp environment using env.to_finite_mdp()
. This simplified state representation describes the nearby traffic in terms of predicted Time-To-Collision (TTC) on each lane of the road. The transition model is simplistic and assumes that each vehicle will keep driving at a constant speed without changing lanes. This model bias can be a source of mistakes.
The agent then performs a Value Iteration to compute the corresponding optimal state-value function.
This agent leverages a transition and reward models to perform a stochastic tree search (Coulom, 2006) of the optimal trajectory. No particular assumption is required on the state representation or transition model.