Python mujoco_py.load_model_from_path() Examples
The following are 24
code examples of mujoco_py.load_model_from_path().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
mujoco_py
, or try the search function
.
Example #1
Source File: base_mujoco_env.py From visual_foresight with MIT License | 6 votes |
def __init__(self, model_path, _hp): self._frame_height = _hp.viewer_image_height self._frame_width = _hp.viewer_image_width self._model_path = model_path self.sim = MjSim(load_model_from_path(self._model_path)) self._base_adim, self._base_sdim = None, None #state/action dimension of Mujoco control self._adim, self._sdim = None, None #state/action dimension presented to agent self.num_objects, self._n_joints = None, None self._goal_obj_pose = None self._goaldistances = [] self._ncam = _hp.ncam self.cameras = ['cam{}'.format(i) for i in range(self._ncam)] self._last_obs = None self._hp = _hp self._save_buffer = []
Example #2
Source File: mujoco_env.py From metaworld with MIT License | 6 votes |
def __init__(self, model_path, frame_skip): if not path.exists(model_path): raise IOError("File %s does not exist" % model_path) self.frame_skip = frame_skip self.model = mujoco_py.load_model_from_path(model_path) self.sim = mujoco_py.MjSim(self.model) self.data = self.sim.data self.viewer = None self._viewers = {} self.metadata = { 'render.modes': ['human'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.init_qpos = self.sim.data.qpos.ravel().copy() self.init_qvel = self.sim.data.qvel.ravel().copy() self.seed()
Example #3
Source File: mjpy_sim_scene.py From robel with Apache License 2.0 | 6 votes |
def _load_simulation(self, model_handle: Any) -> Any: """Loads the simulation from the given model handle. Args: model_handle: Path to the Mujoco XML file to load. Returns: A mujoco_py MjSim object. """ if isinstance(model_handle, str): if not os.path.isfile(model_handle): raise ValueError( '[MjPySimScene] Invalid model file path: {}'.format( model_handle)) model = mujoco_py.load_model_from_path(model_handle) sim = mujoco_py.MjSim(model) else: raise NotImplementedError(model_handle) return sim
Example #4
Source File: jacopinpad_tools.py From taco with GNU General Public License v3.0 | 5 votes |
def env_init(render = False): camera_name = 'camera_main' model = load_model_from_path(JACO_MODEL_PATH) sim = MjSim(model) control_scheme = CustomControlScheme(sim.data.ctrl) if render: viewer = CustomMjViewer(sim, control_scheme, camera_name=camera_name) else: viewer= False return model,sim,control_scheme,viewer
Example #5
Source File: mujoco_env.py From gym-sawyer with MIT License | 5 votes |
def __init__(self, action_noise=0.0, file_path=None, template_args=None): # compile template if file_path is None: if self.__class__.FILE is None: raise NotImplementedError("Mujoco file not specified") file_path = osp.join(MODEL_DIR, self.__class__.FILE) if file_path.endswith(".mako"): lookup = mako.lookup.TemplateLookup(directories=[MODEL_DIR]) with open(file_path) as template_file: template = mako.template.Template( template_file.read(), lookup=lookup) content = template.render( opts=template_args if template_args is not None else {}, ) tmp_f, file_path = tempfile.mkstemp(suffix=".xml", text=True) with open(file_path, 'w') as f: f.write(content) self.model = load_model_from_path(file_path) os.close(tmp_f) else: self.model = load_model_from_path(file_path) self.sim = MjSim(self.model) self.data = self.sim.data self.viewer = None self.render_width = 512 self.render_height = 512 self.render_camera = None self.init_qpos = self.sim.data.qpos self.init_qvel = self.sim.data.qvel self.init_qacc = self.sim.data.qacc self.init_ctrl = self.sim.data.ctrl self.qpos_dim = self.init_qpos.size self.qvel_dim = self.init_qvel.size self.ctrl_dim = self.init_ctrl.size self.action_noise = action_noise self.frame_skip = 1 self.dcom = None self.current_com = None self.reset() super().__init__()
Example #6
Source File: robot_env.py From ia-course with MIT License | 5 votes |
def __init__(self, model_path, initial_qpos, n_actions, n_substeps): if model_path.startswith('/'): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), 'assets', model_path) if not os.path.exists(fullpath): raise IOError('File {} does not exist'.format(fullpath)) model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(model, nsubsteps=n_substeps) self.viewer = None self.metadata = { 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.seed() self._env_setup(initial_qpos=initial_qpos) self.initial_state = copy.deepcopy(self.sim.get_state()) self.goal = self._sample_goal() obs = self._get_obs() self.action_space = spaces.Box(-1., 1., shape=(n_actions,), dtype='float32') self.observation_space = spaces.Dict(dict( desired_goal=spaces.Box(-np.inf, np.inf, shape=obs['achieved_goal'].shape, dtype='float32'), achieved_goal=spaces.Box(-np.inf, np.inf, shape=obs['achieved_goal'].shape, dtype='float32'), observation=spaces.Box(-np.inf, np.inf, shape=obs['observation'].shape, dtype='float32'), ))
Example #7
Source File: mujoco_env.py From ia-course with MIT License | 5 votes |
def __init__(self, model_path, frame_skip): if model_path.startswith("/"): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), "assets", model_path) if not path.exists(fullpath): raise IOError("File %s does not exist" % fullpath) self.frame_skip = frame_skip self.model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(self.model) self.data = self.sim.data self.viewer = None self._viewers = {} self.metadata = { 'render.modes': ['human', 'rgb_array', 'depth_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.init_qpos = self.sim.data.qpos.ravel().copy() self.init_qvel = self.sim.data.qvel.ravel().copy() observation, _reward, done, _info = self.step(np.zeros(self.model.nu)) assert not done self.obs_dim = observation.size bounds = self.model.actuator_ctrlrange.copy() low = bounds[:, 0] high = bounds[:, 1] self.action_space = spaces.Box(low=low, high=high, dtype=np.float32) high = np.inf*np.ones(self.obs_dim) low = -high self.observation_space = spaces.Box(low, high, dtype=np.float32) self.seed()
Example #8
Source File: state_matching_robot_env.py From rl_swiss with MIT License | 5 votes |
def __init__(self, model_path, initial_qpos, n_actions, n_substeps): if model_path.startswith('/'): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), 'assets', model_path) if not os.path.exists(fullpath): raise IOError('File {} does not exist'.format(fullpath)) model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(model, nsubsteps=n_substeps) self.viewer = None self.metadata = { 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.seed() self._env_setup(initial_qpos=initial_qpos) self.initial_state = copy.deepcopy(self.sim.get_state()) self.goal = self._sample_goal() obs = self._get_obs() # self.action_space = spaces.Box(-1., 1., shape=(n_actions,), dtype='float32') self.action_space = spaces.Box(-1., 1., shape=(2,), dtype='float32') self.observation_space = spaces.Box(-np.inf, np.inf, shape=obs.shape, dtype=np.float32)
Example #9
Source File: few_shot_robot_env.py From rl_swiss with MIT License | 5 votes |
def __init__(self, model_path, initial_qpos, n_actions, n_substeps, terminate_on_success=False): if model_path.startswith('/'): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), 'assets', model_path) if not os.path.exists(fullpath): raise IOError('File {} does not exist'.format(fullpath)) model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(model, nsubsteps=n_substeps) self.viewer = None self.metadata = { 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.seed() self._env_setup(initial_qpos=initial_qpos) self.initial_state = copy.deepcopy(self.sim.get_state()) obs = self.reset() self.action_space = spaces.Box(-1., 1., shape=(n_actions,), dtype='float32') self.observation_space = spaces.Dict(dict( obs=spaces.Box(-np.inf, np.inf, shape=obs['obs'].shape, dtype='float32'), obs_task_params=spaces.Box(-np.inf, np.inf, shape=obs['obs_task_params'].shape, dtype='float32'), )) self.terminate_on_success = terminate_on_success
Example #10
Source File: pusher_mujoco_env.py From rl_swiss with MIT License | 5 votes |
def __init__(self, model_path, frame_skip, rgb_rendering_tracking=True): if model_path.startswith("/"): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), "assets", model_path) if not path.exists(fullpath): raise IOError("File %s does not exist" % fullpath) self.frame_skip = frame_skip self.model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(self.model) self.data = self.sim.data self.viewer = None self.rgb_rendering_tracking = rgb_rendering_tracking self._viewers = {} self.metadata = { 'render.modes': ['human', 'rgb_array', 'depth_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.init_qpos = self.sim.data.qpos.ravel().copy() self.init_qvel = self.sim.data.qvel.ravel().copy() observation, _reward, done, _info = self.step(np.zeros(self.model.nu)) assert not done # self.obs_dim = observation.size bounds = self.model.actuator_ctrlrange.copy() low = bounds[:, 0] high = bounds[:, 1] self.action_space = spaces.Box(low=low, high=high, dtype=np.float32) # high = np.inf*np.ones(self.obs_dim) # low = -high # self.observation_space = spaces.Box(low, high, dtype=np.float32) self.observation_space = spaces.Dict(dict( image=spaces.Box(-np.inf, np.inf, shape=observation['image'].shape, dtype='float32'), X=spaces.Box(-np.inf, np.inf, shape=observation['X'].shape, dtype='float32'), )) self.seed()
Example #11
Source File: meta_mujoco_env.py From rl_swiss with MIT License | 5 votes |
def __init__(self, model_path, frame_skip): if model_path.startswith("/"): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), "assets", model_path) if not path.exists(fullpath): raise IOError("File %s does not exist" % fullpath) self.frame_skip = frame_skip self.model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(self.model) self.data = self.sim.data self.viewer = None self._viewers = {} self.metadata = { 'render.modes': ['human', 'rgb_array', 'depth_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.init_qpos = self.sim.data.qpos.ravel().copy() self.init_qvel = self.sim.data.qvel.ravel().copy() observation, _reward, done, _info = self.step(np.zeros(self.model.nu)) assert not done bounds = self.model.actuator_ctrlrange.copy() low = bounds[:, 0] high = bounds[:, 1] self.action_space = spaces.Box(low=low, high=high, dtype=np.float32) self.observation_space = spaces.Dict(dict( obs=spaces.Box(-np.inf, np.inf, shape=observation['obs'].shape, dtype='float32'), obs_task_params=spaces.Box(-np.inf, np.inf, shape=observation['obs_task_params'].shape, dtype='float32'), )) self.seed()
Example #12
Source File: mujoco_env.py From DRL_DeliveryDuel with MIT License | 5 votes |
def __init__(self, model_path, frame_skip): if model_path.startswith("/"): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), "assets", model_path) if not path.exists(fullpath): raise IOError("File %s does not exist" % fullpath) self.frame_skip = frame_skip self.model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(self.model) self.data = self.sim.data self.viewer = None self.metadata = { 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.init_qpos = self.sim.data.qpos.ravel().copy() self.init_qvel = self.sim.data.qvel.ravel().copy() observation, _reward, done, _info = self.step(np.zeros(self.model.nu)) assert not done self.obs_dim = observation.size bounds = self.model.actuator_ctrlrange.copy() low = bounds[:, 0] high = bounds[:, 1] self.action_space = spaces.Box(low=low, high=high) high = np.inf*np.ones(self.obs_dim) low = -high self.observation_space = spaces.Box(low, high) self.seed()
Example #13
Source File: mujoco_env.py From DQN-DDPG_Stock_Trading with MIT License | 5 votes |
def __init__(self, model_path, frame_skip): if model_path.startswith("/"): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), "assets", model_path) if not path.exists(fullpath): raise IOError("File %s does not exist" % fullpath) self.frame_skip = frame_skip self.model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(self.model) self.data = self.sim.data self.viewer = None self._viewers = {} self.metadata = { 'render.modes': ['human', 'rgb_array', 'depth_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.init_qpos = self.sim.data.qpos.ravel().copy() self.init_qvel = self.sim.data.qvel.ravel().copy() self._set_action_space() action = self.action_space.sample() observation, _reward, done, _info = self.step(action) assert not done self._set_observation_space(observation) self.seed()
Example #14
Source File: robot_env.py From DQN-DDPG_Stock_Trading with MIT License | 5 votes |
def __init__(self, model_path, initial_qpos, n_actions, n_substeps): if model_path.startswith('/'): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), 'assets', model_path) if not os.path.exists(fullpath): raise IOError('File {} does not exist'.format(fullpath)) model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(model, nsubsteps=n_substeps) self.viewer = None self._viewers = {} self.metadata = { 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.seed() self._env_setup(initial_qpos=initial_qpos) self.initial_state = copy.deepcopy(self.sim.get_state()) self.goal = self._sample_goal() obs = self._get_obs() self.action_space = spaces.Box(-1., 1., shape=(n_actions,), dtype='float32') self.observation_space = spaces.Dict(dict( desired_goal=spaces.Box(-np.inf, np.inf, shape=obs['achieved_goal'].shape, dtype='float32'), achieved_goal=spaces.Box(-np.inf, np.inf, shape=obs['achieved_goal'].shape, dtype='float32'), observation=spaces.Box(-np.inf, np.inf, shape=obs['observation'].shape, dtype='float32'), ))
Example #15
Source File: robot_env.py From DRL_DeliveryDuel with MIT License | 5 votes |
def __init__(self, model_path, initial_qpos, n_actions, n_substeps): if model_path.startswith('/'): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), 'assets', model_path) if not os.path.exists(fullpath): raise IOError('File {} does not exist'.format(fullpath)) model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(model, nsubsteps=n_substeps) self.viewer = None self.metadata = { 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.seed() self._env_setup(initial_qpos=initial_qpos) self.initial_state = copy.deepcopy(self.sim.get_state()) self.goal = self._sample_goal() obs = self._get_obs() self.action_space = spaces.Box(-1., 1., shape=(n_actions,), dtype='float32') self.observation_space = spaces.Dict(dict( desired_goal=spaces.Box(-np.inf, np.inf, shape=obs['achieved_goal'].shape, dtype='float32'), achieved_goal=spaces.Box(-np.inf, np.inf, shape=obs['achieved_goal'].shape, dtype='float32'), observation=spaces.Box(-np.inf, np.inf, shape=obs['observation'].shape, dtype='float32'), ))
Example #16
Source File: mujoco_env.py From mjrl with Apache License 2.0 | 5 votes |
def __init__(self, model_path, frame_skip): if model_path.startswith("/"): fullpath = model_path else: fullpath = os.path.join(os.path.dirname(__file__), "assets", model_path) if not path.exists(fullpath): raise IOError("File %s does not exist" % fullpath) self.frame_skip = frame_skip self.model = load_model_from_path(fullpath) self.sim = MjSim(self.model) self.data = self.sim.data self.metadata = { 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': int(np.round(1.0 / self.dt)) } self.mujoco_render_frames = False self.init_qpos = self.data.qpos.ravel().copy() self.init_qvel = self.data.qvel.ravel().copy() try: observation, _reward, done, _info = self.step(np.zeros(self.model.nu)) except NotImplementedError: observation, _reward, done, _info = self._step(np.zeros(self.model.nu)) assert not done self.obs_dim = np.sum([o.size for o in observation]) if type(observation) is tuple else observation.size bounds = self.model.actuator_ctrlrange.copy() low = bounds[:, 0] high = bounds[:, 1] self.action_space = spaces.Box(low, high, dtype=np.float32) high = np.inf*np.ones(self.obs_dim) low = -high self.observation_space = spaces.Box(low, high, dtype=np.float32) self.seed()
Example #17
Source File: environment.py From Hierarchical-Actor-Critc-HAC- with MIT License | 4 votes |
def __init__(self, model_name, goal_space_train, goal_space_test, project_state_to_end_goal, end_goal_thresholds, initial_state_space, subgoal_bounds, project_state_to_subgoal, subgoal_thresholds, max_actions = 1200, num_frames_skip = 10, show = False): self.name = model_name # Create Mujoco Simulation self.model = load_model_from_path("./mujoco_files/" + model_name) self.sim = MjSim(self.model) # Set dimensions and ranges of states, actions, and goals in order to configure actor/critic networks if model_name == "pendulum.xml": self.state_dim = 2*len(self.sim.data.qpos) + len(self.sim.data.qvel) else: self.state_dim = len(self.sim.data.qpos) + len(self.sim.data.qvel) # State will include (i) joint angles and (ii) joint velocities self.action_dim = len(self.sim.model.actuator_ctrlrange) # low-level action dim self.action_bounds = self.sim.model.actuator_ctrlrange[:,1] # low-level action bounds self.action_offset = np.zeros((len(self.action_bounds))) # Assumes symmetric low-level action ranges self.end_goal_dim = len(goal_space_test) self.subgoal_dim = len(subgoal_bounds) self.subgoal_bounds = subgoal_bounds # Projection functions self.project_state_to_end_goal = project_state_to_end_goal self.project_state_to_subgoal = project_state_to_subgoal # Convert subgoal bounds to symmetric bounds and offset. Need these to properly configure subgoal actor networks self.subgoal_bounds_symmetric = np.zeros((len(self.subgoal_bounds))) self.subgoal_bounds_offset = np.zeros((len(self.subgoal_bounds))) for i in range(len(self.subgoal_bounds)): self.subgoal_bounds_symmetric[i] = (self.subgoal_bounds[i][1] - self.subgoal_bounds[i][0])/2 self.subgoal_bounds_offset[i] = self.subgoal_bounds[i][1] - self.subgoal_bounds_symmetric[i] # End goal/subgoal thresholds self.end_goal_thresholds = end_goal_thresholds self.subgoal_thresholds = subgoal_thresholds # Set inital state and goal state spaces self.initial_state_space = initial_state_space self.goal_space_train = goal_space_train self.goal_space_test = goal_space_test self.subgoal_colors = ["Magenta","Green","Red","Blue","Cyan","Orange","Maroon","Gray","White","Black"] self.max_actions = max_actions # Implement visualization if necessary self.visualize = show # Visualization boolean if self.visualize: self.viewer = MjViewer(self.sim) self.num_frames_skip = num_frames_skip # Get state, which concatenates joint positions and velocities
Example #18
Source File: pendulum_with_goals.py From coach with Apache License 2.0 | 4 votes |
def __init__(self, goal_reaching_thresholds=np.array([0.075, 0.075, 0.75]), goal_not_reached_penalty=-1, goal_reached_reward=0, terminate_on_goal_reaching=True, time_limit=1000, frameskip=1, random_goals_instead_of_standing_goal=False, polar_coordinates: bool=False): super().__init__() dir = os.path.dirname(__file__) model = load_model_from_path(dir + "/pendulum_with_goals.xml") self.sim = MjSim(model) self.viewer = None self.rgb_viewer = None self.frameskip = frameskip self.goal = None self.goal_reaching_thresholds = goal_reaching_thresholds self.goal_not_reached_penalty = goal_not_reached_penalty self.goal_reached_reward = goal_reached_reward self.terminate_on_goal_reaching = terminate_on_goal_reaching self.time_limit = time_limit self.current_episode_steps_counter = 0 self.random_goals_instead_of_standing_goal = random_goals_instead_of_standing_goal self.polar_coordinates = polar_coordinates # spaces definition self.action_space = spaces.Box(low=-self.sim.model.actuator_ctrlrange[:, 1], high=self.sim.model.actuator_ctrlrange[:, 1], dtype=np.float32) if self.polar_coordinates: self.observation_space = spaces.Dict({ "observation": spaces.Box(low=np.array([-np.pi, -15]), high=np.array([np.pi, 15]), dtype=np.float32), "desired_goal": spaces.Box(low=np.array([-np.pi, -15]), high=np.array([np.pi, 15]), dtype=np.float32), "achieved_goal": spaces.Box(low=np.array([-np.pi, -15]), high=np.array([np.pi, 15]), dtype=np.float32) }) else: self.observation_space = spaces.Dict({ "observation": spaces.Box(low=np.array([-1, -1, -15]), high=np.array([1, 1, 15]), dtype=np.float32), "desired_goal": spaces.Box(low=np.array([-1, -1, -15]), high=np.array([1, 1, 15]), dtype=np.float32), "achieved_goal": spaces.Box(low=np.array([-1, -1, -15]), high=np.array([1, 1, 15]), dtype=np.float32) }) self.spec = EnvSpec('PendulumWithGoals-v0') self.spec.reward_threshold = self.goal_not_reached_penalty * self.time_limit self.reset()
Example #19
Source File: environment.py From Hierarchical-Actor-Critc-HAC- with MIT License | 4 votes |
def __init__(self, model_name, goal_space_train, goal_space_test, project_state_to_end_goal, end_goal_thresholds, initial_state_space, subgoal_bounds, project_state_to_subgoal, subgoal_thresholds, max_actions = 1200, num_frames_skip = 10, show = False): self.name = model_name # Create Mujoco Simulation self.model = load_model_from_path("./mujoco_files/" + model_name) self.sim = MjSim(self.model) # Set dimensions and ranges of states, actions, and goals in order to configure actor/critic networks if model_name == "pendulum.xml": self.state_dim = 2*len(self.sim.data.qpos) + len(self.sim.data.qvel) else: self.state_dim = len(self.sim.data.qpos) + len(self.sim.data.qvel) # State will include (i) joint angles and (ii) joint velocities self.action_dim = len(self.sim.model.actuator_ctrlrange) # low-level action dim self.action_bounds = self.sim.model.actuator_ctrlrange[:,1] # low-level action bounds self.action_offset = np.zeros((len(self.action_bounds))) # Assumes symmetric low-level action ranges self.end_goal_dim = len(goal_space_test) self.subgoal_dim = len(subgoal_bounds) self.subgoal_bounds = subgoal_bounds # Projection functions self.project_state_to_end_goal = project_state_to_end_goal self.project_state_to_subgoal = project_state_to_subgoal # Convert subgoal bounds to symmetric bounds and offset. Need these to properly configure subgoal actor networks self.subgoal_bounds_symmetric = np.zeros((len(self.subgoal_bounds))) self.subgoal_bounds_offset = np.zeros((len(self.subgoal_bounds))) for i in range(len(self.subgoal_bounds)): self.subgoal_bounds_symmetric[i] = (self.subgoal_bounds[i][1] - self.subgoal_bounds[i][0])/2 self.subgoal_bounds_offset[i] = self.subgoal_bounds[i][1] - self.subgoal_bounds_symmetric[i] # End goal/subgoal thresholds self.end_goal_thresholds = end_goal_thresholds self.subgoal_thresholds = subgoal_thresholds # Set inital state and goal state spaces self.initial_state_space = initial_state_space self.goal_space_train = goal_space_train self.goal_space_test = goal_space_test self.subgoal_colors = ["Magenta","Green","Red","Blue","Cyan","Orange","Maroon","Gray","White","Black"] self.max_actions = max_actions # Implement visualization if necessary self.visualize = show # Visualization boolean if self.visualize: self.viewer = MjViewer(self.sim) self.num_frames_skip = num_frames_skip # Get state, which concatenates joint positions and velocities
Example #20
Source File: environment.py From Hierarchical-Actor-Critc-HAC- with MIT License | 4 votes |
def __init__(self, model_name, goal_space_train, goal_space_test, project_state_to_end_goal, end_goal_thresholds, initial_state_space, subgoal_bounds, project_state_to_subgoal, subgoal_thresholds, max_actions = 1200, num_frames_skip = 10, show = False): self.name = model_name # Create Mujoco Simulation self.model = load_model_from_path("./mujoco_files/" + model_name) self.sim = MjSim(self.model) # Set dimensions and ranges of states, actions, and goals in order to configure actor/critic networks if model_name == "pendulum.xml": self.state_dim = 2*len(self.sim.data.qpos) + len(self.sim.data.qvel) else: self.state_dim = len(self.sim.data.qpos) + len(self.sim.data.qvel) # State will include (i) joint angles and (ii) joint velocities self.action_dim = len(self.sim.model.actuator_ctrlrange) # low-level action dim self.action_bounds = self.sim.model.actuator_ctrlrange[:,1] # low-level action bounds self.action_offset = np.zeros((len(self.action_bounds))) # Assumes symmetric low-level action ranges self.end_goal_dim = len(goal_space_test) self.subgoal_dim = len(subgoal_bounds) self.subgoal_bounds = subgoal_bounds # Projection functions self.project_state_to_end_goal = project_state_to_end_goal self.project_state_to_subgoal = project_state_to_subgoal # Convert subgoal bounds to symmetric bounds and offset. Need these to properly configure subgoal actor networks self.subgoal_bounds_symmetric = np.zeros((len(self.subgoal_bounds))) self.subgoal_bounds_offset = np.zeros((len(self.subgoal_bounds))) for i in range(len(self.subgoal_bounds)): self.subgoal_bounds_symmetric[i] = (self.subgoal_bounds[i][1] - self.subgoal_bounds[i][0])/2 self.subgoal_bounds_offset[i] = self.subgoal_bounds[i][1] - self.subgoal_bounds_symmetric[i] # End goal/subgoal thresholds self.end_goal_thresholds = end_goal_thresholds self.subgoal_thresholds = subgoal_thresholds # Set inital state and goal state spaces self.initial_state_space = initial_state_space self.goal_space_train = goal_space_train self.goal_space_test = goal_space_test self.subgoal_colors = ["Magenta","Green","Red","Blue","Cyan","Orange","Maroon","Gray","White","Black"] self.max_actions = max_actions # Implement visualization if necessary self.visualize = show # Visualization boolean if self.visualize: self.viewer = MjViewer(self.sim) self.num_frames_skip = num_frames_skip # Get state, which concatenates joint positions and velocities
Example #21
Source File: environment.py From Hierarchical-Actor-Critc-HAC- with MIT License | 4 votes |
def __init__(self, model_name, goal_space_train, goal_space_test, project_state_to_end_goal, end_goal_thresholds, initial_state_space, subgoal_bounds, project_state_to_subgoal, subgoal_thresholds, max_actions = 1200, num_frames_skip = 10, show = False): self.name = model_name # Create Mujoco Simulation self.model = load_model_from_path("./mujoco_files/" + model_name) self.sim = MjSim(self.model) # Set dimensions and ranges of states, actions, and goals in order to configure actor/critic networks if model_name == "pendulum.xml": self.state_dim = 2*len(self.sim.data.qpos) + len(self.sim.data.qvel) else: self.state_dim = len(self.sim.data.qpos) + len(self.sim.data.qvel) # State will include (i) joint angles and (ii) joint velocities self.action_dim = len(self.sim.model.actuator_ctrlrange) # low-level action dim self.action_bounds = self.sim.model.actuator_ctrlrange[:,1] # low-level action bounds self.action_offset = np.zeros((len(self.action_bounds))) # Assumes symmetric low-level action ranges self.end_goal_dim = len(goal_space_test) self.subgoal_dim = len(subgoal_bounds) self.subgoal_bounds = subgoal_bounds # Projection functions self.project_state_to_end_goal = project_state_to_end_goal self.project_state_to_subgoal = project_state_to_subgoal # Convert subgoal bounds to symmetric bounds and offset. Need these to properly configure subgoal actor networks self.subgoal_bounds_symmetric = np.zeros((len(self.subgoal_bounds))) self.subgoal_bounds_offset = np.zeros((len(self.subgoal_bounds))) for i in range(len(self.subgoal_bounds)): self.subgoal_bounds_symmetric[i] = (self.subgoal_bounds[i][1] - self.subgoal_bounds[i][0])/2 self.subgoal_bounds_offset[i] = self.subgoal_bounds[i][1] - self.subgoal_bounds_symmetric[i] # End goal/subgoal thresholds self.end_goal_thresholds = end_goal_thresholds self.subgoal_thresholds = subgoal_thresholds # Set inital state and goal state spaces self.initial_state_space = initial_state_space self.goal_space_train = goal_space_train self.goal_space_test = goal_space_test self.subgoal_colors = ["Magenta","Green","Red","Blue","Cyan","Orange","Maroon","Gray","White","Black"] self.max_actions = max_actions # Implement visualization if necessary self.visualize = show # Visualization boolean if self.visualize: self.viewer = MjViewer(self.sim) self.num_frames_skip = num_frames_skip # Get state, which concatenates joint positions and velocities
Example #22
Source File: environment.py From Hierarchical-Actor-Critc-HAC- with MIT License | 4 votes |
def __init__(self, model_name, goal_space_train, goal_space_test, project_state_to_end_goal, end_goal_thresholds, initial_state_space, subgoal_bounds, project_state_to_subgoal, subgoal_thresholds, max_actions = 1200, num_frames_skip = 10, show = False): self.name = model_name # Create Mujoco Simulation self.model = load_model_from_path("./mujoco_files/" + model_name) self.sim = MjSim(self.model) # Set dimensions and ranges of states, actions, and goals in order to configure actor/critic networks if model_name == "pendulum.xml": self.state_dim = 2*len(self.sim.data.qpos) + len(self.sim.data.qvel) else: self.state_dim = len(self.sim.data.qpos) + len(self.sim.data.qvel) # State will include (i) joint angles and (ii) joint velocities self.action_dim = len(self.sim.model.actuator_ctrlrange) # low-level action dim self.action_bounds = self.sim.model.actuator_ctrlrange[:,1] # low-level action bounds self.action_offset = np.zeros((len(self.action_bounds))) # Assumes symmetric low-level action ranges self.end_goal_dim = len(goal_space_test) self.subgoal_dim = len(subgoal_bounds) self.subgoal_bounds = subgoal_bounds # Projection functions self.project_state_to_end_goal = project_state_to_end_goal self.project_state_to_subgoal = project_state_to_subgoal # Convert subgoal bounds to symmetric bounds and offset. Need these to properly configure subgoal actor networks self.subgoal_bounds_symmetric = np.zeros((len(self.subgoal_bounds))) self.subgoal_bounds_offset = np.zeros((len(self.subgoal_bounds))) for i in range(len(self.subgoal_bounds)): self.subgoal_bounds_symmetric[i] = (self.subgoal_bounds[i][1] - self.subgoal_bounds[i][0])/2 self.subgoal_bounds_offset[i] = self.subgoal_bounds[i][1] - self.subgoal_bounds_symmetric[i] # End goal/subgoal thresholds self.end_goal_thresholds = end_goal_thresholds self.subgoal_thresholds = subgoal_thresholds # Set inital state and goal state spaces self.initial_state_space = initial_state_space self.goal_space_train = goal_space_train self.goal_space_test = goal_space_test self.subgoal_colors = ["Magenta","Green","Red","Blue","Cyan","Orange","Maroon","Gray","White","Black"] self.max_actions = max_actions # Implement visualization if necessary self.visualize = show # Visualization boolean if self.visualize: self.viewer = MjViewer(self.sim) self.num_frames_skip = num_frames_skip # Get state, which concatenates joint positions and velocities
Example #23
Source File: jaco.py From a3c-mujoco with MIT License | 4 votes |
def __init__(self, width, height, frame_skip, rewarding_distance, control_magnitude, reward_continuous): self.frame_skip = frame_skip self.width = width self.height = height # Instantiate Mujoco model model_path = "jaco.xml" fullpath = os.path.join( os.path.dirname(__file__), "assets", model_path) if not os.path.exists(fullpath): raise IOError("File %s does not exist" % fullpath) model = mujoco_py.load_model_from_path(fullpath) self.sim = mujoco_py.MjSim(model) self.init_state = self.sim.get_state() self.init_qpos = self.sim.data.qpos.ravel().copy() self.init_qvel = self.sim.data.qvel.ravel().copy() # Setup actuators self.actuator_bounds = self.sim.model.actuator_ctrlrange self.actuator_low = self.actuator_bounds[:, 0] self.actuator_high = self.actuator_bounds[:, 1] self.actuator_ctrlrange = self.actuator_high - self.actuator_low self.num_actuators = len(self.actuator_low) # init model_data_ctrl self.null_action = np.zeros(self.num_actuators) self.sim.data.ctrl[:] = self.null_action self.seed() self.sum_reward = 0 self.rewarding_distance = rewarding_distance # Target position bounds self.target_bounds = np.array(((0.4, 0.6), (0.1, 0.3), (0.2, 0.3))) self.target_reset_distance = 0.2 # Setup discrete action space self.control_values = self.actuator_ctrlrange * control_magnitude self.num_actions = 5 self.action_space = [list(range(self.num_actions)) ] * self.num_actuators self.observation_space = ((0, ), (height, width, 3), (height, width, 3)) self.reset()
Example #24
Source File: world.py From safety-gym with MIT License | 4 votes |
def __init__(self, path): base_path = os.path.join(BASE_DIR, path) self.sim = MjSim(load_model_from_path(base_path)) self.sim.forward() # Needed to figure out z-height of free joint of offset body self.z_height = self.sim.data.get_body_xpos('robot')[2] # Get a list of geoms in the robot self.geom_names = [n for n in self.sim.model.geom_names if n != 'floor'] # Needed to figure out the observation spaces self.nq = self.sim.model.nq self.nv = self.sim.model.nv # Needed to figure out action space self.nu = self.sim.model.nu # Needed to figure out observation space # See engine.py for an explanation for why we treat these separately self.hinge_pos_names = [] self.hinge_vel_names = [] self.ballquat_names = [] self.ballangvel_names = [] self.sensor_dim = {} for name in self.sim.model.sensor_names: id = self.sim.model.sensor_name2id(name) self.sensor_dim[name] = self.sim.model.sensor_dim[id] sensor_type = self.sim.model.sensor_type[id] if self.sim.model.sensor_objtype[id] == const.OBJ_JOINT: joint_id = self.sim.model.sensor_objid[id] joint_type = self.sim.model.jnt_type[joint_id] if joint_type == const.JNT_HINGE: if sensor_type == const.SENS_JOINTPOS: self.hinge_pos_names.append(name) elif sensor_type == const.SENS_JOINTVEL: self.hinge_vel_names.append(name) else: t = self.sim.model.sensor_type[i] raise ValueError('Unrecognized sensor type {} for joint'.format(t)) elif joint_type == const.JNT_BALL: if sensor_type == const.SENS_BALLQUAT: self.ballquat_names.append(name) elif sensor_type == const.SENS_BALLANGVEL: self.ballangvel_names.append(name) elif joint_type == const.JNT_SLIDE: # Adding slide joints is trivially easy in code, # but this removes one of the good properties about our observations. # (That we are invariant to relative whole-world transforms) # If slide joints are added we sould ensure this stays true! raise ValueError('Slide joints in robots not currently supported')