An all-in-one application to visualize multiple different local path planning algorithms

Overview

Table of Contents

Local Planner Visualization Project (LPVP)

LPVP serves to provide a single application to visualize numerous different local planner algorithms used in Autonomous Vehicle path planning and mobile robotics. The application provides customizable parameters to better understand the inner workings of each algorithm and explore their strengths and drawbacks. It is written in Python and uses Pygame to render the visualizations.

App Preview

Features

  • Multiple Local Planner Algorithms
    • Probabilistic Roadmap
    • RRT
    • Potential Field
  • Multiple Graph Search Algorithms
    • Dijkstra's Shortest Path
    • A* Search
    • Greedy Best First Search
  • Graph Search visualization
  • Random obstacle generation with customizable obstacle count
  • Drag and drop obstacle generation
  • Drag and drop customizable start/end pose
  • Customizable Parameters for each planner algorithm
    • Probabilistic Roadmap
      • Sample Size
      • K-Neighbours
      • Graph Search algorithm
    • RRT
      • Path goal bias
    • Potential Field
      • Virtual Field toggle
  • Support for additional planner and search algorithms

Installation/Usage

The project is written in Python3, and uses pygame to handle the visualizations and pygame_gui for the gui. numpy is used for calculations for the potential field planner.

  1. Clone the repo
git clone https://github.com/abdurj/Local-Planner-Visualization-Project.git
  1. Install Dependencies
  pip3 install pygame pygame_gui numpy
  cd Local-Planner-Visualization-Project
  1. Run the program
python3 base.py

Local Planners

Probabilistic Roadmap (PRM)

The probabilistic roadmap planner is a sampling based planner that operates in 3 stages, and searches a constructed graph network to find the path between the start and end configuration. This approach is heavy on pre-processing, as it needs to generate the network, however after the preprocessing is done, it can quickly search the constructed network for any start and goal pose configuration without needing to restart. The PRM excels in solving motion planning problems in high dimensional C-Spaces, for example: a robot with many joints. However this project demonstrates a PRM acting in a 2D C-Space.

1. Sampling Stage

During the sampling stage the planner generates N samples from the free C-Space. In this project, the samples are generated by uniformly sampling the C-Space, and if the sample does not collide with any object, it is added as a Node in the roadmap. The PRM isn't limited to uniform sampling techniques, non-uniform sampling techniques can be used to better model the C-Space.

Non-uniform sampling methods are planned for a future release

App Preview

2. Creating the roadmap

In the next stage, the planner finds the K closest neighbours for each node. It then uses a simple local path planner to connect the node with it's neighbour nodes without trying to avoid any obstacles. This is done by simply creating a straight line between the nodes. If this line is collision free; an edge is created between the nodes.

App Preview

3. Searching the Roadmap

After connecting all nodes with its K closest neighbours, a resulting graph network will have been created. This network can be searched with a graph search algorithm. The currently supported graph search algorithms are:

  • Dijkstra's Shortest Path
  • A* Search
  • Greedy Best First Search

More search algorithms are planned for a future release.

App Preview

Rapidly-exploring Random Tree (RRT)

The rapidly-exploring random tree planner is another sampling based planner that explores the C-space by growing a tree rooted at the starting configuration. It then randomly samples the free c-space, and attempts to connect the random sample with the nearest node in the tree. The length of the connection is limited by a growth factor, or "step size". In path planning problems, a bias factor is introduced into the RRT. This bias factor introduces a probability that the random sample will be the goal pose. Increasing the bias factor affects how greedily the tree expands towards the goal. RRT

Potential Field

The potential field planner is adapted from the concept of a charged particle travelling through a charged magnetic field. The goal pose emits a strong attractive force, and the obstacles emit a repulsive force. We can emulate this behaviour by creating a artificial potential field that attracts the robot towards the goal. The goal pose emits a strong attractive field, and each obstacle emits a repulsive field. By following the sum of all fields at each position, we can construct a path towards the goal pose. PF Demo

Virtual Fields

A problem with the potential field planner is that it is easy for the planner to get stuck in local minima traps. Thus the Virtual Field method proposed by Ding Fu-guang et al. in this paper has been implemented to steer the path towards the open free space in the instance where the path is stuck. Virtual Field

Grid Based Planner

Grid based planners model the free C-Space as a grid. From there a graph search algorithm is used to search the graph for a path from the start and end pose.

A grid based planner is planned for a future release.

Current Issues

  • Updating starting configuration in PRM doesn't clear search visualization
  • Virtual Field pushes path into obstacles in certain scenarios

Contributing

Contributions are always welcome!

See contributing.md for ways to get started.

Roadmap

  • Add Grid Based Local Planner
  • Add variable growth factor to RRT planner
  • Add new local planners: RRT* / D* / Voronoi Roadmap
  • Add dynamic trajectory generation visualization as shown in this video

Authors

Project Setup / Algorithm Implementations

Styling / UI / Design

Acknowledgements

PRM

  • Becker, A. (2020, November 23). PRM: Probabilistic Roadmap Method in 3D and with 7-DOF robot arm. YouTube
  • Modern Robotics, Chapter 10.5: Sampling Methods for Motion Planning (Part 1 of 2). (2018, March 16). YouTube

RRT

  • Algobotics: Python RRT Path Planning playlist. Youtube
  • RRT, RRT* & Random Trees. (2018, November 21). YouTube

Potential Field

  • Ding Fu-guang, Jiao Peng, Bian Xin-qian and Wang Hong-jian, "AUV local path planning based on virtual potential field," IEEE International Conference Mechatronics and Automation, 2005, 2005, pp. 1711-1716 Vol. 4, doi: 10.1109/ICMA.2005.1626816. URL
  • Michael A. Goodrich, Potential Fields Tutorial URL
  • Safadi, H. (2007, April 18). Local Path Planning Using Virtual Potential Field. URL
  • Lehett, J, Pytential Fields Github Repo

License

This project is licensed under the terms of the MIT license.

You might also like...
Benchmark spaces - Benchmarks of how well different two dimensional spaces work for clustering algorithms

benchmark_spaces Benchmarks of how well different two dimensional spaces work fo

library for nonlinear optimization, wrapping many algorithms for global and local, constrained or unconstrained, optimization

NLopt is a library for nonlinear local and global optimization, for functions with and without gradient information. It is designed as a simple, unifi

implementation of paper - You Only Learn One Representation: Unified Network for Multiple Tasks
implementation of paper - You Only Learn One Representation: Unified Network for Multiple Tasks

YOLOR implementation of paper - You Only Learn One Representation: Unified Network for Multiple Tasks To reproduce the results in the paper, please us

Scripts of Machine Learning Algorithms from Scratch. Implementations of machine learning models and algorithms using nothing but NumPy with a focus on accessibility. Aims to cover everything from basic to advance.
Scripts of Machine Learning Algorithms from Scratch. Implementations of machine learning models and algorithms using nothing but NumPy with a focus on accessibility. Aims to cover everything from basic to advance.

Algo-ScriptML Python implementations of some of the fundamental Machine Learning models and algorithms from scratch. The goal of this project is not t

Official repository for "PAIR: Planning and Iterative Refinement in Pre-trained Transformers for Long Text Generation"

pair-emnlp2020 Official repository for the paper: Xinyu Hua and Lu Wang: PAIR: Planning and Iterative Refinement in Pre-trained Transformers for Long

Simple streamlit app to demonstrate HERE Tour Planning
Simple streamlit app to demonstrate HERE Tour Planning

Table of Contents About the Project Built With Getting Started Prerequisites Installation Usage Roadmap Contributing License Acknowledgements About Th

Related resources for our EMNLP 2021 paper Plan-then-Generate: Controlled Data-to-Text Generation via Planning

Plan-then-Generate: Controlled Data-to-Text Generation via Planning Authors: Yixuan Su, David Vandyke, Sihui Wang, Yimai Fang, and Nigel Collier Code

 GNPy: Optical Route Planning and DWDM Network Optimization
GNPy: Optical Route Planning and DWDM Network Optimization

GNPy is an open-source, community-developed library for building route planning and optimization tools in real-world mesh optical networks

Memory-efficient optimum einsum using opt_einsum planning and PyTorch kernels.

opt-einsum-torch There have been many implementations of Einstein's summation. numpy's numpy.einsum is the least efficient one as it only runs in sing

Releases(v1.0)
  • v1.0(Jul 26, 2021)

    Initial release of the LPVP project. Adds 3 Local Planner Algorithms: Probabilistic Roadmap, RRT, Potential Field Adds 3 Graph Search algorithms: Dijkstra's, A*, Greedy BFS

    Source code(tar.gz)
    Source code(zip)
Owner
Abdur Javaid
UW Software Engineering 2025
Abdur Javaid
68 keypoint annotations for COFW test data

68 keypoint annotations for COFW test data This repository contains manually annotated 68 keypoints for COFW test data (original annotation of CFOW da

31 Dec 06, 2022
Dense Unsupervised Learning for Video Segmentation (NeurIPS*2021)

Dense Unsupervised Learning for Video Segmentation This repository contains the official implementation of our paper: Dense Unsupervised Learning for

Visual Inference Lab @TU Darmstadt 173 Dec 26, 2022
The Body Part Regression (BPR) model translates the anatomy in a radiologic volume into a machine-interpretable form.

Copyright © German Cancer Research Center (DKFZ), Division of Medical Image Computing (MIC). Please make sure that your usage of this code is in compl

MIC-DKFZ 40 Dec 18, 2022
Security evaluation module with onnx, pytorch, and SecML.

🚀 🐼 🔥 PandaVision Integrate and automate security evaluations with onnx, pytorch, and SecML! Installation Starting the server without Docker If you

Maura Pintor 11 Apr 12, 2022
DARTS-: Robustly Stepping out of Performance Collapse Without Indicators

[ICLR'21] DARTS-: Robustly Stepping out of Performance Collapse Without Indicators [openreview] Authors: Xiangxiang Chu, Xiaoxing Wang, Bo Zhang, Shun

55 Nov 01, 2022
This repository contains the code and models necessary to replicate the results of paper: How to Robustify Black-Box ML Models? A Zeroth-Order Optimization Perspective

Black-Box-Defense This repository contains the code and models necessary to replicate the results of our recent paper: How to Robustify Black-Box ML M

OPTML Group 2 Oct 05, 2022
This repository accompanies our paper “Do Prompt-Based Models Really Understand the Meaning of Their Prompts?”

This repository accompanies our paper “Do Prompt-Based Models Really Understand the Meaning of Their Prompts?” Usage To replicate our results in Secti

Albert Webson 64 Dec 11, 2022
PyTorch implementation of our method for adversarial attacks and defenses in hyperspectral image classification.

Self-Attention Context Network for Hyperspectral Image Classification PyTorch implementation of our method for adversarial attacks and defenses in hyp

22 Dec 02, 2022
Code for "OctField: Hierarchical Implicit Functions for 3D Modeling (NeurIPS 2021)"

OctField(Jittor): Hierarchical Implicit Functions for 3D Modeling Introduction This repository is code release for OctField: Hierarchical Implicit Fun

55 Dec 08, 2022
Object-Centric Learning with Slot Attention

Slot Attention This is a re-implementation of "Object-Centric Learning with Slot Attention" in PyTorch (https://arxiv.org/abs/2006.15055). Requirement

Untitled AI 72 Jan 02, 2023
In this project, we create and implement a deep learning library from scratch.

ARA In this project, we create and implement a deep learning library from scratch. Table of Contents Deep Leaning Library Table of Contents About The

22 Aug 23, 2022
Parsing, analyzing, and comparing source code across many languages

Semantic semantic is a Haskell library and command line tool for parsing, analyzing, and comparing source code. In a hurry? Check out our documentatio

GitHub 8.6k Dec 28, 2022
Personals scripts using ageitgey/face_recognition

HOW TO USE pip3 install requirements.txt Add some pictures of known people in the folder 'people' : a) Create a folder called by the name of the perso

Antoine Bollengier 1 Jan 06, 2022
Implementation of Segformer, Attention + MLP neural network for segmentation, in Pytorch

Segformer - Pytorch Implementation of Segformer, Attention + MLP neural network for segmentation, in Pytorch. Install $ pip install segformer-pytorch

Phil Wang 208 Dec 25, 2022
Fast, accurate and reliable software for algebraic CT reconstruction

KCT CBCT Fast, accurate and reliable software for algebraic CT reconstruction. This set of software tools includes OpenCL implementation of modern CT

Vojtěch Kulvait 4 Dec 14, 2022
E2C implementation in PyTorch

Embed to Control implementation in PyTorch Paper can be found here: https://arxiv.org/abs/1506.07365 You will need a patched version of OpenAI Gym in

Yicheng Luo 42 Dec 12, 2022
MediaPipeのPythonパッケージのサンプルです。2020/12/11時点でPython実装のある4機能(Hands、Pose、Face Mesh、Holistic)について用意しています。

mediapipe-python-sample MediaPipeのPythonパッケージのサンプルです。 2020/12/11時点でPython実装のある以下4機能について用意しています。 Hands Pose Face Mesh Holistic Requirement mediapipe 0.

KazuhitoTakahashi 217 Dec 12, 2022
Ludwig Benchmarking Toolkit

Ludwig Benchmarking Toolkit The Ludwig Benchmarking Toolkit is a personalized benchmarking toolkit for running end-to-end benchmark studies across an

HazyResearch 17 Nov 18, 2022
Unofficial implementation of HiFi-GAN+ from the paper "Bandwidth Extension is All You Need" by Su, et al.

HiFi-GAN+ This project is an unoffical implementation of the HiFi-GAN+ model for audio bandwidth extension, from the paper Bandwidth Extension is All

Brent M. Spell 134 Dec 30, 2022
Modified prey-predator system - Modified prey–predator model describes the rate of change for each species by adding coupling terms.

Modified prey-predator system We aim to study the behaviors of the modified prey–predator model and establish the effects of several parameters that p

Seoyoung Oh 1 Jan 02, 2022