Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager Class Reference

A BVH implementation of a bullet manager. More...

#include <bullet_discrete_bvh_manager.h>

Inheritance diagram for tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager:
Inheritance graph
[legend]

Public Types

using ConstPtr = std::shared_ptr< const BulletDiscreteBVHManager >
 
using ConstUPtr = std::unique_ptr< const BulletDiscreteBVHManager >
 
using Ptr = std::shared_ptr< BulletDiscreteBVHManager >
 
using UPtr = std::unique_ptr< BulletDiscreteBVHManager >
 
- 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)
 A a bullet 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...
 
 BulletDiscreteBVHManager (BulletDiscreteBVHManager &&)=delete
 
 BulletDiscreteBVHManager (const BulletDiscreteBVHManager &)=delete
 
 BulletDiscreteBVHManager (std::string name="BulletDiscreteBVHManager", TesseractCollisionConfigurationInfo config_info=TesseractCollisionConfigurationInfo())
 
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...
 
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...
 
BulletDiscreteBVHManageroperator= (BulletDiscreteBVHManager &&)=delete
 
BulletDiscreteBVHManageroperator= (const BulletDiscreteBVHManager &)=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...
 
 ~BulletDiscreteBVHManager () override
 
- 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...
 
std::unique_ptr< btBroadphaseInterface > broadphase_
 The bullet broadphase interface. More...
 
TesseractOverlapFilterCallback broadphase_overlap_cb_
 Filter collision objects before broadphase check. More...
 
TesseractCollisionConfiguration coll_config_
 The bullet collision configuration. More...
 
std::vector< std::string > collision_objects_
 A list of the collision objects. More...
 
TesseractCollisionConfigurationInfo config_info_
 The bullet collision configuration information. More...
 
ContactTestData contact_test_data_
 This is used when contactTest is called. It is also added as a user point to the collsion objects so it can be used to exit collision checking for compound shapes. More...
 
btDispatcherInfo dispatch_info_
 The bullet collision dispatcher configuration information. More...
 
std::unique_ptr< btCollisionDispatcher > dispatcher_
 The bullet collision dispatcher used for getting object to object collison algorithm. More...
 
Link2Cow link2cow_
 A map of all (static and active) collision objects being managed. More...
 
std::string name_
 

Detailed Description

A BVH implementation of a bullet manager.

Definition at line 51 of file bullet_discrete_bvh_manager.h.

Member Typedef Documentation

◆ ConstPtr

Definition at line 55 of file bullet_discrete_bvh_manager.h.

◆ ConstUPtr

Definition at line 57 of file bullet_discrete_bvh_manager.h.

◆ Ptr

Definition at line 54 of file bullet_discrete_bvh_manager.h.

◆ UPtr

Definition at line 56 of file bullet_discrete_bvh_manager.h.

Constructor & Destructor Documentation

◆ BulletDiscreteBVHManager() [1/3]

tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::BulletDiscreteBVHManager ( std::string  name = "BulletDiscreteBVHManager",
TesseractCollisionConfigurationInfo  config_info = TesseractCollisionConfigurationInfo() 
)

Definition at line 52 of file bullet_discrete_bvh_manager.cpp.

◆ ~BulletDiscreteBVHManager()

tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::~BulletDiscreteBVHManager ( )
override

Definition at line 74 of file bullet_discrete_bvh_manager.cpp.

◆ BulletDiscreteBVHManager() [2/3]

tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::BulletDiscreteBVHManager ( const BulletDiscreteBVHManager )
delete

◆ BulletDiscreteBVHManager() [3/3]

tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::BulletDiscreteBVHManager ( BulletDiscreteBVHManager &&  )
delete

Member Function Documentation

◆ addCollisionObject() [1/2]

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::addCollisionObject ( const COW::Ptr cow)

A a bullet collision object to the manager.

Parameters
cowThe tesseract bullet collision object

Definition at line 318 of file bullet_discrete_bvh_manager.cpp.

◆ addCollisionObject() [2/2]

bool tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 109 of file bullet_discrete_bvh_manager.cpp.

◆ clone()

DiscreteContactManager::UPtr tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 83 of file bullet_discrete_bvh_manager.cpp.

◆ contactTest()

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 300 of file bullet_discrete_bvh_manager.cpp.

◆ disableCollisionObject()

bool tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::disableCollisionObject ( const std::string &  name)
finaloverridevirtual

Disable an object.

Parameters
nameThe name of the object

Implements tesseract_collision::DiscreteContactManager.

Definition at line 180 of file bullet_discrete_bvh_manager.cpp.

◆ enableCollisionObject()

bool tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::enableCollisionObject ( const std::string &  name)
finaloverridevirtual

Enable an object.

Parameters
nameThe name of the object

Implements tesseract_collision::DiscreteContactManager.

Definition at line 164 of file bullet_discrete_bvh_manager.cpp.

◆ getActiveCollisionObjects()

const std::vector< std::string > & tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::getActiveCollisionObjects ( ) const
finaloverridevirtual

Get which collision objects can move.

Returns
A list of collision object names

Implements tesseract_collision::DiscreteContactManager.

Definition at line 250 of file bullet_discrete_bvh_manager.cpp.

◆ getCollisionMarginData()

const CollisionMarginData & tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::getCollisionMarginData ( ) const
finaloverridevirtual

Get the contact distance threshold.

Returns
The contact distance

Implements tesseract_collision::DiscreteContactManager.

Definition at line 258 of file bullet_discrete_bvh_manager.cpp.

◆ getCollisionObjectGeometries()

const CollisionShapesConst & tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 130 of file bullet_discrete_bvh_manager.cpp.

◆ getCollisionObjectGeometriesTransforms()

const tesseract_common::VectorIsometry3d & tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 138 of file bullet_discrete_bvh_manager.cpp.

◆ getCollisionObjects()

const std::vector< std::string > & tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::getCollisionObjects ( ) const
finaloverridevirtual

Get all collision objects.

Returns
A list of collision object names

Implements tesseract_collision::DiscreteContactManager.

Definition at line 234 of file bullet_discrete_bvh_manager.cpp.

◆ getContactAllowedValidator()

std::shared_ptr< const tesseract_common::ContactAllowedValidator > tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 296 of file bullet_discrete_bvh_manager.cpp.

◆ getName()

std::string tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::getName ( ) const
finaloverridevirtual

Get the name of the contact manager.

Returns
The name

Implements tesseract_collision::DiscreteContactManager.

Definition at line 81 of file bullet_discrete_bvh_manager.cpp.

◆ hasCollisionObject()

bool tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 145 of file bullet_discrete_bvh_manager.cpp.

◆ incrementCollisionMargin()

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 284 of file bullet_discrete_bvh_manager.cpp.

◆ isCollisionObjectEnabled()

bool tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 196 of file bullet_discrete_bvh_manager.cpp.

◆ onCollisionMarginDataChanged()

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::onCollisionMarginDataChanged ( )
private

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

Definition at line 328 of file bullet_discrete_bvh_manager.cpp.

◆ operator=() [1/2]

BulletDiscreteBVHManager& tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::operator= ( BulletDiscreteBVHManager &&  )
delete

◆ operator=() [2/2]

BulletDiscreteBVHManager& tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::operator= ( const BulletDiscreteBVHManager )
delete

◆ removeCollisionObject()

bool tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 150 of file bullet_discrete_bvh_manager.cpp.

◆ setActiveCollisionObjects()

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 236 of file bullet_discrete_bvh_manager.cpp.

◆ setCollisionMarginData()

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::setCollisionMarginData ( CollisionMarginData  collision_margin_data)
finaloverridevirtual

Set the contact distance threshold.

Parameters
collision_margin_dataThe contact distance

Implements tesseract_collision::DiscreteContactManager.

Definition at line 252 of file bullet_discrete_bvh_manager.cpp.

◆ setCollisionMarginPair()

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 276 of file bullet_discrete_bvh_manager.cpp.

◆ setCollisionMarginPairData()

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 263 of file bullet_discrete_bvh_manager.cpp.

◆ setCollisionObjectsTransform() [1/3]

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 205 of file bullet_discrete_bvh_manager.cpp.

◆ setCollisionObjectsTransform() [2/3]

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 220 of file bullet_discrete_bvh_manager.cpp.

◆ setCollisionObjectsTransform() [3/3]

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 228 of file bullet_discrete_bvh_manager.cpp.

◆ setContactAllowedValidator()

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 290 of file bullet_discrete_bvh_manager.cpp.

◆ setDefaultCollisionMargin()

void tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::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 270 of file bullet_discrete_bvh_manager.cpp.

Member Data Documentation

◆ active_

std::vector<std::string> tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::active_
private

A list of the active collision objects.

Definition at line 137 of file bullet_discrete_bvh_manager.h.

◆ broadphase_

std::unique_ptr<btBroadphaseInterface> tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::broadphase_
private

The bullet broadphase interface.

Definition at line 149 of file bullet_discrete_bvh_manager.h.

◆ broadphase_overlap_cb_

TesseractOverlapFilterCallback tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::broadphase_overlap_cb_
private

Filter collision objects before broadphase check.

Definition at line 160 of file bullet_discrete_bvh_manager.h.

◆ coll_config_

TesseractCollisionConfiguration tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::coll_config_
private

The bullet collision configuration.

Definition at line 147 of file bullet_discrete_bvh_manager.h.

◆ collision_objects_

std::vector<std::string> tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::collision_objects_
private

A list of the collision objects.

Definition at line 139 of file bullet_discrete_bvh_manager.h.

◆ config_info_

TesseractCollisionConfigurationInfo tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::config_info_
private

The bullet collision configuration information.

Definition at line 145 of file bullet_discrete_bvh_manager.h.

◆ contact_test_data_

ContactTestData tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::contact_test_data_
private

This is used when contactTest is called. It is also added as a user point to the collsion objects so it can be used to exit collision checking for compound shapes.

Definition at line 157 of file bullet_discrete_bvh_manager.h.

◆ dispatch_info_

btDispatcherInfo tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::dispatch_info_
private

The bullet collision dispatcher configuration information.

Definition at line 143 of file bullet_discrete_bvh_manager.h.

◆ dispatcher_

std::unique_ptr<btCollisionDispatcher> tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::dispatcher_
private

The bullet collision dispatcher used for getting object to object collison algorithm.

Definition at line 141 of file bullet_discrete_bvh_manager.h.

◆ link2cow_

Link2Cow tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::link2cow_
private

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

Definition at line 151 of file bullet_discrete_bvh_manager.h.

◆ name_

std::string tesseract_collision::tesseract_collision_bullet::BulletDiscreteBVHManager::name_
private

Definition at line 135 of file bullet_discrete_bvh_manager.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