YAML Configuration
Task configurations in InternDataEngine are defined using YAML files. This page explains the structure and available options.
Overview
A task YAML file defines all components needed for a simulation episode: environment, robots, objects, cameras, and skills. The workflow loads this configuration to set up the simulation.
World Settings
Global simulation settings are defined in the YAML files under configs/simbox:
simulator:
physics_dt: 1/30 # Physics update rate
rendering_dt: 1/30 # Render update rate
stage_units_in_meters: 1.0 # Stage unit scale
headless: True # Run without GUI; set to False for visual debugging
anti_aliasing: 0 # Anti-aliasing levelWorld Settings
- physics_dt (float): Physics simulation time step (in seconds).
- rendering_dt (float): Rendering time step (in seconds).
- stage_units_in_meters (float): Unit scale used for the USD stage.
- headless (bool): Run without GUI; set to
Falsefor visual debugging. - anti_aliasing (int): Anti-aliasing level (0 = disabled).
Task Basic Configuration
Each task begins with basic metadata and settings:
tasks:
-
name: banana_base_task # Task identifier
asset_root: workflows/simbox/example_assets # Root path for all assets
task: BananaBaseTask # Task class name
task_id: 0 # Task instance ID
offset: null # Optional position offset
render: True # Enable rendering
neglect_collision_names: ["table"] # Collision filter namesTask Basic Configuration
- name (str): Unique task identifier.
- asset_root (str): Root directory for all USD assets.
- task (str): Python class that implements task logic.
- task_id (int): Instance ID for multi-task scenarios.
- offset (list): Optional world offset [x, y, z].
- render (bool): Enable/disable visual rendering.
- neglect_collision_names (list): Object names to exclude from gripper collision checking.
Arena
Arena configuration defines static fixtures in the environment, such as tables, floors, and backgrounds. Each fixture specifies its USD asset path, position, orientation, scale, and optionally texture randomization settings.
Arena configs are stored in workflows/simbox/core/configs/arenas/ and referenced via the arena_file field.
name: example
fixtures:
-
name: table
path: table0/instance.usd
target_class: GeometryObject
translation: [0.0, 0.0, 0.375]
scale: [0.000525, 0.001053, 0.001056]
-
name: floor
target_class: PlaneObject
size: [5.0, 5.0]
translation: [0, 0, 0]Environment Map
Environment map controls scene lighting and HDR backgrounds. It supports randomization of lighting intensity and rotation:
env_map:
envmap_lib: envmap_lib # Path to HDR environment maps
apply_randomization: True # Enable random lighting
intensity_range: [4000, 7000] # Light intensity range
rotation_range: [0, 180] # Environment rotation range (degrees)Robots
Robot configuration specifies the robot name, its configuration file path, initial orientation, and collision filter substrings:
robots:
-
name: "split_aloha"
robot_config_file: workflows/simbox/core/configs/robots/split_aloha.yaml
euler: [0.0, 0.0, 90.0]
ignore_substring: ["material", "table", "gso_box"]Robots
- name (str): Robot identifier (must match skill definitions).
- robot_config_file (str): Path to robot config file, relative to asset_root.
- euler (list): Initial rotation [roll, pitch, yaw] in degrees, in world frame.
- ignore_substring (list): Substrings for collision filtering; objects with matching name prefixes are excluded from CuRobo collision checking.
For detailed robot configuration, see Robots.
Objects
Objects define items in the scene that can be manipulated, along with their metadata and placement properties:
objects:
-
name: pick_object_left
path: task/sort_the_rubbish/non_recyclable_garbage/obj_0/Aligned_obj.usd
target_class: RigidObject
dataset: oo3d
category: bottle
prim_path_child: Aligned
translation: [0.0, 0.0, 0.0]
euler: [0.0, 0.0, 0.0]
scale: [1, 1, 1]
apply_randomization: True
orientation_mode: randomObjects
- name (str): Unique object identifier (must match skill definitions).
- path (str): USD file path relative to asset_root.
- target_class (str): Object type:
RigidObject,GeometryObject,ArticulatedObject,XFormObject,ConveyorObject. - dataset (str): Source dataset (e.g.,
oo3d,gso). - category (str): Object category for grasp detection.
- prim_path_child (str): USD sub-prim name (default:
Aligned). This prim contains the target mesh for collision and grasping. - translation (list): Initial position [x, y, z] in world frame.
- euler (list): Initial rotation [roll, pitch, yaw] in degrees, in world frame.
- scale (list): Scale factors [sx, sy, sz].
- apply_randomization (bool): Enable pose randomization within the category.
- orientation_mode (str): Orientation constraint:
random(pure random),suggested(follows category defaults), orkeep(useeulervalues).
For detailed object configuration, see Objects.
Regions
Regions define spatial constraints for object placement, specifying which object to place, the target surface, and the allowed position/orientation ranges:
regions:
-
object: pick_object_left
target: table
random_type: A_on_B_region_sampler
random_config:
pos_range: [
[-0.3, -0.20, 0.0],
[-0.025, 0.10, 0.0]
]
yaw_rotation: [-45.0, 15.0]Regions
- object (str): Name of the object to place.
- target (str): Target surface name from arena fixtures (default:
table). - random_type (str): Sampler type for placement.
- pos_range (list): Position range [[x_min, y_min, z_min], [x_max, y_max, z_max]] in world frame.
- yaw_rotation (list): Yaw angle range [min, max] in degrees in world frame.
Cameras
Camera configuration defines viewpoint, intrinsic parameters, and extrinsic randomization:
cameras:
-
name: split_aloha_hand_left
translation: [0.0, 0.08, 0.05]
orientation: [0.0, 0.0, 0.965, 0.259]
camera_axes: usd
camera_file: workflows/simbox/core/configs/cameras/astra.yaml
parent: "split_aloha/split_aloha_mid_360_with_piper/split_aloha_mid_360_with_piper/fl/link6"
apply_randomization: FalseCameras
- name (str): Camera identifier.
- translation (list): Position offset [x, y, z] from parent link.
- orientation (list): Rotation offset as quaternion [qx, qy, qz, qw] from parent link.
- camera_axes (str): Coordinate convention:
usdorros. - camera_file (str): Path to camera parameter file.
- parent (str): USD prim path to attach the camera to.
- apply_randomization (bool): Enable extrinsics randomization.
For detailed camera configuration, see Cameras.
Data
The data section stores metadata for dataset generation:
data:
task_dir: "sort_the_rubbish_part0"
language_instruction: "Sort the garbage on the desktop into recyclable and non-recyclable."
detailed_language_instruction: "Pick the bottles and place them into the recyclable trashbin with right arm, and pick the other garbage and place it into the non-recyclable trashbin with left arm."
collect_info: ""
version: "v2.0, head camera 1280x720, wrist 640x480"
update: True
max_episode_length: 4000Data
- task_dir (str): Output directory name.
- language_instruction (str): Short task description.
- detailed_language_instruction (str): Detailed instruction for training.
- collect_info (str): Additional collection metadata.
- version (str): Dataset version string.
- update (bool): Whether to overwrite existing data.
- max_episode_length (int): Maximum steps per episode.
Skills
Skills define the action sequence for the robot:
skills:
-
split_aloha:
-
right:
-
name: pick
objects: [pick_object_right]
filter_y_dir: ["forward", 60]
filter_z_dir: ["downward", 150]
pre_grasp_offset: 0.05
gripper_change_steps: 10
t_eps: 0.025
o_eps: 1
process_valid: True
lift_th: 0.02
post_grasp_offset_min: 0.10
post_grasp_offset_max: 0.15
-
name: place
objects: [pick_object_right, gso_box_right]
place_direction: vertical
x_ratio_range: [0.3, 0.4]
y_ratio_range: [0.3, 0.4]
pre_place_z_offset: 0.3
place_z_offset: 0.3
success_mode: height
-
name: heuristic__skill
mode: home
gripper_state: 1.0For detailed skill configuration, see Skills.
Complete Example
Here is a minimal task configuration:
tasks:
-
name: banana_base_task
asset_root: workflows/simbox/assets
task: BananaBaseTask
task_id: 0
offset: null
render: True
arena_file: workflows/simbox/core/configs/arenas/example.yaml
env_map:
envmap_lib: envmap_lib
apply_randomization: False
robots:
-
name: "fr3"
robot_config_file: workflows/simbox/core/configs/robots/fr3.yaml
euler: [0.0, 0.0, 0.0]
objects:
-
name: bottle
path: objects/bottle.usd
target_class: RigidObject
dataset: oo3d
category: bottle
prim_path_child: Aligned
translation: [0.3, 0.0, 0.0]
euler: [0.0, 0.0, 0.0]
scale: [1, 1, 1]
apply_randomization: False
regions:
-
object: bottle
target: table
random_type: A_on_B_region_sampler
random_config:
pos_range: [[0.2, -0.1, 0.0], [0.4, 0.1, 0.0]]
yaw_rotation: [-30.0, 30.0]
cameras:
-
name: head_camera
translation: [0.0, 0.0, 0.5]
orientation: [0.707, 0.0, 0.0, 0.707]
camera_file: workflows/simbox/core/configs/cameras/realsense_d455.yaml
parent: ""
data:
task_dir: "pick_bottle"
language_instruction: "Pick the bottle."
detailed_language_instruction: "Pick the bottle."
collect_info: ""
version: "v1.0"
update: True
max_episode_length: 500
skills:
-
fr3:
-
name: pick
objects: [bottle]
pre_grasp_offset: 0.05