- 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
372 lines
11 KiB
Markdown
372 lines
11 KiB
Markdown
# 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. |