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.
```rust use core::f32::consts::PI; use dubins_paths::{DubinsPath, PosRot, Result as DubinsResult};
// PosRot represents the car's (Pos)ition and (Rot)ation // 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 and rotation // Calling 'into' is a requirement for using the glam feature, but PosRot::fromf32 can also be used for const contexts // If you're not using the glam feature, calling 'into' is unneeded. let q0 = PosRot::fromf32(0., 0., PI / 4.);
// The target end position and rotation let q1 = [100., -100., PI * (3. / 4.)].into();
// 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
// turn radius = ang_vel / forward_vel
let rho: f32 = 11.6;
// Calculate the shortest possible path between these two points with the given turning radius
let shortestpathpossible: DubinsResult
// 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.
glam
- Use a glam
compatible APILooking for some more detailed documentation? Head on over to the docs.rs page!