Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
 def __init__(self):
     Task.__init__(self)
     self.action = -1
     self.action_str = TaskProtocol.look_up_key(
         TaskProtocol.task_action_dict, self.action)
Esempio n. 4
0
 def set_action(self, id):
     self.action = id
     self.action_str = TaskProtocol.look_up_key(
         TaskProtocol.task_action_dict, id)
Esempio n. 5
0
 def set_object(self, obj):
     self.object = obj
     self.object_str = TaskProtocol.look_up_key(TaskProtocol.object_dict, obj)
Esempio n. 6
0
 def set_container(self, container):
     self.container = container
     self.container_str = TaskProtocol.look_up_key(TaskProtocol.container_dict, container)
Esempio n. 7
0
 def set_destination(self, dest):
     self.destination = dest
     self.destination_str = TaskProtocol.look_up_key(TaskProtocol.location_dict, dest)
Esempio n. 8
0
 def set_source(self, src):
     self.source = src
     self.source_str = TaskProtocol.look_up_key(TaskProtocol.location_dict, src)
Esempio n. 9
0
 def set_type(self, t_type):
     self.type = t_type
     self.type_str = TaskProtocol.look_up_key(TaskProtocol.task_type_dict, t_type)
Esempio n. 10
0
 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