Collision Checker
fcl_collision_object.h
Go to the documentation of this file.
1 #ifndef COLLISION_FCL_FCL_COLLISION_OBJECT_H_
2 #define COLLISION_FCL_FCL_COLLISION_OBJECT_H_
3 
4 #include <Eigen/Dense>
5 
9 
13 
14 #include <atomic>
15 #include <memory>
16 
17 namespace collision {
18 namespace solvers {
19 namespace solverFCL {
21  public:
22  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
23 
25  const IFCLCollisionObject *parent_fcl_interface) {
26  m_parent = parent;
27  m_parent_fcl_interface = parent_fcl_interface;
29  }
30 
32  m_parent = copy.m_parent;
33  m_parent_fcl_interface = copy.m_parent_fcl_interface;
35  };
36 
39  }
40 
41  virtual ~FCLCollisionObject() {}
42 
43  std::shared_ptr<fcl::CollisionObject<FCL_PRECISION>> getCollisionObject_fcl(
44  void) const;
45 
47  FCL_PRECISION tolerance = 1e-6) const;
49  const CollisionObject &obj2, double &distance,
51  FCL_PRECISION tolerance = 1e-6) const;
52 
53  virtual bool BVCheck(CollisionObjectConstPtr obj2) const;
54 
55  virtual collision::RectangleAABBConstPtr getAABB(void) const;
56 
57  virtual void invalidateSolverEntityCache(void) const override {
59  }
60 
61  const CollisionObject *getParent(void) const { return m_parent; }
62 
63  protected:
64  inline void invaldateCollisionObjectCache(void) const {
65  object_cached = false;
66  }
67 
68  private:
69  mutable bool object_cached;
70  mutable std::shared_ptr<fcl::CollisionObject<FCL_PRECISION>> fcl_col_obj;
71  mutable std::shared_ptr<fcl::CollisionGeometry<FCL_PRECISION>> fcl_geometry;
72  const CollisionObject *m_parent;
73  const IFCLCollisionObject *m_parent_fcl_interface;
74 };
75 
76 typedef std::shared_ptr<const FCLCollisionObject> FCLCollisionObjectConstPtr;
77 
78 } // namespace solverFCL
79 } // namespace solvers
80 } // namespace collision
81 
82 #endif
virtual bool BVCheck(CollisionObjectConstPtr obj2) const
const CollisionObject * getParent(void) const
std::shared_ptr< const FCLCollisionObject > FCLCollisionObjectConstPtr
int calculateDistance(const CollisionObject &obj2, FCL_PRECISION &distance, FCL_PRECISION tolerance=1e-6) const
std::shared_ptr< const RectangleAABB > RectangleAABBConstPtr
EIGEN_MAKE_ALIGNED_OPERATOR_NEW FCLCollisionObject(const CollisionObject *parent, const IFCLCollisionObject *parent_fcl_interface)
std::size_t distance(const CollisionObject &obj1, const CollisionObject &obj2, DistanceResult &res, const DistanceRequest &req)
virtual FCL_COLLISION_ENTITY_TYPE getFclEntityType(void) const
std::shared_ptr< const CollisionObject > CollisionObjectConstPtr
virtual void invalidateSolverEntityCache(void) const override
std::shared_ptr< fcl::CollisionObject< FCL_PRECISION > > getCollisionObject_fcl(void) const
virtual collision::RectangleAABBConstPtr getAABB(void) const
int calculateDistanceNegTolerance(const CollisionObject &obj2, double &distance, FCL_TOLERANCE_CHECK_TYPE check_type=TOLERANCE_CHECK_NARROWPHASE, FCL_PRECISION tolerance=1e-6) const
Base class for CollisionObjects and some of their groups.