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
This commit is contained in:
372
docs_crawled/concepts_objects.md
Normal file
372
docs_crawled/concepts_objects.md
Normal file
@@ -0,0 +1,372 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user