### 33 releases (stable)

2.3.0 | Mar 23, 2024 |
---|---|

2.1.1 | Dec 25, 2023 |

2.0.1 | Sep 13, 2023 |

1.7.0 | May 18, 2023 |

0.2.5 | Oct 22, 2021 |

#**59** in Simulation

**484** downloads per month

**MIT**license

33KB

406 lines

# 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

`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
`//` PosRot::from_f32 can also be used for const contexts
`const` q0`:` PosRot `=` `PosRot``::`from_f32`(``0.``,` `0.``,` `PI` `/` `4.``)``;`
`//` The target end position and rotation
`//` PosRot implements From<[f32; 3]>
`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` shortest_path_possible`:` `DubinsResult``<`DubinsPath`>` `=` `DubinsPath``::`shortest_from`(`q0`,` q1`,` rho`)``;`
`//` Assert that the path was found!
`assert!``(`shortest_path_possible`.``is_ok``(``)``)``;`

DubinsPath has many methods you should look into, such as length, extract_subpath, sample, and sample_many.

## Features

- Use a`glam`

compatible API`glam`

## More documentation

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

#### Dependencies

~0–680KB

~21K SLoC