Dubin's Paths

Rust code for calculating Dubin's Paths

Credit to Andrew Walker for the original C code

I've ported the code to Rust and documented everything that I could understand. Documentation in the original repository was minimal.

Quick example

```rust use std::f32::consts::PI; use dubins_paths::{self, DubinsPath, PathType, PosRot};

// PosRot has the format [f32; 3] // It represents the car's [x, y, theta] // Where x and y are the coordinates on a 2d plane // and theta is the orientation of the car's front in radians

// The starting position let q0: PosRot = [0., 0., PI / 4.];

// The target end position let q1: PosRot = [100., -100., PI * (3. / 4.)];

// The car's turning radius (must be > 0) // This can be calculated by taking a cars angular velocity and dividing it by the car's forward velocity let rho: f32 = 11.6;

// Calculate the shortest possible path between these two points with the given turning radius let shortestpathpossible: dubinspaths::Result = DubinsPath::shortestfrom(q0, q1, rho);

// Assert that the path was found! assert!(shortestpathpossible.is_ok()); ```

DubinsPath has many methods you should look into, such as length, extractsubpath, sample, and samplemany.

Documentation

Looking for some documentation? Head on over to the docs.rs page!