def init(self):
        MDPAction.set_description({
            'out': {'value': [-0.004]},
            'in': {'value': [0.004]},
            'kick': {'value': [-1.0]}
        })

        ts = TaskSpec(discount_factor=0.99, reward_range=(-20, 20))
        ts.set_episodic()
        ts.set_charcount_obs(0)
        ts.add_double_act((-1.0, 0.004))

        self._ts_extra += "ACTIONDESCR %s " % str(MDPAction.description)
        self._ts_extra += "COPYRIGHT Penaltykick (Python) implemented by Astrid Jackson"
        ts.set_extra(self._ts_extra)
        return ts.to_taskspec()
    def enter(self, t, *args, **kwargs):
        super(MoveEffectors, self).enter(t, *args, **kwargs)

        action = kwargs["action"]
        config = action.description[action.name]

        effectors = []
        times = []
        delta_tf = []
        frames = []

        for effector, mapping in config["descr"].iteritems():
            delta = np.zeros(len(mapping.keys()))
            for key, axis in mapping.iteritems():
                delta[MDPAction.key_to_index(key)] = action[axis]

            if np.any(delta):
                effectors.append(effector)
                delta_tf.append(delta)
                times.append([0.5])
                frames.append(NaoMotionController.FRAME_TORSO)

        self._motion.transform(effectors, delta_tf, times, frames)