Skip to content

Quick Start

This guide walks you through running your first InternDataEngine data generation task and understanding the core configuration concepts.

Running Your First Task

The quickest way to start:

bash
/isaac-sim/python.sh launcher.py \
  --config configs/simbox/de_plan_with_render_template.yaml

You can also use the wrapper script (same effect, simpler arguments):

bash
bash scripts/simbox/simbox_plan_with_render.sh <task_config_path> [num_samples] [random_seed]

# Example
bash scripts/simbox/simbox_plan_with_render.sh \
  workflows/simbox/core/configs/tasks/basic/split_aloha/track_the_targets/track_the_targets.yaml 10

See the script file for more usage details.

Command Line Arguments

ArgumentDescription
--configRequired. Path to the execution config file
--random_seedOptional. Fix random seed for reproducibility
--debugOptional. Debug mode — exceptions are raised immediately

Any field in the config file can be overridden via the command line using dot-separated paths:

bash
--load_stage.layout_random_generator.args.random_num=500
--load_stage.scene_loader.args.simulator.headless=false

This is equivalent to modifying the config file directly.

Execution Modes

The engine provides multiple execution modes. Switch between them by changing the config file passed to --config:

Config FileModeDescription
de_plan_with_render_template.yamlPlan + Render simultaneousSimplest; good for debugging. Required for fluid tasks
de_pipe_template.yamlPlan / Render pipelinedBest performance (memory-dependent); ideal for large-scale production
de_plan_and_render_template.yamlPlan and Render sequentialFor serial debugging of the Pipe mode
de_plan_template.yamlPlanning onlyGenerate trajectories without rendering
de_render_template.yamlRendering onlyRender images from existing trajectories; re-render with different backgrounds/materials

Recommended: Use de_plan_with_render_template.yaml or de_plan_and_render_template.yaml during development, and de_pipe_template.yaml for production. Due to potential interference between Isaac Sim multi-process instances, it is recommended to run in containerized environments — e.g., launch multiple single-GPU containers on a cluster to execute the pipeline script.

bash
# Debug mode
/isaac-sim/python.sh launcher.py --config configs/simbox/de_plan_with_render_template.yaml

# Production mode
/isaac-sim/python.sh launcher.py --config configs/simbox/de_pipe_template.yaml

Understanding the Configuration

The engine uses two types of config files:

  • Execution configs (configs/simbox/de_*.yaml): Define the pipeline execution mode and stage orchestration
  • Task configs (workflows/simbox/core/configs/tasks/...): Define the specific task — robots, objects, skills, etc.

Execution Config Details

The data pipeline consists of four stages: Load -> Plan -> Render -> Store.

Using de_plan_and_render_template.yaml as an example:

yaml
load_stage:
  scene_loader:                          # Scene loader
    type: env_loader
    args:
      workflow_type: SimBoxDualWorkFlow
      cfg_path: workflows/simbox/core/configs/tasks/...  # Task config path
      simulator:
        physics_dt: 1/30                 # Physics update rate
        rendering_dt: 1/30              # Render update rate
        headless: True                   # Headless mode (no GUI)
        anti_aliasing: 0                 # Anti-aliasing level
  layout_random_generator:               # Scene randomization
    type: env_randomizer
    args:
      random_num: 5                      # Number of random samples
      strict_mode: true                  # true: output count must equal random_num

plan_stage:
  seq_planner:
    type: env_planner                    # Trajectory planner

render_stage:
  renderer:
    type: env_renderer                   # Renderer

store_stage:
  writer:
    type: env_writer
    args:
      batch_async: true                  # Async writes (better perf, more memory)
      output_dir: output/${name}/        # Output directory

Task Config

A task config defines the complete scene for a data generation run:

FieldDescription
robotsRobot model and parameters
objectsInteractive objects in the scene
cameraViewpoint and image capture settings
skillsManipulation skill sequence to execute
arenaObject placement regions and scene layout

Example Tasks

Pick and Place

bash
/isaac-sim/python.sh launcher.py \
  --config configs/simbox/de_plan_with_render_template.yaml \
  --load_stage.scene_loader.args.cfg_path=workflows/simbox/core/configs/tasks/basic/lift2/insert_the_markpen_in_penholder/left/insert_the_markpen_in_penholder_part0.yaml

Pouring Task

bash
/isaac-sim/python.sh launcher.py \
  --config configs/simbox/de_plan_with_render_template.yaml \
  --load_stage.scene_loader.args.cfg_path=workflows/simbox/core/configs/tasks/basic/lift2/pour_redwine_left.yaml

Long-Horizon Task

bash
/isaac-sim/python.sh launcher.py \
  --config configs/simbox/de_plan_with_render_template.yaml \
  --load_stage.scene_loader.args.cfg_path=workflows/simbox/core/configs/tasks/long_horizon/lift2/dexpnp/sort_parts_0.yaml

Output Structure

Output is saved to the path specified in store_stage.writer.args.output_dir:

text
output_dir/
├── <task_type>/
│   └── <robot>/
│       └── <task_name>/
│           └── <arm>/
│               ├── <timestamp1>/
│               │   ├── images.rgb.head/
│               │   ├── images.rgb.hand_right/
│               │   ├── images.rgb.hand_left/
│               │   └── lmdb/
│               └── <timestamp2>/
│                   └── ...
├── de_config.yaml                  # Copy of the execution config
├── de_time_profile_*.log           # Execution time statistics
├── de_p*_w*_time_profile*.log      # (Pipe mode) Per-process timing
└── de_supervisor_p*_w*.log         # (Pipe mode) Process monitor logs

Debugging Tips

Enable Visualization

Disable headless mode to show the simulation GUI:

bash
--load_stage.scene_loader.args.simulator.headless=false

Common Issues

IssueTroubleshooting
Scene setup errorsCheck set_up_scene() in workflows/simbox/core/tasks/banana.py
Reset failuresCheck reset() in workflows/simbox_dual_workflow.py
Motion planning failuresCheck robot config in task YAML, object collision settings, ignore_substring list
UnicodeDecodeErrorSet export PYTHONUTF8=1

Released under the MIT License.