pub type SippSE2<G, H = G> = InformedSearch<GraphMotion<DiscreteSpaceTimeSE2<<G as Graph>::Key, DEFAULT_SIPP_RES>, SharedGraph<G>, ConflictAvoidance<DifferentialDriveLineFollow, SafeIntervalCache<SharedGraph<G>>>>, TravelEffortCost, QuickestPathHeuristic<SharedGraph<H>, TravelEffortCost, TravelEffortCost, DEFAULT_SIPP_RES>, SafeIntervalCloser<DiscreteSpaceTimeSE2<<G as Graph>::Key, DEFAULT_SIPP_RES>, SharedGraph<G>>, InitializeSE2<SharedGraph<G>, DEFAULT_SIPP_RES>, SatisfySE2, LazyGraphMotion<DiscreteSpaceTimeSE2<<G as Graph>::Key, DEFAULT_SIPP_RES>, SharedGraph<G>, ConflictAvoidance<DifferentialDriveLineFollow, SafeIntervalCache<SharedGraph<G>>>, (), SafeMergeIntoGoal<<G as Graph>::Key, DEFAULT_SIPP_RES>>>;Expand description
A specialization of InformedSearch for performing Safe Interval Path Planning (SIPP) through the SE(2) space (Special Euclidean Group, dimension 2), e.g. the x-y plane with rigid body rotations.
The graph used to calculate the heuristic can be a different type from the one used to guide the activity. This allows the heuristic to use faster or simplified graph representations to calculate cost estimates.
WARNING: To have a final orientation in the goal conditions, this domain
needs to be given to a crate::algorithm::AStarConnect instead of
crate::algorithm::AStar, otherwise the planner will fail to reach the
goal.
Aliased Type§
pub struct SippSE2<G, H = G> {
pub activity: GraphMotion<DiscreteSpaceTimeSE2<<G as Graph>::Key, DEFAULT_SIPP_RES>, SharedGraph<G>, ConflictAvoidance<DifferentialDriveLineFollow, SafeIntervalCache<SharedGraph<G>>>>,
pub weight: TravelEffortCost,
pub heuristic: QuickestPathHeuristic<SharedGraph<H>, TravelEffortCost, TravelEffortCost, 360>,
pub closer: SafeIntervalCloser<DiscreteSpaceTimeSE2<<G as Graph>::Key, DEFAULT_SIPP_RES>, SharedGraph<G>>,
pub initializer: InitializeSE2<SharedGraph<G>, 360>,
pub satisfier: SatisfySE2,
pub connector: LazyGraphMotion<DiscreteSpaceTimeSE2<<G as Graph>::Key, DEFAULT_SIPP_RES>, SharedGraph<G>, ConflictAvoidance<DifferentialDriveLineFollow, SafeIntervalCache<SharedGraph<G>>>, (), SafeMergeIntoGoal<<G as Graph>::Key, DEFAULT_SIPP_RES>>,
}Fields§
§activity: GraphMotion<DiscreteSpaceTimeSE2<<G as Graph>::Key, DEFAULT_SIPP_RES>, SharedGraph<G>, ConflictAvoidance<DifferentialDriveLineFollow, SafeIntervalCache<SharedGraph<G>>>>Describe what kind of activity is being searched. This field must
implement Activity and Domain.
The following templates can be used here:
weight: TravelEffortCostCalculate the cost of each choice that is searched. This field must
implement Weighted<A::State, A::Action>.
heuristic: QuickestPathHeuristic<SharedGraph<H>, TravelEffortCost, TravelEffortCost, 360>Calculate an estimate of the remaining cost from a state. This field
must implemented Informed<A::State, Goal>.
closer: SafeIntervalCloser<DiscreteSpaceTimeSE2<<G as Graph>::Key, DEFAULT_SIPP_RES>, SharedGraph<G>>Provide the [ClosedSet] that should be used during the search. This
field must implement Closable<A::State>.
initializer: InitializeSE2<SharedGraph<G>, 360>Determine what kind of Start conditions the search can accept. This
field must implement Initializable<Start, A::State>. By default this
field will be an empty tuple (), which means the Start type must
match A::State.
satisfier: SatisfySE2Determine when the search is solved/satisfied and what type of Goal
conditions the search can accept. This field must implement
Satisfiable<A::State, Goal>. By default this field will be an empty
tuple (), which means the Goal type must match A::State and the
search will be satisfied when a candidate state matches the goal state
using the PartialEq trait.
connector: LazyGraphMotion<DiscreteSpaceTimeSE2<<G as Graph>::Key, DEFAULT_SIPP_RES>, SharedGraph<G>, ConflictAvoidance<DifferentialDriveLineFollow, SafeIntervalCache<SharedGraph<G>>>, (), SafeMergeIntoGoal<<G as Graph>::Key, DEFAULT_SIPP_RES>>Provide an action to connect search states directly to the goal. This
can be helpful or even necessary for search spaces where simply
expanding the usual activity is not guaranteed to directly reach the
goal. This field must implement Connectable<A::State, A::Action, Goal>.
By default this field will be an empty tuple () which means there will
be no attempt to connect to the goal.