Skip to content

Objects ​

InternDataEngine supports various types of objects for simulation tasks. All object classes are located in workflows/simbox/core/objects/.

Supported Object Types ​

ClassDescription
RigidObjectRigid body objects with physics properties (graspable objects)
GeometryObjectStatic geometry objects without physics (tables, fixtures)
ArticulatedObjectArticulated objects with joints (microwaves, drawers)
PlaneObjectSimple planes with textures (floors, backgrounds)
XFormObjectTransform-only objects
ShapeObjectBasic geometric shapes
ConveyorObjectConveyor belt objects

RigidObject ​

RigidObject is used for objects that have physical properties and can be manipulated by robots. It inherits from Isaac Sim's RigidPrim and supports collision detection, mass properties, and texture randomization.

__init__(self, asset_root, root_prim_path, cfg, *args, **kwargs)

Initialize a rigid object in the simulation scene.

Parameters:

  • asset_root (str): Root path for asset files.
  • root_prim_path (str): Root prim path in USD stage.
  • cfg (dict): Configuration dictionary containing:
    • name (str): Object name.
    • path (str): USD file path relative to asset_root.
    • prim_path_child (str): Child prim path for rigid body.
    • translation (list, optional): Initial translation [x, y, z].
    • euler (list, optional): Initial euler rotation [rx, ry, rz] in degrees.
    • scale (list, optional): Scale factor [sx, sy, sz].
    • mass (float, optional): Object mass.
  • **kwargs: Additional keyword arguments passed to RigidPrim.

Config Example ​

yaml
objects:
  -
    name: pick_object_left
    path: pick_and_place/pre-train-pick/assets/omniobject3d-banana/omniobject3d-banana_001/Aligned_obj.usd
    target_class: RigidObject
    dataset: oo3d
    category: "omniobject3d-banana"
    prim_path_child: Aligned
    translation: [0.0, 0.0, 0.0]
    euler: [0.0, 0.0, 0.0]
    scale: [0.001, 0.001, 0.001]
    apply_randomization: True
    orientation_mode: "suggested"

Configuration Parameters ​

  • name (str): Unique identifier for this object instance.
  • path (str): Path to the USD file containing the object mesh.
  • target_class (str): Must be RigidObject for rigid bodies.
  • dataset (str): Dataset source identifier.
  • category (str): Object category name.
  • prim_path_child (str): Name of the child prim that contains the mesh.
  • translation (list): Initial position [x, y, z] in world coordinates.
  • euler (list): Initial rotation in degrees [roll, pitch, yaw].
  • scale (list): Scale factors for each axis.
  • apply_randomization (bool): Whether to apply domain randomization.
  • orientation_mode (str): Orientation mode for randomization.

GeometryObject ​

GeometryObject is used for static objects without physics simulation. It's ideal for environmental objects like tables, shelves, or fixtures that don't need to interact physically with other objects.

__init__(self, asset_root, root_prim_path, cfg, *args, **kwargs)

Initialize a geometry object in the simulation scene.

Parameters:

  • asset_root (str): Root path for asset files.
  • root_prim_path (str): Root prim path in USD stage.
  • cfg (dict): Configuration dictionary containing:
    • name (str): Object name.
    • path (str): USD file path relative to asset_root.
    • prim_path_child (str, optional): Child prim path suffix.
  • **kwargs: Additional keyword arguments passed to GeometryPrim.

Difference from RigidObject:

  • No physics simulation (no mass, no collision response)
  • Lighter weight for static environment objects
  • Cannot be grasped or moved by robots

Config Example ​

yaml
objects:
  -
    name: table
    path: table0/instance.usd
    target_class: GeometryObject
    translation: [0.0, 0.0, 0.375]
    scale: [0.001, 0.001053, 0.001056]

Configuration Parameters ​

  • name (str): Unique identifier for this object.
  • path (str): Path to the USD file.
  • target_class (str): Must be GeometryObject for static geometry.
  • translation (list): Position in world coordinates.
  • scale (list): Scale factors for each axis.

PlaneObject ​

PlaneObject creates simple planes with optional texture mapping. It's commonly used for floors, backgrounds, and other flat surfaces.

__init__(self, asset_root, root_prim_path, cfg, *args, **kwargs)

Initialize a plane object in the simulation scene.

Parameters:

  • asset_root (str): Root path for asset files.
  • root_prim_path (str): Root prim path in USD stage.
  • cfg (dict): Configuration dictionary containing:
    • name (str): Object name.
    • size (list): Plane dimensions [width, height].
    • translation (list, optional): Position [x, y, z].
    • euler (list, optional): Rotation in degrees [roll, pitch, yaw].
    • texture (dict, optional): Texture configuration.
  • **kwargs: Additional keyword arguments.

Config Example ​

yaml
objects:
  -
    name: floor
    target_class: PlaneObject
    size: [5.0, 5.0]
    translation: [0, 0, 0]
    texture:
      texture_lib: "floor_textures"
      apply_randomization: True
      texture_id: 1
      texture_scale: [1.0, 1.0]
  -
    name: background0
    target_class: PlaneObject
    size: [3.0, 5.0]
    translation: [-2, 0, 1]
    euler: [0.0, 90.0, 0.0]
    texture:
      texture_lib: "background_textures"
      apply_randomization: True
      texture_id: 1
      texture_scale: [1.0, 1.0]
  -
    name: background1
    target_class: PlaneObject
    size: [3.0, 5.0]
    translation: [2, 0, 1]
    euler: [0.0, 90.0, 0.0]
    texture:
      texture_lib: "background_textures"
      apply_randomization: True
      texture_id: 1
      texture_scale: [1.0, 1.0]
  -
    name: background2
    target_class: PlaneObject
    size: [5.0, 3.0]
    translation: [0, -2, 1]
    euler: [90.0, 0.0, 0.0]
    texture:
      texture_lib: "background_textures"
      apply_randomization: True
      texture_id: 1
      texture_scale: [1.0, 1.0]
  -
    name: background3
    target_class: PlaneObject
    size: [5.0, 3.0]
    translation: [0, 2, 1]
    euler: [90.0, 0.0, 0.0]
    texture:
      texture_lib: "background_textures"
      apply_randomization: True
      texture_id: 1
      texture_scale: [1.0, 1.0]

Configuration Parameters ​

  • name (str): Unique identifier for the plane.
  • target_class (str): Must be PlaneObject.
  • size (list): Plane dimensions [width, height].
  • translation (list): Position [x, y, z].
  • euler (list): Rotation angles [roll, pitch, yaw] in degrees.
  • texture.texture_lib (str): Name of texture library folder.
  • texture.apply_randomization (bool): Whether to randomize texture selection.
  • texture.texture_id (int): Specific texture ID (used when randomization is False).
  • texture.texture_scale (list): Scale factors for texture UV mapping.

ArticulatedObject ​

ArticulatedObject handles objects with movable joints, such as microwaves, drawers, and cabinets. It inherits from Isaac Sim's Articulation class and provides methods for joint control and state retrieval.

__init__(self, asset_root, root_prim_path, cfg, *args, **kwargs)

Initialize an articulated object in the simulation scene. Loads articulation info from the specified info.json file.

Parameters:

  • asset_root (str): Root path for asset files.
  • root_prim_path (str): Root prim path in USD stage.
  • cfg (dict): Configuration dictionary containing:
    • name (str): Object name.
    • path (str): USD file path relative to asset_root.
    • info_name (str): Name of the skill folder containing info.json.
    • category (str): Object category identifier.
    • euler (list, optional): Initial rotation [roll, pitch, yaw].
    • joint_position_range (list, optional): Random range for initial joint position [min, max].
    • apply_randomization (bool, optional): Whether to apply domain randomization.
  • **kwargs: Additional keyword arguments passed to Articulation.

get_articulated_info(self, object_info)

Parse and store articulation information from the object's info.json file. This method extracts keypoints, joint paths, scale information, and axis orientations.

Parameters:

  • object_info (dict): Dictionary loaded from Kps/{skill}/info.json containing:
    • object_keypoints (dict): Keypoint positions in link_0 frame.
    • object_scale (list): Object scale factors.
    • object_prim_path (str): Prim path for the object.
    • object_link_path (str): Prim path for the articulated link.
    • object_base_path (str): Prim path for the base link.
    • object_joint_path (str): Prim path for the joint.
    • joint_index (int): Index of the main joint.
    • object_link0_rot_axis (str): Rotation axis of the link.
    • object_base_front_axis (str): Front axis of the base.

get_joint_position(self, stage)

Count and configure joints in the articulated object. This method identifies prismatic and revolute joints, and optionally fixes the base of the articulated object.

Parameters:

  • stage (UsdStage): The USD stage containing the articulation.

Sets the following attributes:

  • object_joint_number (int): Total number of joints found.

Config Example ​

yaml
objects:
  -
    name: close_v_left
    target_class: ArticulatedObject
    info_name: "close_v"
    euler: [0.0, 0.0, 90.0]
    joint_position_range: [0.6, 0.8]
    apply_randomization: False
    path: "art/microwave_gr/microwave7119/instance.usd"
    category: "microwave_gr"

Configuration Parameters ​

  • name (str): Unique identifier for the articulated object.
  • target_class (str): Must be ArticulatedObject.
  • info_name (str): Name of the skill folder containing info.json.
  • euler (list): Initial rotation [roll, pitch, yaw] in degrees.
  • joint_position_range (list): Random range for initial joint position [min, max].
  • apply_randomization (bool): Whether to apply domain randomization.
  • path (str): Path to the USD file (relative to asset_root).
  • category (str): Object category identifier.

Released under the MIT License.