bullet_utils.h
Go to the documentation of this file.
1 
43 #ifndef TESSERACT_COLLISION_BULLET_UTILS_H
44 #define TESSERACT_COLLISION_BULLET_UTILS_H
45 
48 #include <BulletCollision/CollisionShapes/btCollisionShape.h>
49 #include <BulletCollision/CollisionDispatch/btManifoldResult.h>
50 #include <btBulletCollisionCommon.h>
51 #include <console_bridge/console.h>
53 
57 
59 {
60 #define METERS
61 
62 const btScalar BULLET_MARGIN = btScalar(0.0);
63 const btScalar BULLET_SUPPORT_FUNC_TOLERANCE = btScalar(0.01) METERS;
64 const btScalar BULLET_LENGTH_TOLERANCE = btScalar(0.001) METERS;
65 const btScalar BULLET_EPSILON = btScalar(1e-3);
66 const btScalar BULLET_DEFAULT_CONTACT_DISTANCE = btScalar(0.05);
68 
69 btVector3 convertEigenToBt(const Eigen::Vector3d& v);
70 
71 Eigen::Vector3d convertBtToEigen(const btVector3& v);
72 
73 btQuaternion convertEigenToBt(const Eigen::Quaterniond& q);
74 
75 btMatrix3x3 convertEigenToBt(const Eigen::Matrix3d& r);
76 
77 Eigen::Matrix3d convertBtToEigen(const btMatrix3x3& r);
78 
79 btTransform convertEigenToBt(const Eigen::Isometry3d& t);
80 
81 Eigen::Isometry3d convertBtToEigen(const btTransform& t);
82 
89 class CollisionObjectWrapper : public btCollisionObject
90 {
91 public:
92  // LCOV_EXCL_START
93  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
94  // LCOV_EXCL_STOP
95 
96  using Ptr = std::shared_ptr<CollisionObjectWrapper>;
97  using ConstPtr = std::shared_ptr<const CollisionObjectWrapper>;
98 
99  CollisionObjectWrapper() = default;
100  CollisionObjectWrapper(std::string name,
101  const int& type_id,
102  CollisionShapesConst shapes,
104 
105  short int m_collisionFilterGroup{ btBroadphaseProxy::KinematicFilter };
107  bool m_enabled{ true };
108 
110  const std::string& getName() const;
112  const int& getTypeID() const;
114  bool sameObject(const CollisionObjectWrapper& other) const;
115 
116  const CollisionShapesConst& getCollisionGeometries() const;
117 
118  const tesseract_common::VectorIsometry3d& getCollisionGeometriesTransforms() const;
119 
125  void getAABB(btVector3& aabb_min, btVector3& aabb_max) const;
126 
131  std::shared_ptr<CollisionObjectWrapper> clone();
132 
133  void manage(const std::shared_ptr<BulletCollisionShape>& t);
134 
135  void manageReserve(std::size_t s);
136 
137 protected:
139  std::string m_name;
141  int m_type_id{ -1 };
142  /* @brief The shapes that define the collision object */
147  std::vector<std::shared_ptr<BulletCollisionShape>> m_data;
148 };
149 
151 using Link2Cow = std::map<std::string, COW::Ptr>;
152 using Link2ConstCow = std::map<std::string, COW::ConstPtr>;
153 
155 struct CastHullShape : public btConvexShape
156 {
157 public:
158  btConvexShape* m_shape;
159  btTransform m_t01;
160 
161  CastHullShape(btConvexShape* shape, const btTransform& t01);
162 
163  void updateCastTransform(const btTransform& t01);
164  btVector3 localGetSupportingVertex(const btVector3& vec) const override;
165 
167  void getAabb(const btTransform& t_w0, btVector3& aabbMin, btVector3& aabbMax) const override;
168 
169  const char* getName() const override;
170  btVector3 localGetSupportingVertexWithoutMargin(const btVector3& v) const override;
171 
172  // LCOV_EXCL_START
173  // notice that the vectors should be unit length
174  void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,
175  btVector3* supportVerticesOut,
176  int numVectors) const override;
177 
178  void getAabbSlow(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const override;
179 
180  void setLocalScaling(const btVector3& scaling) override;
181 
182  const btVector3& getLocalScaling() const override;
183 
184  void setMargin(btScalar margin) override;
185 
186  btScalar getMargin() const override;
187 
188  int getNumPreferredPenetrationDirections() const override;
189 
190  void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const override;
191 
192  void calculateLocalInertia(btScalar, btVector3&) const override;
193  // LCOV_EXCL_STOP
194 };
195 
196 void GetAverageSupport(const btConvexShape* shape,
197  const btVector3& localNormal,
198  btScalar& outsupport,
199  btVector3& outpt);
200 
207 btTransform getLinkTransformFromCOW(const btCollisionObjectWrapper* cow);
208 
217 bool needsCollisionCheck(const COW& cow1,
218  const COW& cow2,
219  const std::shared_ptr<const tesseract_common::ContactAllowedValidator>& validator,
220  bool verbose = false);
221 
222 btScalar addDiscreteSingleResult(btManifoldPoint& cp,
223  const btCollisionObjectWrapper* colObj0Wrap,
224  const btCollisionObjectWrapper* colObj1Wrap,
225  ContactTestData& collisions);
226 
237  const btCollisionObjectWrapper* cow,
238  const btVector3& pt_world,
239  const btVector3& normal_world,
240  const btTransform& link_tf_inv,
241  size_t link_index);
242 
243 btScalar addCastSingleResult(btManifoldPoint& cp,
244  const btCollisionObjectWrapper* colObj0Wrap,
245  int index0,
246  const btCollisionObjectWrapper* colObj1Wrap,
247  int index1,
248  ContactTestData& collisions);
249 
251 struct TesseractBridgedManifoldResult : public btManifoldResult
252 {
253  btCollisionWorld::ContactResultCallback&
254  m_resultCallback; // NOLINT(cppcoreguidelines-avoid-const-or-ref-data-members)
255 
256  TesseractBridgedManifoldResult(const btCollisionObjectWrapper* obj0Wrap,
257  const btCollisionObjectWrapper* obj1Wrap,
258  btCollisionWorld::ContactResultCallback& resultCallback);
259 
260  void addContactPoint(const btVector3& normalOnBInWorld, const btVector3& pointInWorld, btScalar depth) override;
261 };
262 
265 {
266  ContactTestData& collisions_; // NOLINT(cppcoreguidelines-avoid-const-or-ref-data-members)
268  bool verbose_;
269 
270  BroadphaseContactResultCallback(ContactTestData& collisions, double contact_distance, bool verbose = false);
271 
272  virtual ~BroadphaseContactResultCallback() = default;
277 
278  virtual bool needsCollision(const CollisionObjectWrapper* cow0, const CollisionObjectWrapper* cow1) const;
279 
280  virtual btScalar addSingleResult(btManifoldPoint& cp,
281  const btCollisionObjectWrapper* colObj0Wrap,
282  int partId0,
283  int index0,
284  const btCollisionObjectWrapper* colObj1Wrap,
285  int partId1,
286  int index1) = 0;
287 };
288 
290 {
291  DiscreteBroadphaseContactResultCallback(ContactTestData& collisions, double contact_distance, bool verbose = false);
292 
293  btScalar addSingleResult(btManifoldPoint& cp,
294  const btCollisionObjectWrapper* colObj0Wrap,
295  int partId0,
296  int index0,
297  const btCollisionObjectWrapper* colObj1Wrap,
298  int partId1,
299  int index1) override;
300 };
301 
303 {
304  CastBroadphaseContactResultCallback(ContactTestData& collisions, double contact_distance, bool verbose = false);
305 
306  btScalar addSingleResult(btManifoldPoint& cp,
307  const btCollisionObjectWrapper* colObj0Wrap,
308  int partId0,
309  int index0,
310  const btCollisionObjectWrapper* colObj1Wrap,
311  int partId1,
312  int index1) override;
313 };
314 
315 struct TesseractBroadphaseBridgedManifoldResult : public btManifoldResult
316 {
317  BroadphaseContactResultCallback& result_callback_; // NOLINT(cppcoreguidelines-avoid-const-or-ref-data-members)
318 
319  TesseractBroadphaseBridgedManifoldResult(const btCollisionObjectWrapper* obj0Wrap,
320  const btCollisionObjectWrapper* obj1Wrap,
321  BroadphaseContactResultCallback& result_callback);
322 
323  void addContactPoint(const btVector3& normalOnBInWorld, const btVector3& pointInWorld, btScalar depth) override;
324 };
325 
332 class TesseractCollisionPairCallback : public btOverlapCallback
333 {
334  const btDispatcherInfo& dispatch_info_; // NOLINT(cppcoreguidelines-avoid-const-or-ref-data-members)
335  btCollisionDispatcher* dispatcher_;
336  BroadphaseContactResultCallback& results_callback_; // NOLINT(cppcoreguidelines-avoid-const-or-ref-data-members)
337 
338 public:
339  TesseractCollisionPairCallback(const btDispatcherInfo& dispatchInfo,
340  btCollisionDispatcher* dispatcher,
341  BroadphaseContactResultCallback& results_callback);
342 
343  ~TesseractCollisionPairCallback() override = default;
348 
349  bool processOverlap(btBroadphasePair& pair) override;
350 };
351 
353 class TesseractOverlapFilterCallback : public btOverlapFilterCallback
354 {
355 public:
357 
358  bool needBroadphaseCollision(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) const override;
359 
360 private:
361  bool verbose_{ false };
362 };
363 
369 std::shared_ptr<BulletCollisionShape> createShapePrimitive(const CollisionShapeConstPtr& geom);
370 
376 void updateCollisionObjectFilters(const std::vector<std::string>& active, const COW::Ptr& cow);
377 
378 COW::Ptr createCollisionObject(const std::string& name,
379  const int& type_id,
380  const CollisionShapesConst& shapes,
381  const tesseract_common::VectorIsometry3d& shape_poses,
382  bool enabled = true);
383 
384 struct DiscreteCollisionCollector : public btCollisionWorld::ContactResultCallback
385 {
386  ContactTestData& collisions_; // NOLINT(cppcoreguidelines-avoid-const-or-ref-data-members)
387  const COW::Ptr cow_; // NOLINT(cppcoreguidelines-avoid-const-or-ref-data-members)
389  bool verbose_;
390 
392  COW::Ptr cow,
393  btScalar contact_distance,
394  bool verbose = false);
395 
396  btScalar addSingleResult(btManifoldPoint& cp,
397  const btCollisionObjectWrapper* colObj0Wrap,
398  int partId0,
399  int index0,
400  const btCollisionObjectWrapper* colObj1Wrap,
401  int partId1,
402  int index1) override;
403 
404  bool needsCollision(btBroadphaseProxy* proxy0) const override;
405 };
406 
407 struct CastCollisionCollector : public btCollisionWorld::ContactResultCallback
408 {
409  ContactTestData& collisions_; // NOLINT(cppcoreguidelines-avoid-const-or-ref-data-members)
410  const COW::Ptr cow_; // NOLINT(cppcoreguidelines-avoid-const-or-ref-data-members)
412  bool verbose_;
413 
414  CastCollisionCollector(ContactTestData& collisions, COW::Ptr cow, double contact_distance, bool verbose = false);
415 
416  btScalar addSingleResult(btManifoldPoint& cp,
417  const btCollisionObjectWrapper* colObj0Wrap,
418  int partId0,
419  int index0,
420  const btCollisionObjectWrapper* colObj1Wrap,
421  int partId1,
422  int index1) override;
423 
424  bool needsCollision(btBroadphaseProxy* proxy0) const override;
425 };
426 
428 
435 void updateBroadphaseAABB(const COW::Ptr& cow,
436  const std::unique_ptr<btBroadphaseInterface>& broadphase,
437  const std::unique_ptr<btCollisionDispatcher>& dispatcher);
438 
446  const std::unique_ptr<btBroadphaseInterface>& broadphase,
447  const std::unique_ptr<btCollisionDispatcher>& dispatcher);
448 
456  const std::unique_ptr<btBroadphaseInterface>& broadphase,
457  const std::unique_ptr<btCollisionDispatcher>& dispatcher);
458 
466 void updateCollisionObjectFilters(const std::vector<std::string>& active,
467  const COW::Ptr& cow,
468  const std::unique_ptr<btBroadphaseInterface>& broadphase,
469  const std::unique_ptr<btCollisionDispatcher>& dispatcher);
470 
480 void refreshBroadphaseProxy(const COW::Ptr& cow,
481  const std::unique_ptr<btBroadphaseInterface>& broadphase,
482  const std::unique_ptr<btCollisionDispatcher>& dispatcher);
483 } // namespace tesseract_collision::tesseract_collision_bullet
484 #endif // TESSERACT_COLLISION_BULLET_UTILS_H
tesseract_common::VectorIsometry3d
AlignedVector< Eigen::Isometry3d > VectorIsometry3d
tesseract_collision::tesseract_collision_bullet::CastBroadphaseContactResultCallback::CastBroadphaseContactResultCallback
CastBroadphaseContactResultCallback(ContactTestData &collisions, double contact_distance, bool verbose=false)
Definition: bullet_utils.cpp:1032
tesseract_collision::tesseract_collision_bullet::TesseractCollisionPairCallback::operator=
TesseractCollisionPairCallback & operator=(const TesseractCollisionPairCallback &)=delete
tesseract_collision::tesseract_collision_bullet::CastHullShape::batchedUnitVectorGetSupportingVertexWithoutMargin
void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const override
Definition: bullet_utils.cpp:591
tesseract_collision::tesseract_collision_bullet::TesseractBroadphaseBridgedManifoldResult::result_callback_
BroadphaseContactResultCallback & result_callback_
Definition: bullet_utils.h:317
tesseract_collision::tesseract_collision_bullet::Link2ConstCow
std::map< std::string, COW::ConstPtr > Link2ConstCow
Definition: bullet_utils.h:152
tesseract_collision::tesseract_collision_bullet::BroadphaseContactResultCallback::operator=
BroadphaseContactResultCallback & operator=(const BroadphaseContactResultCallback &)=delete
tesseract_collision::tesseract_collision_bullet::TesseractBridgedManifoldResult::TesseractBridgedManifoldResult
TesseractBridgedManifoldResult(const btCollisionObjectWrapper *obj0Wrap, const btCollisionObjectWrapper *obj1Wrap, btCollisionWorld::ContactResultCallback &resultCallback)
Definition: bullet_utils.cpp:945
tesseract_collision::tesseract_collision_bullet
Definition: bullet_cast_bvh_manager.h:48
tesseract_collision::tesseract_collision_bullet::CastHullShape::localGetSupportingVertexWithoutMargin
btVector3 localGetSupportingVertexWithoutMargin(const btVector3 &v) const override
Definition: bullet_utils.cpp:584
tesseract_collision::ContactTestData
This data is intended only to be used internal to the collision checkers as a container and should no...
Definition: types.h:328
tesseract_collision::tesseract_collision_bullet::DiscreteCollisionCollector::contact_distance_
double contact_distance_
Definition: bullet_utils.h:388
tesseract_collision::tesseract_collision_bullet::BroadphaseContactResultCallback::BroadphaseContactResultCallback
BroadphaseContactResultCallback(ContactTestData &collisions, double contact_distance, bool verbose=false)
Definition: bullet_utils.cpp:998
types.h
Tesseracts Collision Forward Declarations.
tesseract_collision::tesseract_collision_bullet::CastHullShape::setLocalScaling
void setLocalScaling(const btVector3 &scaling) override
Definition: bullet_utils.cpp:607
tesseract_collision::tesseract_collision_bullet::CastBroadphaseContactResultCallback::addSingleResult
btScalar addSingleResult(btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, int partId0, int index0, const btCollisionObjectWrapper *colObj1Wrap, int partId1, int index1) override
Definition: bullet_utils.cpp:1039
tesseract_collision::tesseract_collision_bullet::addCastSingleResult
btScalar addCastSingleResult(btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, int index0, const btCollisionObjectWrapper *colObj1Wrap, int index1, ContactTestData &collisions)
Definition: bullet_utils.cpp:850
tesseract_collision::tesseract_collision_bullet::CastHullShape
This is a casted collision shape used for checking if an object is collision free between two transfo...
Definition: bullet_utils.h:155
tesseract_collision::tesseract_collision_bullet::CastCollisionCollector
Definition: bullet_utils.h:407
tesseract_collision::tesseract_collision_bullet::CastCollisionCollector::needsCollision
bool needsCollision(btBroadphaseProxy *proxy0) const override
Definition: bullet_utils.cpp:1242
tesseract_collision::tesseract_collision_bullet::TesseractCollisionPairCallback::~TesseractCollisionPairCallback
~TesseractCollisionPairCallback() override=default
tesseract_collision::tesseract_collision_bullet::BULLET_EPSILON
const btScalar BULLET_EPSILON
Definition: bullet_utils.h:65
tesseract_collision::tesseract_collision_bullet::CastHullShape::calculateLocalInertia
void calculateLocalInertia(btScalar, btVector3 &) const override
Definition: bullet_utils.cpp:633
tesseract_collision::tesseract_collision_fcl::StaticFilter
@ StaticFilter
Definition: fcl_utils.h:68
tesseract_collision::tesseract_collision_bullet::TesseractOverlapFilterCallback
This class is used to filter broadphase.
Definition: bullet_utils.h:353
tesseract_collision::tesseract_collision_bullet::CollisionObjectWrapper::m_shapes
CollisionShapesConst m_shapes
The shapes poses information.
Definition: bullet_utils.h:143
tesseract_collision::tesseract_collision_bullet::updateBroadphaseAABB
void updateBroadphaseAABB(const COW::Ptr &cow, const std::unique_ptr< btBroadphaseInterface > &broadphase, const std::unique_ptr< btCollisionDispatcher > &dispatcher)
Update the Broadphase AABB for the input collision object.
Definition: bullet_utils.cpp:1355
tesseract_collision::tesseract_collision_bullet::CastCollisionCollector::cow_
const COW::Ptr cow_
Definition: bullet_utils.h:410
tesseract_collision::tesseract_collision_bullet::createCollisionObject
COW::Ptr createCollisionObject(const std::string &name, const int &type_id, const CollisionShapesConst &shapes, const tesseract_common::VectorIsometry3d &shape_poses, bool enabled=true)
Definition: bullet_utils.cpp:1161
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
tesseract_collision::tesseract_collision_bullet::BULLET_COMPOUND_USE_DYNAMIC_AABB
const bool BULLET_COMPOUND_USE_DYNAMIC_AABB
Definition: bullet_utils.h:67
tesseract_collision::tesseract_collision_bullet::CastHullShape::getMargin
btScalar getMargin() const override
Definition: bullet_utils.cpp:622
tesseract_collision::tesseract_collision_bullet::TesseractBroadphaseBridgedManifoldResult
Definition: bullet_utils.h:315
tesseract_collision::tesseract_collision_bullet::DiscreteCollisionCollector::collisions_
ContactTestData & collisions_
Definition: bullet_utils.h:386
tesseract_collision::tesseract_collision_bullet::createShapePrimitive
std::shared_ptr< BulletCollisionShape > createShapePrimitive(const CollisionShapeConstPtr &geom)
Create a bullet collision shape from tesseract collision shape.
Definition: bullet_utils.cpp:366
tesseract_collision::tesseract_collision_bullet::BroadphaseContactResultCallback::collisions_
ContactTestData & collisions_
Definition: bullet_utils.h:266
tesseract_collision::tesseract_collision_bullet::BroadphaseContactResultCallback::needsCollision
virtual bool needsCollision(const CollisionObjectWrapper *cow0, const CollisionObjectWrapper *cow1) const
Definition: bullet_utils.cpp:1005
tesseract_collision::tesseract_collision_bullet::makeCastCollisionObject
COW::Ptr makeCastCollisionObject(const COW::Ptr &cow)
Definition: bullet_utils.cpp:1249
tesseract_collision::tesseract_collision_bullet::addCollisionObjectToBroadphase
void addCollisionObjectToBroadphase(const COW::Ptr &cow, const std::unique_ptr< btBroadphaseInterface > &broadphase, const std::unique_ptr< btCollisionDispatcher > &dispatcher)
Add the collision object to broadphase.
Definition: bullet_utils.cpp:1382
tesseract_collision::tesseract_collision_bullet::TesseractBridgedManifoldResult::m_resultCallback
btCollisionWorld::ContactResultCallback & m_resultCallback
Definition: bullet_utils.h:254
tesseract_collision::tesseract_collision_bullet::TesseractCollisionPairCallback
A callback function that is called as part of the broadphase collision checking.
Definition: bullet_utils.h:332
tesseract_collision::tesseract_collision_bullet::CastHullShape::getAabbSlow
void getAabbSlow(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const override
Definition: bullet_utils.cpp:600
tesseract_collision::tesseract_collision_bullet::CastHullShape::localGetSupportingVertex
btVector3 localGetSupportingVertex(const btVector3 &vec) const override
Definition: bullet_utils.cpp:566
tesseract_collision::tesseract_collision_bullet::Link2Cow
std::map< std::string, COW::Ptr > Link2Cow
Definition: bullet_utils.h:151
tesseract_collision::tesseract_collision_bullet::TesseractCollisionPairCallback::dispatcher_
btCollisionDispatcher * dispatcher_
Definition: bullet_utils.h:335
tesseract_collision::tesseract_collision_bullet::CastCollisionCollector::collisions_
ContactTestData & collisions_
Definition: bullet_utils.h:409
tesseract_collision::tesseract_collision_bullet::needsCollisionCheck
bool needsCollisionCheck(const COW &cow1, const COW &cow2, const std::shared_ptr< const tesseract_common::ContactAllowedValidator > &validator, bool verbose=false)
This is used to check if a collision check is required between the provided two collision objects.
Definition: bullet_utils.cpp:700
tesseract_collision::tesseract_collision_bullet::CollisionObjectWrapper::m_name
std::string m_name
The name of the collision object.
Definition: bullet_utils.h:139
tesseract_collision::tesseract_collision_bullet::addDiscreteSingleResult
btScalar addDiscreteSingleResult(btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, const btCollisionObjectWrapper *colObj1Wrap, ContactTestData &collisions)
tesseract_collision::tesseract_collision_bullet::calculateContinuousData
void calculateContinuousData(ContactResult *col, const btCollisionObjectWrapper *cow, const btVector3 &pt_world, const btVector3 &normal_world, const btTransform &link_tf_inv, size_t link_index)
Calculate the continuous contact data for casted collision shape.
Definition: bullet_utils.cpp:774
tesseract_collision::tesseract_collision_bullet::removeCollisionObjectFromBroadphase
void removeCollisionObjectFromBroadphase(const COW::Ptr &cow, const std::unique_ptr< btBroadphaseInterface > &broadphase, const std::unique_ptr< btCollisionDispatcher > &dispatcher)
Remove the collision object from broadphase.
Definition: bullet_utils.cpp:1368
tesseract_collision::tesseract_collision_bullet::BULLET_LENGTH_TOLERANCE
const btScalar BULLET_LENGTH_TOLERANCE
Definition: bullet_utils.h:64
tesseract_collision::tesseract_collision_bullet::TesseractBridgedManifoldResult::addContactPoint
void addContactPoint(const btVector3 &normalOnBInWorld, const btVector3 &pointInWorld, btScalar depth) override
Definition: bullet_utils.cpp:952
tesseract_collision::tesseract_collision_bullet::BULLET_MARGIN
const btScalar BULLET_MARGIN
Definition: bullet_utils.h:62
tesseract_collision::tesseract_collision_bullet::convertBtToEigen
Eigen::Vector3d convertBtToEigen(const btVector3 &v)
Definition: bullet_utils.cpp:67
tesseract_collision::tesseract_collision_bullet::CastHullShape::getPreferredPenetrationDirection
void getPreferredPenetrationDirection(int index, btVector3 &penetrationVector) const override
Definition: bullet_utils.cpp:626
tesseract_collision::tesseract_collision_bullet::DiscreteBroadphaseContactResultCallback::DiscreteBroadphaseContactResultCallback
DiscreteBroadphaseContactResultCallback(ContactTestData &collisions, double contact_distance, bool verbose=false)
Definition: bullet_utils.cpp:1011
tesseract_collision::tesseract_collision_bullet::GetAverageSupport
void GetAverageSupport(const btConvexShape *shape, const btVector3 &localNormal, btScalar &outsupport, btVector3 &outpt)
Definition: bullet_utils.cpp:640
tesseract_collision::tesseract_collision_bullet::TesseractCollisionPairCallback::results_callback_
BroadphaseContactResultCallback & results_callback_
Definition: bullet_utils.h:336
tesseract_collision::tesseract_collision_bullet::CastHullShape::getAabb
void getAabb(const btTransform &t_w0, btVector3 &aabbMin, btVector3 &aabbMax) const override
getAabb's default implementation is brute force, expected derived classes to implement a fast dedicat...
Definition: bullet_utils.cpp:574
tesseract_collision::tesseract_collision_bullet::CollisionObjectWrapper::Ptr
std::shared_ptr< CollisionObjectWrapper > Ptr
Definition: bullet_utils.h:96
tesseract_collision::tesseract_collision_fcl::KinematicFilter
@ KinematicFilter
Definition: fcl_utils.h:69
tesseract_collision::tesseract_collision_bullet::CastCollisionCollector::addSingleResult
btScalar addSingleResult(btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, int partId0, int index0, const btCollisionObjectWrapper *colObj1Wrap, int partId1, int index1) override
Definition: bullet_utils.cpp:1227
tesseract_collision::tesseract_collision_bullet::DiscreteBroadphaseContactResultCallback
Definition: bullet_utils.h:289
tesseract_collision::tesseract_collision_bullet::TesseractOverlapFilterCallback::needBroadphaseCollision
bool needBroadphaseCollision(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1) const override
Definition: bullet_utils.cpp:1151
tesseract_collision::tesseract_collision_bullet::CollisionObjectWrapper
This is a tesseract bullet collsion object.
Definition: bullet_utils.h:89
tesseract_collision::tesseract_collision_bullet::CastCollisionCollector::contact_distance_
double contact_distance_
Definition: bullet_utils.h:411
Quaterniond
Quaternion< double > Quaterniond
tesseract_collision::tesseract_collision_bullet::TesseractOverlapFilterCallback::TesseractOverlapFilterCallback
TesseractOverlapFilterCallback(bool verbose=false)
Definition: bullet_utils.cpp:1149
tesseract_collision::tesseract_collision_bullet::refreshBroadphaseProxy
void refreshBroadphaseProxy(const COW::Ptr &cow, const std::unique_ptr< btBroadphaseInterface > &broadphase, const std::unique_ptr< btCollisionDispatcher > &dispatcher)
Refresh the broadphase data structure.
Definition: bullet_utils.cpp:1408
tesseract_collision::tesseract_collision_bullet::CastBroadphaseContactResultCallback
Definition: bullet_utils.h:302
tesseract_collision::tesseract_collision_bullet::BroadphaseContactResultCallback::addSingleResult
virtual btScalar addSingleResult(btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, int partId0, int index0, const btCollisionObjectWrapper *colObj1Wrap, int partId1, int index1)=0
tesseract_collision::tesseract_collision_bullet::CollisionObjectWrapper::m_data
std::vector< std::shared_ptr< BulletCollisionShape > > m_data
This manages the collision shape pointer so they get destroyed.
Definition: bullet_utils.h:147
tesseract_collision::tesseract_collision_bullet::CastHullShape::m_t01
btTransform m_t01
Definition: bullet_utils.h:159
tesseract_collision::CollisionShapesConst
std::vector< CollisionShapeConstPtr > CollisionShapesConst
Definition: types.h:51
tesseract_collision::tesseract_collision_bullet::CastHullShape::getLocalScaling
const btVector3 & getLocalScaling() const override
Definition: bullet_utils.cpp:614
tesseract_collision::tesseract_collision_bullet::DiscreteCollisionCollector::verbose_
bool verbose_
Definition: bullet_utils.h:389
TESSERACT_COMMON_IGNORE_WARNINGS_POP
Definition: create_convex_hull.cpp:37
bullet_collision_shape_cache.h
This is a static cache mapping tesseract geometry shared pointers to bullet collision shapes to avoid...
tesseract_collision::tesseract_collision_bullet::TesseractCollisionPairCallback::dispatch_info_
const btDispatcherInfo & dispatch_info_
Definition: bullet_utils.h:334
Vector3d
fcl::Vector3d Vector3d
tesseract_collision::tesseract_collision_bullet::TesseractOverlapFilterCallback::verbose_
bool verbose_
Definition: bullet_utils.h:361
tesseract_collision::tesseract_collision_bullet::DiscreteCollisionCollector::addSingleResult
btScalar addSingleResult(btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, int partId0, int index0, const btCollisionObjectWrapper *colObj1Wrap, int partId1, int index1) override
Definition: bullet_utils.cpp:1194
tesseract_collision::tesseract_collision_bullet::TesseractCollisionPairCallback::processOverlap
bool processOverlap(btBroadphasePair &pair) override
Definition: bullet_utils.cpp:1118
tesseract_collision::tesseract_collision_bullet::BULLET_SUPPORT_FUNC_TOLERANCE
const btScalar BULLET_SUPPORT_FUNC_TOLERANCE
Definition: bullet_utils.h:63
tesseract_collision::tesseract_collision_bullet::CastHullShape::getName
const char * getName() const override
Definition: bullet_utils.cpp:583
common.h
This is a collection of common methods.
tesseract_collision::tesseract_collision_bullet::DiscreteCollisionCollector
Definition: bullet_utils.h:384
tesseract_collision::tesseract_collision_bullet::CastHullShape::CastHullShape
CastHullShape(btConvexShape *shape, const btTransform &t01)
Definition: bullet_utils.cpp:560
tesseract_collision::tesseract_collision_bullet::CastCollisionCollector::CastCollisionCollector
CastCollisionCollector(ContactTestData &collisions, COW::Ptr cow, double contact_distance, bool verbose=false)
Definition: bullet_utils.cpp:1216
tesseract_collision::tesseract_collision_bullet::DiscreteBroadphaseContactResultCallback::addSingleResult
btScalar addSingleResult(btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, int partId0, int index0, const btCollisionObjectWrapper *colObj1Wrap, int partId1, int index1) override
Definition: bullet_utils.cpp:1018
tesseract_collision::tesseract_collision_bullet::CollisionObjectWrapper::m_shape_poses
tesseract_common::VectorIsometry3d m_shape_poses
Definition: bullet_utils.h:145
tesseract_collision::tesseract_collision_bullet::TesseractBridgedManifoldResult
This is copied directly out of BulletWorld.
Definition: bullet_utils.h:251
tesseract_collision::CollisionShapeConstPtr
std::shared_ptr< const tesseract_geometry::Geometry > CollisionShapeConstPtr
Definition: types.h:49
tesseract_collision::tesseract_collision_bullet::CastHullShape::setMargin
void setMargin(btScalar margin) override
Definition: bullet_utils.cpp:620
tesseract_collision::tesseract_collision_bullet::BroadphaseContactResultCallback::verbose_
bool verbose_
Definition: bullet_utils.h:268
tesseract_collision::tesseract_collision_bullet::DiscreteCollisionCollector::needsCollision
bool needsCollision(btBroadphaseProxy *proxy0) const override
Definition: bullet_utils.cpp:1209
METERS
#define METERS
Definition: bullet_utils.h:60
tesseract_collision::tesseract_collision_bullet::BroadphaseContactResultCallback::~BroadphaseContactResultCallback
virtual ~BroadphaseContactResultCallback()=default
Matrix3d
Matrix3< double > Matrix3d
tesseract_collision::tesseract_collision_bullet::BroadphaseContactResultCallback
The BroadphaseContactResultCallback is used to report contact points.
Definition: bullet_utils.h:264
tesseract_collision::tesseract_collision_bullet::CastHullShape::m_shape
btConvexShape * m_shape
Definition: bullet_utils.h:158
tesseract_collision::tesseract_collision_bullet::TesseractCollisionPairCallback::TesseractCollisionPairCallback
TesseractCollisionPairCallback(const btDispatcherInfo &dispatchInfo, btCollisionDispatcher *dispatcher, BroadphaseContactResultCallback &results_callback)
Definition: bullet_utils.cpp:1111
tesseract_collision::tesseract_collision_bullet::CastHullShape::getNumPreferredPenetrationDirections
int getNumPreferredPenetrationDirections() const override
Definition: bullet_utils.cpp:624
tesseract_collision::tesseract_collision_bullet::BULLET_DEFAULT_CONTACT_DISTANCE
const btScalar BULLET_DEFAULT_CONTACT_DISTANCE
Definition: bullet_utils.h:66
tesseract_collision::tesseract_collision_bullet::DiscreteCollisionCollector::cow_
const COW::Ptr cow_
Definition: bullet_utils.h:387
macros.h
tesseract_collision::tesseract_collision_bullet::convertEigenToBt
btVector3 convertEigenToBt(const Eigen::Vector3d &v)
Definition: bullet_utils.cpp:62
tesseract_collision::tesseract_collision_bullet::updateCollisionObjectFilters
void updateCollisionObjectFilters(const std::vector< std::string > &active, const COW::Ptr &cow)
Update a collision objects filters.
Definition: bullet_utils.cpp:442
tesseract_collision::tesseract_collision_bullet::BroadphaseContactResultCallback::contact_distance_
double contact_distance_
Definition: bullet_utils.h:267
tesseract_collision::tesseract_collision_bullet::DiscreteCollisionCollector::DiscreteCollisionCollector
DiscreteCollisionCollector(ContactTestData &collisions, COW::Ptr cow, btScalar contact_distance, bool verbose=false)
Definition: bullet_utils.cpp:1183
tesseract_collision::ContactResult
Definition: types.h:81
tesseract_collision::tesseract_collision_bullet::CollisionObjectWrapper::ConstPtr
std::shared_ptr< const CollisionObjectWrapper > ConstPtr
Definition: bullet_utils.h:97
tesseract_collision::tesseract_collision_bullet::CastHullShape::updateCastTransform
void updateCastTransform(const btTransform &t01)
Definition: bullet_utils.cpp:565
tesseract_collision::tesseract_collision_bullet::getLinkTransformFromCOW
btTransform getLinkTransformFromCOW(const btCollisionObjectWrapper *cow)
This transversus the parent tree to find the base object and return its world transform This should b...
Definition: bullet_utils.cpp:684
tesseract_collision::tesseract_collision_bullet::TesseractBroadphaseBridgedManifoldResult::addContactPoint
void addContactPoint(const btVector3 &normalOnBInWorld, const btVector3 &pointInWorld, btScalar depth) override
Definition: bullet_utils.cpp:1062
tesseract_collision::tesseract_collision_bullet::CastCollisionCollector::verbose_
bool verbose_
Definition: bullet_utils.h:412
tesseract_collision::tesseract_collision_bullet::TesseractBroadphaseBridgedManifoldResult::TesseractBroadphaseBridgedManifoldResult
TesseractBroadphaseBridgedManifoldResult(const btCollisionObjectWrapper *obj0Wrap, const btCollisionObjectWrapper *obj1Wrap, BroadphaseContactResultCallback &result_callback)
Definition: bullet_utils.cpp:1054
verbose
bool verbose


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