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)

A general python framework for visual object tracking and video object segmentation, based on PyTorch

PyTracking A general python framework for visual object tracking and video object segmentation, based on PyTorch. 📣 Two tracking/VOS papers accepted

2.6k Jan 04, 2023
A toolkit for controlling Euro Truck Simulator 2 with python to develop self-driving algorithms.

europilot Overview Europilot is an open source project that leverages the popular Euro Truck Simulator(ETS2) to develop self-driving algorithms. A con

1.4k Jan 04, 2023
This repo implements a 3D segmentation task for an airport baggage dataset.

3D CT Scan Segmentation With Occupancy Network This repo implements a 3D superresolution segmentation task for an airport baggage dataset. Our final p

Christoph Reich 2 Mar 28, 2022
Continual World is a benchmark for continual reinforcement learning

Continual World Continual World is a benchmark for continual reinforcement learning. It contains realistic robotic tasks which come from MetaWorld. Th

41 Dec 24, 2022
Repo for the Video Person Clustering dataset, and code for the associated paper

Video Person Clustering Repo for the Video Person Clustering dataset, and code for the associated paper. This reporsitory contains the Video Person Cl

Andrew Brown 47 Nov 02, 2022
BanditPAM: Almost Linear-Time k-Medoids Clustering

BanditPAM: Almost Linear-Time k-Medoids Clustering This repo contains a high-performance implementation of BanditPAM from BanditPAM: Almost Linear-Tim

254 Dec 12, 2022
A Runtime method overload decorator which should behave like a compiled language

strongtyping-pyoverload A Runtime method overload decorator which should behave like a compiled language there is a override decorator from typing whi

20 Oct 31, 2022
Feed forward VQGAN-CLIP model, where the goal is to eliminate the need for optimizing the latent space of VQGAN for each input prompt

Feed forward VQGAN-CLIP model, where the goal is to eliminate the need for optimizing the latent space of VQGAN for each input prompt. This is done by

Mehdi Cherti 135 Dec 30, 2022
Evaluation suite for large-scale language models.

This repo contains code for running the evaluations and reproducing the results from the Jurassic-1 Technical Paper (see blog post), with current support for running the tasks through both the AI21 S

71 Dec 17, 2022
[CVPR 2022] Official Pytorch code for OW-DETR: Open-world Detection Transformer

OW-DETR: Open-world Detection Transformer (CVPR 2022) [Paper] Akshita Gupta*, Sanath Narayan*, K J Joseph, Salman Khan, Fahad Shahbaz Khan, Mubarak Sh

Akshita Gupta 127 Dec 27, 2022
Stacked Generative Adversarial Networks

Stacked Generative Adversarial Networks This repository contains code for the paper "Stacked Generative Adversarial Networks", CVPR 2017. Part of the

Xun Huang 241 May 07, 2022
基于PaddleOCR搭建的OCR server... 离线部署用

开头说明 DangoOCR 是基于大家的 CPU处理器 来运行的,CPU处理器 的好坏会直接影响其速度, 但不会影响识别的精度 ,目前此版本识别速度可能在 0.5-3秒之间,具体取决于大家机器的配置,可以的话尽量不要在运行时开其他太多东西。需要配合团子翻译器 Ver3.6 及其以上的版本才可以使用!

胖次团子 131 Dec 25, 2022
Credit fraud detection in Python using a Jupyter Notebook

Credit-Fraud-Detection - Credit fraud detection in Python using a Jupyter Notebook , using three classification models (Random Forest, Gaussian Naive Bayes, Logistic Regression) from the sklearn libr

Ali Akram 4 Dec 28, 2021
Cross-media Structured Common Space for Multimedia Event Extraction (ACL2020)

Cross-media Structured Common Space for Multimedia Event Extraction Table of Contents Overview Requirements Data Quickstart Citation Overview The code

Manling Li 49 Nov 21, 2022
LBK 20 Dec 02, 2022
Certis - Certis, A High-Quality Backtesting Engine

Certis - Backtesting For y'all Certis is a powerful, lightweight, simple backtes

Yeachan-Heo 46 Oct 30, 2022
Final project for Intro to CS class.

Financial Analysis Web App https://share.streamlit.io/mayurk1/fin-web-app-final-project/webApp.py 1. Project Description This project is a technical a

Mayur Khanna 1 Dec 10, 2021
level1-image-classification-level1-recsys-09 created by GitHub Classroom

level1-image-classification-level1-recsys-09 ❗ 주제 설명 COVID-19 Pandemic 상황 속 마스크 착용 유무 판단 시스템 구축 마스크 착용 여부, 성별, 나이 총 세가지 기준에 따라 총 18개의 class로 구분하는 모델 ?

6 Mar 17, 2022
MNE: Magnetoencephalography (MEG) and Electroencephalography (EEG) in Python

MNE-Python MNE-Python software is an open-source Python package for exploring, visualizing, and analyzing human neurophysiological data such as MEG, E

MNE tools for MEG and EEG data analysis 2.1k Dec 28, 2022
Generate saved_model, tfjs, tf-trt, EdgeTPU, CoreML, quantized tflite and .pb from .tflite.

tflite2tensorflow Generate saved_model, tfjs, tf-trt, EdgeTPU, CoreML, quantized tflite and .pb from .tflite. 1. Supported Layers No. TFLite Layer TF

Katsuya Hyodo 214 Dec 29, 2022