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);
    }
Example #2
0
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;
    }
}