Example #1
0
    def _setup_world(self):
        """
        Helper method for handling setup of the MuJoCo world.
        Args:
            filename: Path to XML file containing the world information.
        """
        if "varying_mass" in self._hyperparams:
            self.create_xml()

        pdb.set_trace()

        self._model = mujoco_py.MjModel(self._hyperparams['filename'])
        self.model_nomarkers = mujoco_py.MjModel(
            self._hyperparams['filename_nomarkers'])

        gofast = True
        self._small_viewer = mujoco_py.MjViewer(
            visible=True,
            init_width=self._hyperparams['image_width'],
            init_height=self._hyperparams['image_height'],
            go_fast=gofast)
        self._small_viewer.start()
        self._small_viewer.cam.camid = 0
        if self._hyperparams['additional_viewer']:
            self._large_viewer = mujoco_py.MjViewer(visible=True,
                                                    init_width=480,
                                                    init_height=480,
                                                    go_fast=gofast)
            self._large_viewer.start()
            self._large_viewer.cam.camid = 0
Example #2
0
    def _setup_world(self, filename):
        """
        Helper method for handling setup of the MuJoCo world.
        Args:
            filename: Path to XML file containing the world information.
        """
        self._model= mujoco_py.MjModel(filename)
        self.model_nomarkers = mujoco_py.MjModel(self._hyperparams['filename_nomarkers'])

         # changes here:
        self._joint_idx = range(self._hyperparams['joint_angles'])
        self._vel_idx = range( self._hyperparams['joint_angles'], self._hyperparams['joint_velocities'] + self._hyperparams['joint_angles'])


        gofast = True
        self._small_viewer = mujoco_py.MjViewer(visible=True,
                                                init_width=self._hyperparams['image_width'],
                                                init_height=self._hyperparams['image_height'],
                                                go_fast=gofast)
        self._small_viewer.start()
        self._small_viewer.cam.camid = 0
        if self._hyperparams['additional_viewer']:
            self._large_viewer = mujoco_py.MjViewer(visible=True, init_width=480,
                                                    init_height=480, go_fast=gofast)
            self._large_viewer.start()
            self._large_viewer.cam.camid = 0
Example #3
0
    def _get_viewer(self, mode='human'):
        viewer = self._viewers.get(mode)
        if viewer is None:
            if mode == 'human':
                viewer = mujoco_py.MjViewer(self.sim)
            elif mode == 'rgb_array' or mode == 'depth_array':
                viewer = mujoco_py.MjViewer(self.sim)
                # The following should work but it does not. Therefore, replaced by human rendering (with MjViewer, the line above) now.
                # viewer = mujoco_py.MjRenderContextOffscreen(self.sim, -1)
            self._viewers[mode] = viewer
            self._viewer_setup(mode=mode)

        return self._viewers[mode]
Example #4
0
    def render(self, mode: RenderMode = RenderMode(), render_step: int = 1):
        if self._curr_step % render_step == 0:
            # Call base class
            super().render(mode)

            # Print to console
            if mode.text:
                print(
                    f"step: {self._curr_step:4d}  |  r_t: {self._curr_rew: 1.3f}  |  a_t: {self._curr_act}  |  s_t+1: {self.state}"
                )

            # Forward to MuJoCo viewer
            if mode.video:
                if self.viewer is None:
                    # Create viewer if not existent (see 'human' mode of OpenAI Gym's MujocoEnv)
                    self.viewer = mujoco_py.MjViewer(self.sim)

                    # Adjust window size and position to custom values
                    import glfw

                    glfw.make_context_current(self.viewer.window)
                    glfw.set_window_size(self.viewer.window, 1280, 720)
                    glfw.set_window_pos(self.viewer.window, 50, 50)

                    self.configure_viewer()
                self.viewer.render()
def vis_impedance_random_setpoint(collision=False):
    options = dict()
    options['model_path'] = 'full_kuka_no_collision.xml'
    options['rot_scale'] = .3
    options['stiffness'] = np.array([1., 1., 1., 3., 3., 3.])

    sim = create_sim(collision=collision)
    controller = ImpedanceControllerV2(sim, **options)

    frame_skip = 50
    high = np.array([.1, .1, .1, 2, 2, 2])
    low = -np.array([.1, .1, .1, 2, 2, 2])

    viewer = mujoco_py.MjViewer(sim)
    for i in range(10):

        # Set a different random state and run the controller.
        qpos = np.random.uniform(-1., 1., size=7)
        qvel = np.zeros(7)
        state = np.concatenate([qpos, qvel])

        sim_state = sim.get_state()
        sim_state.qpos[:] = qpos
        sim_state.qvel[:] = qvel
        sim.set_state(sim_state)
        sim.forward()

        for i in range(3000):
            controller.set_action(np.random.uniform(high, low))
            for i in range(frame_skip):
                sim.data.ctrl[:] = controller.get_torque()
                sim.step()
                render_frame(viewer, controller.pos_set, controller.quat_set)
                viewer.render()
    def __init__(self, write_assets=True):
        if write_assets:
            # generate and save pyramids
            for num_sides in range(3, 7):
                pyramid_mesh = create_pyramid_mesh(num_sides=num_sides)
                pyramid_mesh.save(
                    os.path.join(
                        gym.__path__[0],
                        'envs/mujoco/assets/pyramid%d.stl' % num_sides))

            # generate and save prisms
            for num_sides in range(3, 7):
                prism_mesh = create_prism_mesh(num_sides=num_sides)
                prism_mesh.save(
                    os.path.join(gym.__path__[0],
                                 'envs/mujoco/assets/prism%d.stl' % num_sides))

            # generate and save pusher
            model = create_shape_pusher()
            model.save(
                os.path.join(gym.__path__[0],
                             'envs/mujoco/assets/shape_pusher.xml'))

        # MujocoEnv's superclass init
        self.frame_skip = 5
        self.model = mujoco_py.MjModel(
            os.path.join(gym.__path__[0],
                         'envs/mujoco/assets/shape_pusher.xml'))
        self.data = self.model.data

        self.width = 256
        self.height = 256
        self.viewer = mujoco_py.MjViewer(init_width=self.width,
                                         init_height=self.height)
        self.viewer.start()
        self.viewer.set_model(self.model)
        self.viewer_setup()

        self.metadata = {
            'render.modes': ['human', 'rgb_array'],
            'video.frames_per_second': int(np.round(1.0 / self.dt))
        }

        self.action_space = spaces.Box(-1, 1, shape=(2, ))

        joints_range = self.model.jnt_range.copy()
        self.observation_space = {
            'image': spaces.Box(0, 255, shape=(self.width, self.height)),
            'manip_xy': spaces.Box(joints_range[:2, 0], joints_range[:2, 1]),
            'obj_pose': spaces.Box(-np.inf, np.inf, shape=(7, ))
        }

        self._seed()

        self.num_objs = len([
            body_name for body_name in self.model.body_names
            if body_name.startswith(six.b('obj'))
        ])
        self.orig_body_mass = self.model.body_mass.copy()
        self.obj_idx = None
 def _get_viewer(self):
     if self.viewer is None:
         self.viewer = mujoco_py.MjViewer(init_width=500, init_height=500)
         self.viewer.start()
         self.viewer.set_model(self.model)
         self.viewer_setup()
     return self.viewer
Example #8
0
 def _get_viewer(self):
     if self.viewer is None:
         self.viewer = mujoco_py.MjViewer()
         self.viewer.start()
         self.viewer.set_model(self.model)
         self.viewer_setup()
     return self.viewer
Example #9
0
    def _get_viewer(self):
        if self.viewer is None:
            if self.from_vision:
                visible = (VISIBLE is not None)
                self.viewer = mujoco_py.MjViewer(visible=visible,
                                                 init_width=self.width,
                                                 init_height=self.height,
                                                 go_fast=(not visible))
            else:
                self.viewer = mujoco_py.MjViewer(visible=True)

            self.viewer.start()
            self.viewer.set_model(self.model)
            self.viewer_setup()

        return self.viewer
Example #10
0
    def run(self):
        (_, _, obs_rgb_view2) = self.env.reset()

        if self.render:
            viewer = mujoco_py.MjViewer(self.env.sim)
        else:
            f, ax = plt.subplots()
            im = ax.imshow(obs_rgb_view2)

        while True:
            self.env.reset()

            while True:

                # random action selection
                action = np.random.choice([0, 1, 2, 3, 4], 6)

                # take the random action and observe the reward and next state (2 rgb views and proprioception)
                (obs_joint, obs_rgb_view1,
                 obs_rgb_view2), reward, done = self.env.step(action)

                # print("action : ", action)
                # print("reward : ", reward)

                if done:
                    break

                if self.render:
                    viewer.render()
                else:
                    im.set_data(obs_rgb_view2)
                    plt.draw()
                    plt.pause(0.1)
Example #11
0
def get_img(env_name, seed):
    env = gym.make(env_name)
    env.seed(int(seed))
    env.reset()

    env_scene = env.env_scene
    env_scene.viewer = mujoco_py.MjViewer(init_width=1000, init_height=750)
    env_scene.viewer.start()
    env_scene.viewer.set_model(env_scene.model)
    env_scene.viewer_setup()

    print("Type save to save the image, step to take one timestep.")

    running = True
    while running:
        img = None
        while sys.stdin not in select.select([sys.stdin], [], [], 0)[0]:
            env.render()
            img = env.render(mode='rgb_array')

        input = sys.stdin.readline().strip()
        if input == 'save':
            running = False
        elif input == 'step':
            action = tuple(np.zeros(space.shape) for space in env.action_space.spaces)
            env.step(action)
        else:
            print(f"Unrecognized command '{input}'")

    return img
Example #12
0
 def __init__(self, model=None, simulation=None, viewer=None):
     path = os.path.realpath(__file__)
     path = str(Path(path).parent.parent.parent)
     if model == None:
         self.model = mp.load_model_from_path(
             path + '/UR5+gripper/UR5gripper_2_finger.xml')
     else:
         self.model = model
     if simulation == None:
         self.sim = mp.MjSim(self.model)
     else:
         self.sim = simulation
     if viewer == None:
         self.viewer = mp.MjViewer(self.sim)
     else:
         self.viewer = viewer
     self.create_lists()
     self.groups = defaultdict(list)
     self.groups['All'] = [i for i in range(len(self.sim.data.ctrl))]
     self.create_group('Arm', [i for i in range(6)])
     self.create_group('Gripper', [6])
     self.actuated_joint_ids = np.array([i[2] for i in self.actuators])
     self.reached_target = False
     self.current_output = np.zeros(len(self.sim.data.ctrl))
     self.image_counter = 0
     self.ee_chain = ikpy.chain.Chain.from_urdf_file(
         path + '/UR5+gripper/ur5_gripper.urdf')
     self.cam_matrix = None
     self.cam_init = False
     self.last_movement_steps = 0
Example #13
0
    def render_to_window(self):
        """Renders the simulation to a window."""
        if not self._onscreen_renderer:
            self._onscreen_renderer = mujoco_py.MjViewer(self._sim)
            self._update_camera_properties(self._onscreen_renderer.cam)

        self._onscreen_renderer.render()
Example #14
0
    def __init__(self,
                 high_ctrl,
                 low_ctrl,
                 env_path,
                 low_ctrl_config=None,
                 arm_name="RightArm",
                 desired_joints=None,
                 isdraw=False):
        self.world = mujoco_py.load_model_from_path(env_path)
        self.sim = mujoco_py.MjSim(self.world)

        high_ctrl.motion_duration = 1.8
        self.high_ctrl = high_ctrl
        self.high_ctrl.low_ctrl = low_ctrl(model=self.world, sim=self.sim, config=low_ctrl_config, \
                                           arm_name=arm_name, desired_joints=desired_joints)

        self.isdraw = isdraw
        if self.isdraw:
            self.viewer = mujoco_py.MjViewer(self.sim)
            self.viewer._paused = True

        self.joint_ctrl = JointController(model=self.world,
                                          sim=self.sim,
                                          arm_name=arm_name,
                                          ctrl_mode="Torque")
        self.init_joints = np.array([0, -0.2, 0, 0, 1.8, 3.14, 0, 0])
        self.is_ball_pos_change = False
Example #15
0
def render_mujoco(model_path):
    model = mujoco_py.load_model_from_path(model_path)
    sim = mujoco_py.MjSim(model)
    viewer = mujoco_py.MjViewer(sim)
    while True:
        viewer.render()
        time.sleep(.01)
Example #16
0
 def _get_viewer(self):
     if self._viewer is None:
         self._viewer = mujoco_py.MjViewer(self.sim)
         self._viewer.cam.fixedcamid = self._camera_id
         self._viewer.cam.type = mujoco_py.generated.const.CAMERA_FIXED
         self._viewer_reset()
     return self._viewer
Example #17
0
    def __init__(self, fullpath="/home/brhm/OPENAI/baxter/baxter.xml", visible= True):                
        self.model = load_model_from_path(fullpath)
        self.sim = MjSim(self.model)
        self.data = self.sim.data
        self.idx = {
                        "right" : [1,7],
                        "left" : [10,16]
                    }

        self.gripper_idx = {
                        "right" : [8,9],
                        "left" : [17,18]
                    }

        self.tuck_pose = {
                       'left':  [[-0.08, -1.0, -1.19, 1.94,  0.67, 1.03, -0.50]],
                       'right':  [[0.08, -1.0,  1.19, 1.94, -0.67, 1.03,  0.50]]
                       }

        ctrl = self.data.ctrl.copy()
        self.data.ctrl[-1] = 10
        # self.apply_action(action={"left": np.array(self.tuck_pose["left"] ), "right"=[]})
                
        self.viewer = mujoco_py.MjViewer(self.sim)
        self.viewer.render()
        #self.viewer.set_model(self.model)

        # cam_pos = np.array([0.1, 0.0, 0.7, 0.01, -45., 0.])
        cam_pos = np.array([1.0, 0.0, 0.7, 0.5, -45, 180])
        self.set_cam_position(self.viewer, cam_pos)
Example #18
0
 def __init__(self, model_path):
     # self.model = mujoco_py.load_model_from_xml(model_path)
     self.model = dy.make_model(model_path)
     self.sim = mujoco_py.MjSim(self.model)
     self.viewer = mujoco_py.MjViewer(self.sim)
     self.qdim = self.model.nq
     self.udim = self.model.nu
     self.pdim = 2 * self.qdim + self.udim
Example #19
0
 def setupcam(self):
     self.viewer = mujoco_py.MjViewer(self.sim)
     self.viewer.cam.distance = self.model.stat.extent * .3
     self.viewer.cam.lookat[0] = 2.
     self.viewer.cam.lookat[1] = 0.3
     self.viewer.cam.lookat[2] = 0.9
     self.viewer.cam.elevation = -30
     self.viewer.cam.azimuth = -10
Example #20
0
 def render(self, on=True):
     if on:
         if self.viewer is None:
             self.viewer = mjc.MjViewer(self.sim)
         self.viewer.render()
     if not on:
         if self.viewer:
             self.viewer = None
Example #21
0
    def __init__(self, wid):

        self.wid = wid
        #self.env = gym.make(GAME).unwrapped
        self.env = JacoEnv(64, 64, 100)
        self.ppo = GLOBAL_PPO
        if self.wid == 0:
            self.viewer = mujoco_py.MjViewer(self.env.sim)
Example #22
0
 def setupcam(self):
     self.viewer = mujoco_py.MjViewer(self.sim)
     self.viewer.cam.trackbodyid = -1
     self.viewer.cam.distance = self.model.stat.extent * .3
     self.viewer.cam.lookat[0] = -0.1
     self.viewer.cam.lookat[1] = -1
     self.viewer.cam.lookat[2] = 0.5
     self.viewer.cam.elevation = -30
    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 # comment when using "human"
        self.viewer = mujoco_py.MjViewer(
            self.sim)  #comment when using "rgb_array"
        self._viewers = {}

        self.modder = TextureModder(self.sim)
        self.visual_randomize = True
        self.mat_modder = MaterialModder(self.sim)
        self.light_modder = LightModder(self.sim)

        self.metadata = {
            'render.modes': ['human', 'rgb_array'],
            'video.frames_per_second': int(np.round(1.0 / self.dt))
        }

        self.visual_data_recording = True
        self._index = 0
        self._label_matrix = []

        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'),
            ))
        if self.viewer:
            self._viewer_setup()
 def __init__(self, simulation,numSimulationFrames, visualize,isTerminal, reshapeActionList):
     self.simulation = simulation
     self.isTerminal = isTerminal
     self.numSimulationFrames = numSimulationFrames
     self.numJointEachSite = int(self.simulation.model.njnt/self.simulation.model.nsite)
     self.reshapeActionList=reshapeActionList
     self.visualize=visualize
     if visualize:
         self.physicsViewer = mujoco.MjViewer(simulation)
Example #25
0
 def load_env(self, num):
     if num < len(self.env_paths):
         new_scene = self.env_paths[num]
         scene = mujoco_py.load_model_from_path(new_scene)
         self.env = mujoco_py.MjSim(scene)
         if self.is_vis:
             self.viewer = mujoco_py.MjViewer(self.env)
     else:
         print("Wrong number,")
Example #26
0
    def __init__(self, xml_specification, mesh_specification=None):
        ref_angles = {
            0: -np.pi / 2,
            1: 0,
            2: np.pi / 2,
            3: -np.pi / 2,
            4: np.pi / 2,
            5: 0
        }

        self.ref_angles = ref_angles
        self.xml_specification = xml_specification
        self.mesh_specification = mesh_specification

        if not path.isfile(self.xml_specification):
            raise Exception('Missing XML specification at: {}'.format(
                self.xml_specification))

        if mesh_specification is not None:
            if not path.isdir(self.mesh_specification):
                raise Exception('Missing mesh specification at: {}'.format(
                    self.mesh_specification))

        print('Arm model is specified at: {}'.format(self.xml_specification))

        try:
            self.mjc_model = mjc.load_model_from_path(self.xml_specification)
        except:
            raise Exception('Mujoco was unable to load the model')

        # Initializing joint dictionary
        joint_ids, joint_names = self.get_joints_info()
        joint_positions_addr = [
            self.mjc_model.get_joint_qpos_addr(name) for name in joint_names
        ]
        joint_velocity_addr = [
            self.mjc_model.get_joint_qvel_addr(name) for name in joint_names
        ]
        self.joint_dict = {}
        for i, ii in enumerate(joint_ids):
            self.joint_dict[ii] = {
                'name': joint_names[i],
                'position_address': joint_positions_addr[i],
                'velocity_address': joint_velocity_addr[i]
            }

        if not np.all(np.array(self.mjc_model.jnt_type) ==
                      3):  # 3 stands for revolute joint
            raise Exception('Revolute joints are assumed')

        self.n_joints = len(self.joint_dict.items())

        # Initialize simulator
        self.simulation = mjc.MjSim(self.mjc_model)

        self.viewer = mjc.MjViewer(self.simulation)
        '''
Example #27
0
 def _get_viewer(self, mode):
     self.viewer = self._viewers.get(mode)
     if self.viewer is None:
         if mode == 'human':
             self.viewer = mujoco_py.MjViewer(self.sim)
         self.viewer_setup()
         self._viewers[mode] = self.viewer
     self.viewer_setup()
     return self.viewer
Example #28
0
 def _get_viewer(self):
     if self.viewer is None:
         self.viewer = mujoco_py.MjViewer(
             init_height=Context.config.get('view.height', 400),
             init_width=Context.config.get('view.width', 600))
         self.viewer.start()
         self.viewer.set_model(self.model)
         self.viewer_setup()
     return self.viewer
Example #29
0
 def _get_viewer(self, mode):
     self.viewer = self._viewers.get(mode)
     if self.viewer is None:
         if mode == 'human':
             self.viewer = mujoco_py.MjViewer(self.sim)
         elif mode == 'rgb_array':
             self.viewer = mujoco_py.MjRenderContextOffscreen(self.sim, 0)
         self.viewer_setup()
         self._viewers[mode] = self.viewer
     return self.viewer
 def _get_viewer(self):
     if self.viewer is None:
         self.viewer = mujoco_py.MjViewer(visible=True,
                                          init_width=500,
                                          init_height=500,
                                          go_fast=False)
         self.viewer.start()
         self.viewer.set_model(self.model)
         self.viewer_setup()
     return self.viewer