docstr: y
  
  ^
  |____
  |   /
  |  /
  |~/
  |/
  --------> x
docstr_tok: ["y","^","|____","|","\/","|","\/","|~\/","|\/","--","--","--","--",">","x"]
code: def _get_obs(self):
      """
      y
  
      ^
      |____
      |   /
      |  /
      |~/
      |/
      --------> x
  
      """
  
      # observation
      angle = self.sim.data.qpos
      angular_velocity = self.sim.data.qvel
      if self.polar_coordinates:
          observation = np.concatenate(
              [angle - np.pi, angular_velocity]
          )
      else:
          x = np.sin(angle)
          y = np.cos(
              angle
          )  # qpos is the angle relative to a standing pole
          observation = np.concatenate([x, y, angular_velocity])
  
      return {
          "observation": observation,
          "desired_goal": self.goal,
          "achieved_goal": observation,
      }
  
file_path: coach/rl_coach/environments/mujoco/pendulum_with_goals.py
imports: import os
  import gym
  import numpy
  from gym import spaces
  from gym.envs.registration import EnvSpec
  from mujoco_py import load_model_from_path, MjSim, MjViewer, MjRenderContextOffscreen
label_desc: Use image node_id 6 for calling the PendulumWithGoals obj's underlying member method code with example usage: obj._get_obs() and returns: dict