Collision Checker
time_variant_collision_object.cc
Go to the documentation of this file.
3 
4 namespace collision {
5 
7  const Eigen::Vector2d &point1, const Eigen::Vector2d &point2,
8  std::vector<LineSegment> &intersect) const {
9  bool res = false;
10  for (auto &obj : collision_object_at_time_) {
11  res = obj->rayTrace(point1, point2, intersect) || res;
12  }
13  return res;
14 }
15 
16 void TimeVariantCollisionObject::print(std::ostringstream &stream) const {
17  stream << "Timevariant obstacle, time " << time_start_idx_ << "-"
18  << time_end_idx_ << std::endl;
19  for (unsigned int i = 0; i < collision_object_at_time_.size(); i++) {
20  stream << " " << i + time_start_idx_ << ":";
21  collision_object_at_time_[i]->print(stream);
22  }
23 }
24 
32  time_start_idx_ = time_start_idx;
33  time_end_idx_ = time_start_idx - 1;
34 }
35 
37  int time_idx) const {
38  if (time_idx < time_start_idx_ || time_idx > time_end_idx_) return nullptr;
39  return collision_object_at_time_[time_idx - time_start_idx_];
40 }
41 
43  int time_idx) const {
44  if (time_idx < time_start_idx_ || time_idx > time_end_idx_) return nullptr;
45  return collision_object_at_time_ptr_[time_idx - time_start_idx_];
46 }
47 
49  return time_start_idx_;
50 }
51 
52 int TimeVariantCollisionObject::time_end_idx() const { return time_end_idx_; }
53 
55  int time_idx, CollisionObjectConstPtr shared_ptr_this) const {
56  return getObstacleAtTime(time_idx);
57 }
58 
60  CollisionObjectConstPtr obstacle) {
61  collision_object_at_time_.push_back(obstacle);
62  collision_object_at_time_ptr_.push_back(obstacle.get());
63  return ++time_end_idx_;
64 }
65 
67  std::unordered_map<const CollisionObject *,
68  std::list<CollisionObjectConstPtr>> &parent_map) const {
69  for (auto &tvobj : collision_object_at_time_) {
70  tvobj->addParentMap(parent_map, shared_from_this());
71  }
72  return;
73 }
74 
75 #if ENABLE_SERIALIZER
76 
77 namespace serialize {
78 ICollisionObjectExport *exportObject(
80 }
81 
82 serialize::ICollisionObjectExport *TimeVariantCollisionObject::exportThis(
83  void) const {
84  return serialize::exportObject(*this);
85 }
86 #endif
87 
88 } // namespace collision
TimeVariantCollisionObject can contain a different CollisionObject or ShapeGroup at each time step...
const CollisionObject * getObstacleAtTimePtr(int time_idx) const
TimeVariantCollisionObject(int time_start_idx)
Creates a new TimeVariantCollisionObject.
std::shared_ptr< const CollisionObject > CollisionObjectConstPtr
bool rayTrace(const Eigen::Vector2d &point1, const Eigen::Vector2d &point2, std::vector< LineSegment > &intersect) const
virtual void addParentMap(std::unordered_map< const CollisionObject *, std::list< CollisionObjectConstPtr >> &parent_map) const
int appendObstacle(CollisionObjectConstPtr obstacle)
virtual CollisionObjectConstPtr timeSlice(int time_idx, CollisionObjectConstPtr shared_ptr_this) const
CollisionObjectConstPtr getObstacleAtTime(int time_idx) const
int serialize(const test::BroadphaseFailureCCObj &bf_object, std::ostream &output_stream, const char *format=SERIALIZER_DEFAULT_FORMAT)
Base class for CollisionObjects and some of their groups.
virtual void print(std::ostringstream &stream) const
Print all parameters of the shape.