Exemple #1
0
    def __init__(self):
        ####################
        # Discovery
        ####################
        (self.service_name, self.service_description, self.service_id) = concert_service_utilities.get_service_info()
        try:
            known_resources_topic_name = rocon_python_comms.find_topic('scheduler_msgs/KnownResources', timeout=rospy.rostime.Duration(5.0), unique=True)
        except rocon_python_comms.NotFoundException as e:
            rospy.logerr("AdapterSvc : could not locate the scheduler's known resources topic [%s]" % str(e))
            sys.exit(1)

        ####################
        # Setup
        ####################
        self.allocated_resources = []
        self.requester = self.setup_requester(self.service_id)
        self.lock = threading.Lock()
        self.pending_requests = []
        self.allocated_requests = {}
        self.command=''

        # Subscribe a topic from BPEL service
        self.bpel_service_subscriber = rospy.Subscriber('resources_alloc_request', adapter_msgs.Adapter, self.resources_alloc_request_callback)
        self.bpel_command_subscriber = rospy.Subscriber('command_request', adapter_msgs.Adapter, self.command_request_callback)

        self.allocation_timeout = rospy.get_param('allocation_timeout', 15.0)  # seconds
Exemple #2
0
 def test_concert_info(self):
     try:
         (name, unused_description,
          unused_uuid) = concert_service_utilities.get_service_info()
         if name == 'chatter':
             self._success = True
     except concert_service_utilities.ServiceInfoException:
         pass
     self.assert_(self._success)
Exemple #3
0
 def setup_variables(self): 
     '''
         Need to setup the following variables
         service_priority, service_id, resource_type, available_resource_publisher_name, capture_topic_name
     '''
     (service_name, service_description, service_priority, service_id) = concert_service_utilities.get_service_info()
     self.service_priority = service_priority
     self.service_id = service_id
     self.resource_type = 'rocon_apps/image_stream'
     self.available_resource_publisher_name = 'available_image_stream'
     self.capture_topic_name = 'capture_image_stream'
Exemple #4
0
    def setup_variables(self):
        '''
            Need to setup the following variables
            service_priority, service_id, resource_type, available_resource_publisher_name, capture_topic_name
        '''
        (service_name, service_description, service_priority,
         service_id) = concert_service_utilities.get_service_info()
        self.service_priority = service_priority
        self.service_id = service_id
        self.resource_type = 'rocon_apps/waypoint_nav'
        self.available_resource_publisher_name = 'available_waypoint_nav'
        self.capture_topic_name = 'capture_waypoint_nav'

        # it should be rapp's public interface
        self._default_map_topic = 'map'
        self._default_waypoints_topic = 'waypoints'
Exemple #5
0
    def __init__(self):
        ####################
        # Initiate SOAP Server
        ####################
        self.soap_server = Starter()
        self.soap_server.daemon = True
        self.soap_server.start()

        ####################
        # Discovery
        ####################
        (self.service_name, self.service_description, self.service_priority,
         self.service_id) = concert_service_utilities.get_service_info()
        try:
            known_resources_topic_name = rocon_python_comms.find_topic(
                'scheduler_msgs/KnownResources',
                timeout=rospy.rostime.Duration(5.0),
                unique=True)
        except rocon_python_comms.NotFoundException as e:
            rospy.logerr(
                "AdapterSvc : could not locate the scheduler's known resources topic [%s]"
                % str(e))
            sys.exit(1)

        ####################
        # Setup
        ####################
        self.allocated_resources = []
        self.requester = self.setup_requester(self.service_id)
        self.lock = threading.Lock()
        self.pending_requests = []
        self.allocated_requests = {}
        self.command = ''

        # Subscribe a topic from BPEL service
        self.bpel_package_subscriber = rospy.Subscriber(
            'package_find_request', String, self.package_find_request_callback)
        self.bpel_service_subscriber = rospy.Subscriber(
            'resources_alloc_request', adapter_msgs.Adapter,
            self.resources_alloc_request_callback)
        self.bpel_command_subscriber = rospy.Subscriber(
            'command_request', adapter_msgs.Adapter,
            self.command_request_callback)

        self.allocation_timeout = rospy.get_param('allocation_timeout',
                                                  15.0)  # seconds
    def __init__(self):
        ####################
        # Discovery
        ####################
        (self.service_name, self.service_description,
         self.service_id) = concert_service_utilities.get_service_info()
        try:
            known_resources_topic_name = rocon_python_comms.find_topic(
                'scheduler_msgs/KnownResources',
                timeout=rospy.rostime.Duration(5.0),
                unique=True)
        except rocon_python_comms.NotFoundException as e:
            rospy.logerr(
                "TeleopPimp : could not locate the scheduler's known resources topic [%s]"
                % str(e))
            sys.exit(1)

        ####################
        # Setup
        ####################
        self.concert_clients_subscriber = rospy.Subscriber(
            known_resources_topic_name, scheduler_msgs.KnownResources,
            self.ros_scheduler_known_resources_callback)
        self.available_teleops_publisher = rospy.Publisher(
            'available_teleops', rocon_std_msgs.StringArray, latch=True)
        self.teleopable_robots = []
        self.requester = self.setup_requester(self.service_id)
        self.lock = threading.Lock()
        self.pending_requests = []
        self.allocated_requests = {}

        self.allocate_teleop_service_pair_server = rocon_python_comms.ServicePairServer(
            'capture_teleop',
            self.ros_capture_teleop_callback,
            rocon_service_msgs.CaptureTeleopPair,
            use_threads=True)
        self.allocation_timeout = 5.0  # seconds
#
##############################################################################
# Imports
##############################################################################

import rospy
import concert_service_link_graph
import concert_service_utilities

##############################################################################
# Main
##############################################################################

if __name__ == '__main__':
    rospy.init_node('static_link_graph_service', anonymous=True)

    # this is a uuid.UUID key
    (name, description, priority,
     uuid) = concert_service_utilities.get_service_info()
    filename = rospy.get_param('~filename')

    impl_name, impl = concert_service_link_graph.load_linkgraph_from_file(
        filename)

    if not name:
        name = impl_name

    static_link_graph_service = concert_service_link_graph.StaticLinkGraphHandler(
        name, description, priority, uuid, impl)
    static_link_graph_service.spin()
    def __init__(self):
        # Initialization
        (self.service_name, self.service_description, self.service_priority, self.service_id) = concert_service_utilities.get_service_info()
        self.allocation_timeout = rospy.get_param('allocation_timeout', 15.0)  # seconds

        # Check the scheduler's KnownResources topic
        try:
            rocon_python_comms.find_topic('scheduler_msgs/KnownResources', timeout=rospy.rostime.Duration(5.0), unique=True)
        except rocon_python_comms.NotFoundException as e:
            rospy.logerr("Could not locate the scheduler's known_resources topic. [%s]" % str(e))
            sys.exit(1)

        # Set up the requester
        self._set_requester(self.service_id)
        self.pending_requests = dict()

        # Prepare a basket for storing allocated resources
        # Form: {__resource_uri__:{resource:__Resource.msg__, publisher:__Publisher__}, ...}
        self.linkgraph_info = dict()
        self.publishers = dict()
        self.action_clients_map = dict()
        self.service_proxies_map = dict()

        # Starting a SOAP server as a thread
        try:
            threading.Thread(target=self._start_soap_server).start()
        except:
            rospy.loginfo("Error on SOAP Server Thread...")
Exemple #9
0
#!/usr/bin/env python
import rospy
import yaml
import concert_service_roslaunch
import concert_service_utilities
import map_store.srv
import annotations_store.srv

from concert_msgs.srv import *
from concert_msgs.msg import *

if __name__ == '__main__':
    rospy.init_node('start_cafe_delivery', anonymous=True)
    (name, description, uuid) = concert_service_utilities.get_service_info()
    filename = rospy.get_param('~filename')
    impl_name, impl = concert_service_roslaunch.load_linkgraph_from_file(
        filename)

    if not name:
        name = impl_name

    sgsh = concert_service_roslaunch.StaticLinkGraphHandler(
        name, description, uuid, impl)

    rospy.rostime.wallsleep(3.0)  # human time
    #sgsh._request_resources(True)

    map_id = rospy.get_param('~map_id', None)

    #  It is hack to wait until the map database is up.
    #  The proper way to do is wait until the service obtained the all resources and request to load a map
    def __init__(self):
        ####################
        # Discovery
        ####################
        (self.service_name, self.service_description, self.service_priority, self.service_id) = concert_service_utilities.get_service_info()

        ####################
        # Setup
        ####################
        self.requester = self.setup_requester(self.service_id)
        self.pending_requests = []
        self.allocated_requests = []

        turtles = rospy.get_param("turtles", default=[{'x_vel':1.0,'z_vel':0.4,'square_scale':1.0}])

        rospy.loginfo("TurtlePond : requesting %s turtles" % len(turtles))
        for turtle in turtles:
            x_vel = turtle['x_vel']
            z_vel = turtle['z_vel']
            scale = turtle['square_scale']
            self.request_turtle(x_vel, z_vel, scale)
#!/usr/bin/env python

import concert_service_utilities
import rospy

from concert_service_gazebo import GazeboRobotManager

if __name__ == '__main__':
    rospy.init_node('gazebo_robot_manager')
    (service_name, unused_service_description, unused_service_id,
     unused_key) = concert_service_utilities.get_service_info()
    robots = rospy.get_param('robots', [])
    #robot_types = rospy.get_param('types', [])
    world_name = rospy.get_param('world', 'gazebo')
    world_namespace = '/services/' + service_name + '/' + str(world_name) + '/'
    concert_name = rospy.get_param('/concert/name')
    gazebo_manager = GazeboRobotManager(world_namespace, concert_name)
    gazebo_manager.loginfo('spawning robots : %s' % str(robots))
    gazebo_manager.spawn_robots(robots)

    gazebo_manager.spin()
    gazebo_manager.loginfo('Bye Bye')
                rospy.logerr("Turtle Herder : failed to unlink temporary file [%s]" % str(e))


##############################################################################
# Launch point
##############################################################################

if __name__ == "__main__":

    rospy.init_node("turtle_herder")
    (
        service_name,
        unused_service_description,
        service_priority,
        unused_service_id,
    ) = concert_service_utilities.get_service_info()
    turtles = []
    turtle_parameters = rospy.get_param("/services/" + service_name + "/turtles", {})
    # should check that turtle_parameters is a dict here
    for name, parameters in turtle_parameters.items():
        try:
            turtles.append(
                Turtle(
                    name,
                    parameters["rapp_whitelist"],
                    parameters["concert_whitelist"],
                    parameters["disable_zeroconf"],
                    parameters["rosbridge_port"],
                    parameters["rostful_port"],
                )
            )
    def __init__(self):
        ####################
        # Discovery
        ####################
        (self.service_name, self.service_description, self.service_priority, self.service_id) = concert_service_utilities.get_service_info()

        ####################
        # Setup
        ####################
        self.requester = self.setup_requester(self.service_id)
        self.pending_requests = []
        self.allocated_requests = []

        turtles = rospy.get_param("turtles", default=[{'x_vel':1.0,'z_vel':0.4,'square_scale':1.0}])

        rospy.loginfo("TurtlePond : requesting %s turtles" % len(turtles))
        for turtle in turtles:
            x_vel = turtle['x_vel']
            z_vel = turtle['z_vel']
            scale = turtle['square_scale']
            self.request_turtle(x_vel, z_vel, scale)
Exemple #14
0
    def __init__(self):
        # Initialization
        (self.service_name, self.service_description, self.service_priority, self.service_id) = concert_service_utilities.get_service_info()
        self.allocation_timeout = rospy.get_param('allocation_timeout', 15.0)  # seconds

        # Check the scheduler's KnownResources topic
        try:
            rocon_python_comms.find_topic('scheduler_msgs/KnownResources', timeout=rospy.rostime.Duration(5.0), unique=True)
        except rocon_python_comms.NotFoundException as e:
            rospy.logerr("Could not locate the scheduler's known_resources topic. [%s]" % str(e))
            sys.exit(1)

        self.action_invocation_flag = 0

        # Set up the requester
        self._set_requester(self.service_id)
        self.pending_requests = dict()

        self.linkgraph_info = dict()
        self.publishers = dict()
        self.subscribers = dict()
        self.action_clients_map = dict()
        self.service_proxies_map = dict()
        self.callback_bpel_method_map = dict()

        # Prepare a basket for storing allocated resources
        # Form: {__resource_uri__:{resource:__Resource.msg__, publisher:__Publisher__}, ...}
        self.allocated_resources = dict()

        # Starting a SOAP server as a thread
        try:
            threading.Thread(target=self._start_soap_server).start()
        except:
            rospy.loginfo("Error on SOAP Server Thread...")

        # Set Publisher to invoke rapp
        #rospy.loginfo("Publisher to invoke rapp is set...")
        #self.rapp_pub = rospy.Publisher('/service_invoke', String, queue_size=DEFAULT_QUEUE_SIZE)
        #self.rapp_pub2 = rospy.Publisher("/sphero_backstep_cmd", String, queue_size=10)

        # Set Subscriber for Testing
        #self.test_sub = rospy.Subscriber("/fault/test", String, self._test)
        rospy.loginfo("Register Subscriber: /fault/test")