This autonomous driving framework (named UDMC) is based on optimization methods, so it is light-weighted, interpretable, and adaptable to various driving scenarios.
Please note that the repository will be made available after the paper is published.
Live demo https://www.youtube.com/watch?v=jftTsf1jXjU.
CARLA Town05 Benchmark
.
requirements.txt
Install anaconda
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
bash Anaconda3-2020.11-Linux-x86_64.sh
source ~/.profile
Clone the repo and build the environment
git clone https://github.com/henryhcliu/udmc_carla.git
cd udmc_carla
conda create -n udmc_carla python=3.8
conda activate udmc_carla
pip3 install -r requirements.txt
Download and setup CARLA 0.9.14
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1AF1527DE64CB8D9
sudo add-apt-repository "deb [arch=amd64] http://dist.carla.org/carla $(lsb_release -sc) main"
sudo apt-get update # Update the Debian package index
sudo apt-get install carla-simulator=0.9.14 # Install the 0.9.14 CARLA version
cd /opt/carla-simulator # Open the folder where CARLA is installed
./CarlaUE4.sh
Before running the following codes, CARLA Simulator should be active.
cd /opt/carla-simulator # Open the folder where CARLA is installed
./CarlaUE4.sh
In another terminal:
cd udmc_carla # Open the folder where this repository exists
# Multilane ACC driving with randomly generated surrounding vehicles
python udmc_main.py multilaneACC True
# Roundabout driving with randomly generated surrounding vehicles
python udmc_main.py roundabout True
# Crossroad driving with randomly generated surrounding vehicles
python udmc_main.py crossroad True
# Unsignalized crossroad driving with randomly generated surrounding vehicles
python udmc_main.py unsig_crossroad True
# T-junction driving with pedestrians and randomly generated surrounding vehicles
python udmc_main.py mixed_traffic True
If you want to spawn surrounding vehicles with certain spawn points (to test the performance of different methods under the same condition), please change the last argument to False
.
cd leaderboard/scripts
# Run the CARLA Town05 Benchmark automatically
python local_evaluation.sh
python param_est_using_slsqp.py
This program prints the estimated parameters to the terminal.
python IGPR_predict_sv_wps.py
If you want to modify this driving system to adapt to specific applications, please refer to the structure of this repository.
-data # contains the Potential Functions' value and the control input during autonomous driving
-images # contains the pictures captured by a camera mounted on the Ego Vehicle with T_s time step
-official # some official examples provided by CARLA (with our modification)
-scripts # core implementation of the UDMC
- env.py # interact with CARLA, it includes spawn vehicles, initial visualization, and CARLA environment, etc.
- others_agent.py # Be in charge of the behavior of other vehicles, like following the lane and changing lane
- vehicle_obs.py # the UDMC core with traffic rules (lane keeping, not running to solid lane markings, not running a red light, etc)
- x_v2x_agent.py # implement the main function, such as acc, overtaking, and parking
-spawnpoints # contains the spawn points for the surrounding vehicles when not using `random_spawn` mode
-utils # some third-party or commonly-used function
-fms_main.py # run this code to execute the same simulation with udmc_main.py, but the Ego Vehicle uses Finite State Machine to control its motion
-IGPR_predict_sv_wps.py # use this code to train an IGPR model for surrounding vehicles' motion from 15 pieces of history state record to 10 pieces of future state prediction.
-udmc_main.py # main entrance of this paper, run it from the command line with an augment (crossroad, multilaneACC, roundabout,...), before that you need to launch CarlaUE4 following the instruction above.
Project is: complete
Created by @henryhcliu - feel free to contact me!
This project is open source and available under the MIT License.