fcl_discrete_managers.h
Go to the documentation of this file.
1 
42 #ifndef TESSERACT_COLLISION_FCL_DISCRETE_MANAGERS_H
43 #define TESSERACT_COLLISION_FCL_DISCRETE_MANAGERS_H
44 
47 
49 {
52 {
53 public:
54  using Ptr = std::shared_ptr<FCLDiscreteBVHManager>;
55  using ConstPtr = std::shared_ptr<const FCLDiscreteBVHManager>;
56  using UPtr = std::unique_ptr<FCLDiscreteBVHManager>;
57  using ConstUPtr = std::unique_ptr<const FCLDiscreteBVHManager>;
58 
59  FCLDiscreteBVHManager(std::string name = "FCLDiscreteBVHManager");
60  ~FCLDiscreteBVHManager() override = default;
65 
66  std::string getName() const override final;
67 
68  DiscreteContactManager::UPtr clone() const override final;
69 
70  bool addCollisionObject(const std::string& name,
71  const int& mask_id,
72  const CollisionShapesConst& shapes,
73  const tesseract_common::VectorIsometry3d& shape_poses,
74  bool enabled = true) override final;
75 
76  const CollisionShapesConst& getCollisionObjectGeometries(const std::string& name) const override final;
77 
79  getCollisionObjectGeometriesTransforms(const std::string& name) const override final;
80 
81  bool hasCollisionObject(const std::string& name) const override final;
82 
83  bool removeCollisionObject(const std::string& name) override final;
84 
85  bool enableCollisionObject(const std::string& name) override final;
86 
87  bool disableCollisionObject(const std::string& name) override final;
88 
89  bool isCollisionObjectEnabled(const std::string& name) const override final;
90 
91  void setCollisionObjectsTransform(const std::string& name, const Eigen::Isometry3d& pose) override final;
92 
93  void setCollisionObjectsTransform(const std::vector<std::string>& names,
94  const tesseract_common::VectorIsometry3d& poses) override final;
95 
96  void setCollisionObjectsTransform(const tesseract_common::TransformMap& transforms) override final;
97 
98  const std::vector<std::string>& getCollisionObjects() const override final;
99 
100  void setActiveCollisionObjects(const std::vector<std::string>& names) override final;
101 
102  const std::vector<std::string>& getActiveCollisionObjects() const override final;
103 
104  void setCollisionMarginData(CollisionMarginData collision_margin_data) override final;
105 
106  const CollisionMarginData& getCollisionMarginData() const override final;
107 
109  const CollisionMarginPairData& pair_margin_data,
110  CollisionMarginPairOverrideType override_type = CollisionMarginPairOverrideType::REPLACE) override final;
111 
112  void setDefaultCollisionMargin(double default_collision_margin) override final;
113 
114  void setCollisionMarginPair(const std::string& name1,
115  const std::string& name2,
116  double collision_margin) override final;
117 
118  void incrementCollisionMargin(double increment) override final;
119 
120  void
121  setContactAllowedValidator(std::shared_ptr<const tesseract_common::ContactAllowedValidator> validator) override final;
122 
123  std::shared_ptr<const tesseract_common::ContactAllowedValidator> getContactAllowedValidator() const override final;
124 
125  void contactTest(ContactResultMap& collisions, const ContactRequest& request) override final;
126 
131  void addCollisionObject(const COW::Ptr& cow);
132 
133 private:
134  std::string name_;
135 
138 
141 
143  std::vector<std::string> active_;
144  std::vector<std::string> collision_objects_;
146  std::shared_ptr<const tesseract_common::ContactAllowedValidator> validator_;
148  std::size_t fcl_co_count_{ 0 };
151  std::vector<CollisionObjectRawPtr> static_update_;
152 
154  std::vector<CollisionObjectRawPtr> dynamic_update_;
155 
158 };
159 
160 } // namespace tesseract_collision::tesseract_collision_fcl
161 #endif // TESSERACT_COLLISION_FCL_DISCRETE_MANAGERS_H
VectorIsometry3d
AlignedVector< Eigen::Isometry3d > VectorIsometry3d
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getCollisionObjectGeometriesTransforms
const tesseract_common::VectorIsometry3d & getCollisionObjectGeometriesTransforms(const std::string &name) const override final
Get a collision objects collision geometries transforms.
Definition: fcl_discrete_managers.cpp:100
tesseract_collision::DiscreteContactManager::ConstUPtr
std::unique_ptr< const DiscreteContactManager > ConstUPtr
Definition: discrete_contact_manager.h:51
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::enableCollisionObject
bool enableCollisionObject(const std::string &name) override final
Enable an object.
Definition: fcl_discrete_managers.cpp:146
tesseract_common
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setCollisionMarginPair
void setCollisionMarginPair(const std::string &name1, const std::string &name2, double collision_margin) override final
Set the margin for a given contact pair.
Definition: fcl_discrete_managers.cpp:312
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getName
std::string getName() const override final
Get the name of the contact manager.
Definition: fcl_discrete_managers.cpp:57
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::incrementCollisionMargin
void incrementCollisionMargin(double increment) override final
Increment the collision margin data by some value.
Definition: fcl_discrete_managers.cpp:320
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setCollisionMarginPairData
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.
Definition: fcl_discrete_managers.cpp:299
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::collision_objects_
std::vector< std::string > collision_objects_
A list of the collision objects.
Definition: fcl_discrete_managers.h:144
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::dynamic_manager_
std::unique_ptr< fcl::BroadPhaseCollisionManagerd > dynamic_manager_
Broad-phase Collision Manager for active collision objects.
Definition: fcl_discrete_managers.h:140
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::~FCLDiscreteBVHManager
~FCLDiscreteBVHManager() override=default
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setCollisionObjectsTransform
void setCollisionObjectsTransform(const std::string &name, const Eigen::Isometry3d &pose) override final
Set a single collision object's transforms.
Definition: fcl_discrete_managers.cpp:177
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::collision_margin_data_
CollisionMarginData collision_margin_data_
The contact distance threshold.
Definition: fcl_discrete_managers.h:145
TransformMap
AlignedMap< std::string, Eigen::Isometry3d > TransformMap
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::operator=
FCLDiscreteBVHManager & operator=(const FCLDiscreteBVHManager &)=delete
discrete_contact_manager.h
This is the discrete contact manager base class.
tesseract_collision::DiscreteContactManager::ConstPtr
std::shared_ptr< const DiscreteContactManager > ConstPtr
Definition: discrete_contact_manager.h:49
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::contactTest
void contactTest(ContactResultMap &collisions, const ContactRequest &request) override final
Perform a contact test for all objects based.
Definition: fcl_discrete_managers.cpp:337
tesseract_collision::DiscreteContactManager
Definition: discrete_contact_manager.h:41
tesseract_common::CollisionMarginData
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::fcl_co_count_
std::size_t fcl_co_count_
The number fcl collision objects.
Definition: fcl_discrete_managers.h:148
BroadPhaseCollisionManagerd
BroadPhaseCollisionManager< double > BroadPhaseCollisionManagerd
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::hasCollisionObject
bool hasCollisionObject(const std::string &name) const override final
Find if a collision object already exists.
Definition: fcl_discrete_managers.cpp:107
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::clone
DiscreteContactManager::UPtr clone() const override final
Clone the manager.
Definition: fcl_discrete_managers.cpp:59
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setDefaultCollisionMargin
void setDefaultCollisionMargin(double default_collision_margin) override final
Set the default collision margin.
Definition: fcl_discrete_managers.cpp:306
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::onCollisionMarginDataChanged
void onCollisionMarginDataChanged()
This function will update internal data when margin data has changed.
Definition: fcl_discrete_managers.cpp:393
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::removeCollisionObject
bool removeCollisionObject(const std::string &name) override final
Remove an object from the checker.
Definition: fcl_discrete_managers.cpp:112
tesseract_collision::ContactResultMap
This structure hold contact results for link pairs.
Definition: types.h:155
tesseract_common::CollisionMarginPairOverrideType
CollisionMarginPairOverrideType
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::disableCollisionObject
bool disableCollisionObject(const std::string &name) override final
Disable an object.
Definition: fcl_discrete_managers.cpp:157
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::name_
std::string name_
Definition: fcl_discrete_managers.h:134
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getCollisionMarginData
const CollisionMarginData & getCollisionMarginData() const override final
Get the contact distance threshold.
Definition: fcl_discrete_managers.cpp:297
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setCollisionMarginData
void setCollisionMarginData(CollisionMarginData collision_margin_data) override final
Set the contact distance threshold.
Definition: fcl_discrete_managers.cpp:291
tesseract_collision::tesseract_collision_fcl::Link2COW
std::map< std::string, COW::Ptr > Link2COW
Definition: fcl_utils.h:192
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::dynamic_update_
std::vector< CollisionObjectRawPtr > dynamic_update_
This is used to store dynamic collision objects to update.
Definition: fcl_discrete_managers.h:154
tesseract_collision::tesseract_collision_fcl
Definition: fcl_collision_geometry_cache.h:42
tesseract_collision::CollisionShapesConst
std::vector< CollisionShapeConstPtr > CollisionShapesConst
Definition: types.h:51
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::static_manager_
std::unique_ptr< fcl::BroadPhaseCollisionManagerd > static_manager_
Broad-phase Collision Manager for active collision objects.
Definition: fcl_discrete_managers.h:137
fcl_utils.h
Tesseract ROS FCL Utility Functions.
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getCollisionObjectGeometries
const CollisionShapesConst & getCollisionObjectGeometries(const std::string &name) const override final
Get a collision objects collision geometries.
Definition: fcl_discrete_managers.cpp:92
tesseract_common::CollisionMarginPairData
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::active_
std::vector< std::string > active_
A list of the active collision objects.
Definition: fcl_discrete_managers.h:143
tesseract_collision::tesseract_collision_fcl::CollisionObjectWrapper
This is a Tesseract link collision object wrapper which add items specific to tesseract....
Definition: fcl_utils.h:77
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::addCollisionObject
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.
Definition: fcl_discrete_managers.cpp:73
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setActiveCollisionObjects
void setActiveCollisionObjects(const std::vector< std::string > &names) override final
Set which collision objects can move.
Definition: fcl_discrete_managers.cpp:277
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::static_update_
std::vector< CollisionObjectRawPtr > static_update_
This is used to store static collision objects to update.
Definition: fcl_discrete_managers.h:151
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getActiveCollisionObjects
const std::vector< std::string > & getActiveCollisionObjects() const override final
Get which collision objects can move.
Definition: fcl_discrete_managers.cpp:289
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::link2cow_
Link2COW link2cow_
A map of all (static and active) collision objects being managed.
Definition: fcl_discrete_managers.h:142
tesseract_collision::DiscreteContactManager::UPtr
std::unique_ptr< DiscreteContactManager > UPtr
Definition: discrete_contact_manager.h:50
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::validator_
std::shared_ptr< const tesseract_common::ContactAllowedValidator > validator_
The is allowed collision function.
Definition: fcl_discrete_managers.h:146
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getCollisionObjects
const std::vector< std::string > & getCollisionObjects() const override final
Get all collision objects.
Definition: fcl_discrete_managers.cpp:275
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::FCLDiscreteBVHManager
FCLDiscreteBVHManager(std::string name="FCLDiscreteBVHManager")
Definition: fcl_discrete_managers.cpp:50
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::getContactAllowedValidator
std::shared_ptr< const tesseract_common::ContactAllowedValidator > getContactAllowedValidator() const override final
Get the active function for determining if two links are allowed to be in collision.
Definition: fcl_discrete_managers.cpp:332
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager
A FCL implementation of the discrete contact manager.
Definition: fcl_discrete_managers.h:51
tesseract_collision::DiscreteContactManager::Ptr
std::shared_ptr< DiscreteContactManager > Ptr
Definition: discrete_contact_manager.h:48
fcl
tesseract_collision::ContactRequest
The ContactRequest struct.
Definition: types.h:300
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::isCollisionObjectEnabled
bool isCollisionObjectEnabled(const std::string &name) const override final
Check if collision object is enabled.
Definition: fcl_discrete_managers.cpp:168
tesseract_collision::tesseract_collision_fcl::FCLDiscreteBVHManager::setContactAllowedValidator
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.
Definition: fcl_discrete_managers.cpp:326


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