Collision Checker
fcl_collision_object_group.h
Go to the documentation of this file.
1 #ifndef COLLISION_FCL_FCL_COLLISION_OBJECT_GROUP_H_
2 #define COLLISION_FCL_FCL_COLLISION_OBJECT_GROUP_H_
3 
4 #include <fcl/narrowphase/collision_object.h>
5 #include <Eigen/Dense>
9 
12 
13 #include <vector>
14 
16 
17 namespace collision {
18 namespace solvers {
19 namespace solverFCL {
21  public:
23  const IFCLCollisionObjectGroup *parent_interface);
24 
26 
29  }
30 
32  BroadPhaseManagerFactoryConstPtr broadphase_factory);
33 
35  FCL_PRECISION tolerance = 1e-6) const;
37  const CollisionObject &obj2, double &distance,
39  FCL_PRECISION tolerance = 1e-6) const;
40 
41  virtual ~FCLCollisionObjectGroup(void) {}
42 
43  int getManager_fcl(fcl::BroadPhaseCollisionManager<FCL_PRECISION> *&)
44  const; // TODO: create and/or cache an appropriate broadphase manager
45 
46  const ICollisionContainer *getContainer(void) const {
47  return m_CollisionContainer;
48  }
49 
51  return m_parent_interface;
52  }
53 
54  const CollisionObject *getParent(void) const { return m_parent; }
55 
56  virtual void invalidateSolverEntityCache(void) const override {
58  }
59 
60  protected:
61  void invalidateManagerCache(void) const;
62  void invalidateManagerInstanceCache(void) const;
63 
64  private:
65  const ICollisionContainer *m_CollisionContainer;
66  const CollisionObject *m_parent;
67  const IFCLCollisionObjectGroup *m_parent_interface;
68  mutable std::unique_ptr<fcl::BroadPhaseCollisionManager<FCL_PRECISION>>
69  m_group_manager;
70  mutable BroadPhaseManagerFactoryConstPtr m_broadphase_factory;
71  mutable bool manager_cached;
72  mutable bool manager_instance_cached;
73 };
74 } // namespace solverFCL
75 } // namespace solvers
76 } // namespace collision
77 
78 #endif /* COLLISION_FCL_FCL_COLLISION_OBJECT_GROUP_H_ */
std::shared_ptr< const BroadPhaseManagerFactory > BroadPhaseManagerFactoryConstPtr
const IFCLCollisionObjectGroup * getParentInterface(void) const
FCLCollisionObjectGroup(const ICollisionContainer *, const CollisionObject *, const IFCLCollisionObjectGroup *parent_interface)
std::size_t distance(const CollisionObject &obj1, const CollisionObject &obj2, DistanceResult &res, const DistanceRequest &req)
int replaceBroadphaseFactory(BroadPhaseManagerFactoryConstPtr broadphase_factory)
int calculateDistanceNegTolerance(const CollisionObject &obj2, double &distance, FCL_TOLERANCE_CHECK_TYPE check_type=TOLERANCE_CHECK_NARROWPHASE, FCL_PRECISION tolerance=1e-6) const
int calculateDistance(const CollisionObject &obj2, FCL_PRECISION &distance, FCL_PRECISION tolerance=1e-6) const
virtual FCL_COLLISION_ENTITY_TYPE getFclEntityType(void) const
Base class for CollisionObjects and some of their groups.
int getManager_fcl(fcl::BroadPhaseCollisionManager< FCL_PRECISION > *&) const