This repository contains the code for designing risk bounded motion plans for car-like robot using Carla Simulator.

Overview

Nonlinear Risk Bounded Robot Motion Planning

This code simulates the bicycle dynamics of car by steering it on the road by avoiding another static car obstacle in a CARLA simulator. The ego_vehicle has to consider all the system and perception uncertainties to generate a risk-bounded motion plan and execute it with coherent risk assessment. Coherent risk assessment for a nonlinear robot like the car in this simulation is made possible using nonlinear model predictive control (NMPC) based steering law combined with Unscented Kalman filter for state estimation purpose. Finally, distributionally robust chance constraints applied using a temporal logic specifications evaluate the risk of a trajectory before being added to the sequence of trajectories forming a motion plan from the start to the destination.

Click the picture to watch the corresponding youtube video supporting our work

Motion Planning Using Carla Simulator

The code in this repository implements the algorithms and ideas from our following paper:

  1. V. Renganathan, S. Safaoui, A. Kothari, I. Shames, T. Summers, Risk Bounded Nonlinear Robot Motion Planning With Integrated Perception & Control, Submitted to the Special Issue on Risk-aware Autonomous Systems: Theory and Practice, Artificial Intelligence Journal, 2021.

Dependencies

  • Python 3.5+ (tested with 3.7.6)
  • Numpy
  • Scipy
  • Matplotlib
  • Casadi
  • Namedlist
  • Pickle
  • Carla

Installing

You will need the following two items to run the codes. After that there is no other formal package installation procedure; simply download this repository and run the Python files.

  • CARLA SIMULATOR VERSION: 0.9.10
  • UNREAL ENGINE VERSION: 4.24.3

Modules of an autonomy stack

There are two main modules for understanding this whole package

  1. First, a high level motion planner has to run and it will generate a reference trajectory for the car from start to the end
  2. Second, a low level tracking controller will enable the car to track the reference trajectory despite the realized noises.

Procedure to run the code

  1. Run the python code Generate_Monte_Carlo_Noises.py which will generate and load the required noise parameters and data required for simulation into pickle files
  2. Run the python code Run_Path_Planner.py
  3. The code will run for specified number of iterations and produces all required data
  4. Then load the cooresponding pickle file data in file main.py in the line number #488.
  5. Run the main.py file with the Carla executable being open already
  6. The simulation will run in the Carla simulator where the car will track the reference trajectory and results are stored in pickle files
  7. To see the tracking results, run the python file Tracked_Path_Plotter.py

Running Monte-Carlo Simulations

  1. Create a new folder called monte_carlo_results in the same directory where the python file monte_carlo_car.py resides.
  2. Update the trial_num at line #1554 in the file monte_carlo_car.py and run it while the Carla executable is open (It will automatically load the noise realizations corresponding to the trial_num from the pickle files)
  3. After the simulation is over, automatically the results are stored under the folder monte_carlo_results with a specific trial name
  4. Repeat the process by changing trial number in step 2 and run again.
  5. Once the all trials are completed, run the python file monte_carlo_results_plotter.py to plot the monte-carlo simulation results

Variations

  • Instead of Distributionally robust chance constraints, if you would like to have a simple Gaussian Chance Constraints, then change self.DRFlag = False in line 852 in the file DR_RRTStar_Planner.py
  • Choose your own state estimator UKF or EKF by commenting and uncommenting the corresponding estimator in lines 26-27 of file State_Estimator.py

Funding Acknowledgement

This work is partially supported by Defence Science and Technology Group, through agreement MyIP: ID10266 entitled Hierarchical Verification of Autonomy Architectures, the Australian Government, via grant AUSMURIB000001 associated with ONR MURI grant N00014-19-1-2571, and by the United States Air Force Office of Scientific Research under award number FA2386-19-1-4073.

Contributing Authors

  1. Venkatraman Renganathan - UT Dallas
  2. Sleiman Safaoui - UT Dallas
  3. Aadi Kothari - UT Dallas
  4. Benjamin Gravell - UT Dallas
  5. Dr. Iman Shames - Australian National University
  6. Dr. Tyler Summers - UT Dallas

Affiliation

TSummersLab - Control, Optimization & Networks Laboratory (CONLab)

Spiking Neural Network for Computer Vision using SpikingJelly framework and Pytorch-Lightning

Spiking Neural Network for Computer Vision using SpikingJelly framework and Pytorch-Lightning

Sami BARCHID 2 Oct 20, 2022
Count the MACs / FLOPs of your PyTorch model.

THOP: PyTorch-OpCounter How to install pip install thop (now continously intergrated on Github actions) OR pip install --upgrade git+https://github.co

Ligeng Zhu 3.9k Dec 29, 2022
This repository provides the official implementation of 'Learning to ignore: rethinking attention in CNNs' accepted in BMVC 2021.

inverse_attention This repository provides the official implementation of 'Learning to ignore: rethinking attention in CNNs' accepted in BMVC 2021. Le

Firas Laakom 5 Jul 08, 2022
(NeurIPS '21 Spotlight) IQ-Learn: Inverse Q-Learning for Imitation

Inverse Q-Learning (IQ-Learn) Official code base for IQ-Learn: Inverse soft-Q Learning for Imitation, NeurIPS '21 Spotlight IQ-Learn is an easy-to-use

Divyansh Garg 102 Dec 20, 2022
Python implementation of MULTIseq barcode alignment using fuzzy string matching and GMM barcode assignment

Python implementation of MULTIseq barcode alignment using fuzzy string matching and GMM barcode assignment.

MT Schmitz 2 Feb 11, 2022
This repo is the official implementation for Multi-Scale Adaptive Graph Neural Network for Multivariate Time Series Forecasting

1 MAGNN This repo is the official implementation for Multi-Scale Adaptive Graph Neural Network for Multivariate Time Series Forecasting. 1.1 The frame

SZJ 12 Nov 08, 2022
The Official TensorFlow Implementation for SPatchGAN (ICCV2021)

SPatchGAN: Official TensorFlow Implementation Paper "SPatchGAN: A Statistical Feature Based Discriminator for Unsupervised Image-to-Image Translation"

39 Dec 30, 2022
MMDetection3D is an open source object detection toolbox based on PyTorch

MMDetection3D is an open source object detection toolbox based on PyTorch, towards the next-generation platform for general 3D detection. It is a part of the OpenMMLab project developed by MMLab.

OpenMMLab 3.2k Jan 05, 2023
Implementation of Wasserstein adversarial attacks.

Stronger and Faster Wasserstein Adversarial Attacks Code for Stronger and Faster Wasserstein Adversarial Attacks, appeared in ICML 2020. This reposito

21 Oct 06, 2022
Tensorflow implementation of soft-attention mechanism for video caption generation.

SA-tensorflow Tensorflow implementation of soft-attention mechanism for video caption generation. An example of soft-attention mechanism. The attentio

Paul Chen 153 Nov 14, 2022
Tensorflow implementation for Self-supervised Graph Learning for Recommendation

If the compilation is successful, the evaluator of cpp implementation will be called automatically. Otherwise, the evaluator of python implementation will be called.

152 Jan 07, 2023
PyTorch implementation of the NIPS-17 paper "Poincaré Embeddings for Learning Hierarchical Representations"

Poincaré Embeddings for Learning Hierarchical Representations PyTorch implementation of Poincaré Embeddings for Learning Hierarchical Representations

Facebook Research 1.6k Dec 25, 2022
Pytorch implementation of Feature Pyramid Network (FPN) for Object Detection

fpn.pytorch Pytorch implementation of Feature Pyramid Network (FPN) for Object Detection Introduction This project inherits the property of our pytorc

Jianwei Yang 912 Dec 21, 2022
A curated list of awesome papers for Semantic Retrieval (TOIS Accepted: Semantic Models for the First-stage Retrieval: A Comprehensive Review).

A curated list of awesome papers for Semantic Retrieval (TOIS Accepted: Semantic Models for the First-stage Retrieval: A Comprehensive Review).

Yinqiong Cai 189 Dec 28, 2022
The code for our NeurIPS 2021 paper "Kernelized Heterogeneous Risk Minimization".

Kernelized-HRM Jiashuo Liu, Zheyuan Hu The code for our NeurIPS 2021 paper "Kernelized Heterogeneous Risk Minimization"[1]. This repo contains the cod

Liu Jiashuo 8 Nov 20, 2022
A web application that provides real time temperature and humidity readings of a house.

About A web application which provides real time temperature and humidity readings of a house. If you're interested in the data collected so far click

Ben Thompson 3 Jan 28, 2022
Benchmarking the robustness of Spatial-Temporal Models

Benchmarking the robustness of Spatial-Temporal Models This repositery contains the code for the paper Benchmarking the Robustness of Spatial-Temporal

Yi Chenyu Ian 15 Dec 16, 2022
Explainability for Vision Transformers (in PyTorch)

Explainability for Vision Transformers (in PyTorch) This repository implements methods for explainability in Vision Transformers

Jacob Gildenblat 442 Jan 04, 2023
A Benchmark For Measuring Systematic Generalization of Multi-Hierarchical Reasoning

Orchard Dataset This repository contains the code used for generating the Orchard Dataset, as seen in the Multi-Hierarchical Reasoning in Sequences: S

Bill Pung 1 Jun 05, 2022
Code for NeurIPS 2020 article "Contrastive learning of global and local features for medical image segmentation with limited annotations"

Contrastive learning of global and local features for medical image segmentation with limited annotations The code is for the article "Contrastive lea

Krishna Chaitanya 152 Dec 22, 2022