Skip to content

Implementation of various anytime motion planning algorithms

License

Notifications You must be signed in to change notification settings

urastogi885/anytime-planning

Repository files navigation

Anytime Planning

Build Status License

Overview

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.

Dependencies

  • Languages: C++11, Python
  • CMake: v3.2.0 (at least)
  • OpenCV: v3.2.0 (at least)
  • Python libraries: NumPy, Shutil, Glob, Opencv-Python

Install Dependencies

  • 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.

Build & Run

  • 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.