Coder Social home page Coder Social logo

ibrahimsquared / underspecified-rs-planner Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 3.09 MB

Introduces and solves the under-specified Reeds-Shepp problem: find the vehicle orientation that results in the shortest path.

License: Apache License 2.0

CMake 5.49% C++ 94.51%
car-like-robots path-planning reeds-shepp reeds-shepp-curves reeds-shepp-planner shortest-distance under-specified-reeds-shepp distance-transform nonholonomic-robot nonholonomic-planning

underspecified-rs-planner's Introduction

Under-specified Reeds-Shepp Planning

Consider the scenario where a car-like robot begins at a certain configuration $p_{0} = (x_{0}, y_{0}, \theta_{0})$ in an $N\times{}M$ grid.

By solving the under-specified Reeds-Shepp problem, we endow the robot with the knowledge of the ending orientations $\theta_{f}^{N\times{}M}$ that produce the shortest paths to all grid cells. This allows the robot to move anywhere in the grid, always at a minimum-distance basis.

Using the computed $\theta_{f}^{N\times{}M}$, we can compute a shortest-distance transform in the style of Euclidian distance transforms for the grid. The latter is symmetrical and rotationally invariant in its local frame for a fixed radius $r$, so it can be computed once and stored offline and it can be interpolated at any point.

Given an initial configuration $p_{0} = (x_{0}, y_{0}, \theta_{0})$ and a final position $(x_{f}, y_{f})$ with an unspecified final orientation $\theta_{f}$, the goal is to find the final orientation $\Omega$ such that the resulting Reeds-Shepp path from $p_{0}$ to the final configuration $p_{f} = (x_{f}, y_{f}, \Omega)$ is the shortest possible. Formally, $\Omega$ is defined as:

$$ \Omega = \underset{\theta_{f} \in [-\pi,\pi)}{\mathrm{argmin}} L(p_{0}, (x_{f}, y_{f}, \theta_{f})). $$

where $L(p_{0}, (x_{f}, y_{f}, \theta_{f}))$ represents the length of the Reeds-Shepp path from the initial configuration $p_{0}$ to the final configuration $(x_{f}, y_{f}, \theta_{f})$. The objective is to determine $\theta_{f}$ such that the path length is minimized.

In this code, we provide the solution for this problem that is based on the paper we submitted: (TBD).

Sample solution

Solved for a $1000\times{}1000$ grid map with the start configuration $p_{0} = (500,500,\frac{\pi}{2})$ and with a radius $r = 400$.

$\Omega^{N\times{}M}$ solution

alt text

Corresponding computed path lengths

We computed path lengths for all pairs $(p_{0}, p_{f_{i,j}})$ where $(i,j) \in N\times{}M$ grid. alt text

The path lengths were computed using our proposed accelerated Reeds-Shepp planner that runs an order of magnitude faster than state-of-the-art.

Sample $\Omega^{N\times{}M}$ image generated using SFML in C++

Generated for a randomly chosen $\theta_{0}$.
alt text

How to Use (To be completed)

Set compiler path if needed, make sure SFML libraries (libsfml-dev) are installed, then:
sudo apt install cmake
sudo apt install g++
mkdir build && cd build
cmake ..
make

To use this project, follow these simple steps:

  1. Clone the repository:

underspecified-rs-planner's People

Contributors

ibrahimsquared avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.