class_docstr: Customized target trajectory here, it support 3 ways currently
  1.fixed_speed, e.g. reset(.., fixed_speed=1.25)
  2.stage , e.g. reset(.., stage=1)
  3.boundary, e.g. reset(.., boundary=True)
class_docstr_tok: ["Customized","target","trajectory","here",",","it","support","3","ways","currently","1.fixed_speed",",","e.g",".","reset","(","..",",","fixed_speed=1.25",")","2.stage",",","e.g",".","reset","(","..",",","stage=1",")","3.boundary",",","e.g",".","reset","(","..",",","boundary=True",")"]
code: def reset(self, **kwargs):
      fixed_speed = None
      if "fixed_speed" in kwargs:
          fixed_speed = kwargs.pop("fixed_speed", None)
      stage = None
      if "stage" in kwargs:
          stage = kwargs.pop("stage", None)
      boundary = None
      if "boundary" in kwargs:
          boundary = kwargs.pop("boundary", None)
      _ = self.env.reset(**kwargs)
      if fixed_speed is not None:
          targets = np.zeros([self.time_limit + 1, 3], dtype=np.float32)
          targets[:, 0] = fixed_speed
          self.env.targets = targets
      elif stage is not None:
          self.env.targets = self.generate_stage_targets(stage=stage)
      elif boundary is not None:
          self.generate_boundary_target()
      else:
          # generate new target
          self.env.generate_new_targets(
              poisson_lambda=int(self.time_limit * (300 / 1000))
          )
      if "project" in kwargs:
          if kwargs.get("project") == True:
              return self.env.get_observation()
      return self.env.get_state_desc()
  
imports: import abc
  import gym
  import math
  import numpy
  import random
  from collections import OrderedDict
  from osim.env import ProstheticsEnv
  from parl.utils import logger
  from tqdm import tqdm
label_desc: Use image node_id 7 for calling the CustomR2Env obj's underlying member method code with example usage: obj.reset() and returns: self, self