void processCollisionGeometryForBoundingBox(const object_manipulation_msgs::ClusterBoundingBox &box, std::string &collision_name) { ROS_INFO("Adding bounding box with dimensions %f %f %f to collision map", box.dimensions.x, box.dimensions.y, box.dimensions.z); arm_navigation_msgs::CollisionObject collision_object; collision_object.operation.operation = arm_navigation_msgs::CollisionObjectOperation::ADD; collision_name = getNextObjectName(); collision_object.id = collision_name; collision_object.header.frame_id = box.pose_stamped.header.frame_id; collision_object.header.stamp = ros::Time::now(); arm_navigation_msgs::Shape shape; shape.type = arm_navigation_msgs::Shape::BOX; shape.dimensions.resize(3); shape.dimensions[0] = box.dimensions.x; shape.dimensions[1] = box.dimensions.y; shape.dimensions[2] = box.dimensions.z; collision_object.shapes.push_back(shape); collision_object.poses.push_back(box.pose_stamped.pose); collision_object_pub_.publish(collision_object); }
Object* ObjectsPool::addObjectbyName(const string& obj, Sint16 x, Sint16 y, const ParameterMap& objparam, bool outside) { ParameterMap parameters; if (hasParam(objparam,"file")) { parameters=getFileParameters(objparam.find("file")->second); ParameterMap::const_iterator it=objparam.begin(); while (it!=objparam.end()) { if (it->first!="file") parameters[it->first]=it->second; ++it; } } else { parameters=objparam; } //Set names... if (!hasParam(parameters,"name")) parameters["name"]=getNextObjectName(obj); if (obj=="Wall") return (addObject(new Wall(x,y,parameters), outside)); else if (obj=="Exit") return (addObject(new Exit(x,y,parameters), outside)); else if (obj=="Water") return (addObject(new Water(x,y,parameters), outside)); else if (obj=="Teleporter") return (addObject(new Teleporter(x,y,parameters), outside)); else if (obj=="Wind") return (addObject(new Wind(x,y,parameters), outside)); else if (obj=="Geyser") return (addObject(new Geyser(x,y,parameters), outside)); else if (obj=="Trigger") return (addObject(new Trigger(x,y,parameters), outside)); else if (obj=="Door") return (addObject(new Door(x,y,parameters), outside)); else if (obj=="Spike") return (addObject(new Spike(x,y,parameters), outside)); else if (obj=="Heart") return (addObject(new Heart(x,y,parameters), outside)); else if (obj=="Key") return (addObject(new Key(x,y,parameters), outside)); else if (obj=="Bomb") return (addObject(new Bomb(x,y,parameters), outside)); else if (obj=="TriggeredBomb") return (addObject(new TriggeredBomb(x,y,parameters), outside)); else if (obj=="DeadPlayer") return (addObject(new DeadPlayer(x,y,parameters), outside)); else if (obj=="Erik") return (addObject(new Erik(x,y,parameters), outside)); else if (obj=="Olaf") return (addObject(new Olaf(x,y,parameters), outside)); else if (obj=="Baleog") return (addObject(new Baleog(x,y,parameters), outside)); else if (obj=="Fang") return (addObject(new Fang(x,y,parameters), outside)); else if (obj=="Scorch") return (addObject(new Scorch(x,y,parameters), outside)); else if (obj=="Plant") return (addObject(new Plant(x,y,parameters), outside)); else if (obj=="Zombie") return (addObject(new Zombie(x,y,parameters), outside)); else { cout << "Object " << obj << " unknown, skipping...\n"; return NULL; } }