Predictive-Decision-making

This repository contains the code for the following paper:

Learning Interaction-aware Motion Prediction Model for Decision-making in Autonomous Driving
Zhiyu Huang, Haochen Liu, Jingda Wu, Wenhui Huang, Chen Lv
AutoMan Research Lab, Nanyang Technological University
[arXiv]

If you are looking for or interested in our winning solutions (Team AID) at NeurIPS 2022 Driving SMARTS Competition, please go to track 1 solution and track 2 solution.

Framework

We propose an interaction-aware predictor to forecast the neighboring agents' future trajectories around the ego vehicle conditioned on the ego vehicle's potential plans. A sampling-based planner will do collision checking and select the optimal trajectory considering the distance to the goal, ride comfort, and safety. The overall framework of our method is given below.

Overview of our method

Results

Examples of our framework navigating in various scenarios are shown below.

Left turn

left_turn.mp4

Merge

highway_merge.mp4

Overtake

overtake.mp4

How to use

Create a new Conda environment

conda create -n smarts python=3.8

Install the SMARTS simulator

conda activate smarts

Install the SMARTS simulator.

# Download SMARTS
git clone https://github.com/huawei-noah/SMARTS.git
cd <path/to/SMARTS>
git checkout comp-1

# Install the system requirements.
bash utils/setup/install_deps.sh

# Install smarts with comp-1 branch.
pip install "smarts[camera-obs] @ git+https://github.com/huawei-noah/SMARTS.git@comp-1"

Install Pytorch

conda install pytorch==1.12.0 -c pytorch

Training

Run train.py. Leave other arguments vacant to use the default setting.

python train.py --use_exploration --use_interaction

Testing

Run test.py. You need specify the path to the trained predictor --model_path. You can aslo set --envision_gui to visualize the performance of the framework in envision or set --sumo_gui to visualize in sumo.

python test.py --model_path /training_log/Exp/model.pth

To visualize in Envision (some bugs exist in showing the road map), you need to manually start the envision server and then go to http://localhost:8081/.

scl envision start -p 8081

Citation

If you find this repo to be useful in your research, please consider citing our work

@article{huang2023learning,
  title={Learning Interaction-aware Motion Prediction Model for Decision-making in Autonomous Driving},
  author={Huang, Zhiyu and Liu, Haochen and Wu, Jingda and Huang, Wenhui and Lv, Chen},
  journal={arXiv preprint arXiv:2302.03939},
  year={2023}
}