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
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
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
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)