Пример #1
0
    def control_loop(state, memory):
        positions, velocities, rot_matrices = state
        #sensor_values = engine.get_sensor_values(state=(positions, velocities, rot_matrices))
        #objective_sensor = T.sum((target - positions[:,grapper_id,:])**2,axis=1)[:,None]
        ALPHA = 0.95
        if "recurrent" in controller:
            network_input = T.concatenate([target, memory], axis=1)
            controller["input"].input_var = network_input
            memory = lasagne.layers.helper.get_output(controller["recurrent"])
            memory = mulgrad(memory, ALPHA)
        else:
            network_input = T.concatenate([target], axis=1)
            controller["input"].input_var = network_input
            memory = None

        motor_signals = lasagne.layers.helper.get_output(controller["output"])

        positions, velocities, rot_matrices = mulgrad(
            positions, ALPHA), mulgrad(velocities,
                                       ALPHA), mulgrad(rot_matrices, ALPHA)
        newstate = engine.step_from_this_state(state=(positions, velocities,
                                                      rot_matrices),
                                               motor_signals=motor_signals)
        if "recurrent" in controller:
            newstate += (memory, )
        return newstate
Пример #2
0
    def control_loop(state, memory):
        positions, velocities, rot_matrices = state
        #sensor_values = engine.get_sensor_values(state=(positions, velocities, rot_matrices))
        ALPHA = 1.0
        image = engine.get_camera_image(EngineState(*state), CAMERA)
        controller["input"].input_var = image - 0.5  #for normalization
        if "recurrent" in controller:
            controller["memory"].input_var = memory
            memory = lasagne.layers.helper.get_output(
                controller["recurrent"], deterministic=deterministic)
            memory = mulgrad(memory, ALPHA)

        motor_signals = lasagne.layers.helper.get_output(
            controller["output"], deterministic=deterministic)

        positions, velocities, rot_matrices = mulgrad(
            positions, ALPHA), mulgrad(velocities,
                                       ALPHA), mulgrad(rot_matrices, ALPHA)
        newstate = engine.do_time_step(state=EngineState(
            positions, velocities, rot_matrices),
                                       motor_signals=motor_signals)
        newstate += (image, )
        if "recurrent" in controller:
            newstate += (memory, )
        return newstate
Пример #3
0
    def control_loop(state, memory):
        positions, velocities, rot_matrices = state
        #sensor_values = engine.get_sensor_values(state=(positions, velocities, rot_matrices))
        objective_sensor = (target - positions[:, grapper_id, :]).norm(
            L=2, axis=1)[:, None]
        ALPHA = 1.0
        if "recurrent" in controller:
            controller["input"].input_var = objective_sensor
            controller["memory"].input_var = memory
            memory = lasagne.layers.helper.get_output(
                controller["recurrent"], deterministic=deterministic)
            memory = mulgrad(memory, ALPHA)
        else:
            network_input = T.concatenate([objective_sensor], axis=1)
            controller["input"].input_var = network_input
            memory = None

        motor_signals = lasagne.layers.helper.get_output(
            controller["output"], deterministic=deterministic)

        positions, velocities, rot_matrices = mulgrad(
            positions, ALPHA), mulgrad(velocities,
                                       ALPHA), mulgrad(rot_matrices, ALPHA)
        newstate = engine.step_from_this_state(state=(positions, velocities,
                                                      rot_matrices),
                                               motor_signals=motor_signals)
        if "recurrent" in controller:
            newstate += (memory, )
        return newstate
Пример #4
0
 def control_loop(state, t):
     positions, velocities, rot_matrices = state
     #sensor_values = engine.get_sensor_values(state=(positions, velocities, rot_matrices))
     t = t + engine.DT
     sine = T.tile(T.sin(np.float32(2 * np.pi * 1.5) * t), BATCH_SIZE)
     cosine = T.tile(T.cos(np.float32(2 * np.pi * 1.5) * t), BATCH_SIZE)
     sensor_values = T.concatenate([sine[:, None], cosine[:, None]], axis=1)
     controller["input"].input_var = sensor_values
     motor_signals = lasagne.layers.helper.get_output(controller["output"])
     ALPHA = 0.95
     positions, velocities, rot_matrices = mulgrad(
         positions, ALPHA), mulgrad(velocities,
                                    ALPHA), mulgrad(rot_matrices, ALPHA)
     return (t, ) + engine.step_from_this_state(
         state=(positions, velocities, rot_matrices),
         motor_signals=motor_signals)