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 reason about the environment. This repo also provides an implementation of popular model-free reinforcement learning algorithms (DQN, DDPG, TD3, SAC) on the urban autonomous driving problem in the CARLA simulator. All of the algorithms take raw camera and lidar sensor inputs.
- Ubuntu 16.04
- NVIDIA GPU with CUDA 10. See GPU guide for TensorFlow.
- Setup conda environment
$ conda create -n env_name python=3.6
$ conda activate env_name
-
Install the gym-carla wrapper following the installation steps 2-4 in https://github.com/cjy1992/gym-carla.
-
Clone this git repo to an appropriate folder
$ git clone https://github.com/cjy1992/interp-e2e-driving.git
- Enter the root folder of this repo and install the packages:
$ pip install -r requirements.txt
$ pip install -e .
- 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.
- 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.
- Run
tensorboard --logdir logs
and open http://localhost:6006 to view training and evaluation information.
-
If out of system memory, change the parameter
replay_buffer_capacity
andinitial_collect_steps
the functiontran_eval
smaller. -
If out of CUDA memory, set parameter
model_batch_size
orsequence_length
of the functiontran_eval
smaller.
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}
}