Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
8e411a8
reimplement p[rim utils
pascal-roth Nov 3, 2025
3908cac
fix reference
pascal-roth Nov 3, 2025
43bf23c
lazy import
ooctipus Nov 10, 2025
114427e
Merge branch 'main' into feature/replace-prim-utils
pascal-roth Nov 13, 2025
556060f
formatter
pascal-roth Nov 13, 2025
8f4ab00
Merge branch 'main' into feature/replace-prim-utils
pascal-roth Nov 19, 2025
0ac9af1
change package import style to module import
ooctipus Nov 19, 2025
c00b251
pass precommit
ooctipus Nov 19, 2025
afe5f02
split utils/utils.py and move most components to prims
pascal-roth Nov 19, 2025
27ca1d1
formatter
pascal-roth Nov 19, 2025
ea2545f
adjust docstrings
pascal-roth Nov 19, 2025
1dc98d7
Merge branch 'main' into feature/replace-prim-utils
pascal-roth Nov 19, 2025
c23712e
remove decorator split
pascal-roth Nov 19, 2025
d40fbdd
revert complicated input
pascal-roth Nov 19, 2025
f12a1c6
formatter
pascal-roth Nov 19, 2025
8b8cb6e
fix docs usdrt
pascal-roth Nov 19, 2025
4dc7199
fix input missmatch for prim vs prim_path
ooctipus Nov 20, 2025
49746a7
Merge branch 'main' into feature/replace-prim-utils
ooctipus Nov 20, 2025
9be7fe9
ensure valid regex
ooctipus Nov 23, 2025
1bff817
patch the leftover sim prim, stage, carb utils
ooctipus Nov 24, 2025
d05860a
legacy regex support with deprecated warning
ooctipus Nov 24, 2025
f03d22f
Merge branch 'main' into feature/replace-prim-utils
kellyguo11 Nov 25, 2025
0c2e2cd
add fixes
ooctipus Nov 25, 2025
dbfa86f
Merge branch 'main' into feature/replace-prim-utils
ooctipus Nov 25, 2025
5d913cc
update extension.toml version
ooctipus Nov 25, 2025
3708371
prototype lazy importer
ooctipus Nov 18, 2025
0f2a050
ugly lazy import
ooctipus Nov 19, 2025
7003be5
precommit pass
ooctipus Nov 24, 2025
1e9a36a
pass precommit
ooctipus Nov 24, 2025
5bfd52f
pass precommit
ooctipus Nov 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@
"omni.client",
"omni.physx",
"omni.physics",
"usdrt",
"pxr.PhysxSchema",
"pxr.PhysicsSchemaTools",
"omni.replicator",
Expand Down
4 changes: 2 additions & 2 deletions scripts/benchmarks/benchmark_cameras.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,11 +245,10 @@
import time
import torch

import isaacsim.core.utils.prims as prim_utils
import psutil
from isaacsim.core.utils.stage import create_new_stage

import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.assets import RigidObject, RigidObjectCfg
from isaaclab.scene.interactive_scene import InteractiveScene
from isaaclab.sensors import (
Expand All @@ -261,6 +260,7 @@
TiledCameraCfg,
patterns,
)
from isaaclab.sim.utils.stage import create_new_stage
from isaaclab.utils.math import orthogonalize_perspective_depth, unproject_depth

from isaaclab_tasks.utils import load_cfg_from_registry
Expand Down
13 changes: 4 additions & 9 deletions scripts/benchmarks/benchmark_non_rl.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,9 @@

"""Rest everything follows."""

# enable benchmarking extension
from isaacsim.core.utils.extensions import enable_extension

enable_extension("isaacsim.benchmark.services")
from isaacsim.benchmark.services import BaseIsaacBenchmark

sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../.."))

from isaaclab import lazy
from isaaclab.utils.timer import Timer
from scripts.benchmarks.utils import (
log_app_start_time,
Expand Down Expand Up @@ -90,9 +85,10 @@

imports_time_end = time.perf_counter_ns()


# enable benchmarking extension
lazy.isaacsim.core.utils.extensions.enable_extension("isaacsim.benchmark.services")
# Create the benchmark
benchmark = BaseIsaacBenchmark(
benchmark = lazy.isaacsim.benchmark.services.BaseIsaacBenchmark(
benchmark_name="benchmark_non_rl",
workflow_metadata={
"metadata": [
Expand All @@ -109,7 +105,6 @@
@hydra_task_config(args_cli.task, None)
def main(env_cfg: ManagerBasedRLEnvCfg | DirectRLEnvCfg | DirectMARLEnvCfg, agent_cfg: dict):
"""Benchmark without RL in the loop."""

# override configurations with non-hydra CLI arguments
env_cfg.scene.num_envs = args_cli.num_envs if args_cli.num_envs is not None else env_cfg.scene.num_envs
env_cfg.sim.device = args_cli.device if args_cli.device is not None else env_cfg.sim.device
Expand Down
11 changes: 4 additions & 7 deletions scripts/benchmarks/benchmark_rlgames.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,6 @@

"""Rest everything follows."""

# enable benchmarking extension
from isaacsim.core.utils.extensions import enable_extension

enable_extension("isaacsim.benchmark.services")
from isaacsim.benchmark.services import BaseIsaacBenchmark

imports_time_begin = time.perf_counter_ns()

import gymnasium as gym
Expand All @@ -73,6 +67,7 @@
from rl_games.common.algo_observer import IsaacAlgoObserver
from rl_games.torch_runner import Runner

from isaaclab import lazy
from isaaclab.envs import DirectMARLEnvCfg, DirectRLEnvCfg, ManagerBasedRLEnvCfg
from isaaclab.utils.dict import print_dict
from isaaclab.utils.io import dump_yaml
Expand Down Expand Up @@ -106,8 +101,10 @@
torch.backends.cudnn.benchmark = False


# enable benchmarking extension
lazy.isaacsim.core.utils.extensions.enable_extension("isaacsim.benchmark.services")
# Create the benchmark
benchmark = BaseIsaacBenchmark(
benchmark = lazy.isaacsim.benchmark.services.BaseIsaacBenchmark(
benchmark_name="benchmark_rlgames_train",
workflow_metadata={
"metadata": [
Expand Down
9 changes: 4 additions & 5 deletions scripts/benchmarks/benchmark_rsl_rl.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,8 @@

imports_time_end = time.perf_counter_ns()

from isaacsim.core.utils.extensions import enable_extension

enable_extension("isaacsim.benchmark.services")
from isaacsim.benchmark.services import BaseIsaacBenchmark

from isaaclab import lazy
from isaaclab.utils.timer import Timer
from scripts.benchmarks.utils import (
log_app_start_time,
Expand All @@ -109,8 +106,10 @@
torch.backends.cudnn.deterministic = False
torch.backends.cudnn.benchmark = False

# enable benchmarking extension
lazy.isaacsim.core.utils.extensions.enable_extension("isaacsim.benchmark.services")
# Create the benchmark
benchmark = BaseIsaacBenchmark(
benchmark = lazy.isaacsim.benchmark.services.BaseIsaacBenchmark(
benchmark_name="benchmark_rsl_rl_train",
workflow_metadata={
"metadata": [
Expand Down
50 changes: 30 additions & 20 deletions scripts/benchmarks/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@

import glob
import os
from typing import Any

from isaacsim.benchmark.services import BaseIsaacBenchmark
from isaacsim.benchmark.services.metrics.measurements import DictMeasurement, ListMeasurement, SingleMeasurement
from tensorboard.backend.event_processing import event_accumulator

from isaaclab import lazy


def parse_tf_logs(log_dir: str):
"""Search for the latest tfevents file in log_dir folder and returns
Expand All @@ -36,67 +37,76 @@ def parse_tf_logs(log_dir: str):
return log_data


#############################
# logging benchmark metrics #
#############################


def log_min_max_mean_stats(benchmark: BaseIsaacBenchmark, values: dict):
def log_min_max_mean_stats(benchmark: Any, values: dict):
metrics_mod = lazy.isaacsim.benchmark.services.metrics.measurements
for k, v in values.items():
measurement = SingleMeasurement(name=f"Min {k}", value=min(v), unit="ms")
measurement = metrics_mod.SingleMeasurement(name=f"Min {k}", value=min(v), unit="ms")
benchmark.store_custom_measurement("runtime", measurement)
measurement = SingleMeasurement(name=f"Max {k}", value=max(v), unit="ms")
measurement = metrics_mod.SingleMeasurement(name=f"Max {k}", value=max(v), unit="ms")
benchmark.store_custom_measurement("runtime", measurement)
measurement = SingleMeasurement(name=f"Mean {k}", value=sum(v) / len(v), unit="ms")
measurement = metrics_mod.SingleMeasurement(name=f"Mean {k}", value=sum(v) / len(v), unit="ms")
benchmark.store_custom_measurement("runtime", measurement)


def log_app_start_time(benchmark: BaseIsaacBenchmark, value: float):
def log_app_start_time(benchmark: Any, value: float):
SingleMeasurement = lazy.isaacsim.benchmark.services.metrics.measurements.SingleMeasurement
measurement = SingleMeasurement(name="App Launch Time", value=value, unit="ms")
benchmark.store_custom_measurement("startup", measurement)


def log_python_imports_time(benchmark: BaseIsaacBenchmark, value: float):
def log_python_imports_time(benchmark: Any, value: float):
SingleMeasurement = lazy.isaacsim.benchmark.services.metrics.measurements.SingleMeasurement
measurement = SingleMeasurement(name="Python Imports Time", value=value, unit="ms")
benchmark.store_custom_measurement("startup", measurement)


def log_task_start_time(benchmark: BaseIsaacBenchmark, value: float):
def log_task_start_time(benchmark: Any, value: float):
SingleMeasurement = lazy.isaacsim.benchmark.services.metrics.measurements.SingleMeasurement
measurement = SingleMeasurement(name="Task Creation and Start Time", value=value, unit="ms")
benchmark.store_custom_measurement("startup", measurement)


def log_scene_creation_time(benchmark: BaseIsaacBenchmark, value: float):
def log_scene_creation_time(benchmark: Any, value: float):
SingleMeasurement = lazy.isaacsim.benchmark.services.metrics.measurements.SingleMeasurement
measurement = SingleMeasurement(name="Scene Creation Time", value=value, unit="ms")
benchmark.store_custom_measurement("startup", measurement)


def log_simulation_start_time(benchmark: BaseIsaacBenchmark, value: float):
def log_simulation_start_time(benchmark: Any, value: float):
SingleMeasurement = lazy.isaacsim.benchmark.services.metrics.measurements.SingleMeasurement
measurement = SingleMeasurement(name="Simulation Start Time", value=value, unit="ms")
benchmark.store_custom_measurement("startup", measurement)


def log_total_start_time(benchmark: BaseIsaacBenchmark, value: float):
def log_total_start_time(benchmark: Any, value: float):
SingleMeasurement = lazy.isaacsim.benchmark.services.metrics.measurements.SingleMeasurement
measurement = SingleMeasurement(name="Total Start Time (Launch to Train)", value=value, unit="ms")
benchmark.store_custom_measurement("startup", measurement)


def log_runtime_step_times(benchmark: BaseIsaacBenchmark, value: dict, compute_stats=True):
def log_runtime_step_times(benchmark: Any, value: dict, compute_stats=True):
DictMeasurement = lazy.isaacsim.benchmark.services.metrics.measurements.DictMeasurement
measurement = DictMeasurement(name="Step Frametimes", value=value)
benchmark.store_custom_measurement("runtime", measurement)
if compute_stats:
log_min_max_mean_stats(benchmark, value)


def log_rl_policy_rewards(benchmark: BaseIsaacBenchmark, value: list):
def log_rl_policy_rewards(benchmark: Any, value: list):
metrics_mod = lazy.isaacsim.benchmark.services.metrics.measurements
ListMeasurement = metrics_mod.ListMeasurement
SingleMeasurement = metrics_mod.SingleMeasurement
measurement = ListMeasurement(name="Rewards", value=value)
benchmark.store_custom_measurement("train", measurement)
# log max reward
measurement = SingleMeasurement(name="Max Rewards", value=max(value), unit="float")
benchmark.store_custom_measurement("train", measurement)


def log_rl_policy_episode_lengths(benchmark: BaseIsaacBenchmark, value: list):
def log_rl_policy_episode_lengths(benchmark: Any, value: list):
metrics_mod = lazy.isaacsim.benchmark.services.metrics.measurements
ListMeasurement = metrics_mod.ListMeasurement
SingleMeasurement = metrics_mod.SingleMeasurement
measurement = ListMeasurement(name="Episode Lengths", value=value)
benchmark.store_custom_measurement("train", measurement)
# log max episode length
Expand Down
3 changes: 1 addition & 2 deletions scripts/demos/arms.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,8 @@
import numpy as np
import torch

import isaacsim.core.utils.prims as prim_utils

import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.assets import Articulation
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR

Expand Down
9 changes: 4 additions & 5 deletions scripts/demos/h1_locomotion.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,12 @@

import carb
import omni
from isaacsim.core.utils.stage import get_current_stage
from omni.kit.viewport.utility import get_viewport_from_window_name
from omni.kit.viewport.utility.camera_state import ViewportCameraState
from pxr import Gf, Sdf
from rsl_rl.runners import OnPolicyRunner

from isaaclab import lazy
from isaaclab.envs import ManagerBasedRLEnv
from isaaclab.sim.utils.stage import get_current_stage
from isaaclab.utils.math import quat_apply
from isaaclab.utils.pretrained_checkpoint import get_published_pretrained_checkpoint

Expand Down Expand Up @@ -112,7 +111,7 @@ def __init__(self):
def create_camera(self):
"""Creates a camera to be used for third-person view."""
stage = get_current_stage()
self.viewport = get_viewport_from_window_name("Viewport")
self.viewport = lazy.omni_kit_viewport_utility.get_viewport_from_window_name("Viewport")
# Create camera
self.camera_path = "/World/Camera"
self.perspective_path = "/OmniverseKit_Persp"
Expand Down Expand Up @@ -200,7 +199,7 @@ def _update_camera(self):

camera_pos = quat_apply(base_quat, self._camera_local_transform) + base_pos

camera_state = ViewportCameraState(self.camera_path, self.viewport)
camera_state = lazy.omni_kit_viewport_utility.camera_state.ViewportCameraState(self.camera_path, self.viewport)
eye = Gf.Vec3d(camera_pos[0].item(), camera_pos[1].item(), camera_pos[2].item())
target = Gf.Vec3d(base_pos[0].item(), base_pos[1].item(), base_pos[2].item() + 0.6)
camera_state.set_position_world(eye, True)
Expand Down
3 changes: 1 addition & 2 deletions scripts/demos/hands.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,8 @@
import numpy as np
import torch

import isaacsim.core.utils.prims as prim_utils

import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.assets import Articulation

##
Expand Down
2 changes: 1 addition & 1 deletion scripts/demos/multi_asset.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@

import random

from isaacsim.core.utils.stage import get_current_stage
from pxr import Gf, Sdf

import isaaclab.sim as sim_utils
Expand All @@ -52,6 +51,7 @@
)
from isaaclab.scene import InteractiveScene, InteractiveSceneCfg
from isaaclab.sim import SimulationContext
from isaaclab.sim.utils.stage import get_current_stage
from isaaclab.utils import Timer, configclass
from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR

Expand Down
3 changes: 1 addition & 2 deletions scripts/demos/quadrupeds.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,8 @@
import numpy as np
import torch

import isaacsim.core.utils.prims as prim_utils

import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.assets import Articulation

##
Expand Down
5 changes: 2 additions & 3 deletions scripts/environments/state_machine/lift_teddy_bear.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import argparse

from isaaclab import lazy
from isaaclab.app import AppLauncher

# add argparse arguments
Expand All @@ -34,9 +35,7 @@
simulation_app = app_launcher.app

# disable metrics assembler due to scene graph instancing
from isaacsim.core.utils.extensions import disable_extension

disable_extension("omni.usd.metrics.assembler.ui")
lazy.isaacsim.core.utils.extensions.disable_extension("omni.usd.metrics.assembler.ui")

"""Rest everything else."""

Expand Down
15 changes: 6 additions & 9 deletions scripts/tools/check_instanceable.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import contextlib
import os

from isaaclab import lazy
from isaaclab.app import AppLauncher

# add argparse arguments
Expand All @@ -64,12 +65,8 @@
"""Rest everything follows."""


import isaacsim.core.utils.prims as prim_utils
from isaacsim.core.api.simulation_context import SimulationContext
from isaacsim.core.cloner import GridCloner
from isaacsim.core.utils.carb import set_carb_setting
from isaacsim.core.utils.stage import get_current_stage

import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sim.utils.stage import get_current_stage
from isaaclab.utils import Timer
from isaaclab.utils.assets import check_file_path

Expand All @@ -80,7 +77,7 @@ def main():
if not check_file_path(args_cli.input):
raise ValueError(f"Invalid file path: {args_cli.input}")
# Load kit helper
sim = SimulationContext(
sim = lazy.isaacsim.core.api.simulation_context.SimulationContext(
stage_units_in_meters=1.0, physics_dt=0.01, rendering_dt=0.01, backend="torch", device="cuda:0"
)

Expand All @@ -96,10 +93,10 @@ def main():
sim.get_physics_context().set_gpu_total_aggregate_pairs_capacity(2**21)
# enable hydra scene-graph instancing
# this is needed to visualize the scene when fabric is enabled
set_carb_setting(sim._settings, "/persistent/omnihydra/useSceneGraphInstancing", True)
sim._settings.set_bool("/persistent/omnihydra/useSceneGraphInstancing", True)

# Create interface to clone the scene
cloner = GridCloner(spacing=args_cli.spacing, stage=stage)
cloner = lazy.isaacsim.core.cloner.GridCloner(spacing=args_cli.spacing, stage=stage)
cloner.define_base_env("/World/envs")
prim_utils.define_prim("/World/envs/env_0")
# Spawn things into stage
Expand Down
2 changes: 1 addition & 1 deletion scripts/tools/convert_mesh.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,9 @@
import os

import carb
import isaacsim.core.utils.stage as stage_utils
import omni.kit.app

import isaaclab.sim.utils.stage as stage_utils
from isaaclab.sim.converters import MeshConverter, MeshConverterCfg
from isaaclab.sim.schemas import schemas_cfg
from isaaclab.utils.assets import check_file_path
Expand Down
Loading
Loading