robosuite.models.objects package

Contents

robosuite.models.objects package#

Subpackages#

Submodules#

robosuite.models.objects.generated_objects module#

class robosuite.models.objects.generated_objects.CompositeBodyObject(name, objects, object_locations, object_quats=None, object_parents=None, joints='default', body_joints=None, sites=None, total_size=None, locations_relative_to_corner=False)#

Bases: MujocoGeneratedObject

An object constructed out of multiple bodies to make more complex shapes.

Parameters:
  • name (str) – Name of overall object

  • objects (MujocoObject or list of MujocoObjects) – object(s) to combine to form the composite body object. Note that these objects will be added sequentially, so if an object is required to be nested relative to another object, that nested object should be listed after the parent object. Note that all top-level joints for any inputted objects are automatically stripped

  • object_locations (list) – list of body locations in the composite. Each location should be a list or tuple of 3 elements and all locations are taken relative to that object’s parent body. Giving None for a location results in (0,0,0) for that object.

  • object_quats (None or list) – list of (w, x, y, z) quaternions for each body. None results in (1,0,0,0) for that object.

  • object_parents (None or list) – Parent bodies to append each object to. Note that specifying “None” will automatically append all objects to the root body (“root”)

  • joints (None or list) – Joints to use for the top-level composite body object. If None, no joints will be used for this top-level object. If “default”, a single free joint will be added to the top-level body of this object. Otherwise, should be a list of dictionaries, where each dictionary should specify the specific joint attributes necessary. See http://www.mujoco.org/book/XMLreference.html#joint for reference.

  • body_joints (None or dict) – If specified, maps body names to joint specifications to append to that body. If None, no extra joints will be used. If mapped value is “default”, a single free joint will be added to the specified body. Otherwise, should be a list of dictionaries, where each dictionary should specify the specific joint attributes necessary. See http://www.mujoco.org/book/XMLreference.html#joint for reference.

  • sites (None or list) – list of sites to add to top-level composite body object. If None, only the default top-level object site will be used. Otherwise, should be a list of dictionaries, where each dictionary should specify the appropriate attributes for the given site. See http://www.mujoco.org/book/XMLreference.html#site for reference.

  • total_size (None or np.array) – if provided, use this to describe the bounding box for this composite body object. Can also be used to specify @object_locations relative to the lower left corner of the bounding box defined by @total_size, instead of the center of this body, with @locations_relative_to_corner.

  • locations_relative_to_corner (bool) – if True, must supply @total_size. All object locations will be relative to the lower left corner of the bounding box.

property bottom_offset#

Returns vector from model root body to model bottom. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

get_bounding_box_half_size()#
property horizontal_radius#

Returns maximum distance from model root body to any radial point of the model.

Helps us put models programmatically without them flying away due to a huge initial contact force. Must be defined by subclass.

Returns:

radius

Return type:

float

property top_offset#

Returns vector from model root body to model top. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

class robosuite.models.objects.generated_objects.CompositeObject(name, total_size, geom_types, geom_sizes, geom_locations, geom_quats=None, geom_names=None, geom_rgbas=None, geom_materials=None, geom_frictions=None, geom_condims=None, rgba=None, density=100.0, solref=(0.02, 1.0), solimp=(0.9, 0.95, 0.001), locations_relative_to_center=False, joints='default', sites=None, obj_types='all', duplicate_collision_geoms=True)#

Bases: MujocoGeneratedObject

An object constructed out of basic geoms to make more intricate shapes.

Note that by default, specifying None for a specific geom element will usually set a value to the mujoco defaults.

Parameters:
  • name (str) – Name of overall object

  • total_size (list) – (x, y, z) half-size in each dimension for the bounding box for this Composite object

  • geom_types (list) – list of geom types in the composite. Must correspond to MuJoCo geom primitives, such as “box” or “capsule”.

  • geom_locations (list) – list of geom locations in the composite. Each location should be a list or tuple of 3 elements and all locations are relative to the lower left corner of the total box (e.g. (0, 0, 0) corresponds to this corner).

  • geom_sizes (list) – list of geom sizes ordered the same as @geom_locations

  • geom_quats (None or list) – list of (w, x, y, z) quaternions for each geom.

  • geom_names (None or list) – list of geom names ordered the same as @geom_locations. The names will get appended with an underscore to the passed name in @get_collision and @get_visual

  • geom_rgbas (None or list) – list of geom colors ordered the same as @geom_locations. If passed as an argument, @rgba is ignored.

  • geom_materials (None or list of CustomTexture) – list of custom textures to use for this object material

  • geom_frictions (None or list) – list of geom frictions to use for each geom.

  • rgba (None or list) – (r, g, b, a) default values to use if geom-specific @geom_rgbas isn’t specified for a given element

  • density (float or list of float) – either single value to use for all geom densities or geom-specific values

  • solref (list or list of list) – parameters used for the mujoco contact solver. Can be single set of values or element-specific values. See http://www.mujoco.org/book/modeling.html#CSolver for details.

  • solimp (list or list of list) – parameters used for the mujoco contact solver. Can be single set of values or element-specific values. See http://www.mujoco.org/book/modeling.html#CSolver for details.

  • locations_relative_to_center (bool) – If true, @geom_locations will be considered relative to the center of the overall object bounding box defined by @total_size. Else, the corner of this bounding box is considered the origin.

  • joints (None or list) – Joints to use for this composite object. If None, no joints will be used for this top-level object. If “default”, a single free joint will be added to this object. Otherwise, should be a list of dictionaries, where each dictionary should specify the specific joint attributes necessary. See http://www.mujoco.org/book/XMLreference.html#joint for reference.

  • sites (None or list) –

    list of sites to add to this composite object. If None, only the default

    object site will be used. Otherwise, should be a list of dictionaries, where each dictionary

    should specify the appropriate attributes for the given site. See http://www.mujoco.org/book/XMLreference.html#site for reference.

  • obj_types (str or list of str) – either single obj_type for all geoms or geom-specific type. Choices are {“collision”, “visual”, “all”}

property bottom_offset#

Returns vector from model root body to model bottom. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

get_bounding_box_half_size()#
property horizontal_radius#

Returns maximum distance from model root body to any radial point of the model.

Helps us put models programmatically without them flying away due to a huge initial contact force. Must be defined by subclass.

Returns:

radius

Return type:

float

in_box(position, object_position)#

Checks whether the object is contained within this CompositeObject. Useful for when the CompositeObject has holes and the object should be within one of the holes. Makes an approximation by treating the object as a point, and the CompositeBoxObject as an axis-aligned grid. :param position: 3D body position of CompositeObject :param object_position: 3D position of object to test for insertion

property top_offset#

Returns vector from model root body to model top. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

class robosuite.models.objects.generated_objects.PrimitiveObject(name, size=None, rgba=None, density=None, friction=None, solref=None, solimp=None, material=None, joints='default', obj_type='all', duplicate_collision_geoms=True)#

Bases: MujocoGeneratedObject

Base class for all programmatically generated mujoco object i.e., every MujocoObject that does not have an corresponding xml file

Parameters:
  • name (str) – (unique) name to identify this generated object

  • size (n-tuple of float) – relevant size parameters for the object, should be of size 1 - 3

  • rgba (4-tuple of float) – Color

  • density (float) – Density

  • friction (3-tuple of float) – (sliding friction, torsional friction, and rolling friction). A single float can also be specified, in order to set the sliding friction (the other values) will be set to the MuJoCo default. See http://www.mujoco.org/book/modeling.html#geom for details.

  • solref (2-tuple of float) – MuJoCo solver parameters that handle contact. See http://www.mujoco.org/book/XMLreference.html for more details.

  • solimp (3-tuple of float) – MuJoCo solver parameters that handle contact. See http://www.mujoco.org/book/XMLreference.html for more details.

  • material (CustomMaterial or ‘default’ or None) –

    if “default”, add a template material and texture for this object that is used to color the geom(s). Otherwise, input is expected to be a CustomMaterial object

    See http://www.mujoco.org/book/XMLreference.html#asset for specific details on attributes expected for Mujoco texture / material tags, respectively

    Note that specifying a custom texture in this way automatically overrides any rgba values set

  • joints (None or str or list of dict) – Joints for this object. If None, no joint will be created. If “default”, a single (free) joint will be crated. Else, should be a list of dict, where each dictionary corresponds to a joint that will be created for this object. The dictionary should specify the joint attributes (type, pos, etc.) according to the MuJoCo xml specification.

  • obj_type (str) –

    Geom elements to generate / extract for this object. Must be one of:

    ’collision’:

    Only collision geoms are returned (this corresponds to group 0 geoms)

    ’visual’:

    Only visual geoms are returned (this corresponds to group 1 geoms)

    ’all’:

    All geoms are returned

  • duplicate_collision_geoms (bool) – If set, will guarantee that each collision geom has a visual geom copy

bottom_offset()#

Returns vector from model root body to model bottom. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

horizontal_radius()#

Returns maximum distance from model root body to any radial point of the model.

Helps us put models programmatically without them flying away due to a huge initial contact force. Must be defined by subclass.

Returns:

radius

Return type:

float

top_offset()#

Returns vector from model root body to model top. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

robosuite.models.objects.objects module#

class robosuite.models.objects.objects.MujocoGeneratedObject(obj_type='all', duplicate_collision_geoms=True)#

Bases: MujocoObject

Base class for all procedurally generated objects.

Parameters:
  • obj_type (str) –

    Geom elements to generate / extract for this object. Must be one of:

    ’collision’:

    Only collision geoms are returned (this corresponds to group 0 geoms)

    ’visual’:

    Only visual geoms are returned (this corresponds to group 1 geoms)

    ’all’:

    All geoms are returned

  • duplicate_collision_geoms (bool) – If set, will guarantee that each collision geom has a visual geom copy

append_material(material)#

Adds a new texture / material combination to the assets subtree of this XML Input is expected to be a CustomMaterial object

See http://www.mujoco.org/book/XMLreference.html#asset for specific details on attributes expected for Mujoco texture / material tags, respectively

Note that the “file” attribute for the “texture” tag should be specified relative to the textures directory located in robosuite/models/assets/textures/

Parameters:

material (CustomMaterial) – Material to add to this object

bottom_offset()#

Returns vector from model root body to model bottom. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

exclude_from_prefixing(inp)#

Exclude all shared materials and their associated names from being prefixed.

Parameters:

inp (ET.Element or str) – Element or its attribute to check for prefixing.

Returns:

True if we should exclude the associated name(s) with @inp from being prefixed with naming_prefix

Return type:

bool

get_bounding_box_half_size()#
static get_collision_attrib_template()#

Generates template with collision attributes for a given geom

Returns:

Initial template with ‘pos’ and ‘group’ already specified

Return type:

dict

static get_visual_attrib_template()#

Generates template with visual attributes for a given geom

Returns:

Initial template with ‘conaffinity’, ‘contype’, and ‘group’ already specified

Return type:

dict

horizontal_radius()#

Returns maximum distance from model root body to any radial point of the model.

Helps us put models programmatically without them flying away due to a huge initial contact force. Must be defined by subclass.

Returns:

radius

Return type:

float

sanity_check()#

Checks if data provided makes sense. Called in __init__() For subclasses to inherit from

top_offset()#

Returns vector from model root body to model top. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

class robosuite.models.objects.objects.MujocoObject(obj_type='all', duplicate_collision_geoms=True)#

Bases: MujocoModel

Base class for all objects.

We use Mujoco Objects to implement all objects that:

  1. may appear for multiple times in a task

  2. can be swapped between different tasks

Typical methods return copy so the caller can all joints/attributes as wanted

Parameters:
  • obj_type (str) –

    Geom elements to generate / extract for this object. Must be one of:

    ’collision’:

    Only collision geoms are returned (this corresponds to group 0 geoms)

    ’visual’:

    Only visual geoms are returned (this corresponds to group 1 geoms)

    ’all’:

    All geoms are returned

  • duplicate_collision_geoms (bool) – If set, will guarantee that each collision geom has a visual geom copy

property actuators#

Returns: list: Actuator names for this model

property bodies#

Returns: list: Body names for this model

property bottom_offset#

Returns vector from model root body to model bottom. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

property contact_geoms#

List of names corresponding to the geoms used to determine contact with this model.

Returns:

relevant contact geoms for this model

Return type:

list

exclude_from_prefixing(inp)#

A function that should take in either an ET.Element or its attribute (str) and return either True or False, determining whether the corresponding name / str to @inp should have naming_prefix added to it. Must be defined by subclass.

Parameters:

inp (ET.Element or str) – Element or its attribute to check for prefixing.

Returns:

True if we should exclude the associated name(s) with @inp from being prefixed with naming_prefix

Return type:

bool

get_bounding_box_half_size()#
get_bounding_box_size()#

Returns numpy array with dimensions of a bounding box around this object.

static get_joint_attrib_template()#

Returns attribs of free joint

Returns:

Dictionary of default joint attributes

Return type:

dict

get_obj()#

Returns the generated / extracted object, in XML ElementTree form.

Returns:

Object in XML form.

Return type:

ET.Element

static get_site_attrib_template()#

Returns attribs of spherical site used to mark body origin

Returns:

Dictionary of default site attributes

Return type:

dict

property horizontal_radius#

Returns maximum distance from model root body to any radial point of the model.

Helps us put models programmatically without them flying away due to a huge initial contact force. Must be defined by subclass.

Returns:

radius

Return type:

float

property important_geoms#

Returns: dict: (Default is no important geoms; i.e.: empty dict)

property important_sensors#

Returns: dict: (Default is no sensors; i.e.: empty dict)

property important_sites#

Returns: dict:

obj:

Object default site

property joints#

Returns: list: Joint names for this model

merge_assets(other)#

Merges @other’s assets in a custom logic.

Parameters:

other (MujocoXML or MujocoObject) – other xml file whose assets will be merged into this one

property name#

Name for this model. Should be unique.

Returns:

Unique name for this model.

Return type:

str

property naming_prefix#

Generates a standardized prefix to prevent naming collisions

Returns:

Prefix unique to this model.

Return type:

str

property root_body#

Root body name for this model. This should correspond to the top-level body element in the equivalent mujoco xml tree for this object.

property sensors#

Returns: list: Sensor names for this model

property sites#

Returns: list: Site names for this model

property top_offset#

Returns vector from model root body to model top. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

property visual_geoms#

List of names corresponding to the geoms used for visual rendering of this model.

Returns:

relevant visual geoms for this model

Return type:

list

class robosuite.models.objects.objects.MujocoXMLObject(fname, name, joints='default', obj_type='all', duplicate_collision_geoms=True, scale=None)#

Bases: MujocoObject, MujocoXML

MujocoObjects that are loaded from xml files (by default, inherit all properties (e.g.: name) from MujocoObject class first!)

Parameters:
  • fname (str) – XML File path

  • name (str) – Name of this MujocoXMLObject

  • joints (None or str or list of dict) – each dictionary corresponds to a joint that will be created for this object. The dictionary should specify the joint attributes (type, pos, etc.) according to the MuJoCo xml specification. If “default”, a single free-joint will be automatically generated. If None, no joints will be created.

  • obj_type (str) –

    Geom elements to generate / extract for this object. Must be one of:

    ’collision’:

    Only collision geoms are returned (this corresponds to group 0 geoms)

    ’visual’:

    Only visual geoms are returned (this corresponds to group 1 geoms)

    ’all’:

    All geoms are returned

  • duplicate_collision_geoms (bool) – If set, will guarantee that each collision geom has a visual geom copy

  • scale (float or list of floats) – 3D scale factor

property bottom_offset#

Returns vector from model root body to model bottom. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

exclude_from_prefixing(inp)#

By default, don’t exclude any from being prefixed

get_bounding_box_half_size()#
property horizontal_radius#

Returns maximum distance from model root body to any radial point of the model.

Helps us put models programmatically without them flying away due to a huge initial contact force. Must be defined by subclass.

Returns:

radius

Return type:

float

property rot#
set_euler(euler)#

Set Euler value object position

Parameters:

euler (list of floats) – 3D Euler values (should be 3 dims)

set_pos(pos)#

Set position of object position is defined as center of bounding box

Parameters:

pos (list of floats) – 3D position to set object (should be 3 dims)

set_scale(scale, obj=None)#

Scales each geom, mesh, site, and body. Called during initialization but can also be used externally

Parameters:
  • scale (float or list of floats) – Scale factor (1 or 3 dims)

  • obj (ET.Element)

property top_offset#

Returns vector from model root body to model top. Useful for, e.g. placing models on a surface. Must be defined by subclass.

Returns:

(dx, dy, dz) offset vector

Return type:

np.array

robosuite.models.objects.xml_objects module#

class robosuite.models.objects.xml_objects.BottleObject(name)#

Bases: MujocoXMLObject

Bottle object

class robosuite.models.objects.xml_objects.BreadObject(name)#

Bases: MujocoXMLObject

Bread loaf object (used in PickPlace)

class robosuite.models.objects.xml_objects.BreadVisualObject(name)#

Bases: MujocoXMLObject

Visual fiducial of bread loaf (used in PickPlace)

Fiducial objects are not involved in collision physics. They provide a point of reference to indicate a position.

class robosuite.models.objects.xml_objects.CanObject(name)#

Bases: MujocoXMLObject

Coke can object (used in PickPlace)

class robosuite.models.objects.xml_objects.CanVisualObject(name)#

Bases: MujocoXMLObject

Visual fiducial of coke can (used in PickPlace)

Fiducial objects are not involved in collision physics. They provide a point of reference to indicate a position.

class robosuite.models.objects.xml_objects.CerealObject(name)#

Bases: MujocoXMLObject

Cereal box object (used in PickPlace)

class robosuite.models.objects.xml_objects.CerealVisualObject(name)#

Bases: MujocoXMLObject

Visual fiducial of cereal box (used in PickPlace)

Fiducial objects are not involved in collision physics. They provide a point of reference to indicate a position.

class robosuite.models.objects.xml_objects.DoorObject(name, friction=None, damping=None, lock=False)#

Bases: MujocoXMLObject

Door with handle (used in Door)

Parameters:
  • friction (3-tuple of float) – friction parameters to override the ones specified in the XML

  • damping (float) – damping parameter to override the ones specified in the XML

  • lock (bool) – Whether to use the locked door variation object or not

property important_sites#

Returns: dict: In addition to any default sites for this object, also provides the following entries

‘handle’:

Name of door handle location site

class robosuite.models.objects.xml_objects.LemonObject(name)#

Bases: MujocoXMLObject

Lemon object

class robosuite.models.objects.xml_objects.MilkObject(name)#

Bases: MujocoXMLObject

Milk carton object (used in PickPlace)

class robosuite.models.objects.xml_objects.MilkVisualObject(name)#

Bases: MujocoXMLObject

Visual fiducial of milk carton (used in PickPlace).

Fiducial objects are not involved in collision physics. They provide a point of reference to indicate a position.

class robosuite.models.objects.xml_objects.PlateWithHoleObject(name)#

Bases: MujocoXMLObject

Square plate with a hole in the center (used in PegInHole)

class robosuite.models.objects.xml_objects.RoundNutObject(name)#

Bases: MujocoXMLObject

Round nut (used in NutAssembly)

property important_sites#

Returns: dict: In addition to any default sites for this object, also provides the following entries

‘handle’:

Name of nut handle location site

class robosuite.models.objects.xml_objects.SquareNutObject(name)#

Bases: MujocoXMLObject

Square nut object (used in NutAssembly)

property important_sites#

Returns: dict: In addition to any default sites for this object, also provides the following entries

‘handle’:

Name of nut handle location site

Module contents#