robosuite.models.objects package#
Subpackages#
- robosuite.models.objects.composite package
- robosuite.models.objects.composite_body package
- robosuite.models.objects.primitive package
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:
may appear for multiple times in a task
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