Custom Extension Guide in Isaac Sim 4.5 (and above)

Overview

Isaac Sim extensions allow you to add custom functionality, UI elements, and simulations to the Isaac Sim environment. This guide covers everything from basic setup to advanced physics-based simulations.

Prerequisites

  • NVIDIA Isaac Sim 4.5 installed

  • Basic Python knowledge

  • Understanding of USD (Universal Scene Description) basics

Extension Locations

Isaac Sim searches for extensions in several locations:

~/.local/share/ov/data/Kit/Isaac-Sim Full/4.5/exts/3/
  • Survives Isaac Sim updates

  • Automatically detected

  • User-specific extensions

Application Extensions

~/isaacsim/exts/
  • Core Isaac Sim extensions

  • Gets replaced during updates

  • Don't modify directly

Custom Project Directory

~/Projects/isaac_extensions/
~/isaacsim/isaac-sim.sh --ext-folder ~/Projects/isaac_extensions

Creating a Custom Extension

Step 1: Basic Extension Structure

extension_name/
├── config/
│   └── extension.toml      # Extension metadata
├── extension_name/         # Python module (same name as root)
│   ├── __init__.py        # Module initialization
│   └── extension.py       # Main extension code
├── data/                  # Optional: assets, icons
└── docs/                  # Optional: documentation

Step 2: Create a Test Extension (Kauti Extension)

cd ~/.local/share/ov/data/Kit/Isaac-Sim\ Full/4.5/exts/3/

Create extension structure

mkdir -p kauti_extension/{config,kauti_extension,data,docs}
cd kauti_extension

config/extension.toml

[package]
version = "1.0.0"
title = "Kauti Extension Test"
description = "A test extension to verify Isaac Sim extension setup"
authors = ["Your Name"]
category = "Example"
keywords = ["test", "example", "tutorial"]

[dependencies]
"omni.kit.uiapp" = {}

[[python.module]]
name = "kauti_extension"

kauti_extension/__init__.py

"""Kauti Extension Test for Isaac Sim"""
from .extension import KautiExtensionTest

__all__ = ["KautiExtensionTest"]

kauti_extension/extension.py

import omni.ext
import omni.ui as ui
import carb

class KautiExtensionTest(omni.ext.IExt):
    def on_startup(self, ext_id):
        carb.log_info("[Kauti Extension] Starting up...")
        
        self._window = ui.Window("Kauti Extension Test", width=300, height=200)
        
        with self._window.frame:
            with ui.VStack(spacing=5):
                ui.Label("Extension Loaded Successfully!", 
                        style={"font_size": 18, "color": 0xFF00FF00})
                
                ui.Button("Click Me", height=40).set_clicked_fn(
                    lambda: carb.log_info("Button clicked!")
                )
    
    def on_shutdown(self):
        carb.log_info("[Kauti Extension] Shutting down...")
        if self._window:
            self._window.destroy()

Step 3: Enable the New Extension

  1. Launch Isaac Sim

  2. Go to Window → Extensions

  3. Search for your extension name

  4. Toggle it ON

Reply

or to participate.