def assign_task_proxies(self, task_name):
"""
Assigns service proxies for specified task.
Args:
task_name(str): Name of task to lookup services for. Will assign proxies by
looking for service function with formatted string <task_name>_<service_name>
"""
for task_arr in self.proxy_services:
service_name = "{}_{}".format(task_name, task_arr[0])
#loginfo("WAITING ON SERVIVCE {}".format(service_name))
rospy.wait_for_service(service_name)
#loginfo("DONE WAITING ON SERVIVCE {}".format(service_name))
setattr(
self.blackboard,
"{}_proxy".format(task_arr[0]),
rospy.ServiceProxy(
service_name,
task_arr[1]
)
)
if self.task_step_serve_sub:
self.task_step_serve_sub.unregister()
# Subscribe to topics to failure or success of task steps
self.task_step_serve_sub = rospy.Subscriber(
'/needybot/{}/step/serve'.format(task_name),
ros_msg.String,
self.task_step_serve_handler
)
# Call reset on task
self.blackboard.reset_proxy(EmptyRequest())
评论列表
文章目录