Drake

The underlying engine for performing geometric proximity queries. More...
#include <drake/geometry/proximity_engine.h>
Public Member Functions  
ProximityEngine ()  
~ProximityEngine ()  
ProximityEngine (const ProximityEngine &other)  
Construct a deep copy of the provided other engine. More...  
ProximityEngine &  operator= (const ProximityEngine &other) 
Set this engine to be a deep copy of the other engine. More...  
ProximityEngine (ProximityEngine &&other) noexcept  
Construct an engine by moving the data of a source engine. More...  
ProximityEngine &  operator= (ProximityEngine &&other) noexcept 
Move assign a source engine to this engine. More...  
std::unique_ptr< ProximityEngine< AutoDiffXd > >  ToAutoDiffXd () const 
Returns an independent copy of this engine templated on the AutoDiffXd scalar type. More...  
void  UpdateWorldPoses (const std::vector< Isometry3< T >> &X_WG) 
Updates the poses for all of the dynamic geometries in the engine. More...  
template<typename T >  
ProximityEngine (ProximityEngine< T >::Impl *impl)  
template<typename T >  
ProximityEngine (const ProximityEngine< T > &other)  
template<typename T >  
ProximityEngine (ProximityEngine< T > &&other) noexcept  
Topology management  
GeometryIndex  AddDynamicGeometry (const Shape &shape) 
Adds the given shape to the engine's dynamic geometry. More...  
AnchoredGeometryIndex  AddAnchoredGeometry (const Shape &shape, const Isometry3< double > &X_WG) 
Adds the given shape to the engine's anchored geometry at the fixed pose given by X_WG (in the world frame W). More...  
int  num_geometries () const 
Reports the total number of geometries in the engine – dynamic and anchored (spanning all sources). More...  
int  num_dynamic () const 
Reports the number of dynamic geometries (spanning all sources). More...  
int  num_anchored () const 
Reports the number of anchored geometries (spanning all sources). More...  
void  set_distance_tolerance (double tol) 
The distance (signed/unsigned/penetration distance) is generally computed from an iterative process. More...  
double  distance_tolerance () const 
Signed Distance Queries  
See Signed Distance Query for more details.  
std::vector< SignedDistancePair< double > >  ComputeSignedDistancePairwiseClosestPoints (const std::vector< GeometryId > &dynamic_map, const std::vector< GeometryId > &anchored_map) const 
Determines all the closest points between any pair of bodies/elements. More...  
Collision Queries  
These queries detect collisions between geometry. Two geometries collide if they overlap each other and are not explicitly excluded through collision filtering. These algorithms find those colliding cases, characterize them, and report the essential characteristics of that collision.  
std::vector< PenetrationAsPointPair< double > >  ComputePointPairPenetration (const std::vector< GeometryId > &dynamic_map, const std::vector< GeometryId > &anchored_map) const 
Computes the penetrations across all pairs of geometries in the world. More...  
Collision filters  
This interface provides the mechanism through which pairs of geometries are removed from the "candidate pair set" for collision detection. See Scene Graph Collision Filtering for more details.  
void  ExcludeCollisionsWithin (const std::unordered_set< GeometryIndex > &dynamic, const std::unordered_set< AnchoredGeometryIndex > &anchored) 
Excludes geometry pairs from collision evaluation by updating the candidate pair set C = C  P , where P = {(gᵢ, gⱼ)}, ∀ gᵢ, gⱼ ∈ G and G = dynamic ⋃ anchored = {g₀, g₁, ..., gₙ} . More...  
void  ExcludeCollisionsBetween (const std::unordered_set< GeometryIndex > &dynamic1, const std::unordered_set< AnchoredGeometryIndex > &anchored1, const std::unordered_set< GeometryIndex > &dynamic2, const std::unordered_set< AnchoredGeometryIndex > &anchored2) 
Excludes geometry pairs from collision evaluation by updating the candidate pair set C = C  P , where P = {(a, b)}, ∀ a ∈ A, b ∈ B and A = dynamic1 ⋃ anchored1 = {a₀, a₁, ..., aₘ} and B = dynamic2 ⋃ anchored2 = {b₀, b₁, ..., bₙ} . More...  
Friends  
class  GeometryStateCollisionFilterAttorney 
template<typename >  
class  ProximityEngine 
class  ProximityEngineTester 
The underlying engine for performing geometric proximity queries.
It owns the geometry instances and, once it has been provided with the poses of the geometry, it provides geometric queries on that geometry.
Proximity queries span a range of types, including:
T  The scalar type. Must be a valid Eigen scalar. 
Instantiated templates for the following kinds of T's are provided:
They are already available to link against in the containing library. No other values for T are currently supported.
ProximityEngine  (  ) 
~ProximityEngine  (  ) 
ProximityEngine  (  const ProximityEngine< T > &  other  ) 
Construct a deep copy of the provided other
engine.

noexcept 
Construct an engine by moving the data of a source engine.
The source engine will be returned to its defaultinitialized state.
ProximityEngine  (  ProximityEngine< T >::Impl *  impl  ) 
ProximityEngine  (  const ProximityEngine< T > &  other  ) 

noexcept 
AnchoredGeometryIndex AddAnchoredGeometry  (  const Shape &  shape, 
const Isometry3< double > &  X_WG  
) 
Adds the given shape
to the engine's anchored geometry at the fixed pose given by X_WG
(in the world frame W).
GeometryIndex AddDynamicGeometry  (  const Shape &  shape  ) 
Adds the given shape
to the engine's dynamic geometry.
std::vector< PenetrationAsPointPair< double > > ComputePointPairPenetration  (  const std::vector< GeometryId > &  dynamic_map, 
const std::vector< GeometryId > &  anchored_map  
)  const 
Computes the penetrations across all pairs of geometries in the world.
Only reports results for penetrating geometries; if two geometries are separated, there will be no result for that pair.
The penetrations are characterized by pairs of points (providing some measure of the penetration "depth" of the two objects – but not the overlapping volume.
This method is affected by collision filtering; geometry pairs that have been filtered will not produce contacts, even if their collision geometry is penetrating.
For two penetrating geometries g₁ and g₂, it is guaranteed that they will map to id_A
and id_B
in a fixed, repeatable manner.
[in]  dynamic_map  A map from geometry index to the corresponding global geometry identifier for dynamic geometries. 
[in]  anchored_map  A map from geometry index to the corresponding global geometry identifier for anchored geometries. 
std::vector< SignedDistancePair< double > > ComputeSignedDistancePairwiseClosestPoints  (  const std::vector< GeometryId > &  dynamic_map, 
const std::vector< GeometryId > &  anchored_map  
)  const 
Determines all the closest points between any pair of bodies/elements.
This function returns the signed distance function between each pair of elements in dynamic_map
(object whose pose will change), and between each pair between an element in dynamic_map
and another element in anchored_map
. The order and size of the closest points are invariant when the poses of the objects are changed.
[in]  dynamic_map  A map from geometry index to the corresponding global geometry identifier for dynamic geometries. 
[in]  anchored_map  A map from geometry index to the corresponding global geometry identifier for anchored geometries. 
double distance_tolerance  (  )  const 
void ExcludeCollisionsBetween  (  const std::unordered_set< GeometryIndex > &  dynamic1, 
const std::unordered_set< AnchoredGeometryIndex > &  anchored1,  
const std::unordered_set< GeometryIndex > &  dynamic2,  
const std::unordered_set< AnchoredGeometryIndex > &  anchored2  
) 
Excludes geometry pairs from collision evaluation by updating the candidate pair set C = C  P
, where P = {(a, b)}, ∀ a ∈ A, b ∈ B
and A = dynamic1 ⋃ anchored1 = {a₀, a₁, ..., aₘ}
and B = dynamic2 ⋃ anchored2 = {b₀, b₁, ..., bₙ}
.
This does not preclude collisions between members of the same set.
void ExcludeCollisionsWithin  (  const std::unordered_set< GeometryIndex > &  dynamic, 
const std::unordered_set< AnchoredGeometryIndex > &  anchored  
) 
Excludes geometry pairs from collision evaluation by updating the candidate pair set C = C  P
, where P = {(gᵢ, gⱼ)}, ∀ gᵢ, gⱼ ∈ G
and G = dynamic ⋃ anchored = {g₀, g₁, ..., gₙ}
.
[in]  dynamic  The set of dynamic geometry indices for which no collisions can be reported. 
[in]  anchored  The set of anchored geometry indices for which no collisions can be reported. 
int num_anchored  (  )  const 
Reports the number of anchored geometries (spanning all sources).
int num_dynamic  (  )  const 
Reports the number of dynamic geometries (spanning all sources).
int num_geometries  (  )  const 
Reports the total number of geometries in the engine – dynamic and anchored (spanning all sources).
ProximityEngine& operator=  (  const ProximityEngine< T > &  other  ) 
Set this
engine to be a deep copy of the other
engine.

noexcept 
Move assign a source engine to this engine.
The source engine will be returned to its defaultinitialized state.
void set_distance_tolerance  (  double  tol  ) 
The distance (signed/unsigned/penetration distance) is generally computed from an iterative process.
The distance_tolerance determines when the iterative process will terminate. As a rule of rule of thumb, one can generally assume that the answer will be within 10 * tol to the true answer.
std::unique_ptr< ProximityEngine< AutoDiffXd > > ToAutoDiffXd  (  )  const 
Returns an independent copy of this engine templated on the AutoDiffXd scalar type.
If the engine is already an AutoDiffXd engine, it is equivalent to using the copy constructor to create a duplicate on the heap.
void UpdateWorldPoses  (  const std::vector< Isometry3< T >> &  X_WG  ) 
Updates the poses for all of the dynamic geometries in the engine.
It is an invariant that every registered dynamic geometry, across all geometry sources, has a unique index that lies in the range [0, num_dynamic()  1]. Therefore, X_WG
should have size equal to num_dynamics() and any other length will cause program failure. The iᵗʰ entry contains the pose for the geometry whose GeometryIndex value is i
.
X_WG  The poses of each geometry G measured and expressed in the world frame W . 

friend 

friend 

friend 