pub struct DStar { /* private fields */ }Expand description
D* (original) path planner.
Constructs a grid from obstacle coordinates, plans a shortest path from start to goal, and supports dynamic re-planning when new obstacles are detected along the current path.
Implementations§
Source§impl DStar
impl DStar
Sourcepub fn new(ox: &[i32], oy: &[i32]) -> Self
pub fn new(ox: &[i32], oy: &[i32]) -> Self
Create a new D* planner from obstacle boundary coordinates.
ox and oy define obstacle (or boundary) positions in world coordinates.
Sourcepub fn plan_xy(
&mut self,
sx: i32,
sy: i32,
gx: i32,
gy: i32,
) -> Option<Vec<(i32, i32)>>
pub fn plan_xy( &mut self, sx: i32, sy: i32, gx: i32, gy: i32, ) -> Option<Vec<(i32, i32)>>
Plan a path from (sx, sy) to (gx, gy) in world coordinates.
Returns a vector of (x, y) world-coordinate waypoints if a path exists.
Sourcepub fn plan_with_new_obstacles(
&mut self,
sx: i32,
sy: i32,
gx: i32,
gy: i32,
new_obstacles: &[(i32, i32)],
) -> Option<Vec<(i32, i32)>>
pub fn plan_with_new_obstacles( &mut self, sx: i32, sy: i32, gx: i32, gy: i32, new_obstacles: &[(i32, i32)], ) -> Option<Vec<(i32, i32)>>
Plan a path, then dynamically add obstacles and re-plan.
new_obstacles are (x, y) world-coordinate pairs of obstacles discovered
after the initial plan. The planner re-routes around them.
Sourcepub fn add_obstacle(&mut self, x: i32, y: i32)
pub fn add_obstacle(&mut self, x: i32, y: i32)
Add a single obstacle at world coordinates and trigger local re-planning.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for DStar
impl RefUnwindSafe for DStar
impl Send for DStar
impl Sync for DStar
impl Unpin for DStar
impl UnsafeUnpin for DStar
impl UnwindSafe for DStar
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.