pub struct DubinsPlanner {
pub curvature: f64,
}Expand description
Dubins path planner.
Computes the shortest forward-only path between two Pose2D waypoints for a
vehicle whose minimum turning radius is 1.0 / curvature.
§Example
use rust_robotics_planning::dubins_path::DubinsPlanner;
use rust_robotics_core::types::Pose2D;
let planner = DubinsPlanner::new(1.0);
let start = Pose2D::new(0.0, 0.0, 0.0);
let goal = Pose2D::new(5.0, 5.0, std::f64::consts::FRAC_PI_2);
let path = planner.plan(start, goal).unwrap();
assert!(path.total_length > 0.0);Fields§
§curvature: f64Curvature = 1 / minimum turning radius [1/m].
Implementations§
Source§impl DubinsPlanner
impl DubinsPlanner
Sourcepub fn new(curvature: f64) -> Self
pub fn new(curvature: f64) -> Self
Create a new planner with the given curvature (1 / min turning radius).
§Errors
Returns InvalidParameter if curvature is not positive and finite.
Sourcepub fn plan(&self, start: Pose2D, goal: Pose2D) -> RoboticsResult<DubinsPath>
pub fn plan(&self, start: Pose2D, goal: Pose2D) -> RoboticsResult<DubinsPath>
Plan the shortest Dubins path from start to goal.
§Errors
Returns PlanningError if no valid path can be found (should not happen
for finite inputs—included for robustness).
Sourcepub fn sample_path(&self, path: &DubinsPath, step: f64) -> Path2D
pub fn sample_path(&self, path: &DubinsPath, step: f64) -> Path2D
Sample evenly-spaced points along a previously computed DubinsPath.
step is the distance [m] between consecutive sample points.
Auto Trait Implementations§
impl Freeze for DubinsPlanner
impl RefUnwindSafe for DubinsPlanner
impl Send for DubinsPlanner
impl Sync for DubinsPlanner
impl Unpin for DubinsPlanner
impl UnsafeUnpin for DubinsPlanner
impl UnwindSafe for DubinsPlanner
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.