class_docstr: HalfCheetah Environment with two diff tasks, moving forwards or backwards
  
  Direction is defined as a scalar: +1.0 (forwards) or -1.0 (backwards)
class_docstr_tok: ["HalfCheetah","Environment","with","two","diff","tasks",",","moving","forwards","or","backwards","Direction","is","defined","as","a","scalar",":","+1.0","(","forwards",")","or","-1.0","(","backwards",")"]
code: def reset_model(self):
      qpos = self.init_qpos + self.np_random.uniform(
          low=-0.1, high=0.1, size=self.model.nq
      )
      qvel = self.init_qvel + self.np_random.randn(self.model.nv) * 0.1
      self.set_state(qpos, qvel)
      obs = self._get_obs()
      return obs
  
file_path: ray/python/ray/rllib/examples/env/halfcheetah_rand_direc.py
imports: from gymnasium.envs.mujoco.mujoco_env import MujocoEnv
  from gymnasium.utils import EzPickle
  import numpy
  from ray.rllib.env.apis.task_settable_env import TaskSettableEnv
label_desc: Use image node_id 7 for calling the HalfCheetahRandDirecEnv obj's underlying member method code with example usage: obj.reset_model() and returns: obs