code: def _update_state(self):
      self.state = {}
  
      if self.observation_type != ObservationType.Measurements:
          self.pixels = self.last_result.observation["pixels"]
          self.state["pixels"] = self.pixels
  
      if self.observation_type != ObservationType.Image:
          self.measurements = np.array([])
          for sub_observation in self.last_result.observation.values():
              if (
                  isinstance(sub_observation, np.ndarray)
                  and len(sub_observation.shape) == 1
              ):
                  self.measurements = np.concatenate(
                      (self.measurements, sub_observation)
                  )
              else:
                  self.measurements = np.concatenate(
                      (self.measurements, np.array([sub_observation]))
                  )
          self.state["measurements"] = self.measurements
  
      self.reward = (
          self.last_result.reward
          if self.last_result.reward is not None
          else 0
      )
  
      self.done = self.last_result.last()
  
imports: import random
  from enum import Enum
  from typing import Union
  import numpy
  from rl_coach.base_parameters import VisualizationParameters
  from rl_coach.environments.environment import Environment, EnvironmentParameters, LevelSelection
  from rl_coach.filters.filter import NoInputFilter, NoOutputFilter
  from rl_coach.spaces import BoxActionSpace, ImageObservationSpace, VectorObservationSpace, StateSpace
label_desc: Use image node_id 2 for calling the ControlSuiteEnvironment obj's underlying member method code with example usage: obj._update_state() without return types