EuclideanSpace

Struct EuclideanSpace 

Source
pub struct EuclideanSpace<X, const N: usize>
where X: SampleUniform,
{ /* private fields */ }
Expand description

A uniformly sampled Cuboid with euclidean distance cost function

Implementations§

Source§

impl<X, const N: usize> EuclideanSpace<X, N>
where X: Scalar + SampleUniform,

Source

pub fn new(bounds: Bounds<X, N>, rng: RNG) -> Result<Self>

Trait Implementations§

Source§

impl AppearingObstacle<f32, EuclideanSpace<f32, N>, N> for Obstacle2df32

Source§

fn can_sense<S>(&self, pose: &Vector<X, Const<N>, S>, radius: X) -> bool
where S: Storage<X, Const<N>>,

Checks if self is within radius of pose
Source§

impl AppearingObstacle<f32, EuclideanSpace<f32, N>, N> for Obstacle3df32

Source§

fn can_sense<S>(&self, pose: &Vector<X, Const<N>, S>, radius: X) -> bool
where S: Storage<X, Const<N>>,

Checks if self is within radius of pose
Source§

impl AppearingObstacle<f64, EuclideanSpace<f64, N>, N> for Obstacle2df64

Source§

fn can_sense<S>(&self, pose: &Vector<X, Const<N>, S>, radius: X) -> bool
where S: Storage<X, Const<N>>,

Checks if self is within radius of pose
Source§

impl AppearingObstacle<f64, EuclideanSpace<f64, N>, N> for Obstacle3df64

Source§

fn can_sense<S>(&self, pose: &Vector<X, Const<N>, S>, radius: X) -> bool
where S: Storage<X, Const<N>>,

Checks if self is within radius of pose
Source§

impl<X, const N: usize> CSpace<X, N> for EuclideanSpace<X, N>
where X: Scalar + SampleUniform,

Source§

type Traj = EuclideanTrajectory<X, N>

Source§

fn volume(&self) -> X

An overestimate of the volume of the space (should remain constant)
Source§

fn cost<R1, R2, S1, S2>( &self, a: &Vector<X, R1, S1>, b: &Vector<X, R2, S2>, ) -> X
where X: Scalar, R1: Dim, R2: Dim, S1: Storage<X, R1>, S2: Storage<X, R2>, ShapeConstraint: SameNumberOfRows<R1, R2> + SameNumberOfRows<R1, Const<N>> + SameNumberOfRows<R2, Const<N>>,

Cost function between two arbitrary points within the space Always returns a value Read more
Source§

fn trajectory<S1, S2>( &self, start: Vector<X, Const<N>, S1>, end: Vector<X, Const<N>, S2>, ) -> Option<FullTraj<X, Self::Traj, S1, S2, N>>
where X: Scalar, S1: Storage<X, Const<N>>, S2: Storage<X, Const<N>>,

Calculate the trajectory data between the given start and end points for the system Read more
Source§

fn is_free<S>(&self, _: &Vector<X, Const<N>, S>) -> bool
where S: Storage<X, Const<N>>,

Determines if the given point is a valid state in the space
Source§

fn saturate(&self, a: &mut SVector<X, N>, b: &SVector<X, N>, delta: X)

Modify a such that the cost from a -> b is no more than delta away while moving a as little as possible
Source§

fn sample(&mut self) -> SVector<X, N>

Sample a point in the configuration space
Source§

impl<X, const N: usize> FromParams for EuclideanSpace<X, N>
where X: Scalar + SampleUniform,

Source§

impl Obstacle<f32, EuclideanSpace<f32, N>, N> for Obstacle2df32

Source§

fn trajectory_free<TF, S1, S2>(&self, t: &TF) -> bool
where TF: FullTrajectory<X, <EuclideanSpace<X, N> as CSpace<X, N>>::Traj, S1, S2, N>, S1: Storage<X, Const<N>>, S2: Storage<X, Const<N>>,

Checks that the obstacle does not intersect the given trajectory
Source§

fn is_free<S>(&self, x: &Vector<X, Const<N>, S>) -> bool
where S: Storage<X, Const<N>>,

Checks that the coordinate is not in the obstacle
Source§

impl Obstacle<f32, EuclideanSpace<f32, N>, N> for Obstacle3df32

Source§

fn trajectory_free<TF, S1, S2>(&self, t: &TF) -> bool
where TF: FullTrajectory<X, <EuclideanSpace<X, N> as CSpace<X, N>>::Traj, S1, S2, N>, S1: Storage<X, Const<N>>, S2: Storage<X, Const<N>>,

Checks that the obstacle does not intersect the given trajectory
Source§

fn is_free<S>(&self, x: &Vector<X, Const<N>, S>) -> bool
where S: Storage<X, Const<N>>,

Checks that the coordinate is not in the obstacle
Source§

impl Obstacle<f32, EuclideanSpace<f32, N>, N> for ObstacleSpace2df32

Source§

fn trajectory_free<TF, S1, S2>(&self, t: &TF) -> bool
where TF: FullTrajectory<X, <EuclideanSpace<X, N> as CSpace<X, N>>::Traj, S1, S2, N>, S1: Storage<X, Const<N>>, S2: Storage<X, Const<N>>,

Checks that the obstacle does not intersect the given trajectory
Source§

fn is_free<S>(&self, x: &Vector<X, Const<N>, S>) -> bool
where S: Storage<X, Const<N>>,

Checks that the coordinate is not in the obstacle
Source§

impl Obstacle<f32, EuclideanSpace<f32, N>, N> for ObstacleSpace3df32

Source§

fn trajectory_free<TF, S1, S2>(&self, t: &TF) -> bool
where TF: FullTrajectory<X, <EuclideanSpace<X, N> as CSpace<X, N>>::Traj, S1, S2, N>, S1: Storage<X, Const<N>>, S2: Storage<X, Const<N>>,

Checks that the obstacle does not intersect the given trajectory
Source§

fn is_free<S>(&self, x: &Vector<X, Const<N>, S>) -> bool
where S: Storage<X, Const<N>>,

Checks that the coordinate is not in the obstacle
Source§

impl Obstacle<f64, EuclideanSpace<f64, N>, N> for Obstacle2df64

Source§

fn trajectory_free<TF, S1, S2>(&self, t: &TF) -> bool
where TF: FullTrajectory<X, <EuclideanSpace<X, N> as CSpace<X, N>>::Traj, S1, S2, N>, S1: Storage<X, Const<N>>, S2: Storage<X, Const<N>>,

Checks that the obstacle does not intersect the given trajectory
Source§

fn is_free<S>(&self, x: &Vector<X, Const<N>, S>) -> bool
where S: Storage<X, Const<N>>,

Checks that the coordinate is not in the obstacle
Source§

impl Obstacle<f64, EuclideanSpace<f64, N>, N> for Obstacle3df64

Source§

fn trajectory_free<TF, S1, S2>(&self, t: &TF) -> bool
where TF: FullTrajectory<X, <EuclideanSpace<X, N> as CSpace<X, N>>::Traj, S1, S2, N>, S1: Storage<X, Const<N>>, S2: Storage<X, Const<N>>,

Checks that the obstacle does not intersect the given trajectory
Source§

fn is_free<S>(&self, x: &Vector<X, Const<N>, S>) -> bool
where S: Storage<X, Const<N>>,

Checks that the coordinate is not in the obstacle
Source§

impl Obstacle<f64, EuclideanSpace<f64, N>, N> for ObstacleSpace2df64

Source§

fn trajectory_free<TF, S1, S2>(&self, t: &TF) -> bool
where TF: FullTrajectory<X, <EuclideanSpace<X, N> as CSpace<X, N>>::Traj, S1, S2, N>, S1: Storage<X, Const<N>>, S2: Storage<X, Const<N>>,

Checks that the obstacle does not intersect the given trajectory
Source§

fn is_free<S>(&self, x: &Vector<X, Const<N>, S>) -> bool
where S: Storage<X, Const<N>>,

Checks that the coordinate is not in the obstacle
Source§

impl Obstacle<f64, EuclideanSpace<f64, N>, N> for ObstacleSpace3df64

Source§

fn trajectory_free<TF, S1, S2>(&self, t: &TF) -> bool
where TF: FullTrajectory<X, <EuclideanSpace<X, N> as CSpace<X, N>>::Traj, S1, S2, N>, S1: Storage<X, Const<N>>, S2: Storage<X, Const<N>>,

Checks that the obstacle does not intersect the given trajectory
Source§

fn is_free<S>(&self, x: &Vector<X, Const<N>, S>) -> bool
where S: Storage<X, Const<N>>,

Checks that the coordinate is not in the obstacle
Source§

impl ObstacleSpace<f32, EuclideanSpace<f32, N>, N> for ObstacleSpace2df32

Source§

type Obs = Obstacle2df32

The type of obstacles in the space
Source§

fn empty() -> Self

Build a new obstacle space with no obstacles in it
Source§

fn add_obstacles<I>(&mut self, obstacles: I)
where I: IntoIterator<Item = (ObstacleId, Self::Obs)>,

Add multiple obstacles to the environment Read more
Source§

fn get_obstacles(&self, obstacles: &[ObstacleId]) -> Vec<&Self::Obs>

Gets references to the given obstacle id’s Read more
Source§

fn get_sensed_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all yet sensed obstacles in the environement
Source§

fn get_not_sensed_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all not yet sensed obstacles in the environement
Source§

fn get_all_obstacle_ids(&self) -> Vec<ObstacleId>

Get vector of all valid obstacle ids
Source§

fn remove_obstacles(&mut self, obstacles: &[ObstacleId])

Removes the specified obstacle id’s if they have been added previously
Source§

fn count(&self) -> usize

The total number of obstacles, regardless of sensing
Source§

fn check_sensors<S>( &mut self, pose: &Vector<X, Const<N>, S>, radius: X, ) -> Vec<ObstacleId>
where S: Storage<X, Const<N>>,

Updates the internal obsacle to include obstacles that can be sensed at the given pose inside the radius Read more
Source§

fn new(obstacles: Vec<Self::Obs>) -> Self

Build a new obstacle space with the given obstacles
Source§

fn add_obstacle(&mut self, id: ObstacleId, obstacle: Self::Obs)

Add an obstacle to the environement Read more
Source§

fn get_obstacle(&self, id: ObstacleId) -> Option<&Self::Obs>

Optionally returns the specified obstacle id
Source§

fn get_obstacles_as_obstacle_space(&self, obstacles: &[ObstacleId]) -> Self

Gets a newly built obstacle_space only containing the given obstacle id’s
Source§

fn get_all_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all obstacles with their respective ids
Source§

fn remove_obstacle(&mut self, id: ObstacleId)

Remove the specified obstacle from the environment
Source§

impl ObstacleSpace<f32, EuclideanSpace<f32, N>, N> for ObstacleSpace3df32

Source§

type Obs = Obstacle3df32

The type of obstacles in the space
Source§

fn empty() -> Self

Build a new obstacle space with no obstacles in it
Source§

fn add_obstacles<I>(&mut self, obstacles: I)
where I: IntoIterator<Item = (ObstacleId, Self::Obs)>,

Add multiple obstacles to the environment Read more
Source§

fn get_obstacles(&self, obstacles: &[ObstacleId]) -> Vec<&Self::Obs>

Gets references to the given obstacle id’s Read more
Source§

fn get_sensed_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all yet sensed obstacles in the environement
Source§

fn get_not_sensed_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all not yet sensed obstacles in the environement
Source§

fn get_all_obstacle_ids(&self) -> Vec<ObstacleId>

Get vector of all valid obstacle ids
Source§

fn remove_obstacles(&mut self, obstacles: &[ObstacleId])

Removes the specified obstacle id’s if they have been added previously
Source§

fn count(&self) -> usize

The total number of obstacles, regardless of sensing
Source§

fn check_sensors<S>( &mut self, pose: &Vector<X, Const<N>, S>, radius: X, ) -> Vec<ObstacleId>
where S: Storage<X, Const<N>>,

Updates the internal obsacle to include obstacles that can be sensed at the given pose inside the radius Read more
Source§

fn new(obstacles: Vec<Self::Obs>) -> Self

Build a new obstacle space with the given obstacles
Source§

fn add_obstacle(&mut self, id: ObstacleId, obstacle: Self::Obs)

Add an obstacle to the environement Read more
Source§

fn get_obstacle(&self, id: ObstacleId) -> Option<&Self::Obs>

Optionally returns the specified obstacle id
Source§

fn get_obstacles_as_obstacle_space(&self, obstacles: &[ObstacleId]) -> Self

Gets a newly built obstacle_space only containing the given obstacle id’s
Source§

fn get_all_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all obstacles with their respective ids
Source§

fn remove_obstacle(&mut self, id: ObstacleId)

Remove the specified obstacle from the environment
Source§

impl ObstacleSpace<f64, EuclideanSpace<f64, N>, N> for ObstacleSpace2df64

Source§

type Obs = Obstacle2df64

The type of obstacles in the space
Source§

fn empty() -> Self

Build a new obstacle space with no obstacles in it
Source§

fn add_obstacles<I>(&mut self, obstacles: I)
where I: IntoIterator<Item = (ObstacleId, Self::Obs)>,

Add multiple obstacles to the environment Read more
Source§

fn get_obstacles(&self, obstacles: &[ObstacleId]) -> Vec<&Self::Obs>

Gets references to the given obstacle id’s Read more
Source§

fn get_sensed_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all yet sensed obstacles in the environement
Source§

fn get_not_sensed_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all not yet sensed obstacles in the environement
Source§

fn get_all_obstacle_ids(&self) -> Vec<ObstacleId>

Get vector of all valid obstacle ids
Source§

fn remove_obstacles(&mut self, obstacles: &[ObstacleId])

Removes the specified obstacle id’s if they have been added previously
Source§

fn count(&self) -> usize

The total number of obstacles, regardless of sensing
Source§

fn check_sensors<S>( &mut self, pose: &Vector<X, Const<N>, S>, radius: X, ) -> Vec<ObstacleId>
where S: Storage<X, Const<N>>,

Updates the internal obsacle to include obstacles that can be sensed at the given pose inside the radius Read more
Source§

fn new(obstacles: Vec<Self::Obs>) -> Self

Build a new obstacle space with the given obstacles
Source§

fn add_obstacle(&mut self, id: ObstacleId, obstacle: Self::Obs)

Add an obstacle to the environement Read more
Source§

fn get_obstacle(&self, id: ObstacleId) -> Option<&Self::Obs>

Optionally returns the specified obstacle id
Source§

fn get_obstacles_as_obstacle_space(&self, obstacles: &[ObstacleId]) -> Self

Gets a newly built obstacle_space only containing the given obstacle id’s
Source§

fn get_all_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all obstacles with their respective ids
Source§

fn remove_obstacle(&mut self, id: ObstacleId)

Remove the specified obstacle from the environment
Source§

impl ObstacleSpace<f64, EuclideanSpace<f64, N>, N> for ObstacleSpace3df64

Source§

type Obs = Obstacle3df64

The type of obstacles in the space
Source§

fn empty() -> Self

Build a new obstacle space with no obstacles in it
Source§

fn add_obstacles<I>(&mut self, obstacles: I)
where I: IntoIterator<Item = (ObstacleId, Self::Obs)>,

Add multiple obstacles to the environment Read more
Source§

fn get_obstacles(&self, obstacles: &[ObstacleId]) -> Vec<&Self::Obs>

Gets references to the given obstacle id’s Read more
Source§

fn get_sensed_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all yet sensed obstacles in the environement
Source§

fn get_not_sensed_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all not yet sensed obstacles in the environement
Source§

fn get_all_obstacle_ids(&self) -> Vec<ObstacleId>

Get vector of all valid obstacle ids
Source§

fn remove_obstacles(&mut self, obstacles: &[ObstacleId])

Removes the specified obstacle id’s if they have been added previously
Source§

fn count(&self) -> usize

The total number of obstacles, regardless of sensing
Source§

fn check_sensors<S>( &mut self, pose: &Vector<X, Const<N>, S>, radius: X, ) -> Vec<ObstacleId>
where S: Storage<X, Const<N>>,

Updates the internal obsacle to include obstacles that can be sensed at the given pose inside the radius Read more
Source§

fn new(obstacles: Vec<Self::Obs>) -> Self

Build a new obstacle space with the given obstacles
Source§

fn add_obstacle(&mut self, id: ObstacleId, obstacle: Self::Obs)

Add an obstacle to the environement Read more
Source§

fn get_obstacle(&self, id: ObstacleId) -> Option<&Self::Obs>

Optionally returns the specified obstacle id
Source§

fn get_obstacles_as_obstacle_space(&self, obstacles: &[ObstacleId]) -> Self

Gets a newly built obstacle_space only containing the given obstacle id’s
Source§

fn get_all_obstacles(&self) -> Vec<(ObstacleId, &Self::Obs)>

Copies out all obstacles with their respective ids
Source§

fn remove_obstacle(&mut self, id: ObstacleId)

Remove the specified obstacle from the environment

Auto Trait Implementations§

§

impl<X, const N: usize> Freeze for EuclideanSpace<X, N>
where X: Freeze,

§

impl<X, const N: usize> RefUnwindSafe for EuclideanSpace<X, N>

§

impl<X, const N: usize> Send for EuclideanSpace<X, N>
where X: Send, <X as SampleUniform>::Sampler: Send,

§

impl<X, const N: usize> Sync for EuclideanSpace<X, N>
where X: Sync, <X as SampleUniform>::Sampler: Sync,

§

impl<X, const N: usize> Unpin for EuclideanSpace<X, N>
where X: Unpin, <X as SampleUniform>::Sampler: Unpin,

§

impl<X, const N: usize> UnwindSafe for EuclideanSpace<X, N>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V