SippSE2

Type Alias SippSE2 

Source
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: TravelEffortCost

Calculate 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: SatisfySE2

Determine 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.

Implementations§

Source§

impl<G, H> SippSE2<G, H>

Source

pub fn new_sipp_se2( activity_graph: SharedGraph<G>, heuristic_graph: SharedGraph<H>, extrapolator: DifferentialDriveLineFollow, environment: Arc<CcbsEnvironment<WaypointSE2, G::Key>>, weight: TravelEffortCost, ) -> Result<Self, NewSippSE2Error<H>>

Trait Implementations§