Home

Awesome

Interpretable End-to-end Autonomous Driving

[Project webpage] [Paper]

This repo contains code for Interpretable End-to-end Urban Autonomous Driving with Latent Deep Reinforcement Learning. This work introduces an end-to-end autonomous driving approach which is able to handle complex urban scenarios, and at the same time generates a semantic birdeye mask interpreting how the learned agents reasons about the environment. This repo also provides implementation of popular model-free reinforcement learning algorithms (DQN, DDPG, TD3, SAC) on the urban autonomous driving problem in CARLA simulator. All of the algorithms take raw camera and lidar sensor inputs.

System Requirements

Installation

  1. Setup conda environment
$ conda create -n env_name python=3.6
$ conda activate env_name
  1. Install the gym-carla wrapper following the installation steps 2-4 in https://github.com/cjy1992/gym-carla.

  2. Clone this git repo to an appropriate folder

$ git clone https://github.com/cjy1992/interp-e2e-driving.git
  1. Enter the root folder of this repo and install the packages:
$ pip install -r requirements.txt
$ pip install -e .

Usage

  1. Enter the CARLA simulator folder and launch the CARLA server by:
$ ./CarlaUE4.sh -windowed -carla-port=2000

You can use Alt+F1 to get back your mouse control. Or you can run in non-display mode by:

$ DISPLAY= ./CarlaUE4.sh -opengl -carla-port=2000

It might take several seconds to finish launching the simulator.

  1. Enter the root folder of this repo and run:
$ ./run_train_eval.sh

It will then connect to the CARLA simulator, collect exploration data, train and evaluate the agent. Parameters are stored in params.gin. Set train_eval.agent_name from ['latent_sac', 'dqn', 'ddpg', 'td3', 'sac'] to choose the reinforcement learning algorithm.

  1. Run tensorboard --logdir logs and open http://localhost:6006 to view training and evaluation information.

Trouble Shootings

  1. If out of system memory, change the parameter replay_buffer_capacity and initial_collect_steps the function tran_eval smaller.

  2. If out of CUDA memory, set parameter model_batch_size or sequence_length of the function tran_eval smaller.

Citation

If you find this useful for your research, please use the following.

@article{chen2020interpretable,
  title={Interpretable End-to-end Urban Autonomous Driving with Latent Deep Reinforcement Learning},
  author={Chen, Jianyu and Li, Shengbo Eben and Tomizuka, Masayoshi},
  journal={arXiv preprint arXiv:2001.08726},
  year={2020}
}