15 for (
auto el : collision_objects_) {
16 new_cc->addCollisionObject(el);
26 collision_objects_.push_back(co);
60 #if (ENABLE_COLLISION_TESTS) 62 bool enable_test)
const {
69 int *collision_time)
const {
76 bool collides =
false;
100 #if (ENABLE_COLLISION_TESTS) 103 bool ungroup_shape_groups,
104 bool ungroup_TV_obstacles,
105 bool enable_test)
const {
107 std::cout <<
"testing";
114 bool ungroup_shape_groups,
115 bool ungroup_TV_obstacles)
const {
119 std::vector<CollisionObjectConstPtr> obstacles;
120 bool res = fcl_cc_.
collideHelper(co, 0, &obstacles, 1, ungroup_shape_groups,
121 ungroup_TV_obstacles);
123 if (obstacles.size() > 0) {
124 obstacle = obstacles[0];
160 const Eigen::Vector2d &point2,
161 std::vector<LineSegment> &intersect,
162 bool remove_overlaps) {
163 double eps = 0.000001;
165 (pow(point1[0] - point2[0], 2) + pow(point1[1] - point2[1], 2));
168 Eigen::Vector2d center = (point2 + point1) / 2;
169 Eigen::Vector2d local_x_axis = center - point1;
171 double rad_x = sqrt(sqrlen) / 2;
172 local_x_axis /= rad_x;
173 Eigen::Vector2d local_y_axis(-local_x_axis[1], local_x_axis[0]);
174 Eigen::Matrix2d local_axes;
175 local_axes.col(0) = local_x_axis;
176 local_axes.col(1) = local_y_axis;
179 std::vector<CollisionObjectConstPtr> obstacles;
181 if (
collide(robb, obstacles, 1, 1)) {
183 intersect, remove_overlaps);
189 collision_objects_, point1, point2, intersect, remove_overlaps);
194 stream <<
"CollisionChecker " 197 for (
auto &obj : collision_objects_) {
198 obj->toString(stream);
200 stream <<
"\\CollisionChecker " << std::endl;
224 #if (ENABLE_COLLISION_TESTS) 226 std::vector<CollisionObjectConstPtr> &obstacles,
227 bool ungroup_shape_groups,
228 bool ungroup_TV_obstacles,
229 bool enable_test)
const {
236 std::vector<CollisionObjectConstPtr> &obstacles,
237 bool ungroup_shape_groups,
238 bool ungroup_TV_obstacles)
const {
241 return fcl_cc_.
collideHelper(co, 0, &obstacles, -1, ungroup_shape_groups,
242 ungroup_TV_obstacles);
244 bool collides =
false;
245 for (
auto &c : collision_objects_)
246 if (c->collide(*co)) {
247 obstacles.push_back(c);
267 std::make_shared<PrimitiveCollisionChecker>();
305 for (
auto &c : collision_objects_) {
307 if (tmp !=
nullptr) {
308 cc_ret->addCollisionObject(tmp);
320 return collision_objects_.size();
329 return collision_objects_;
333 stream <<
"CollisionChecker number of CollisionObjects: " 334 << collision_objects_.size() << std::endl;
335 for (
unsigned int i = 0; i < collision_objects_.size(); i++) {
336 collision_objects_[i]->print(stream);
340 #if ENABLE_SERIALIZER 344 this->shared_from_this()),
349 std::istream &input_stream) {
362 return serialize::exportObject(*
this);
std::shared_ptr< const CollisionChecker > CollisionCheckerConstPtr
std::shared_ptr< PrimitiveCollisionChecker > PrimitiveCollisionCheckerPtr
void print(std::ostringstream &stream) const
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
std::vector< CollisionObjectConstPtr > getObstacles(void) const
Returns a Vector with all contained CollisionObjects of any type.
int numberOfObstacles(void) const
Returns number of contained CollisionObjects of any type.
void windowQuery_helper(const RectangleAABB &aabb, ICollisionChecker &ret) const
EIGEN_MAKE_ALIGNED_OPERATOR_NEW CollisionChecker()
CollisionChecker can contain collision objects and their groups (such as ShapeGroup and TimeVariantCo...
void addCollisionObject(CollisionObjectConstPtr co)
Adds a collision object into the CollisionChecker group structure.
bool rayTrace(const Eigen::Vector2d &point1, const Eigen::Vector2d &point2, std::vector< LineSegment > &intersect, bool remove_overlaps=true)
adds a collision object to the CC
std::shared_ptr< const RectangleOBB > RectangleOBBConstPtr
CollisionCheckerPtr clone_shared(void) const
std::shared_ptr< const CollisionObject > CollisionObjectConstPtr
std::shared_ptr< CollisionChecker > CollisionCheckerPtr
void addCollisionObject(CollisionObjectConstPtr co)
bool run_test_collide(CollisionObjectConstPtr co, const collision::CollisionChecker *cc)
bool run_test_collide_obstacle(CollisionObjectConstPtr co, const collision::CollisionChecker *cc)
bool rayTracePrimitive(std::vector< collision::CollisionObjectConstPtr > collision_objects, const Eigen::Vector2d &point1, const Eigen::Vector2d &point2, std::vector< LineSegment > &intersect, bool remove_overlaps)
bool collide(CollisionObjectConstPtr co, int *collision_time=0) const
Returns true if any of the objects contained in the CollisionChecker collide with the given object...
int deserialize(test::BroadphaseFailureCCObj &bf_object, std::istream &input_stream, const char *format=SERIALIZER_DEFAULT_FORMAT)
int collisionTime(CollisionObjectConstPtr co) const
Returns timestep at which any of the objects contained in the CollisionChecker collides with the give...
CollisionCheckerPtr timeSlice(int time_idx) const
Returns new CollisionChecker with objects that exist at a given timestep.
CollisionCheckerPtr windowQuery(const RectangleAABB &aabb) const
Returns new CollisionChecker with all static objects within the window and all time-variant obstacles...
int serialize(const test::BroadphaseFailureCCObj &bf_object, std::ostream &output_stream, const char *format=SERIALIZER_DEFAULT_FORMAT)
bool run_test_collide_obstacles(CollisionObjectConstPtr co, const collision::CollisionChecker *cc)
void toString(std::ostringstream &stream) const
PrimitiveCollisionCheckerPtr windowQueryPrimitive(const RectangleAABB &aabb) const
Returns new PrimitiveCollisionChecker with all static objects within the window and all time-variant ...