Collision Checker
primitive_collision_checker.cc
Go to the documentation of this file.
2 
3 namespace collision {
4 
6  collision_objects_.push_back(co);
7 }
8 
10  for (auto &c : collision_objects_) {
11  if (c->BVCheck(co)) {
12  if (c->collide(*co, CollisionRequest(COL_DEFAULT))) {
13  return true;
14  }
15  }
16  }
17  return false;
18 }
19 
22  for (auto &c : collision_objects_) {
23  if (c->BVCheck(co)) {
24  if (c->collide(*co, CollisionRequest(COL_DEFAULT))) {
25  obstacle = c;
26  return true;
27  }
28  }
29  }
30  return false;
31 }
32 
35  std::vector<CollisionObjectConstPtr> &obstacles) const {
36  bool collides = false;
37  for (auto &c : collision_objects_) {
38  if (c->BVCheck(co)) {
39  if (c->collide(*co, CollisionRequest(COL_DEFAULT))) {
40  obstacles.push_back(c);
41  collides = true;
42  }
43  }
44  }
45  return collides;
46 }
47 
49  const RectangleAABB &aabb) const {
51  std::shared_ptr<PrimitiveCollisionChecker>(
53  for (auto &c : collision_objects_) {
54  if (c->collide(aabb, CollisionRequest(COL_DEFAULT))) {
55  cc_ret->addCollisionObject(c);
56  }
57  }
58  return cc_ret;
59 }
60 
62  int time_idx) const {
64  for (auto &c : collision_objects_) {
65  CollisionObjectConstPtr tmp = c->timeSlice(time_idx, c);
66  if (tmp != nullptr) {
67  cc_ret->addCollisionObject(tmp);
68  }
69  }
70  return cc_ret;
71 }
72 
74  return collision_objects_.size();
75 }
76 
77 std::vector<CollisionObjectConstPtr> PrimitiveCollisionChecker::getObstacles()
78  const {
79  return collision_objects_;
80 }
81 
82 void PrimitiveCollisionChecker::print(std::ostringstream &stream) const {
83  stream << "PrimitiveCollisionChecker number of CollisionObjects: "
84  << collision_objects_.size() << std::endl;
85  for (unsigned int i = 0; i < collision_objects_.size(); i++) {
86  collision_objects_[i]->print(stream);
87  }
88 }
89 
90 } // namespace collision
std::shared_ptr< PrimitiveCollisionChecker > PrimitiveCollisionCheckerPtr
EIGEN_MAKE_ALIGNED_OPERATOR_NEW void addCollisionObject(CollisionObjectConstPtr co)
std::vector< CollisionObjectConstPtr > getObstacles() const
PrimitiveCollisionCheckerPtr windowQuery(const RectangleAABB &aabb) const
std::shared_ptr< const CollisionObject > CollisionObjectConstPtr
bool collide(CollisionObjectConstPtr co) const
PrimitiveCollisionCheckerPtr timeSlice(int time_idx) const
PrimitiveCollisionChecker can group any kinds of CollisionObjects.
Universal structure specifying collision request properties.
void print(std::ostringstream &stream) const
Axis-aligned rectangle.