def navigation_task_to_task(task): dest_str = task.navigation_task.location.description.data dest_str = dest_str.replace( "Waypoint", "Way Point") # We don't use the same string for SOME reason :) destination = TaskProtocol.look_up_value(TaskProtocol.location_dict, dest_str) if (destination == -1): print("Converter: Destination %s not found" % dest_str) print( "Please add to suii_protocol/protocol/enum_location_identifier" ) print( "And specify if you want instance ids generated in suii_protocol/task_protocol.py" ) return None tmp_task = Task() tmp_task.set_type( TaskProtocol.look_up_value(TaskProtocol.task_type_dict, TaskType.NAVIGATION.fullname)) tmp_task.set_source(-1) tmp_task.set_destination(destination) tmp_task.set_object(-1) tmp_task.set_container(-1) tmp_task.set_orientation(task.navigation_task.orientation.data) return tmp_task
def transportation_task_to_task(task): source = TaskProtocol.look_up_value( TaskProtocol.location_dict, task.transportation_task.source.description.data) if (source == -1): print("Error look up for: %s" % task.transportation_task.source.description.data) print( "Please add to suii_protocol/protocol/enum_location_identifier" ) print( "And specify if you want instance ids generated in suii_protocol/task_protocol.py" ) return None destination = TaskProtocol.look_up_value( TaskProtocol.location_dict, task.transportation_task.destination.description.data) if (destination == -1): print("Error look up for: %s" % task.transportation_task.destination.description.data) print( "Please add to suii_protocol/protocol/enum_location_identifier" ) print( "And specify if you want instance ids generated in suii_protocol/task_protocol.py" ) return None object_to_pick = TaskProtocol.look_up_value( TaskProtocol.object_dict, task.transportation_task.object.description.data) if (object_to_pick == -1): print("Error look up for: %s" % task.transportation_task.object.description.data) print( "Please add to suii_protocol/protocol/enum_object_identifier") return None container = -1 if (task.transportation_task.container.description.data != ""): container = TaskProtocol.look_up_value( TaskProtocol.container_dict, task.transportation_task.container.description.data) if (container == -1): print("Error look up for: %s" % task.transportation_task.container.description.data) print( "Please add to suii_protocol/protocol/enum_object_identifier" ) return None # create a new task tmp_task = Task() tmp_task.set_type( TaskProtocol.look_up_value(TaskProtocol.task_type_dict, TaskType.TRANSPORTATION.fullname)) tmp_task.set_source(source) location = source if (source == -1) else destination tmp_task.set_destination(location) tmp_task.set_object(object_to_pick) tmp_task.set_container(container) return tmp_task
def __init__(self): Task.__init__(self) self.action = -1 self.action_str = TaskProtocol.look_up_key( TaskProtocol.task_action_dict, self.action)
def set_action(self, id): self.action = id self.action_str = TaskProtocol.look_up_key( TaskProtocol.task_action_dict, id)
def set_object(self, obj): self.object = obj self.object_str = TaskProtocol.look_up_key(TaskProtocol.object_dict, obj)
def set_container(self, container): self.container = container self.container_str = TaskProtocol.look_up_key(TaskProtocol.container_dict, container)
def set_destination(self, dest): self.destination = dest self.destination_str = TaskProtocol.look_up_key(TaskProtocol.location_dict, dest)
def set_source(self, src): self.source = src self.source_str = TaskProtocol.look_up_key(TaskProtocol.location_dict, src)
def set_type(self, t_type): self.type = t_type self.type_str = TaskProtocol.look_up_key(TaskProtocol.task_type_dict, t_type)
def set_orientation(self, orientation): self.orientation = orientation self.orientation_str = TaskProtocol.look_up_key(TaskProtocol.orientation_dict, self.orientation)
from functools import cmp_to_key from suii_mux_manager_comm.yaml_handler import YAMLHandler from suii_mux_manager_comm.task_with_action import TaskWithAction from suii_mux_manager_comm.task import Task, TaskStatus from suii_mux_manager_comm.task_list import TaskList from suii_mux_manager_comm.action_list import ActionList from suii_protocol.task_protocol import TaskProtocol from suii_protocol.protocol.enum_task_action import TaskActionType from suii_protocol.protocol.enum_task_type import TaskType from suii_protocol.protocol.enum_location_identifier import LocationIdentifierType from suii_protocol.protocol.enum_orientation import OrientationIdentifierType from enum import Enum EXIT_KEY = TaskProtocol.look_up_value(TaskProtocol.location_dict, LocationIdentifierType.EX.fullname) ## ===== Main class ==== ## class TaskManager(object): MAX_HOLDING_CAPACITY = 3 def __init__(self, holding_capacity=MAX_HOLDING_CAPACITY, yaml_path="", verbose=False): # Basic config self.holding_capacity = holding_capacity self.yaml_path = yaml_path self.verbose = verbose self.MAX_REPLAN_ATTEMPTS = 10 # Here come the lists self.task_list = TaskList() # The current one self.task_list_last_updated = TaskList() # Last replanned task list