# Source: https://internrobotics.github.io/InternDataEngine-Docs/concepts/objects.html # Objects [​](#objects) InternDataEngine supports various types of objects for simulation tasks. All object classes are located in `workflows/simbox/core/objects/ `. ## Supported Object Types [​](#supported-object-types) | Class | Description | | `RigidObject ` | Rigid body objects with physics properties (graspable objects) | | `GeometryObject ` | Static geometry objects without physics (tables, fixtures) | | `ArticulatedObject ` | Articulated objects with joints (microwaves, drawers) | | `PlaneObject ` | Simple planes with textures (floors, backgrounds) | | `XFormObject ` | Transform-only objects | | `ShapeObject ` | Basic geometric shapes | | `ConveyorObject ` | Conveyor belt objects | ## RigidObject [​](#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 [​](#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" ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 ### Configuration Parameters [​](#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) `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 [​](#config-example-1) 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] ``` 1 2 3 4 5 6 7 ### Configuration Parameters [​](#configuration-parameters-1) - **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) `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 [​](#config-example-2) 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] ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 ### Configuration Parameters [​](#configuration-parameters-2) - **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) `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 [​](#config-example-3) 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" ``` 1 2 3 4 5 6 7 8 9 10 ### Configuration Parameters [​](#configuration-parameters-3) - **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.