code: def __init__(self, server_ip="localhost", server_port=5007):
      if args.ident is not None:
          self.worker_id = args.ident
      else:
          self.worker_id = np.random.randint(int(1e18))
  
      self.address = "{}:{}".format(server_ip, server_port)
  
      random_seed = int(self.worker_id % int(1e9))
      np.random.seed(random_seed)
  
      env = ProstheticsEnv(visualize=False, seed=random_seed)
      env.change_model(
          model="3D", difficulty=1, prosthetic=True, seed=random_seed
      )
      env.spec.timestep_limit = MAXTIME_LIMIT
      env = CustomR2Env(env)
  
      if args.reward_type == "RunFastest":
          env = RunFastestReward(env)
      elif args.reward_type == "FixedTargetSpeed":
          env = FixedTargetSpeedReward(
              env,
              args.target_v,
              args.act_penalty_lowerbound,
              args.act_penalty_coeff,
              args.vel_penalty_coeff,
          )
      elif args.reward_type == "Round2":
          env = Round2Reward(
              env,
              args.act_penalty_lowerbound,
              args.act_penalty_coeff,
              args.vel_penalty_coeff,
          )
      else:
          assert False, "Not supported reward type!"
  
      env = FrameSkip(env, 4)
      env = ActionScale(env)
      self.env = PelvisBasedObs(env)
  
file_path: PARL/examples/NeurIPS2018-AI-for-Prosthetics-Challenge/simulator_client.py
imports: import grpc
  import json
  import numpy
  import simulator_pb2
  import simulator_pb2_grpc
  from args import get_client_args
  from env_wrapper import FrameSkip, ActionScale, PelvisBasedObs, MAXTIME_LIMIT, CustomR2Env, RunFastestReward, FixedTargetSpeedReward, Round2Reward
  from osim.env import ProstheticsEnv
  from parl.utils import logger
label_desc: Use image node_id 1 to create a new Worker object from inherited base classes: object with example: obj = Worker(server_ip, server_port)