Custom Extension Guide in Isaac Sim 4.5 (and above)
Professional Simulations in the making...lets get started
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:
User Data Directory (Recommended for Development)
~/.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_extensionsCreating 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: documentationStep 2: Create a Test Extension (Kauti Extension)
Navigate to extension Directory
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_extensionconfig/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
- Launch Isaac Sim
- Go to Window → Extensions
- Search for your extension name
- Toggle it ON