The project implements various anytime motion planning algorithms such as ATA* and ANA*.
Figure 1 - Improvement in path provided by Anytime A* (ATA*)
In the figure above, we can see that the path provided by ATA* improves over the iterations (left-to-right). From left-to-right, the left one is the first the alogrithm outputs while right one is last path the algorithm outputs.
- Languages:
C++11, Python
- CMake:
v3.2.0 (at least)
- OpenCV:
v3.2.0 (at least)
- Python libraries:
NumPy, Shutil, Glob, Opencv-Python
- Install necessary depenedencies using:
sudo apt-get install build-essential cmake libopencv-dev
python -m pip install numpy shutil glob opencv-python
- OpenCV can be installed from scratch as well but is not necessary for this project. One of the resources is here.
- The above commands are based on Ubuntu 18.04. They might differ for other OS-based machines such as Windows and MacOS.
- Clone the repository into your workspace and move into the project directory
git clone https://github.com/urastogi885/anytime-planning
cd anytime-planning/
- Run the project
bash run_anytime_planning.sh
- Arguments in the shell script
-h show this help text
-x set the start x-coordinate (default: 50, type: int)
-y set the start y-coordinate (default: 30, type: int)
-a set the goal x-coordinate (default: 150, type: int)
-b set the goal y-coordinate (default: 150, type: int)
-r set radius of the robot (default: 3, type: int)
-c set clearance required between the robot and obstacles (default: 2, type: int)
-m set method the robot uses to find path from start to goal (default: 0, , type: int)
Use 0: A*, 1: ATA*, 2: ARA*, 3: ANA*
-i set inflation factor for the method (default: 1.0, type: float, minimum: 1.0)
- Note: The world size is 300x200 so set the start and goal point accordingly.