docs: def step(weights, duration):
      """ This function creates a sum of boxcar functions.
  
      :param numpy.array weight: height of each boxcar function.
      :param float duration: duration of the generated trajectory.
      """
  
      dt = duration / len(weights)
  
      def activate(t, dt):
          """This function returns 1 if t is in [0, dt[ and 0 otherwise.
  
          :param float t: current time
          :param float dt: time step
          """
          return 0 <= t < dt
  
      return (lambda t: sum([w * activate(t - i * dt, dt) for i, w in enumerate(weights)]))