Assets
All simulation assets are organized under workflows/simbox/assets. This document describes the asset structure, required assets, and organization conventions.
Asset Structure
workflows/simbox/assets/
├── envmap_lib/ # HDR environment maps for scene lighting
├── background_textures/ # Background textures for domain randomization
├── floor_textures/ # Floor textures for domain randomization
├── table_textures/ # Table surface textures
├── table0/ # Default table USD model
├── lift2/ # ARX Lift-2 robot assets
├── G1_120s/ # Genie-1 robot assets
├── franka/ # Franka robot assets
├── frankarobotiq/ # Franka with Robotiq 2F-85 gripper assets
├── split_aloha_mid_360/ # Agilex Split ALOHA robot assets
├── basic/ # Basic task-specific assets
│ ├── arrange_the_tableware/
│ ├── hang_the_cup_on_rack/
│ ├── pour/
│ ├── store_the_eggs/
│ └── ... # Other task folders
├── art/ # Articulated object assets
│ ├── electriccooker/
│ ├── microwave_gr/
│ ├── laptop/
│ └── ...
├── long_horizon/ # Long-horizon task assets
└── pick_and_place/ # Pick-and-place task assetsRequired Assets
To run a simulation task, the following assets are required:
- Environment Maps (
envmap_lib/): HDR lighting for scene illumination. - Background Textures (
background_textures/): Domain randomization backgrounds. - Floor Textures (
floor_textures/): Floor appearance variation. - Table Model (
table0/): Default table fixture. - Robot Assets (e.g.,
lift2/): Robot USD and kinematics configs. - Task Assets (e.g.,
basic/<task_name>/): Objects specific to each task.
Rigid Object Assets
This section describes the asset structure for rigid objects, using workflows/simbox/example_assets/task/sort_the_rubbish as an example.
Directory Organization
Different object categories are placed in separate folders at the same level. Objects of the same category are grouped together in a single folder to facilitate category-level randomization.
workflows/simbox/example_assets/task/sort_the_rubbish/
├── garbage_can/ # Container category
│ ├── recyclable_can/
│ └── nonrecyclable_can/
├── non_recyclable_garbage/ # Non-recyclable items category
│ ├── obj_1/
│ ├── obj_2/
│ └── ...
└── recyclable_garbage/ # Recyclable items category
├── bottle_0/
├── bottle_1/
└── ...Object Instance Structure
Each object instance folder contains the USD model, textures, and annotations:
workflows/simbox/example_assets/task/sort_the_rubbish/non_recyclable_garbage/obj_2/
├── Aligned_obj.usd # Object USD with physics properties (mass, collision, etc.)
├── Aligned_grasp_sparse.npy # Grasp pose annotations (for pickable objects)
└── textures/ # Texture files
└── baked_mesh_*.pngFile Naming Conventions:
- Aligned_obj.usd (file): USD file containing the 3D model with complete physics properties (mass, collision mesh, etc.).
- Aligned_grasp_sparse.npy (file): Grasp pose annotations for manipulation tasks.
- textures/ (directory): Directory containing texture maps for the object.
Articulated Object Assets
Articulated objects (e.g., doors, drawers, appliances) follow a similar organization pattern. This section uses workflows/simbox/assets/art/electriccooker as an example.
Directory Organization
Different articulated object categories are placed in separate folders. Objects within the same category share consistent orientation, category classification, and functionality after preprocessing.
workflows/simbox/assets/art/electriccooker/
├── electriccooker_0002/
├── electriccooker_0008/
├── electriccooker_0011/
├── electriccooker_0017/
├── electriccooker_0031/
└── ...Articulated Object Instance Structure
Each articulated object instance contains the USD model, materials, and keypoint annotations:
workflows/simbox/assets/art/electriccooker/electriccooker_0031/
├── instance.usd # Articulated object USD
├── instance.png # Preview image
├── Materials/ # Material definitions
└── Kps/ # Keypoint annotations
└── close_h/ # Keypoints for "close horizontally" action
├── keypoints.json
├── keypoints_final.json
└── info.jsonFile Naming Conventions:
- instance.usd (file): USD file for articulated objects (unlike rigid objects which use
Aligned_obj.usd). - instance.png (file): Preview/thumbnail image.
- Materials/ (directory): Material and texture definitions.
- Kps/ (directory): Keypoint annotations for interaction points.
- Kps/<action_type>/ (directory): Action-specific keypoints (e.g.,
close_hfor closing horizontally).
Keypoint Annotations
Keypoint annotations define interaction points for articulated objects:
Kps/
├── close_h/ # Close horizontally (e.g., laptop, pot, electric cooker)
├── close_v/ # Close vertically (e.g., microwave)
├── open_h/ # Open horizontally
├── open_v/ # Open vertically
├── pull/ # Pull (e.g., drawer)
├── push/ # Push
└── ...Each action folder contains:
- keypoints.json (file): Initial keypoint positions.
- keypoints_final.json (file): Final/processed keypoint positions.
- info.json (file): Metadata about the keypoints.
Asset Configuration
Assets are referenced in task YAML configurations:
objects:
- name: bottle_1
path: task/sort_the_rubbish/recyclable_garbage/bottle_1/Aligned_obj.usd
target_class: RigidObject
category: bottleFor more details on object configuration, see Objects.
Best Practices
Category Organization: Group objects of the same category in a single folder for efficient domain randomization.
Consistent Naming: Use standardized naming conventions:
Aligned_obj.usdfor rigid objectsinstance.usdfor articulated objectsAligned_grasp_sparse.npyfor grasp annotations
Complete Physics Properties: Ensure USD files include:
- Accurate mass properties
- Collision meshes
- Appropriate friction coefficients
Preprocessing: For all objects, ensure consistent frame and alignment across instances in the same category.