Collision Checker
collision_checker.h
Go to the documentation of this file.
1 #ifndef COLLISION_CHECKER_H_
2 #define COLLISION_CHECKER_H_
3 
4 #include <sstream>
5 #include <vector>
6 
8 
10 
15 
16 #if ENABLE_SERIALIZER
18 #endif
19 
20 namespace collision {
21 
23 typedef std::shared_ptr<CollisionChecker> CollisionCheckerPtr;
24 typedef std::shared_ptr<const CollisionChecker> CollisionCheckerConstPtr;
25 } // namespace collision
26 
27 namespace collision {
28 
29 namespace solvers {
30 namespace solverFCL {
32 }
33 } // namespace solvers
34 
35 class CollisionChecker;
46 #if ENABLE_COLLISION_TESTS == 1
48 #endif
49 
50  public:
51  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
52  CollisionChecker() : fcl_cc_(*this){};
53 
54  CollisionCheckerPtr clone_shared(void) const;
55 
56  void addCollisionObject(
58 
59 #if ENABLE_SERIALIZER
60  serialize::ICollisionCheckerExport *exportThis(void) const;
61 
62  int serialize(std::ostream &output_stream) const;
63  static CollisionCheckerConstPtr deserialize(std::istream &output_stream);
64 
65 #endif
66 
67  bool rayTrace(const Eigen::Vector2d &point1, const Eigen::Vector2d &point2,
68  std::vector<LineSegment> &intersect,
69  bool remove_overlaps = true);
70 
71  int collisionTime(CollisionObjectConstPtr co) const;
72 #if (ENABLE_COLLISION_TESTS)
73  bool collide(CollisionObjectConstPtr co, int *collision_time = 0,
74  bool enable_test = true) const;
75  bool collide(CollisionObjectConstPtr co, CollisionObjectConstPtr &obstacle,
76  bool ungroup_shape_groups = false,
77  bool ungroup_TV_obstacles = false,
78  bool enable_test = true) const;
79  bool collide(CollisionObjectConstPtr co,
80  std::vector<CollisionObjectConstPtr> &obstacles,
81  bool ungroup_shape_groups = false,
82  bool ungroup_TV_obstacles = false,
83  bool enable_test = true) const;
84 #else
85  bool collide(CollisionObjectConstPtr co, int *collision_time = 0) const;
86  bool collide(CollisionObjectConstPtr co, CollisionObjectConstPtr &obstacle,
87  bool ungroup_shape_groups = false,
88  bool ungroup_TV_obstacles = false) const;
89  bool collide(CollisionObjectConstPtr co,
90  std::vector<CollisionObjectConstPtr> &obstacles,
91  bool ungroup_shape_groups = false,
92  bool ungroup_TV_obstacles = false) const;
93 #endif
94 
96  PrimitiveCollisionCheckerPtr windowQueryPrimitive(
97  const RectangleAABB &aabb) const;
98  CollisionCheckerPtr timeSlice(int time_idx) const;
99  void print(std::ostringstream &stream) const;
100  void toString(std::ostringstream &stream) const;
101  int numberOfObstacles(void) const;
102  std::vector<CollisionObjectConstPtr> getObstacles(void) const;
103 
104  private:
105  std::vector<CollisionObjectConstPtr> collision_objects_;
106  FCLCollisionChecker fcl_cc_;
107 };
108 } // namespace collision
109 #endif
std::shared_ptr< const CollisionChecker > CollisionCheckerConstPtr
std::shared_ptr< PrimitiveCollisionChecker > PrimitiveCollisionCheckerPtr
int windowQuery(ContainerGrid< DIRECTION > &container, AABB &aabb, aligned_vector< int > &candidates)
EIGEN_MAKE_ALIGNED_OPERATOR_NEW CollisionChecker()
CollisionChecker can contain collision objects and their groups (such as ShapeGroup and TimeVariantCo...
std::shared_ptr< const CollisionObject > CollisionObjectConstPtr
std::shared_ptr< CollisionChecker > CollisionCheckerPtr
int deserialize(test::BroadphaseFailureCCObj &bf_object, std::istream &input_stream, const char *format=SERIALIZER_DEFAULT_FORMAT)
Axis-aligned rectangle.
External interface to a CollisionChecker (with or without an acceleration structure) ...
int serialize(const test::BroadphaseFailureCCObj &bf_object, std::ostream &output_stream, const char *format=SERIALIZER_DEFAULT_FORMAT)