Пример #1
0
def choosenTasks(name, allert=""):
    message = "%s , how can i help you? \n" % (name)
    message += '{:s}'.format('\u0332'.join(allert))
    event, rips = WindowTask(title=robot_gui_title,
                             message=message,
                             list=[
                                 'Bring to me keys',
                                 'Bring to me food delivered', 'On/Off Tv',
                                 'Cook me something', 'Open/Close Garage'
                             ],
                             key="Tk")
    ModifyDatabaseStorage(name)
    Settings.ModifyName(name)
    if event == 'Ok':
        if (rips['Tk'] != []):
            SetAllActionsAvailableFromDB()
            SetAllActionsFromDB()
            if (rips['Tk'][0] == 'Bring to me keys'):
                MainTaskKeys(name, task=rips['Tk'][0])
            elif (rips['Tk'][0] == 'Bring to me food delivered'):
                MainTaskFood(name, task=rips['Tk'][0])
            elif (rips['Tk'][0] == 'On/Off Tv'):
                MainTaskOnOffTV(name, task=rips['Tk'][0])
            elif (rips['Tk'][0] == 'Open/Close Garage'):
                MainTaskOpenCloseGarage(name, task=rips['Tk'][0])
            elif (rips['Tk'][0] == 'Cook me something'):
                MainTaskCook(name, task=rips['Tk'][0])
        else:
            choosenTasks(name, allert='Please, choose Task')
    if event == 'Reset Db':
        ClearDatabaseStorage()
        ClearDatabaseActions()
        Settings.ClearActualSolution()
        ProgressWinodw(robot_gui_title, 'Reset of Database ...', 100, 10)
        subprocess.run('python MainRonRobot.py')
    if (event == 'View Home'):
        event, result = ViewMapPopup(robot_gui_title)
        if (event == 'Back'):
            choosenTasks(name)
        else:
            PopupCancel(robot_gui_aborted)
    else:
        PopupCancel(robot_gui_aborted)
Пример #2
0
def MainTaskOnOffTV(name, task):
    if (Settings.PositionRon == [] and Settings.PositionController == []):
        Settings.ModifyName(name[0])
        event, onTv = Window(robot_gui_title,
                             '%s , I have to on or off the TV?' % (name),
                             'OTV', ['OnTv', 'OffTv'])
        if event == 'Ok':
            Settings.OnTv = onTv['OTV'][0]
            OnOrOffTv = Settings.OnTv
            list_rooms = [
                'Personalroom', 'Kitchen', 'Bedroom', 'Bathroom', 'Livingroom',
                'Floor'
            ]
            event, position_start = Window(
                robot_gui_title, 'Hi %s , in which room i am ?' % (name), 'LB',
                list_rooms, True)
            if event == 'Ok' or event == 'Read From Sensor':
                if (event != 'Read From Sensor'):
                    Settings.SetPositionRon(position_start['LB'][0])
                else:
                    Settings.SetPositionRon(random.choice(list_rooms))
                if (Settings.HasController == []):
                    solution, goal_position, where_controller, has_controller = RonTaskOnOffTv(
                        Settings.PositionRon[0], OnOrOffTv)
                    actions = define_actions_robot(solution)
                    Settings.SetActualSolution(solution)
                    if (Settings.ActualSolution != [[]]):
                        start_pos_mess = start_position_message_tv(
                            robot_position=Settings.PositionRon[0],
                            position_object=where_controller,
                            position_tv=Settings.PositionTv[0])
                        plan_mess = planning_message_tv(
                            has_controller=has_controller, planning=actions)
                        Popup('Start Position : ', start_pos_mess)
                        Popup('Solution : ', plan_mess)
                        robot_environment(actions,
                                          Settings.PositionRon[0],
                                          where_controller,
                                          goal_position,
                                          has_controller,
                                          targ=task)
                    else:
                        event, sol = Window(
                            robot_gui_title,
                            'the problem is not feasible.\nIt is necessary to add in Database Of Actions of Ron:\n-OnTv / OffTv\n-PickupController. \nYou can choose one of these actions :\nP.s You can Add also an action\nthat will be useful after for other task.',
                            list=Settings.AllActions,
                            key="ADD_DEL_ACT")

                        if event == 'Ok':
                            Settings.AddAction(sol['ADD_DEL_ACT'][0])
                            Settings.DropAction((sol['ADD_DEL_ACT'][0]).name)
                            ModifyDatabaseActions(Settings.ActualActions)
                            ModifyDatabaseAllActionsAvailable(
                                Settings.AllActions)
                            MainTaskOnOffTV(name, task)
                        else:
                            PopupCancel(robot_gui_aborted)

            else:
                PopupCancel(robot_gui_aborted)

        else:
            PopupCancel(robot_gui_aborted)
    else:
        OnOrOffTv = Settings.OnTv
        solution, goal_position, where_controller, has_controller = RonTaskOnOffTv(
            Settings.PositionRon[0], OnOrOffTv)
        Settings.SetActualSolution(solution)
        if (Settings.ActualSolution != [[]]):
            if (Settings.HasController[0] == 'no'):
                Has_controller = False
            else:
                Has_controller = True
            actions = define_actions_robot(Settings.ActualSolution[0])

            start_pos_mess = start_position_message_tv(
                robot_position=Settings.PositionRon[0],
                position_object=where_controller,
                position_tv=Settings.PositionTv[0])
            plan_mess = planning_message_tv(has_controller=Has_controller,
                                            planning=actions)

            Popup('Start Position : ', start_pos_mess)
            Popup('Solution : ', plan_mess)
            robot_environment(actions,
                              Settings.PositionRon[0],
                              where_controller,
                              goal_position,
                              Has_controller,
                              targ=task)
        else:
            event, sol = Window(
                robot_gui_title,
                'the problem is not feasible.\nIt is necessary to add in Database Of Actions of Ron:\n-OnTv / OffTv\n-PickupController\nYou can choose one of these actions :\nP.s You can Add also an action\nthat will be useful after for other task.',
                list=Settings.AllActions,
                key="ADD_DEL_ACT")

            if event == 'Ok':
                Settings.AddAction(sol['ADD_DEL_ACT'][0])
                Settings.DropAction((sol['ADD_DEL_ACT'][0]).name)
                ModifyDatabaseActions(Settings.ActualActions)
                ModifyDatabaseAllActionsAvailable(Settings.AllActions)
                MainTaskOnOffTV(name, task)
            else:
                PopupCancel(robot_gui_aborted)
Пример #3
0
def MainTaskOpenCloseGarage(name, task):
    if (Settings.PositionRon == []):
        Settings.ModifyName(name[0])
        event, taskOpenClose = Window(
            robot_gui_title,
            '%s , I have to open or close the Garage?' % (name), 'OCG',
            ['OpenGarage', 'CloseGarage'])
        Settings.SetOpenGarage(taskOpenClose['OCG'][0])
        if event == 'Ok':
            taskOpenClose = taskOpenClose['OCG'][0]
            list_rooms = [
                'Personalroom', 'Kitchen', 'Bedroom', 'Bathroom', 'Livingroom',
                'Floor', 'Door'
            ]
            event, position_start = Window(
                robot_gui_title, 'Hi %s , in which room i am ?' % (name), 'LB',
                list_rooms, True)
            if event == 'Ok' or event == 'Read From Sensor':
                if (event != 'Read From Sensor'):
                    Settings.SetPositionRon(position_start['LB'][0])
                else:
                    Settings.SetPositionRon(random.choice(list_rooms))
                if (Settings.HasKeys == [] and Settings.PositionKeys == []):
                    solution, goal_position, where_key, has_keys = RonTaskOpenCloseGarage(
                        Settings.PositionRon[0],
                        taskOpenCloseOff=taskOpenClose)
                    actions = define_actions_robot(solution)
                    Settings.SetActualSolution(solution)
                    if (Settings.ActualSolution != [[]]):
                        start_pos_mess = start_position_message_open_close_garage(
                            robot_position=Settings.PositionRon[0],
                            position_object=Settings.PositionKeys[0],
                            person_position=Settings.PositionGarage[0])
                        plan_mess = planning_message_open_close_garage(
                            has_keys=has_keys, planning=actions)
                        Popup('Start Position : ', start_pos_mess)
                        Popup('Solution : ', plan_mess)
                        robot_environment(actions,
                                          Settings.PositionRon[0],
                                          where_key,
                                          goal_position,
                                          has_keys,
                                          targ=task)
                    else:
                        event, sol = Window(
                            robot_gui_title,
                            'the problem is not feasible.\nIt is necessary to add in Database Of Actions of Ron:\n-PickupKeys\n-OpenGarage / CloseGarage\n.\nYou can choose one of these actions\nP.s You can Add also an action\nthat will be useful after for other task.',
                            list=Settings.AllActions,
                            key="ADD_DEL_ACT")

                        if event == 'Ok':
                            Settings.AddAction(sol['ADD_DEL_ACT'][0])
                            Settings.DropAction((sol['ADD_DEL_ACT'][0]).name)
                            ModifyDatabaseActions(Settings.ActualActions)
                            ModifyDatabaseAllActionsAvailable(
                                Settings.AllActions)
                            MainTaskOpenCloseGarage(name, task)
                        else:
                            PopupCancel(robot_gui_aborted)

            else:
                PopupCancel(robot_gui_aborted)
                Settings.ClearActualSolution()
        else:
            PopupCancel(robot_gui_aborted)
            Settings.ClearActualSolution()
    else:
        taskOpenClose = Settings.OpenGarage[0]
        solution, goal_position, where_key, has_keys = RonTaskOpenCloseGarage(
            Settings.PositionRon[0], taskOpenCloseOff=taskOpenClose)
        Settings.SetActualSolution(solution)
        if (Settings.ActualSolution != [[]]):
            if (Settings.HasKeys[0] == 'no'):
                Has_key = False
            else:
                Has_key = True
            actions = define_actions_robot(Settings.ActualSolution[0])

            start_pos_mess = start_position_message_open_close_garage(
                robot_position=Settings.PositionRon[0],
                position_object=Settings.PositionKeys[0],
                person_position=Settings.PositionGarage[0])
            plan_mess = planning_message_open_close_garage(has_keys=Has_key,
                                                           planning=actions)

            Popup('Start Position : ', start_pos_mess)
            Popup('Solution : ', plan_mess)
            robot_environment(actions,
                              Settings.PositionRon[0],
                              Settings.PositionKeys[0],
                              Settings.PositionGarage[0],
                              Has_key,
                              targ=task)
        else:
            event, sol = Window(
                robot_gui_title,
                'the problem is not feasible.\nIt is necessary to add in Database Of Actions of Ron:\n-PickupKeys\n-OpenGarage / CloseGarage.\nYou can choose one of these actions\nP.s You can Add also an action\nthat will be useful after for other task.',
                list=Settings.AllActions,
                key="ADD_DEL_ACT")

            if event == 'Ok':
                Settings.AddAction(sol['ADD_DEL_ACT'][0])
                Settings.DropAction(sol['ADD_DEL_ACT'][0].name)
                ModifyDatabaseActions(Settings.ActualActions)
                ModifyDatabaseAllActionsAvailable(Settings.AllActions)
                MainTaskOpenCloseGarage(name, task)
            else:
                PopupCancel(robot_gui_aborted)
                Settings.ClearActualSolution()
Пример #4
0
def MainTaskFood(name, task):
    if (Settings.PositionRon == []):
        Settings.ModifyName(name[0])
        list_rooms = [
            'Personalroom', 'Kitchen', 'Bedroom', 'Bathroom', 'Livingroom',
            'Floor', 'Door'
        ]
        event, position_start = Window(robot_gui_title,
                                       'Hi %s , in which room i am ?' % (name),
                                       'LB', list_rooms, True)
        if event == 'Ok' or event == 'Read From Sensor':
            if (event != 'Read From Sensor'):
                Settings.SetPositionRon(position_start['LB'][0])
            else:
                Settings.SetPositionRon(random.choice(list_rooms))
            if (Settings.HasKeys == [] and Settings.PositionPerson == []):
                solution, goal_position, where_food, has_food = RonTaskFood(
                    Settings.PositionRon[0], Settings.PositionFood[0])
                actions = define_actions_robot(solution)
                Settings.SetActualSolution(solution)
                if (Settings.ActualSolution != [[]]):
                    start_pos_mess = start_position_message_food(
                        robot_position=Settings.PositionRon[0],
                        position_object=where_food,
                        person_position=Settings.PositionPerson[0])
                    plan_mess = planning_message_food(has_food=has_food,
                                                      planning=actions)
                    Popup('Start Position : ', start_pos_mess)
                    Popup('Solution : ', plan_mess)
                    robot_environment(actions,
                                      Settings.PositionRon[0],
                                      where_food,
                                      goal_position,
                                      has_food,
                                      targ=task)
                else:
                    event, sol = Window(
                        robot_gui_title,
                        'the problem is not feasible.\nIt is necessary to add in Database Of Actions of Ron:\n-PickupFood\n-DropFood. \nYou can choose one of these actions :\nP.s You can Add also an action\nthat will be useful after for other task.',
                        list=Settings.AllActions,
                        key="ADD_DEL_ACT")

                    if event == 'Ok':
                        Settings.AddAction(sol['ADD_DEL_ACT'][0])
                        Settings.DropAction((sol['ADD_DEL_ACT'][0]).name)
                        ModifyDatabaseActions(Settings.ActualActions)
                        ModifyDatabaseAllActionsAvailable(Settings.AllActions)
                        MainTaskFood(name, task)
                    else:
                        PopupCancel(robot_gui_aborted)

        else:
            PopupCancel(robot_gui_aborted)
    else:
        solution, goal_position, where_food, has_keys = RonTaskFood(
            Settings.PositionRon[0], Settings.PositionFood[0])
        Settings.SetActualSolution(solution)
        if (Settings.ActualSolution != [[]]):
            if (Settings.HasFood[0] == 'no'):
                Has_food = False
            else:
                Has_food = True
            actions = define_actions_robot(Settings.ActualSolution[0])

            start_pos_mess = start_position_message_food(
                robot_position=Settings.PositionRon[0],
                position_object=where_food,
                person_position=Settings.PositionPerson[0])
            plan_mess = planning_message_food(has_food=Has_food,
                                              planning=actions)

            Popup('Start Position : ', start_pos_mess)
            Popup('Solution : ', plan_mess)
            robot_environment(actions, Settings.PositionRon[0], where_food,
                              goal_position, Has_food, task)
        else:
            event, sol = Window(
                robot_gui_title,
                'the problem is not feasible.\nIt is necessary to add in Database Of Actions of Ron:\n-PickupFood\n-DropFood. \nYou can choose one of these actions :\nP.s You can Add also an action\nthat will be useful after for other task.',
                list=Settings.AllActions,
                key="ADD_DEL_ACT")

            if event == 'Ok':
                Settings.AddAction(sol['ADD_DEL_ACT'][0])
                Settings.DropAction((sol['ADD_DEL_ACT'][0]).name)
                ModifyDatabaseActions(Settings.ActualActions)
                ModifyDatabaseAllActionsAvailable(Settings.AllActions)
                MainTaskFood(name, task)
            else:
                PopupCancel(robot_gui_aborted)
Пример #5
0
        PopupCancel(robot_gui_aborted)


# The main function

if __name__ == "__main__":
    sg.theme('DarkAmber')
    Settings.init()
    name_db = ReadDatabaseStorage()
    if (name_db != ''):
        result = name_db.index(' 1')
        choosenTasks(name_db[:result])
    else:
        event, name = sg.Window(robot_gui_title, [
            [sg.Image(r'Image\robot.png')],
            [
                sg.Text(
                    'Hi, im Ron, The Robot that aims to performs many task on your Home!'
                )
            ], [sg.Text('Can i know your Name?'),
                sg.InputText()],
            [sg.Text('When you are ready, Click OK to Start! ')],
            [sg.Button('Ok'), sg.Button('Off Ron')]
        ]).read(close=True)

        if event == 'Ok':
            choosenTasks(name[1])

        else:
            PopupCancel(robot_gui_aborted)
Пример #6
0
def RonTaskCookFood(position_start):
    solution = []
    Settings.ClearActualSolution()
    where_food = Settings.PositionFoodCooking[0]
    if (Settings.TypeFood == [] and Settings.PositionPerson == []):
        event, goal_position = Window(robot_gui_title, 'Where are you now? ',
                                      'LC', [
                                          'Personalroom', 'Kitchen', 'Bedroom',
                                          'Bathroom', 'Livingroom', 'Floor'
                                      ])
        if event == 'Ok':
            goal_position = goal_position["LC"][0]
            event, type_food = Window(robot_gui_title,
                                      'What type of food do you prefer?', 'FF',
                                      ['Pasta', 'Sandwich', 'Hamburger'])
            if event == 'Ok':
                type_food = type_food["FF"][0]

                Settings.SetTypeFood(type_food)
                Settings.SetPositionPerson(goal_position)

                try:
                    solution.append(
                        RonTaskCookFoodPosStart(
                            initial_position=position_start.strip(),
                            process_task='go_cook',
                            where_food=where_food.strip(),
                            goal_position=where_food.strip(),
                            type_food=type_food))

                    solution.append(
                        RonTaskCookFoodPosStart(
                            initial_position=where_food.strip(),
                            process_task="take",
                            where_food=where_food.strip(),
                            goal_position=where_food.strip(),
                            type_food=type_food))
                    solution.append(
                        RonTaskCookFoodPosStart(
                            initial_position=goal_position.strip(),
                            process_task="bring_to",
                            where_food=where_food.strip(),
                            goal_position=goal_position.strip(),
                            type_food=type_food))
                    solution.append(
                        RonTaskCookFoodPosStart(
                            initial_position=goal_position.strip(),
                            process_task="drop",
                            where_food=goal_position.strip(),
                            goal_position=goal_position.strip(),
                            type_food=type_food))
                    ProgressWinodw('Load Solution ...',
                                   'Solution AI from aima ...', 100, 10)
                    solution = [x for x in solution if x != []]
                    Settings.SetActualSolution(solution)
                except:
                    Settings.ClearActualSolution()
                    solution = []
            else:
                PopupCancel(robot_gui_aborted)

        else:
            PopupCancel(robot_gui_aborted)

    else:
        where_food = Settings.PositionFoodCooking[0]
        goal_position = Settings.PositionPerson[0]
        type_food = Settings.TypeFood[0]
        try:
            solution.append(
                RonTaskCookFoodPosStart(
                    initial_position=position_start.strip(),
                    process_task='go_cook',
                    where_food=where_food.strip(),
                    goal_position=where_food.strip(),
                    type_food=type_food))

            solution.append(
                RonTaskCookFoodPosStart(initial_position=where_food.strip(),
                                        process_task="take",
                                        where_food=where_food.strip(),
                                        goal_position=where_food.strip(),
                                        type_food=type_food))
            solution.append(
                RonTaskCookFoodPosStart(initial_position=goal_position.strip(),
                                        process_task="bring_to",
                                        where_food=where_food.strip(),
                                        goal_position=goal_position.strip(),
                                        type_food=type_food))
            solution.append(
                RonTaskCookFoodPosStart(initial_position=goal_position.strip(),
                                        process_task="drop",
                                        where_food=goal_position.strip(),
                                        goal_position=goal_position.strip(),
                                        type_food=type_food))
            ProgressWinodw('Load Solution ...', 'Solution AI from aima ...',
                           100, 10)
            solution = [x for x in solution if x != []]
            Settings.SetActualSolution(solution)
        except:
            Settings.ClearActualSolution()
            solution = []

    return solution, goal_position, where_food, type_food
Пример #7
0
def RonTaskOnOffTv(position_start, OnOrOffTv):
    solution = []
    Settings.ClearActualSolution()
    goal_position = Settings.PositionTv[0]
    if (Settings.PositionController == [] and Settings.HasController == []):
        event, controller_tv = Window(
            robot_gui_title,
            'I already have the Controller of Tv you need (no or yes) ', 'LF',
            ['no', 'yes'])
        if event == 'Ok':
            controller_tv_ = controller_tv["LF"][0]
            if (controller_tv_.strip() == "no"):
                has_controller = False

                Settings.SetPositionHasController(controller_tv_)
                event, where_controller = Window(
                    robot_gui_title, 'Where are the Controller? ', 'LR', [
                        'Personalroom', 'Kitchen', 'Bedroom', 'Bathroom',
                        'Livingroom', 'Floor'
                    ])
                where_controller = where_controller["LR"][0]
                Settings.SetPositionController(where_controller)
                if event == 'Ok':

                    try:
                        solution.append(
                            RonTaskOnOffTvPosStart(
                                initial_position=position_start.strip(),
                                has_controller=controller_tv_.strip(),
                                where_controller=where_controller.strip(),
                                goal_position=where_controller.strip(),
                                taskOnOff=OnOrOffTv))

                        solution.append(
                            RonTaskOnOffTvPosStart(
                                initial_position=where_controller.strip(),
                                has_controller="go_with_controller",
                                where_controller=where_controller.strip(),
                                goal_position=goal_position.strip(),
                                taskOnOff=OnOrOffTv))
                        solution.append(
                            RonTaskOnOffTvPosStart(
                                initial_position=goal_position.strip(),
                                has_controller="bo",
                                where_controller=goal_position.strip(),
                                goal_position=goal_position.strip(),
                                taskOnOff=OnOrOffTv))
                        ProgressWinodw('Load Solution ...',
                                       'Solution AI from aima ...', 100, 10)
                        solution = [x for x in solution if x != []]
                        Settings.SetActualSolution(solution)
                    except:
                        Settings.ClearActualSolution()
                        solution = []

                else:
                    PopupCancel(robot_gui_aborted)
                    #ClearDatabaseActions()

            else:
                has_controller = True
                where_controller = position_start
                Settings.SetPositionHasController(controller_tv)

                try:
                    solution.append(
                        RonTaskOnOffTvPosStart(
                            initial_position=position_start,
                            has_controller="go_with_controller",
                            where_controller=where_controller,
                            goal_position=goal_position,
                            taskOnOff=OnOrOffTv))
                    solution.append(
                        RonTaskOnOffTvPosStart(initial_position=goal_position,
                                               has_controller="bo",
                                               where_controller=goal_position,
                                               goal_position=goal_position,
                                               taskOnOff=OnOrOffTv))
                    ProgressWinodw('Load Solution ...',
                                   'Solution AI from aima ...', 100, 10)

                    solution = [x for x in solution if x != []]
                    Settings.SetActualSolution(solution)
                except:
                    Settings.ClearActualSolution()
                    solution = []
        else:
            PopupCancel(robot_gui_aborted)
            #ClearDatabaseActions()
    else:
        if (Settings.HasController[0] == 'no'):
            has_controller = False
            where_controller = Settings.PositionController[0]
        else:
            has_controller = True
            where_controller = Settings.PositionRon[0]
        if (Settings.HasController[0] == 'no'):
            try:
                solution.append(
                    RonTaskOnOffTvPosStart(
                        initial_position=position_start.strip(),
                        has_controller=Settings.HasController[0],
                        where_controller=where_controller,
                        goal_position=where_controller,
                        taskOnOff=OnOrOffTv))

                solution.append(
                    RonTaskOnOffTvPosStart(initial_position=where_controller,
                                           has_controller="go_with_controller",
                                           where_controller=where_controller,
                                           goal_position=goal_position,
                                           taskOnOff=OnOrOffTv))
                solution.append(
                    RonTaskOnOffTvPosStart(initial_position=goal_position,
                                           has_controller="bo",
                                           where_controller=goal_position,
                                           goal_position=goal_position,
                                           taskOnOff=OnOrOffTv))
                ProgressWinodw('Load Solution ...',
                               'Solution AI from aima ...', 100, 10)
                solution = [x for x in solution if x != []]
                Settings.SetActualSolution(solution)
            except:
                Settings.ClearActualSolution()
                solution = []
        else:
            try:
                solution.append(
                    RonTaskOnOffTvPosStart(
                        initial_position=position_start.strip(),
                        has_controller="go_with_controller",
                        where_controller=where_controller,
                        goal_position=goal_position,
                        taskOnOff=OnOrOffTv))
                solution.append(
                    RonTaskOnOffTvPosStart(initial_position=goal_position,
                                           has_controller="bo",
                                           where_controller=goal_position,
                                           goal_position=goal_position,
                                           taskOnOff=OnOrOffTv))
                ProgressWinodw('Load Solution ...',
                               'Solution AI from aima ...', 100, 10)

                solution = [x for x in solution if x != []]
                Settings.SetActualSolution(solution)
            except:
                Settings.ClearActualSolution()
                solution = []
    return solution, goal_position, where_controller, has_controller
Пример #8
0
def RonTaskFood(position_start, where_food):
    solution = []
    Settings.ClearActualSolution()
    if (Settings.HasFood == [] and Settings.PositionPerson == []):
        event, goal_position = Window(robot_gui_title, 'Where are you now? ',
                                      'LC', [
                                          'Personalroom', 'Kitchen', 'Bedroom',
                                          'Bathroom', 'Livingroom', 'Floor'
                                      ])
        if event == 'Ok':
            goal_position = goal_position["LC"][0]
            event, food = Window(
                robot_gui_title,
                'I already have the Food you need (no or yes) ', 'LF',
                ['no', 'yes'])
            if event == 'Ok':
                food = food["LF"][0]
                if (food.strip() == "no"):
                    has_food = False
                    #event, where_keys = Window(robot_gui_title, 'Where are the keys? ', 'LR',['Personalroom', 'Kitchen', 'Bedroom', 'Bathroom', 'Livingroom', 'Floor'])
                    #if event == 'Ok':
                    Settings.SetPositionHasFood(food)
                    Settings.SetPositionPerson(goal_position)
                    # settings.SetPositionFood(where_food);
                    try:
                        solution.append(
                            RonTaskFoodPosStart(
                                initial_position=position_start.strip(),
                                has_food=food.strip(),
                                where_food=where_food.strip(),
                                goal_position=where_food.strip()))

                        solution.append(
                            RonTaskFoodPosStart(
                                initial_position=where_food.strip(),
                                has_food="go_with_food",
                                where_food=where_food.strip(),
                                goal_position=goal_position.strip()))
                        solution.append(
                            RonTaskFoodPosStart(
                                initial_position=goal_position.strip(),
                                has_food="bo",
                                where_food=goal_position.strip(),
                                goal_position=goal_position.strip()))
                        ProgressWinodw('Load Solution ...',
                                       'Solution AI from aima ...', 100, 10)
                        solution = [x for x in solution if x != []]
                        Settings.SetActualSolution(solution)
                    except:
                        Settings.ClearActualSolution()
                        solution = []
                else:
                    has_food = True
                    where_food = position_start
                    Settings.SetPositionHasFood(food.strip())
                    Settings.SetPositionPerson(goal_position.strip())
                    Settings.SetPositionFood(where_food.strip())
                    try:
                        solution.append(
                            RonTaskFoodPosStart(
                                initial_position=position_start,
                                has_food="go_with_food",
                                where_food=where_food,
                                goal_position=goal_position))
                        solution.append(
                            RonTaskFoodPosStart(initial_position=goal_position,
                                                has_food="bo",
                                                where_food=goal_position,
                                                goal_position=goal_position))
                        ProgressWinodw('Load Solution ...',
                                       'Solution AI from aima ...', 100, 10)

                        solution = [x for x in solution if x != []]
                        Settings.SetActualSolution(solution)
                    except:
                        Settings.ClearActualSolution()
                        solution = []
            else:
                PopupCancel(robot_gui_aborted)
                #ClearDatabaseActions()
        else:
            PopupCancel(robot_gui_aborted)
            #ClearDatabaseActions()
    else:
        if (Settings.HasFood[0] == 'no'):
            has_food = False
            where_food = Settings.PositionFood[0]
        else:
            has_food = True
            where_food = Settings.PositionRon[0]

        goal_position = Settings.PositionPerson[0]
        if (Settings.HasFood[0] == 'no'):
            try:
                solution.append(
                    RonTaskFoodPosStart(
                        initial_position=position_start.strip(),
                        has_food=Settings.HasFood[0],
                        where_food=where_food,
                        goal_position=where_food))

                solution.append(
                    RonTaskFoodPosStart(
                        initial_position=where_food,
                        has_food="go_with_food",
                        where_food=where_food,
                        goal_position=Settings.PositionPerson[0]))
                solution.append(
                    RonTaskFoodPosStart(
                        initial_position=Settings.PositionPerson[0],
                        has_food="bo",
                        where_food=Settings.PositionPerson[0],
                        goal_position=Settings.PositionPerson[0]))
                ProgressWinodw('Load Solution ...',
                               'Solution AI from aima ...', 100, 10)
                solution = [x for x in solution if x != []]
                Settings.SetActualSolution(solution)
            except:
                Settings.ClearActualSolution()
                solution = []
        else:
            try:
                solution.append(
                    RonTaskFoodPosStart(
                        initial_position=position_start.strip(),
                        has_food="go_with_food",
                        where_food=where_food,
                        goal_position=Settings.PositionPerson[0]))
                solution.append(
                    RonTaskFoodPosStart(
                        initial_position=Settings.PositionPerson[0],
                        has_food="bo",
                        where_food=Settings.PositionPerson[0],
                        goal_position=Settings.PositionPerson[0]))
                ProgressWinodw('Load Solution ...',
                               'Solution AI from aima ...', 100, 10)

                solution = [x for x in solution if x != []]
                Settings.SetActualSolution(solution)
            except:
                Settings.ClearActualSolution()
                solution = []
    return solution, goal_position, where_food, has_food
Пример #9
0
def RonTaskOpenCloseGarage(position_start, taskOpenCloseOff):
    solution = []
    Settings.ClearActualSolution()
    if (Settings.HasKeys == [] and Settings.PositionKeys == []):
        goal_position = Settings.PositionGarage[0]
        event, keys = Window(robot_gui_title,
                             'I already have the keys you need (no or yes) ',
                             'LF', ['no', 'yes'])
        if event == 'Ok':
            keys = keys["LF"][0]
            if (keys.strip() == "no"):
                has_keys = False
                event, where_keys = Window(
                    robot_gui_title, 'Where are the keys? ', 'LR', [
                        'Personalroom', 'Kitchen', 'Bedroom', 'Bathroom',
                        'Livingroom', 'Floor'
                    ])
                if event == 'Ok':

                    where_keys = where_keys["LR"][0]

                    Settings.SetPositionHasKey(keys)
                    Settings.SetPositionKeys(where_keys)
                    try:
                        solution.append(
                            RonTaskOpenCloseGaragePosStart(
                                initial_position=position_start.strip(),
                                has_keys=keys.strip(),
                                where_keys=where_keys.strip(),
                                goal_position=where_keys.strip(),
                                taskOpenCloseOff=taskOpenCloseOff))

                        solution.append(
                            RonTaskOpenCloseGaragePosStart(
                                initial_position=where_keys.strip(),
                                has_keys="go_with_keys",
                                where_keys=where_keys.strip(),
                                goal_position=goal_position.strip(),
                                taskOpenCloseOff=taskOpenCloseOff))
                        solution.append(
                            RonTaskOpenCloseGaragePosStart(
                                initial_position=goal_position.strip(),
                                has_keys="OpenCloseGarage",
                                where_keys=goal_position.strip(),
                                goal_position=goal_position.strip(),
                                taskOpenCloseOff=taskOpenCloseOff))
                        ProgressWinodw('Load Solution ...',
                                       'Solution AI from aima ...', 100, 10)
                        solution = [x for x in solution if x != []]
                        Settings.SetActualSolution(solution)
                    except:
                        Settings.ClearActualSolution()
                        solution = []
                else:
                    PopupCancel(robot_gui_aborted)
            else:
                has_keys = True
                where_keys = position_start
                Settings.SetPositionHasKey(keys.strip())
                Settings.SetPositionPerson(goal_position.strip())
                Settings.SetPositionKeys(where_keys.strip())
                try:
                    solution.append(
                        RonTaskOpenCloseGaragePosStart(
                            initial_position=position_start,
                            has_keys="go_with_keys",
                            where_keys=position_start,
                            goal_position=goal_position,
                            taskOpenCloseOff=taskOpenCloseOff))
                    solution.append(
                        RonTaskOpenCloseGaragePosStart(
                            initial_position=goal_position,
                            has_keys="OpenCloseGarage",
                            where_keys=goal_position,
                            goal_position=goal_position,
                            taskOpenCloseOff=taskOpenCloseOff))
                    ProgressWinodw('Load Solution ...',
                                   'Solution AI from aima ...', 100, 10)

                    solution = [x for x in solution if x != []]
                    Settings.SetActualSolution(solution)
                except:
                    Settings.ClearActualSolution()
                    solution = []
        else:
            PopupCancel(robot_gui_aborted)
    else:
        if (Settings.HasKeys[0] == 'no'):
            has_keys = False
        else:
            has_keys = True
        where_keys = Settings.PositionKeys[0]
        goal_position = Settings.PositionGarage[0]
        if (Settings.HasKeys[0] == 'no'):
            try:
                solution.append(
                    RonTaskOpenCloseGaragePosStart(
                        initial_position=position_start.strip(),
                        has_keys=Settings.HasKeys[0],
                        where_keys=Settings.PositionKeys[0],
                        goal_position=Settings.PositionKeys[0],
                        taskOpenCloseOff=taskOpenCloseOff))

                solution.append(
                    RonTaskOpenCloseGaragePosStart(
                        initial_position=Settings.PositionKeys[0],
                        has_keys="go_with_keys",
                        where_keys=Settings.PositionKeys[0],
                        goal_position=Settings.PositionGarage[0],
                        taskOpenCloseOff=taskOpenCloseOff))
                solution.append(
                    RonTaskOpenCloseGaragePosStart(
                        initial_position=Settings.PositionGarage[0],
                        has_keys="OpenCloseGarage",
                        where_keys=Settings.PositionGarage[0],
                        goal_position=Settings.PositionGarage[0],
                        taskOpenCloseOff=taskOpenCloseOff))
                ProgressWinodw('Load Solution ...',
                               'Solution AI from aima ...', 100, 10)
                solution = [x for x in solution if x != []]
                Settings.SetActualSolution(solution)
            except:
                Settings.ClearActualSolution()
                solution = []
        else:
            try:
                solution.append(
                    RonTaskOpenCloseGaragePosStart(
                        initial_position=position_start.strip(),
                        has_keys="go_with_keys",
                        where_keys=position_start.strip(),
                        goal_position=Settings.PositionGarage[0],
                        taskOpenCloseOff=taskOpenCloseOff))
                solution.append(
                    RonTaskOpenCloseGaragePosStart(
                        initial_position=Settings.PositionGarage[0],
                        has_keys="OpenCloseGarage",
                        where_keys=Settings.PositionGarage[0],
                        goal_position=Settings.PositionGarage[0],
                        taskOpenCloseOff=taskOpenCloseOff))
                ProgressWinodw('Load Solution ...',
                               'Solution AI from aima ...', 100, 10)

                solution = [x for x in solution if x != []]
                Settings.SetActualSolution(solution)
            except:
                Settings.ClearActualSolution()
                solution = []
    return solution, goal_position, where_keys, has_keys