services.py
Go to the documentation of this file.
1 import rospy
2 import re
3 from std_srvs.srv import Empty, EmptyResponse
4 
5 from strands_executive_msgs import task_utils
6 from strands_executive_msgs.msg import Task
7 from strands_executive_msgs.srv import DemandTask, SetExecutionStatus
8 
9 
10 class TaskDemander(object):
11  """ Create a services that will propose a the given task on demand """
12  def __init__(self):
13  super(TaskDemander, self).__init__()
14 
15  demand_task_service = '/task_executor/demand_task'
16  set_exe_stat_srv_name = '/task_executor/set_execution_status'
17  rospy.loginfo("Waiting for task_executor service...")
18  rospy.wait_for_service(demand_task_service)
19  rospy.wait_for_service(set_exe_stat_srv_name)
20  rospy.loginfo("Done")
21  self.demand_task_srv = rospy.ServiceProxy(demand_task_service, DemandTask)
22  set_execution_status = rospy.ServiceProxy(set_exe_stat_srv_name, SetExecutionStatus)
23  set_execution_status(True)
24  self.services = []
25 
26 
27  def demand_task(self, task):
28  """ Demand a task and catch any exceptions """
29  try:
30  self.demand_task_srv(task)
31  except Exception, e:
32  rospy.logwarn(e)
33 
34  def offer_demand_service(self, task):
35 
36  def demand(req):
37  rospy.loginfo('Demanding task of type %s' % task.action)
38  self.demand_task(task)
39  return EmptyResponse()
40 
41  service_name = 'demand_' + str(len(self.services)) + '_' + re.sub(r'\W', '_', task.action)
42  service = rospy.Service(service_name, Empty, demand)
43  self.services.append(service)
44  return service_name
45 
46 
47 


routine_behaviours
Author(s): Nick Hawes
autogenerated on Tue Mar 17 2015 21:43:31