code: def launch(self, environment_loader, policy=None):
      # See https://github.com/deepmind/dm_control/blob/92f9913013face0468442cd0964d5973ea2089ea/dm_control/viewer/application.py#L304  # noqa: E501
      if environment_loader is None:
          raise ValueError('"environment_loader" argument is required.')
      if callable(environment_loader):
          self._environment_loader = environment_loader
      else:
          self._environment_loader = lambda: environment_loader
      self._policy = policy
      self._load_environment(zoom_to_scene=True)
  
      def tick():
          self._viewport.set_size(*self._window.shape)
          self._tick()
          return self._renderer.pixels
  
      self._tick_func = tick
  
      # Start unpaused
      self._pause_subject.value = False
  
imports: import dm_control.viewer.application
  import glfw
label_desc: Use image node_id 3 for calling the DmControlViewer obj's underlying member method code with example usage: obj.launch(environment_loader, policy) and returns: self