Skip to content

miquel-espinosa/dual-wavefront

Repository files navigation

Dual wavefront algorithm

A tree-based algorithm with two wavefronts for path-planning in an unknown discrete environment. The two fronts simultaneously exist and expand. In this version, there is no prior knowledge of the position of goal, therefore, no heuristics can be used.

Report

For a more in-depth overview of the work carried out, check the following pdf report: Dual Wavefront Algorithm

Dependencies

To run this project you will need installed: python 3, numpy, matplotlib, scipy, tkinter, math, subprocess.

Run the project

python3 main.py

Demos

Some demos of the output generated are shown in the following animations (created with Matplotlib).

Simple block scenario

A simple block scenario simulation is carried out. Alt Text In this simulation, it is explicitly shown the tree as it expands. Note that optimum paths are being expanded on-the-go. Therefore, once both "waves" meet, it is only a matter of backtracking through the parent nodes back to the original root. Alt Text

Blocks map

A more complex layout is proposed by randomly distributing block obstacles in the search space. Alt Text A grid of uniformly distributed blocks is input to the dual wavefront planner. Alt Text

A plan view search space is proposed. Alt Text

Laberynths

Laberynths are constructed to test the limits of the planner. Firstly, a simple labyrinth is constructed. Alt Text A more challenging labyrinth follows. Alt Text A labyrinth with multiple holes and simultaneously open tree branches. Alt Text A huge laberynth of 99x99 cells grid. Alt Text

Acknowledgments

Laberynths generation is taken from:

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

About

Dual wavefront algorithm: a real-time visualization

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published