Example #1
0
def get_cluster_values(stream_plan):
    param_from_obj = {}
    macro_from_micro = []
    inputs, domain, outputs, certified, functions = [], set(), [], set(), set()
    input_objects, output_objects = [], []
    fluent_facts = []
    for result in stream_plan:
        local_mapping = {}  # global_from_local
        stream = result.instance.external
        add_result_inputs(result, param_from_obj, local_mapping, inputs, input_objects)
        domain.update(set(substitute_expression(stream.domain, local_mapping)) - certified)
        if isinstance(result, PredicateResult):
            # functions.append(Equal(stream.head, result.value))
            # TODO: do I need the new mapping here?
            mapping = {inp: param_from_obj[inp] for inp in result.instance.input_objects}
            functions.update(substitute_expression(result.get_certified(), mapping))
        elif isinstance(result, FunctionResult):
            functions.add(substitute_expression(Minimize(stream.head), local_mapping))
        else:
            fluent_facts.extend(result.instance.fluent_facts)
            add_result_outputs(result, param_from_obj, local_mapping, outputs, output_objects)
            certified.update(substitute_expression(stream.certified, local_mapping))
            macro_from_micro.append(local_mapping)
    #assert not fluent_facts
    return inputs, domain, outputs, certified, functions, \
           macro_from_micro, input_objects, output_objects, fluent_facts
Example #2
0
    ('motion', '?q3', '?t2', '?q2'),

    #('conf', '?q0'),
    #('conf', '?q1'),
    #('conf', '?q2'),
    #('conf', '?q3'),
    #('pose', 'A', '?p0'),
    #('pose', 'B', '?p1'),
    #('traj', '?t0'),
    #('traj', '?t1'),
    #('traj', '?t2'),
    #('traj', '?t3'),
]

OBJECTIVES = [
    Minimize(('dist', CONF0, '?q0')),
    Minimize(('dist', '?q0', '?q1')),
    Minimize(('dist', '?q1', '?q3')),
    Minimize(('dist', '?q3', '?q2')),
]

##################################################

# SKELETON = TIGHT_SKELETON
SKELETON = [
    ('move', ['r0', CONF0, '?t0', '?q0']),
    ('pick', ['r0', 'A', POSE0, '?g0', '?q0']),
    ('move', ['r0', '?q0', '?t1', '?q1']),
    ('place', ['r0', 'A', '?p0', '?g0', '?q1']),
    ('move', ['r0', '?q1', '?t3', '?q3']),
    ('pick', ['r0', 'B', POSE1, '?g1', '?q3']),