pub struct RigidBodyExactBackend2D { /* private fields */ }Expand description
Exact branch-and-bound rigid-body backend.
Where the lattice backend minimizes an integer move/turn cost over a coarse 8-heading SE(2) lattice, this backend minimizes the true Euclidean path length over a 16-connected motion grid, with the body oriented along its direction of travel. Feasibility of every motion uses the same disjunctive separating-half-space certificates as the MIP formulation: for each obstacle, at least one of its half-spaces must separate the swept footprint (the binary/disjunctive choice). Best-first search with an admissible straight-line lower bound is a branch-and-bound that returns the length-optimal path on this motion graph, so it dominates the coarse lattice and the sampling RRT in realized path length and heading change.
The body is oriented along motion, so heading constraints (require_goal_ heading) are not enforced; the backend is meant for optimal position
routing of the rigid footprint.
Implementations§
Source§impl RigidBodyExactBackend2D
impl RigidBodyExactBackend2D
pub fn new(config: RigidBodyMipConfig2D) -> RoboticsResult<Self>
pub fn config(&self) -> &RigidBodyMipConfig2D
Trait Implementations§
Source§impl Clone for RigidBodyExactBackend2D
impl Clone for RigidBodyExactBackend2D
Source§fn clone(&self) -> RigidBodyExactBackend2D
fn clone(&self) -> RigidBodyExactBackend2D
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RigidBodyExactBackend2D
impl Debug for RigidBodyExactBackend2D
Source§impl PartialEq for RigidBodyExactBackend2D
impl PartialEq for RigidBodyExactBackend2D
Source§impl RigidBodyPlanningBackend for RigidBodyExactBackend2D
impl RigidBodyPlanningBackend for RigidBodyExactBackend2D
Source§fn plan_path(
&self,
start: RigidBodyPose2D,
goal: RigidBodyPose2D,
_require_goal_heading: bool,
) -> RoboticsResult<RigidBodyPlanOutcome2D>
fn plan_path( &self, start: RigidBodyPose2D, goal: RigidBodyPose2D, _require_goal_heading: bool, ) -> RoboticsResult<RigidBodyPlanOutcome2D>
start to goal.impl StructuralPartialEq for RigidBodyExactBackend2D
Auto Trait Implementations§
impl Freeze for RigidBodyExactBackend2D
impl RefUnwindSafe for RigidBodyExactBackend2D
impl Send for RigidBodyExactBackend2D
impl Sync for RigidBodyExactBackend2D
impl Unpin for RigidBodyExactBackend2D
impl UnsafeUnpin for RigidBodyExactBackend2D
impl UnwindSafe for RigidBodyExactBackend2D
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
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
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.