def get_task_goals_and_script()

in Luminous4Alfred/TaskParser/cdf_gene/utils.py [0:0]


def get_task_goals_and_script(example):
    targets = get_targets(example)
    if example['task_type'] == "look_at_obj_in_light":
        task_goal = {
                "goal_id": 0,
                "object_states": [
                    {
                        "name": "{}_1".format(targets['toggle']),
                        "isToggled": True
                    },
                    {
                        "name": "{}_1".format(targets['object']),
                        "isPickedUp": True
                    }
                ],
                "object_states_relation": "and"
            }
        
        script = [
            {
                "action": "GotoLocation",
                "name": "{}_1".format(targets['object'])
            },
            {
                "action": "PickupObject",
                "name": "{}_1".format(targets['object'])
            },
            {
            "action": "GotoLocation",
            "name": "{}_1".format(targets['toggle'])
            },
            {
                "action": "ToggleObjectOn",
                "name": "{}_1".format(targets['toggle'])
            }]
    elif example['task_type'] == "pick_and_place_simple":
        task_goal = {
                "goal_id": 0,
                "object_states": [{
                    "name": "{}_1".format(targets['object']),
                    "receptacle_name": "{}_1".format(targets['parent'])
                }],
                "object_states_relation": "and"
            }
        script = get_sliced_script_from_targets(targets)

        script += [
            {
                "action": "PickupObject",
                "name": "{}_1".format(targets['object'])
            },
            {
                "action": "GotoLocation",
                "name": "{}_1".format(targets['parent'])
            },
            {
                "action": "PutObject",
                "name": "{}_1".format(targets['parent'])
        }]
    elif example['task_type'] == "pick_and_place_with_movable_recep":
        task_goal = {
                "goal_id": 0,
                "object_states": [{
                    "name": "{}_1".format(targets['object']),
                    "receptacle_name": "{}_1".format(targets['mrecep'])
                },{
                    "name": "{}_1".format(targets['mrecep']),
                    "receptacle_name": "{}_1".format(targets['parent'])
                }
                ],
                "object_states_relation": "and"
            }

        script = get_sliced_script_from_targets(targets)

        script += [
            {
                "action": "PickupObject",
                "name": "{}_1".format(targets['object'])
            },
            {
                "action": "GotoLocation",
                "name": "{}_1".format(targets['mrecep'])
            },
            {
                "action": "PutObject",
                "name": "{}_1".format(targets['mrecep'])
            },
            {
                "action": "PickupObject",
                "name": "{}_1".format(targets['mrecep'])
            },
            {
                "action": "GotoLocation",
                "name": "{}_1".format(targets['parent'])
            },
            {
                "action": "PutObject",
                "name": "{}_1".format(targets['parent'])
            } 
        ]
    elif example['task_type'] == "pick_two_obj_and_place":
        task_goal = {
                "goal_id": 0,
                "object_states": [{
                    "name": "{}_1".format(targets['object']),
                    "receptacle_name": "{}_1".format(targets['parent'])
                },{
                    "name": "{}_2".format(targets['object']),
                    "receptacle_name": "{}_1".format(targets['parent'])
                }
                ],
                "object_states_relation": "and"
            }

        script = get_sliced_script_from_targets(targets)

        script += [
            {
                "action": "PickupObject",
                "name": "{}_1".format(targets['object'])
            },
            {
                "action": "GotoLocation",
                "name": "{}_1".format(targets['parent'])
            },
            {
                "action": "PutObject",
                "name": "{}_1".format(targets['parent'])
            },
            {
                "action": "GotoLocation",
                "name": "{}_2".format(targets['object'])
            },
            {
                "action": "PickupObject",
                "name": "{}_2".format(targets['object'])
            },   
            {
                "action": "GotoLocation",
                "name": "{}_1".format(targets['parent'])
            },
            {
                "action": "PutObject",
                "name": "{}_1".format(targets['parent'])
            },
        ]
    elif example['task_type'] == "pick_cool_then_place_in_recep":
        target_obj_temperature = "Cold"
        task_goal = {
                "goal_id": 0,
                "object_states": [{
                    "name": "{}_1".format(targets['object']),
                    "receptacle_name": "{}_1".format(targets['parent'])
                },{
                    "name": "{}_1".format(targets['object']),
                    "ObjectTemperature": target_obj_temperature
                }
                ],
                "object_states_relation": "and"
            }

        script = get_sliced_script_from_targets(targets)

        script += [{
                "action": "PickupObject",
                "name": "{}_1".format(targets['object'])
            },
            {
                "action": "GotoLocation",
                "name": "{}_1".format("Fridge")
            },
            {
                "action": "CoolObject",
                "name": "{}_1".format(targets['object'])
            },
            # {
            #     "action": "OpenObject",
            #     "name": "{}_1".format("Fridge")
            # },
            # {
            #     "action": "PutObject",
            #     "name": "{}_1".format("Fridge")
            # },
            # # haven't closed frigde, may close and re-open it for sure
            # {
            #     "action": "PickupObject",
            #     "name": "{}_1".format(targets['object'])
            # },   
            {
                "action": "GotoLocation",
                "name": "{}_1".format(targets['parent'])
            },
            {
                "action": "PutObject",
                "name": "{}_1".format(targets['parent'])
            },
        ]
    elif example['task_type'] == "pick_heat_then_place_in_recep":
        target_obj_temperature = "Hot"
        task_goal = {
                "goal_id": 0,
                "object_states": [{
                    "name": "{}_1".format(targets['object']),
                    "receptacle_name": "{}_1".format(targets['parent'])
                },{
                    "name": "{}_1".format(targets['object']),
                    "ObjectTemperature": target_obj_temperature
                }
                ],
                "object_states_relation": "and"
            }
        
        script = get_sliced_script_from_targets(targets)

        script += [
            {
                "action": "PickupObject",
                "name": "{}_1".format(targets['object'])
            },
            {
                "action": "GotoLocation",
                "name": "{}_1".format("Microwave")
            },
            {
                "action": "HeatObject",
                "name": "{}_1".format(targets['object'])
            },
            # {
            #     "action": "OpenObject",
            #     "name": "{}_1".format("Microwave")
            # },
            # {
            #     "action": "PutObject",
            #     "name": "{}_1".format("Microwave")
            # },
            # {
            #     "action": "CloseObject",
            #     "name": "{}_1".format("Microwave")
            # },
            # {
            #     "action": "ToggleObjectOn",
            #     "name": "{}_1".format("Microwave")
            # },
            # {
            #     "action": "ToggleObjectOff",
            #     "name": "{}_1".format("Microwave")
            # },
            # {
            #     "action": "OpenObject",
            #     "name": "{}_1".format("Microwave")
            # },
            # {
            #     "action": "PickupObject",
            #     "name": "{}_1".format(targets['object'])
            # },   
            {
                "action": "GotoLocation",
                "name": "{}_1".format(targets['parent'])
            },
            {
                "action": "PutObject",
                "name": "{}_1".format(targets['parent'])
            },
        ]
    elif example['task_type'] == "pick_clean_then_place_in_recep":
        task_goal = {
                "goal_id": 0,
                "object_states": [{
                    "name": "{}_1".format(targets['object']),
                    "receptacle_name": "{}_1".format(targets['parent'])
                },{
                    "name": "{}_1".format(targets['object']),
                    "isDirty": False,
                }
                ],
                "object_states_relation": "and"
            }

        script = get_sliced_script_from_targets(targets)
        
        script += [
            {
                "action": "PickupObject",
                "name": "{}_1".format(targets['object'])
            },
            {
                "action": "GotoLocation",
                "name": "{}_1".format("SinkBasin")
            },
            {
                "action": "CleanObject",
                "name": "{}_1".format(targets['object'])
            },
            # {
            #     "action": "PutObject",
            #     "name": "{}_1".format("SinkBasin")
            # },
            # {
            #     "action": "ToggleObjectOn",
            #     "name": "{}_1".format("SinkBasin")
            # },
            # {
            #     "action": "ToggleObjectOff",
            #     "name": "{}_1".format("SinkBasin")
            # },
            # {
            #     "action": "PickupObject",
            #      "name": "{}_1".format(targets['object'])
            # },
            {
                "action": "GotoLocation",
                "name": "{}_1".format(targets['parent'])
            },
            {
                "action": "PutObject",
                "name": "{}_1".format(targets['parent'])
            },
        ]
    else:
        task_goal = None
        script = None
        #raise("no implemeted for task type: {}".format(example['task_type']))
        
    return task_goal, script