code: def step(self, action):
      self.do_simulation(action, self.frame_skip)
  
      ob = self._get_obs()
      x, _, y = self.sim.data.site_xpos[0]
      dist_penalty = 0.01 * x**2 + (y - 2) ** 2
      v1, v2 = self.sim.data.qvel[1:3]
      vel_penalty = 1e-3 * v1**2 + 5e-3 * v2**2
      alive_bonus = 10
      r = alive_bonus - dist_penalty - vel_penalty
      terminated = bool(y <= 1)
  
      if self.render_mode == "human":
          self.render()
      return ob, r, terminated, False, {}
  
file_path: gym/gym/envs/mujoco/inverted_double_pendulum.py
imports: import numpy
  from gym import utils
  from gym.envs.mujoco import MuJocoPyEnv
  from gym.spaces import Box
label_desc: Use image node_id 2 for calling the InvertedDoublePendulumEnv obj's underlying member method code with example usage: obj.step(action) and returns: ob,  r,  terminated,  False,  dict