Skip to content

alexander-veselov/Motion

Repository files navigation

logo

Computational motion planning in planar space

This application enables pathfinding in planar 2D space from point A to point B, taking into account obstacles and the robot's shape. It supports multiple pathfinding algorithms, allowing users to explore different approaches to solving the motion planning problem.

Main features:

  • Planar 2D pathfinding
  • Custom-shaped robot support
  • Dynamic obstacle handling
  • Multiple pathfinding algorithms for comparison
  • Area scanning in unknown environment
  • Visualization of intermediate steps for better understanding

Originally developed as part of a diploma project, this tool is ideal for studying or teaching motion planning and related algorithms.

animation

Dependencies

Build

Project uses vcpkg package manager and CMake.

Quick Visual Studio project generation steps:

cmake . -B build -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake

Functionality and algorithms

1. Minkowski Sum for Configuration Space Calculation

The application uses the Minkowski sum to compute the configuration space, determining the allowed positions where the robot can be placed. This method accounts for both the robot's shape and the obstacles in the environment, ensuring accurate pathfinding in complex scenarios.

2. Pathfinding Algorithms

The app supports multiple pathfinding algorithms, allowing users to explore different approaches to motion planning:

  • RRT (Rapidly-exploring Random Tree) for probabilistic path exploration.
  • Visibility Graph for constructing optimal paths through free space by connecting visible vertices.
  • Voronoi Map to plan paths while maximizing distance from obstacles.

3. Graph-based Map Storage

A graph structure is used to store preprocessed maps when utilizing the Visibility Graph or Voronoi Map algorithms, optimizing performance during repeated path calculations.

4. Dijkstra's Algorithm for Pathfinding in Graphs

Dijkstra's algorithm is utilized to efficiently search for the shortest path in a graph, ensuring optimal routing.

5. GUI Implementation with Qt

The application features a user-friendly graphical interface built using the Qt framework, making it easy to interact with various tools and visualizations for motion planning.

6. State Design Pattern for UI Flows

The "state" design pattern is implemented to manage multiple UI workflows, such as:

  • Creating and placing objects
  • Reshaping the robot
  • Dragging the robot across the workspace

7. Custom File Format for Scene Management

The app introduces a file format for saving and loading scenes, enabling users to store and retrieve their work efficiently.

8. Random Obstacle Map Generation

The application can generate random obstacle maps, including labyrinth-like structures, allowing for extensive testing and experimentation with different environments.

9. Experimental Algorithm for Unknown Environment Navigation

An experimental algorithm is included for robot navigation in unknown environments, simulating real-world scenarios where obstacles are discovered during movement.

Gallery

 

About

Computational motion planning in planar space

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published