def load_model(self): """ Loads robot and optionally add grippers. """ # First, run the superclass method to load the relevant model super().load_model() # Verify that the loaded model is of the correct type for this robot if self.robot_model.arm_type != "single": raise TypeError( "Error loading robot model: Incompatible arm type specified for this robot. " "Requested model arm type: {}, robot arm type: {}".format( self.robot_model.arm_type, type(self))) # Now, load the gripper if necessary if self.has_gripper: if self.gripper_type == "default": # Load the default gripper from the robot file self.gripper = gripper_factory( self.robot_model.default_gripper, idn=self.idn) else: # Load user-specified gripper self.gripper = gripper_factory(self.gripper_type, idn=self.idn) else: # Load null gripper self.gripper = gripper_factory(None, idn=self.idn) # Grab eef rotation offset self.eef_rot_offset = T.quat_multiply( self.robot_model.hand_rotation_offset, self.gripper.rotation_offset) # Add gripper to this robot model self.robot_model.add_gripper(self.gripper)
def _load_model(self): # replace BaxterEnv _load_model call with custom robot MujocoEnv._load_model(self) self.mujoco_robot = BaxterRobot() if self.has_gripper_right: self.gripper_right = gripper_factory(self.gripper_right_name) if not self.gripper_visualization: self.gripper_right.hide_visualization() self.mujoco_robot.add_gripper("right_hand", self.gripper_right) if self.has_gripper_left: self.gripper_left = gripper_factory(self.gripper_left_name) if not self.gripper_visualization: self.gripper_left.hide_visualization() self.mujoco_robot.add_gripper("left_hand", self.gripper_left) self.mujoco_robot.set_base_xpos([0, 0, 0]) # load model for table top workspace self.mujoco_arena = BinsArena(table_full_size=self.table_full_size, table_friction=self.table_friction) if self.use_indicator_object: self.mujoco_arena.add_pos_indicator() # The sawyer robot has a pedestal, we want to align it with the table self.mujoco_arena.set_origin([.5, -0.4, 0]) self.ob_inits = [MilkObject, BreadObject, CerealObject, CanObject] self.item_names = ["Milk", "Bread", "Cereal", "Can"] self.item_names_org = list(self.item_names) self.obj_to_use = (self.item_names[0] + "{}").format(0) lst = [] for i in range(len(self.ob_inits)): ob = self.ob_inits[i]() lst.append((str(self.item_names[i]) + "0", ob)) self.mujoco_objects = OrderedDict(lst) self.n_objects = len(self.mujoco_objects) # task includes arena, robot, and objects of interest self.model = PickPlaceTask( self.mujoco_arena, self.mujoco_robot, self.mujoco_objects, [], ) self.model.place_objects() self.model.place_visual() self.bin_pos = string_to_array(self.model.bin2_body.get("pos")) self.bin_size = self.model.bin_size
def _load_model(self): """Loads robot and optionally add grippers.""" super()._load_model() self.mujoco_robot = Baxter() if self.has_gripper_right: self.gripper_right = gripper_factory(self.gripper_right_name) if not self.gripper_visualization: self.gripper_right.hide_visualization() self.mujoco_robot.add_gripper("right_hand", self.gripper_right) if self.has_gripper_left: self.gripper_left = gripper_factory(self.gripper_left_name) if not self.gripper_visualization: self.gripper_left.hide_visualization() self.mujoco_robot.add_gripper("left_hand", self.gripper_left)
def load_model(self): """ Loads robot and optionally add grippers. """ # First, run the superclass method to load the relevant model super().load_model() # Verify that the loaded model is of the correct type for this robot if self.robot_model.arm_type != "bimanual": raise TypeError( "Error loading robot model: Incompatible arm type specified for this robot. " "Requested model arm type: {}, robot arm type: {}".format( self.robot_model.arm_type, type(self))) # Now, load the gripper if necessary for arm in self.arms: if self.has_gripper[arm]: if self.gripper_type[arm] == 'default': # Load the default gripper from the robot file self.gripper[arm] = gripper_factory( self.robot_model.gripper[arm], idn="_".join((str(self.idn), arm))) else: # Load user-specified gripper self.gripper[arm] = gripper_factory(self.gripper_type[arm], idn="_".join( (str(self.idn), arm))) else: # Load null gripper self.gripper[arm] = gripper_factory(None, idn="_".join( (str(self.idn), arm))) # Grab eef rotation offset self.eef_rot_offset[arm] = T.quat_multiply( self.robot_model.hand_rotation_offset[arm], self.gripper[arm].rotation_offset) # Use gripper visualization if necessary if not self.gripper_visualization[arm]: self.gripper[arm].hide_visualization() self.robot_model.add_gripper(self.gripper[arm], self.robot_model.eef_name[arm])
def _load_model(self): """ Loads robot and optionally add grippers. """ super()._load_model() self.mujoco_robot = Sawyer() if self.has_gripper: self.gripper = gripper_factory(self.gripper_type) if not self.gripper_visualization: self.gripper.hide_visualization() self.mujoco_robot.add_gripper("right_hand", self.gripper)
from robosuite.models import MujocoWorldBase world = MujocoWorldBase() from robosuite.models.robots import Panda mujoco_robot = Panda() from robosuite.models.grippers import gripper_factory gripper = gripper_factory('PandaGripper') # gripper.hide_visualization() # this doesnt work mujoco_robot.add_gripper(gripper) mujoco_robot.set_base_xpos([0, 0, 0]) world.merge(mujoco_robot) from robosuite.models.arenas import TableArena mujoco_arena = TableArena() mujoco_arena.set_origin([0.8, 0, 0]) world.merge(mujoco_arena) from robosuite.models.objects import BallObject from robosuite.utils.mjcf_utils import new_joint sphere = BallObject(name="sphere", size=[0.04], rgba=[0, 0.5, 0.5, 1]).get_obj() sphere.set('pos', '1.0 0 1.0') world.worldbody.append(sphere)
import robosuite as suite from robosuite.models import MujocoWorldBase from robosuite.models.robots import UR5e from robosuite.models.grippers import gripper_factory from robosuite.models.arenas import EmptyArena from mujoco_py import MjSim, MjViewer world = MujocoWorldBase() ur5 = UR5e() gripper = gripper_factory("RobotiqThreeFingerDexterousGripper") ur5.add_gripper(gripper) ur5.set_base_xpos([0,0,0]) world.merge(ur5) arena = EmptyArena() world.merge(arena) model = world.get_model() sim = MjSim(model) viewer = MjViewer(sim) while True: viewer.render()