Files
issacdataengine/docs_crawled/concepts_objects.md
Tangger 3d6b73753a feat: add test tube pick task with custom assets and grasp annotations
- Add pick_test_tube task: USDC asset repackaging, grasp generation, task config
- Add tools: usdc_to_obj.py, repackage_test_tube.py, fix_test_tube_materials.py
- Add custom_task_guide.md: full Chinese documentation for creating custom tasks
- Add crawled InternDataEngine online docs (23 pages)
- Add grasp generation script (gen_tube_grasp.py) and pipeline config
2026-04-05 11:01:59 +08:00

372 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.