Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager Class Reference

A FCL implementation of the discrete contact manager. More...

#include <fcl_discrete_managers.h>

Inheritance diagram for tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager:
Inheritance graph
[legend]

Public Types

using ConstPtr = std::shared_ptr< const FCLDiscreteBVHManager >
 
using ConstUPtr = std::unique_ptr< const FCLDiscreteBVHManager >
 
using Ptr = std::shared_ptr< FCLDiscreteBVHManager >
 
using UPtr = std::unique_ptr< FCLDiscreteBVHManager >
 
- Public Types inherited from tesseract_collision::DiscreteContactManager
using ConstPtr = std::shared_ptr< const DiscreteContactManager >
 
using ConstUPtr = std::unique_ptr< const DiscreteContactManager >
 
using Ptr = std::shared_ptr< DiscreteContactManager >
 
using UPtr = std::unique_ptr< DiscreteContactManager >
 

Public Member Functions

void addCollisionObject (const COW::Ptr &cow)
 Add a fcl collision object to the manager. More...
 
bool addCollisionObject (const std::string &name, const int &mask_id, const CollisionShapesConst &shapes, const tesseract_common::VectorIsometry3d &shape_poses, bool enabled=true) override final
 Add a object to the checker. More...
 
DiscreteContactManager::UPtr clone () const override final
 Clone the manager. More...
 
void contactTest (ContactResultMap &collisions, const ContactRequest &request) override final
 Perform a contact test for all objects based. More...
 
bool disableCollisionObject (const std::string &name) override final
 Disable an object. More...
 
bool enableCollisionObject (const std::string &name) override final
 Enable an object. More...
 
 FCLDiscreteBVHManager (const FCLDiscreteBVHManager &)=delete
 
 FCLDiscreteBVHManager (FCLDiscreteBVHManager &&)=delete
 
 FCLDiscreteBVHManager (std::string name="FCLDiscreteBVHManager")
 
const std::vector< std::string > & getActiveCollisionObjects () const override final
 Get which collision objects can move. More...
 
const CollisionMarginDatagetCollisionMarginData () const override final
 Get the contact distance threshold. More...
 
const CollisionShapesConstgetCollisionObjectGeometries (const std::string &name) const override final
 Get a collision objects collision geometries. More...
 
const tesseract_common::VectorIsometry3dgetCollisionObjectGeometriesTransforms (const std::string &name) const override final
 Get a collision objects collision geometries transforms. More...
 
const std::vector< std::string > & getCollisionObjects () const override final
 Get all collision objects. More...
 
std::shared_ptr< const tesseract_common::ContactAllowedValidatorgetContactAllowedValidator () const override final
 Get the active function for determining if two links are allowed to be in collision. More...
 
std::string getName () const override final
 Get the name of the contact manager. More...
 
bool hasCollisionObject (const std::string &name) const override final
 Find if a collision object already exists. More...
 
void incrementCollisionMargin (double increment) override final
 Increment the collision margin data by some value. More...
 
bool isCollisionObjectEnabled (const std::string &name) const override final
 Check if collision object is enabled. More...
 
FCLDiscreteBVHManageroperator= (const FCLDiscreteBVHManager &)=delete
 
FCLDiscreteBVHManageroperator= (FCLDiscreteBVHManager &&)=delete
 
bool removeCollisionObject (const std::string &name) override final
 Remove an object from the checker. More...
 
void setActiveCollisionObjects (const std::vector< std::string > &names) override final
 Set which collision objects can move. More...
 
void setCollisionMarginData (CollisionMarginData collision_margin_data) override final
 Set the contact distance threshold. More...
 
void setCollisionMarginPair (const std::string &name1, const std::string &name2, double collision_margin) override final
 Set the margin for a given contact pair. More...
 
void setCollisionMarginPairData (const CollisionMarginPairData &pair_margin_data, CollisionMarginPairOverrideType override_type=CollisionMarginPairOverrideType::REPLACE) override final
 Set the contact distance thresholds for which collision should be considered on a per pair basis. More...
 
void setCollisionObjectsTransform (const std::string &name, const Eigen::Isometry3d &pose) override final
 Set a single collision object's transforms. More...
 
void setCollisionObjectsTransform (const std::vector< std::string > &names, const tesseract_common::VectorIsometry3d &poses) override final
 Set a series of collision object's transforms. More...
 
void setCollisionObjectsTransform (const tesseract_common::TransformMap &transforms) override final
 Set a series of collision object's transforms. More...
 
void setContactAllowedValidator (std::shared_ptr< const tesseract_common::ContactAllowedValidator > validator) override final
 Set the active function for determining if two links are allowed to be in collision. More...
 
void setDefaultCollisionMargin (double default_collision_margin) override final
 Set the default collision margin. More...
 
 ~FCLDiscreteBVHManager () override=default
 
- Public Member Functions inherited from tesseract_collision::DiscreteContactManager
virtual void applyContactManagerConfig (const ContactManagerConfig &config)
 Applies settings in the config. More...
 
 DiscreteContactManager ()=default
 
 DiscreteContactManager (const DiscreteContactManager &)=delete
 
 DiscreteContactManager (DiscreteContactManager &&)=delete
 
DiscreteContactManageroperator= (const DiscreteContactManager &)=delete
 
DiscreteContactManageroperator= (DiscreteContactManager &&)=delete
 
virtual ~DiscreteContactManager ()=default
 

Private Member Functions

void onCollisionMarginDataChanged ()
 This function will update internal data when margin data has changed. More...
 

Private Attributes

std::vector< std::string > active_
 A list of the active collision objects. More...
 
CollisionMarginData collision_margin_data_
 The contact distance threshold. More...
 
std::vector< std::string > collision_objects_
 A list of the collision objects. More...
 
std::unique_ptr< fcl::BroadPhaseCollisionManagerddynamic_manager_
 Broad-phase Collision Manager for active collision objects. More...
 
std::vector< CollisionObjectRawPtrdynamic_update_
 This is used to store dynamic collision objects to update. More...
 
std::size_t fcl_co_count_ { 0 }
 The number fcl collision objects. More...
 
Link2COW link2cow_
 A map of all (static and active) collision objects being managed. More...
 
std::string name_
 
std::unique_ptr< fcl::BroadPhaseCollisionManagerdstatic_manager_
 Broad-phase Collision Manager for active collision objects. More...
 
std::vector< CollisionObjectRawPtrstatic_update_
 This is used to store static collision objects to update. More...
 
std::shared_ptr< const tesseract_common::ContactAllowedValidatorvalidator_
 The is allowed collision function. More...
 

Detailed Description

A FCL implementation of the discrete contact manager.

Definition at line 51 of file fcl_discrete_managers.h.

Member Typedef Documentation

◆ ConstPtr

Definition at line 55 of file fcl_discrete_managers.h.

◆ ConstUPtr

Definition at line 57 of file fcl_discrete_managers.h.

◆ Ptr

Definition at line 54 of file fcl_discrete_managers.h.

◆ UPtr

Definition at line 56 of file fcl_discrete_managers.h.

Constructor & Destructor Documentation

◆ FCLDiscreteBVHManager() [1/3]

tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::FCLDiscreteBVHManager ( std::string  name = "FCLDiscreteBVHManager")

Definition at line 50 of file fcl_discrete_managers.cpp.

◆ ~FCLDiscreteBVHManager()

tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::~FCLDiscreteBVHManager ( )
overridedefault

◆ FCLDiscreteBVHManager() [2/3]

tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::FCLDiscreteBVHManager ( const FCLDiscreteBVHManager )
delete

◆ FCLDiscreteBVHManager() [3/3]

tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::FCLDiscreteBVHManager ( FCLDiscreteBVHManager &&  )
delete

Member Function Documentation

◆ addCollisionObject() [1/2]

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::addCollisionObject ( const COW::Ptr cow)

Add a fcl collision object to the manager.

Parameters
cowThe tesseract fcl collision object

Definition at line 362 of file fcl_discrete_managers.cpp.

◆ addCollisionObject() [2/2]

bool tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::addCollisionObject ( const std::string &  name,
const int &  mask_id,
const CollisionShapesConst shapes,
const tesseract_common::VectorIsometry3d shape_poses,
bool  enabled = true 
)
finaloverridevirtual

Add a object to the checker.

Parameters
nameThe name of the object, must be unique.
mask_idUser defined id which gets stored in the results structure.
shapesA vector of shapes that make up the collision object.
shape_posesA vector of poses for each shape, must be same length as shapes
Returns
true if successfully added, otherwise false.

Implements tesseract_collision::DiscreteContactManager.

Definition at line 73 of file fcl_discrete_managers.cpp.

◆ clone()

DiscreteContactManager::UPtr tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::clone ( ) const
finaloverridevirtual

Clone the manager.

This is to be used for multi threaded application. A user should make a clone for each thread.

Implements tesseract_collision::DiscreteContactManager.

Definition at line 59 of file fcl_discrete_managers.cpp.

◆ contactTest()

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::contactTest ( ContactResultMap collisions,
const ContactRequest request 
)
finaloverridevirtual

Perform a contact test for all objects based.

Parameters
collisionsThe contact results data
requestThe contact request data

Implements tesseract_collision::DiscreteContactManager.

Definition at line 337 of file fcl_discrete_managers.cpp.

◆ disableCollisionObject()

bool tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::disableCollisionObject ( const std::string &  name)
finaloverridevirtual

Disable an object.

Parameters
nameThe name of the object

Implements tesseract_collision::DiscreteContactManager.

Definition at line 157 of file fcl_discrete_managers.cpp.

◆ enableCollisionObject()

bool tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::enableCollisionObject ( const std::string &  name)
finaloverridevirtual

Enable an object.

Parameters
nameThe name of the object

Implements tesseract_collision::DiscreteContactManager.

Definition at line 146 of file fcl_discrete_managers.cpp.

◆ getActiveCollisionObjects()

const std::vector< std::string > & tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getActiveCollisionObjects ( ) const
finaloverridevirtual

Get which collision objects can move.

Returns
A list of collision object names

Implements tesseract_collision::DiscreteContactManager.

Definition at line 289 of file fcl_discrete_managers.cpp.

◆ getCollisionMarginData()

const CollisionMarginData & tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getCollisionMarginData ( ) const
finaloverridevirtual

Get the contact distance threshold.

Returns
The contact distance

Implements tesseract_collision::DiscreteContactManager.

Definition at line 297 of file fcl_discrete_managers.cpp.

◆ getCollisionObjectGeometries()

const CollisionShapesConst & tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getCollisionObjectGeometries ( const std::string &  name) const
finaloverridevirtual

Get a collision objects collision geometries.

Parameters
nameThe collision objects name
Returns
A vector of collision geometries. The vector will be empty if the collision object is not found.

Implements tesseract_collision::DiscreteContactManager.

Definition at line 92 of file fcl_discrete_managers.cpp.

◆ getCollisionObjectGeometriesTransforms()

const tesseract_common::VectorIsometry3d & tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getCollisionObjectGeometriesTransforms ( const std::string &  name) const
finaloverridevirtual

Get a collision objects collision geometries transforms.

Parameters
nameThe collision objects name
Returns
A vector of collision geometries transforms. The vector will be empty if the collision object is not found.

Implements tesseract_collision::DiscreteContactManager.

Definition at line 100 of file fcl_discrete_managers.cpp.

◆ getCollisionObjects()

const std::vector< std::string > & tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getCollisionObjects ( ) const
finaloverridevirtual

Get all collision objects.

Returns
A list of collision object names

Implements tesseract_collision::DiscreteContactManager.

Definition at line 275 of file fcl_discrete_managers.cpp.

◆ getContactAllowedValidator()

std::shared_ptr< const tesseract_common::ContactAllowedValidator > tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getContactAllowedValidator ( ) const
finaloverridevirtual

Get the active function for determining if two links are allowed to be in collision.

Implements tesseract_collision::DiscreteContactManager.

Definition at line 332 of file fcl_discrete_managers.cpp.

◆ getName()

std::string tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getName ( ) const
finaloverridevirtual

Get the name of the contact manager.

Returns
The name

Implements tesseract_collision::DiscreteContactManager.

Definition at line 57 of file fcl_discrete_managers.cpp.

◆ hasCollisionObject()

bool tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::hasCollisionObject ( const std::string &  name) const
finaloverridevirtual

Find if a collision object already exists.

Parameters
nameThe name of the collision object
Returns
true if it exists, otherwise false.

Implements tesseract_collision::DiscreteContactManager.

Definition at line 107 of file fcl_discrete_managers.cpp.

◆ incrementCollisionMargin()

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::incrementCollisionMargin ( double  increment)
finaloverridevirtual

Increment the collision margin data by some value.

Parameters
incrementThe value to increment the collision margin value

Implements tesseract_collision::DiscreteContactManager.

Definition at line 320 of file fcl_discrete_managers.cpp.

◆ isCollisionObjectEnabled()

bool tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::isCollisionObjectEnabled ( const std::string &  name) const
finaloverridevirtual

Check if collision object is enabled.

Parameters
nameThe name of the object
Returns
True if enabled, otherwise false

Implements tesseract_collision::DiscreteContactManager.

Definition at line 168 of file fcl_discrete_managers.cpp.

◆ onCollisionMarginDataChanged()

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::onCollisionMarginDataChanged ( )
private

This function will update internal data when margin data has changed.

Definition at line 393 of file fcl_discrete_managers.cpp.

◆ operator=() [1/2]

FCLDiscreteBVHManager& tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::operator= ( const FCLDiscreteBVHManager )
delete

◆ operator=() [2/2]

FCLDiscreteBVHManager& tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::operator= ( FCLDiscreteBVHManager &&  )
delete

◆ removeCollisionObject()

bool tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::removeCollisionObject ( const std::string &  name)
finaloverridevirtual

Remove an object from the checker.

Parameters
nameThe name of the object
Returns
true if successfully removed, otherwise false.

Implements tesseract_collision::DiscreteContactManager.

Definition at line 112 of file fcl_discrete_managers.cpp.

◆ setActiveCollisionObjects()

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setActiveCollisionObjects ( const std::vector< std::string > &  names)
finaloverridevirtual

Set which collision objects can move.

Parameters
namesA vector of collision object names

Implements tesseract_collision::DiscreteContactManager.

Definition at line 277 of file fcl_discrete_managers.cpp.

◆ setCollisionMarginData()

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setCollisionMarginData ( CollisionMarginData  collision_margin_data)
finaloverridevirtual

Set the contact distance threshold.

Parameters
collision_margin_dataThe contact distance

Implements tesseract_collision::DiscreteContactManager.

Definition at line 291 of file fcl_discrete_managers.cpp.

◆ setCollisionMarginPair()

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setCollisionMarginPair ( const std::string &  name1,
const std::string &  name2,
double  collision_margin 
)
finaloverridevirtual

Set the margin for a given contact pair.

The order of the object names does not matter, that is handled internal to the class.

Parameters
obj1The first object name. Order doesn't matter
obj2The Second object name. Order doesn't matter
collision_margincontacts with distance < collision_margin are considered in collision

Implements tesseract_collision::DiscreteContactManager.

Definition at line 312 of file fcl_discrete_managers.cpp.

◆ setCollisionMarginPairData()

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setCollisionMarginPairData ( const CollisionMarginPairData pair_margin_data,
CollisionMarginPairOverrideType  override_type = CollisionMarginPairOverrideType::REPLACE 
)
finaloverridevirtual

Set the contact distance thresholds for which collision should be considered on a per pair basis.

Parameters
pair_margin_dataContains the pair collision margins that will replace the current settings
override_typeThis determines how the provided CollisionMarginData is applied

Implements tesseract_collision::DiscreteContactManager.

Definition at line 299 of file fcl_discrete_managers.cpp.

◆ setCollisionObjectsTransform() [1/3]

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setCollisionObjectsTransform ( const std::string &  name,
const Eigen::Isometry3d &  pose 
)
finaloverridevirtual

Set a single collision object's transforms.

Parameters
nameThe name of the object
poseThe transformation in world

Implements tesseract_collision::DiscreteContactManager.

Definition at line 177 of file fcl_discrete_managers.cpp.

◆ setCollisionObjectsTransform() [2/3]

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setCollisionObjectsTransform ( const std::vector< std::string > &  names,
const tesseract_common::VectorIsometry3d poses 
)
finaloverridevirtual

Set a series of collision object's transforms.

Parameters
namesThe name of the object
posesThe transformation in world

Implements tesseract_collision::DiscreteContactManager.

Definition at line 201 of file fcl_discrete_managers.cpp.

◆ setCollisionObjectsTransform() [3/3]

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setCollisionObjectsTransform ( const tesseract_common::TransformMap transforms)
finaloverridevirtual

Set a series of collision object's transforms.

Parameters
transformsA transform map <name, pose>

Implements tesseract_collision::DiscreteContactManager.

Definition at line 239 of file fcl_discrete_managers.cpp.

◆ setContactAllowedValidator()

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setContactAllowedValidator ( std::shared_ptr< const tesseract_common::ContactAllowedValidator validator)
finaloverridevirtual

Set the active function for determining if two links are allowed to be in collision.

Implements tesseract_collision::DiscreteContactManager.

Definition at line 326 of file fcl_discrete_managers.cpp.

◆ setDefaultCollisionMargin()

void tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setDefaultCollisionMargin ( double  default_collision_margin)
finaloverridevirtual

Set the default collision margin.

Parameters
default_collision_marginNew default collision margin

Implements tesseract_collision::DiscreteContactManager.

Definition at line 306 of file fcl_discrete_managers.cpp.

Member Data Documentation

◆ active_

std::vector<std::string> tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::active_
private

A list of the active collision objects.

Definition at line 143 of file fcl_discrete_managers.h.

◆ collision_margin_data_

CollisionMarginData tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::collision_margin_data_
private

The contact distance threshold.

Definition at line 145 of file fcl_discrete_managers.h.

◆ collision_objects_

std::vector<std::string> tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::collision_objects_
private

A list of the collision objects.

Definition at line 144 of file fcl_discrete_managers.h.

◆ dynamic_manager_

std::unique_ptr<fcl::BroadPhaseCollisionManagerd> tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::dynamic_manager_
private

Broad-phase Collision Manager for active collision objects.

Definition at line 140 of file fcl_discrete_managers.h.

◆ dynamic_update_

std::vector<CollisionObjectRawPtr> tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::dynamic_update_
private

This is used to store dynamic collision objects to update.

Definition at line 154 of file fcl_discrete_managers.h.

◆ fcl_co_count_

std::size_t tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::fcl_co_count_ { 0 }
private

The number fcl collision objects.

Definition at line 148 of file fcl_discrete_managers.h.

◆ link2cow_

Link2COW tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::link2cow_
private

A map of all (static and active) collision objects being managed.

Definition at line 142 of file fcl_discrete_managers.h.

◆ name_

std::string tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::name_
private

Definition at line 134 of file fcl_discrete_managers.h.

◆ static_manager_

std::unique_ptr<fcl::BroadPhaseCollisionManagerd> tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::static_manager_
private

Broad-phase Collision Manager for active collision objects.

Definition at line 137 of file fcl_discrete_managers.h.

◆ static_update_

std::vector<CollisionObjectRawPtr> tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::static_update_
private

This is used to store static collision objects to update.

Definition at line 151 of file fcl_discrete_managers.h.

◆ validator_

std::shared_ptr<const tesseract_common::ContactAllowedValidator> tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::validator_
private

The is allowed collision function.

Definition at line 146 of file fcl_discrete_managers.h.


The documentation for this class was generated from the following files:


tesseract_collision
Author(s): Levi Armstrong
autogenerated on Sun May 18 2025 03:01:53