Skip to content

Ekumen-OS/icar_2025_tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ICAR 2025 Workshop - Synthetic Data Generation with Isaac Sim

License Python 3.10+ Code style: ruff

A tutorial project demonstrating synthetic data generation for robotics using NVIDIA Isaac Sim. This workshop provides tools and examples for generating randomized scenes with a UR10e robot, camera pose randomization, and automated data capture for computer vision and machine learning applications.

πŸ“‹ Prerequisites

  • Docker and Docker Compose (latest versions recommended)
  • NVIDIA GPU with compatible drivers (for Isaac Sim)
  • Nvidia Container Toolkit to get access to the GPU from the containerized tool
  • Python 3.10+ for local development
  • Sufficient disk space for Isaac Sim Docker image (~10GB)

πŸš€ Quick Start

Installation

  1. Clone the repository:

    git clone https://github.com/Ekumen-OS/icar_2025_tutorial.git
    cd icar_2025_tutorial
  2. Source the workspace and build the Docker image:

    source setup.bash
    icar_sim build

Basic Usage

Run a simple data generation session:

icar_sim run --count 10 -o ./output

This will generate 10 randomized scenes and save the captured data to the ./output directory.

Advanced Usage

Run with custom configuration and additional features:

icar_sim run \
  --count 100 \
  --output-path ./dataset \
  --config sample_config \
  --headless

πŸ“– Usage

Command-Line Interface

The icar_sim command provides a convenient interface for building and running simulations.

Build Command

icar_sim build

Builds the Docker image with all necessary dependencies.

Run Command

icar_sim run [OPTIONS]

Required Arguments:

  • --count, -c <NUMBER>: Number of scenes/captures to generate
  • --output-path, -o <PATH>: Directory path for captured data

Optional Arguments:

  • --headless: Run without GUI (faster, recommended for large datasets)
  • --build: Build Docker image before running
  • --keepalive: Keep simulation running after completion (useful for debugging)
  • --cosmos: Enable CosmosWriter for additional data output formats
  • --config <NAME>: Use a specific configuration file from config/ directory (without .yaml extension)
    • Default: sample_config

Configuration Files

Configuration files are YAML-based and located in the config/ directory. They control scene randomization parameters.

Example configuration (config/sample_config.yaml):

camera:
  position: [0, 0, 3.5]
  rotation: [0, 0, 0]
  resolution: [1024, 768]
  pose_constraints:
    look_at: [0, 0, 0]
    x_min: -4.0
    x_max: 4.0
    y_min: -4.0
    y_max: 4.0
    z_min: 0.0
    z_max: 2.0
    camera_distance: [1.0, 4.5]
    camera_altitude: [0.0, 60.0]
    camera_azimuth: [0.0, 360.0]

props:
  num_props: 8
  position_range:
    x: [-0.75, 0.75]
    y: [-0.75, 0.75]
    z: [0.0, 0.0]
  rotation_range:
    z: [0.0, 360.0]

To use a custom configuration:

icar_sim run --count 50 -o ./output --config my_custom_config

πŸ—οΈ Project Structure

icar_2025_tutorial/
β”œβ”€β”€ assets/                    # USD assets and 3D models
β”œβ”€β”€ config/                    # YAML configuration files
β”œβ”€β”€ docker/                    # Docker configuration
β”œβ”€β”€ icar_sim_sdg/             # Main Python package
β”‚   β”œβ”€β”€ randomizers/          # Scene randomization modules
β”‚   β”œβ”€β”€ writers/              # Data output writers
β”‚   └── entrypoint.py         # Simulation entry point
β”œβ”€β”€ docs/                      # Documentation
β”œβ”€β”€ icar_sim                   # Main CLI script
β”œβ”€β”€ setup.bash                 # Environment setup script
β”œβ”€β”€ CONTRIBUTING.md            # Contribution guidelines
└── LICENSE                    # BSD 3-Clause License

πŸ”§ Development

Setting Up Development Environment

  1. Install pre-commit hooks:

    pip install pre-commit
    pre-commit install
  2. Run code quality checks:

    pre-commit run --all-files

Code Style

This project uses:

  • ruff for linting and formatting
  • mypy for type checking
  • pre-commit hooks for automated checks

All code must pass these checks before being committed.

Adding Custom Randomizers

To create a custom randomizer:

  1. Create a new file in icar_sim_sdg/randomizers/
  2. Inherit from the base randomizer pattern
  3. Implement the randomize() method
  4. Register it in entrypoint.py

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

πŸ“„ License

This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.

πŸ“¬ Contact & Support

About

ICAR 2025 Workshop on Synthetic Data Generation with Isaac Sim

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •