class_docstr: A wrapper for reward shaping, note this wrapper must be the first wrapper 
class_docstr_tok: ["A","wrapper","for","reward","shaping",",","note","this","wrapper","must","be","the","first","wrapper"]
code: def __init__(self, env, max_timelimit):
      logger.info(
          "[RewardShaping]type:{}, max_timelimit: {}".format(
              type(env), max_timelimit
          )
      )
  
      self.max_timelimit = max_timelimit
  
      self.step_count = 0
      self.pre_state_desc = None
      self.last_target_vel = None
      gym.Wrapper.__init__(self, env)
  
imports: import copy
  import numpy
  import gym
  import abc
  import math
  from osim.env import L2M2019Env
  from parl.utils import logger
label_desc: Use image node_id 1 to create a new RewardShaping object from inherited base classes: gym with example: obj = RewardShaping(env, max_timelimit)