1 #ifndef CPP_COLLISION_FCL_FCL_COLLISION_CHECKER_H_ 2 #define CPP_COLLISION_FCL_FCL_COLLISION_CHECKER_H_ 15 #include <fcl/broadphase/broadphase_dynamic_AABB_tree.h> 23 class CollisionChecker;
29 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
36 std::vector<CollisionObjectConstPtr> *obstacles,
37 int max_obstacles = -1,
bool ungroup_shape_groups =
false,
38 bool ungroup_TV_obstacles =
false)
const;
43 enum CollisionRequestType {
44 collisionRequestBoolean = 0,
45 collisionRequestListOfObstacles = 1,
46 collisionRequestWindowQuery = 2
50 void invalidateParentMap(
void);
51 void setUpParentMap(
void)
const;
53 void invalidateStaticObstaclesManager(
void);
54 void setUpStaticObstaclesManager(
void)
const;
56 int set_up_dynamic_obstacles(
int simulation_cur_time_idx_)
const;
65 int &time_of_collision,
68 int &time_of_collision,
72 int &time_of_collision)
const;
74 int &time_of_collision)
const;
77 int &time_of_collision)
const;
79 int &time_of_collision,
83 bool collide_fcl_helper_simulate_static_subject(
84 T col_entity,
int &time_of_collision,
85 CollisionRequestType reqType = collisionRequestBoolean,
87 bool collide_fcl_helper_sim_TV_subject(
91 bool collide_fcl_helper_dynamic_obstaclesEx(
92 T col_entity,
int sim_cur_time_idx,
bool &result,
95 bool collide_fcl_helper_dynamic_obstacles(T col_entity,
96 int sim_cur_time_idx)
const;
98 bool collide_fcl_helper_static_obstaclesEx(
99 T col_entity,
bool &result, CollisionRequestType reqType,
103 bool collide_fcl_helper_static_obstacles(T col_entity)
const;
107 std::list<CollisionObjectConstPtr>>
109 mutable fcl::DynamicAABBTreeCollisionManager<FCL_PRECISION> static_obstacles_;
110 mutable fcl::DynamicAABBTreeCollisionManager<FCL_PRECISION>
112 std::vector<CollisionObjectConstPtr> tv_objects_;
113 mutable int simulation_time_start_idx_;
114 mutable int simulation_time_end_idx_;
115 mutable int simulation_dynamic_;
116 mutable bool static_obstacles_manager_valid;
117 mutable bool parent_map_valid;
119 mutable bool windowQueryDone;
TimeVariantCollisionObject can contain a different CollisionObject or ShapeGroup at each time step...
bool collideHelper(CollisionObjectConstPtr co, int *collision_time, std::vector< CollisionObjectConstPtr > *obstacles, int max_obstacles=-1, bool ungroup_shape_groups=false, bool ungroup_TV_obstacles=false) const
void windowQuery_helper(const RectangleAABB &aabb, ICollisionChecker &ret) const
EIGEN_MAKE_ALIGNED_OPERATOR_NEW FCLCollisionChecker(ICollisionChecker &cc)
std::shared_ptr< const CollisionObject > CollisionObjectConstPtr
void addCollisionObject(CollisionObjectConstPtr co)
External interface to a CollisionChecker (with or without an acceleration structure) ...
Base class for CollisionObjects and some of their groups.