Unverified Commit 9cbf024e authored by Pascal Roth's avatar Pascal Roth Committed by GitHub

Replaces IsaacSim `stage_utils` with IsaacLab `stage_utils` (#3923)

# Description

Remove dependency on IsaacSim `stage_utils` for integration of new
simulation engines like `newton`.

## Type of change

- Dependency removal

## Checklist

- [ ] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [ ] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

---------
Signed-off-by: 's avatarPascal Roth <57946385+pascal-roth@users.noreply.github.com>
Signed-off-by: 's avatarooctipus <zhengyuz@nvidia.com>
Signed-off-by: 's avatarKelly Guo <kellyg@nvidia.com>
Signed-off-by: 's avatarKelly Guo <kellyguo123@hotmail.com>
Co-authored-by: 's avatargreptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: 's avatarooctipus <zhengyuz@nvidia.com>
Co-authored-by: 's avatarKelly Guo <kellyg@nvidia.com>
Co-authored-by: 's avatarKelly Guo <kellyguo123@hotmail.com>
parent 7e2aba2c
...@@ -75,8 +75,8 @@ For instance, to run a standalone script with verbose logging, you can use the f ...@@ -75,8 +75,8 @@ For instance, to run a standalone script with verbose logging, you can use the f
# Run the standalone script with info logging # Run the standalone script with info logging
./isaaclab.sh -p scripts/tutorials/00_sim/create_empty.py --headless --info ./isaaclab.sh -p scripts/tutorials/00_sim/create_empty.py --headless --info
For more fine-grained control, you can modify the logging channels through the ``omni.log`` module. For more fine-grained control, you can modify the logging channels through the ``logger`` module.
For more information, please refer to its `documentation <https://docs.omniverse.nvidia.com/kit/docs/carbonite/latest/docs/omni.log/Logging.html>`__. For more information, please refer to its `documentation <https://docs.python.org/3/library/logging.html>`__.
Observing long load times at the start of the simulation Observing long load times at the start of the simulation
......
[package] [package]
# Note: Semantic Versioning is used: https://semver.org/ # Note: Semantic Versioning is used: https://semver.org/
version = "0.48.4" version = "0.48.5"
# Description # Description
title = "Isaac Lab framework for Robot Learning" title = "Isaac Lab framework for Robot Learning"
......
Changelog Changelog
--------- ---------
0.48.5 (2025-11-14)
~~~~~~~~~~~~~~~~~~~
Changed
^^^^^^^
* Changed import from ``isaacsim.core.utils.stage`` to ``isaaclab.sim.utils.stage`` to reduce IsaacLab dependencies.
0.48.4 (2025-11-14) 0.48.4 (2025-11-14)
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
......
...@@ -18,9 +18,9 @@ import isaacsim.core.utils.prims as prim_utils ...@@ -18,9 +18,9 @@ import isaacsim.core.utils.prims as prim_utils
import omni.kit.app import omni.kit.app
import omni.timeline import omni.timeline
from isaacsim.core.simulation_manager import IsaacEvents, SimulationManager from isaacsim.core.simulation_manager import IsaacEvents, SimulationManager
from isaacsim.core.utils.stage import get_current_stage
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.utils.stage import get_current_stage
if TYPE_CHECKING: if TYPE_CHECKING:
from .asset_base_cfg import AssetBaseCfg from .asset_base_cfg import AssetBaseCfg
......
...@@ -9,7 +9,7 @@ import weakref ...@@ -9,7 +9,7 @@ import weakref
import omni.physics.tensors.impl.api as physx import omni.physics.tensors.impl.api as physx
import isaaclab.utils.math as math_utils import isaaclab.utils.math as math_utils
from isaaclab.sim.utils import get_current_stage_id from isaaclab.sim.utils.stage import get_current_stage_id
from isaaclab.utils.buffers import TimestampedBuffer from isaaclab.utils.buffers import TimestampedBuffer
......
...@@ -9,7 +9,7 @@ import weakref ...@@ -9,7 +9,7 @@ import weakref
import omni.physics.tensors.impl.api as physx import omni.physics.tensors.impl.api as physx
import isaaclab.utils.math as math_utils import isaaclab.utils.math as math_utils
from isaaclab.sim.utils import get_current_stage_id from isaaclab.sim.utils.stage import get_current_stage_id
from isaaclab.utils.buffers import TimestampedBuffer from isaaclab.utils.buffers import TimestampedBuffer
......
...@@ -227,7 +227,6 @@ class PinkIKController: ...@@ -227,7 +227,6 @@ class PinkIKController:
joint_angle_changes = velocity * dt joint_angle_changes = velocity * dt
except (AssertionError, Exception) as e: except (AssertionError, Exception) as e:
# Print warning and return the current joint positions as the target # Print warning and return the current joint positions as the target
# Not using omni.log since its not available in CI during docs build
if self.cfg.show_ik_warnings: if self.cfg.show_ik_warnings:
print( print(
"Warning: IK quadratic solver could not find a solution! Did not update the target joint" "Warning: IK quadratic solver could not find a solution! Did not update the target joint"
......
...@@ -25,7 +25,7 @@ from isaacsim.core.version import get_version ...@@ -25,7 +25,7 @@ from isaacsim.core.version import get_version
from isaaclab.managers import EventManager from isaaclab.managers import EventManager
from isaaclab.scene import InteractiveScene from isaaclab.scene import InteractiveScene
from isaaclab.sim import SimulationContext from isaaclab.sim import SimulationContext
from isaaclab.sim.utils import attach_stage_to_usd_context, use_stage from isaaclab.sim.utils.stage import attach_stage_to_usd_context, use_stage
from isaaclab.utils.noise import NoiseModel from isaaclab.utils.noise import NoiseModel
from isaaclab.utils.seed import configure_seed from isaaclab.utils.seed import configure_seed
from isaaclab.utils.timer import Timer from isaaclab.utils.timer import Timer
......
...@@ -27,7 +27,7 @@ from isaacsim.core.version import get_version ...@@ -27,7 +27,7 @@ from isaacsim.core.version import get_version
from isaaclab.managers import EventManager from isaaclab.managers import EventManager
from isaaclab.scene import InteractiveScene from isaaclab.scene import InteractiveScene
from isaaclab.sim import SimulationContext from isaaclab.sim import SimulationContext
from isaaclab.sim.utils import attach_stage_to_usd_context, use_stage from isaaclab.sim.utils.stage import attach_stage_to_usd_context, use_stage
from isaaclab.utils.noise import NoiseModel from isaaclab.utils.noise import NoiseModel
from isaaclab.utils.seed import configure_seed from isaaclab.utils.seed import configure_seed
from isaaclab.utils.timer import Timer from isaaclab.utils.timer import Timer
......
...@@ -17,7 +17,7 @@ from isaacsim.core.version import get_version ...@@ -17,7 +17,7 @@ from isaacsim.core.version import get_version
from isaaclab.managers import ActionManager, EventManager, ObservationManager, RecorderManager from isaaclab.managers import ActionManager, EventManager, ObservationManager, RecorderManager
from isaaclab.scene import InteractiveScene from isaaclab.scene import InteractiveScene
from isaaclab.sim import SimulationContext from isaaclab.sim import SimulationContext
from isaaclab.sim.utils import attach_stage_to_usd_context, use_stage from isaaclab.sim.utils.stage import attach_stage_to_usd_context, use_stage
from isaaclab.ui.widgets import ManagerLiveVisualizer from isaaclab.ui.widgets import ManagerLiveVisualizer
from isaaclab.utils.seed import configure_seed from isaaclab.utils.seed import configure_seed
from isaaclab.utils.timer import Timer from isaaclab.utils.timer import Timer
......
...@@ -22,7 +22,6 @@ from typing import TYPE_CHECKING, Literal ...@@ -22,7 +22,6 @@ from typing import TYPE_CHECKING, Literal
import carb import carb
import omni.physics.tensors.impl.api as physx import omni.physics.tensors.impl.api as physx
from isaacsim.core.utils.extensions import enable_extension from isaacsim.core.utils.extensions import enable_extension
from isaacsim.core.utils.stage import get_current_stage
from pxr import Gf, Sdf, UsdGeom, Vt from pxr import Gf, Sdf, UsdGeom, Vt
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
...@@ -30,6 +29,7 @@ import isaaclab.utils.math as math_utils ...@@ -30,6 +29,7 @@ import isaaclab.utils.math as math_utils
from isaaclab.actuators import ImplicitActuator from isaaclab.actuators import ImplicitActuator
from isaaclab.assets import Articulation, DeformableObject, RigidObject from isaaclab.assets import Articulation, DeformableObject, RigidObject
from isaaclab.managers import EventTermCfg, ManagerTermBase, SceneEntityCfg from isaaclab.managers import EventTermCfg, ManagerTermBase, SceneEntityCfg
from isaaclab.sim.utils.stage import get_current_stage
from isaaclab.terrains import TerrainImporter from isaaclab.terrains import TerrainImporter
from isaaclab.utils.version import compare_versions from isaaclab.utils.version import compare_versions
......
...@@ -15,9 +15,9 @@ import isaacsim ...@@ -15,9 +15,9 @@ import isaacsim
import omni.kit.app import omni.kit.app
import omni.kit.commands import omni.kit.commands
import omni.usd import omni.usd
from isaacsim.core.utils.stage import get_current_stage
from pxr import PhysxSchema, Sdf, Usd, UsdGeom, UsdPhysics from pxr import PhysxSchema, Sdf, Usd, UsdGeom, UsdPhysics
from isaaclab.sim.utils.stage import get_current_stage
from isaaclab.ui.widgets import ManagerLiveVisualizer from isaaclab.ui.widgets import ManagerLiveVisualizer
if TYPE_CHECKING: if TYPE_CHECKING:
......
...@@ -24,15 +24,13 @@ import numpy as np ...@@ -24,15 +24,13 @@ import numpy as np
import torch import torch
from dataclasses import MISSING from dataclasses import MISSING
import isaacsim.core.utils.stage as stage_utils
import omni.kit.commands import omni.kit.commands
import omni.physx.scripts.utils as physx_utils import omni.physx.scripts.utils as physx_utils
from isaacsim.core.utils.stage import get_current_stage
from pxr import Gf, PhysxSchema, Sdf, Usd, UsdGeom, UsdPhysics, Vt from pxr import Gf, PhysxSchema, Sdf, Usd, UsdGeom, UsdPhysics, Vt
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.spawners import SpawnerCfg from isaaclab.sim.spawners import SpawnerCfg
from isaaclab.sim.utils import attach_stage_to_usd_context from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.configclass import configclass from isaaclab.utils.configclass import configclass
from isaaclab.utils.math import convert_quat from isaaclab.utils.math import convert_quat
...@@ -151,7 +149,7 @@ class VisualizationMarkers: ...@@ -151,7 +149,7 @@ class VisualizationMarkers:
# get next free path for the prim # get next free path for the prim
prim_path = stage_utils.get_next_free_path(cfg.prim_path) prim_path = stage_utils.get_next_free_path(cfg.prim_path)
# create a new prim # create a new prim
self.stage = get_current_stage() self.stage = stage_utils.get_current_stage()
self._instancer_manager = UsdGeom.PointInstancer.Define(self.stage, prim_path) self._instancer_manager = UsdGeom.PointInstancer.Define(self.stage, prim_path)
# store inputs # store inputs
self.prim_path = prim_path self.prim_path = prim_path
...@@ -401,7 +399,7 @@ class VisualizationMarkers: ...@@ -401,7 +399,7 @@ class VisualizationMarkers:
if child_prim.IsA(UsdGeom.Gprim): if child_prim.IsA(UsdGeom.Gprim):
# early attach stage to usd context if stage is in memory # early attach stage to usd context if stage is in memory
# since stage in memory is not supported by the "ChangePropertyCommand" kit command # since stage in memory is not supported by the "ChangePropertyCommand" kit command
attach_stage_to_usd_context(attaching_early=True) stage_utils.attach_stage_to_usd_context(attaching_early=True)
# invisible to secondary rays such as depth images # invisible to secondary rays such as depth images
omni.kit.commands.execute( omni.kit.commands.execute(
......
...@@ -11,7 +11,6 @@ from typing import Any ...@@ -11,7 +11,6 @@ from typing import Any
import carb import carb
from isaacsim.core.cloner import GridCloner from isaacsim.core.cloner import GridCloner
from isaacsim.core.prims import XFormPrim from isaacsim.core.prims import XFormPrim
from isaacsim.core.utils.stage import get_current_stage
from isaacsim.core.version import get_version from isaacsim.core.version import get_version
from pxr import PhysxSchema from pxr import PhysxSchema
...@@ -31,7 +30,7 @@ from isaaclab.assets import ( ...@@ -31,7 +30,7 @@ from isaaclab.assets import (
) )
from isaaclab.sensors import ContactSensorCfg, FrameTransformerCfg, SensorBase, SensorBaseCfg from isaaclab.sensors import ContactSensorCfg, FrameTransformerCfg, SensorBase, SensorBaseCfg
from isaaclab.sim import SimulationContext from isaaclab.sim import SimulationContext
from isaaclab.sim.utils import get_current_stage_id from isaaclab.sim.utils.stage import get_current_stage, get_current_stage_id
from isaaclab.terrains import TerrainImporter, TerrainImporterCfg from isaaclab.terrains import TerrainImporter, TerrainImporterCfg
from .interactive_scene_cfg import InteractiveSceneCfg from .interactive_scene_cfg import InteractiveSceneCfg
......
...@@ -14,7 +14,6 @@ from collections.abc import Sequence ...@@ -14,7 +14,6 @@ from collections.abc import Sequence
from typing import TYPE_CHECKING, Any, Literal from typing import TYPE_CHECKING, Any, Literal
import carb import carb
import isaacsim.core.utils.stage as stage_utils
import omni.kit.commands import omni.kit.commands
import omni.usd import omni.usd
from isaacsim.core.prims import XFormPrim from isaacsim.core.prims import XFormPrim
...@@ -23,6 +22,7 @@ from pxr import Sdf, UsdGeom ...@@ -23,6 +22,7 @@ from pxr import Sdf, UsdGeom
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
import isaaclab.utils.sensors as sensor_utils import isaaclab.utils.sensors as sensor_utils
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils import to_camel_case from isaaclab.utils import to_camel_case
from isaaclab.utils.array import convert_to_torch from isaaclab.utils.array import convert_to_torch
from isaaclab.utils.math import ( from isaaclab.utils.math import (
......
...@@ -9,13 +9,13 @@ import torch ...@@ -9,13 +9,13 @@ import torch
from collections.abc import Sequence from collections.abc import Sequence
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import isaacsim.core.utils.stage as stage_utils
from isaacsim.core.simulation_manager import SimulationManager from isaacsim.core.simulation_manager import SimulationManager
from pxr import UsdPhysics from pxr import UsdPhysics
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
import isaaclab.utils.math as math_utils import isaaclab.utils.math as math_utils
from isaaclab.markers import VisualizationMarkers from isaaclab.markers import VisualizationMarkers
from isaaclab.sim.utils import stage as stage_utils
from ..sensor_base import SensorBase from ..sensor_base import SensorBase
from .imu_data import ImuData from .imu_data import ImuData
......
...@@ -9,12 +9,12 @@ import torch ...@@ -9,12 +9,12 @@ import torch
from collections.abc import Sequence from collections.abc import Sequence
from typing import TYPE_CHECKING, ClassVar, Literal from typing import TYPE_CHECKING, ClassVar, Literal
import isaacsim.core.utils.stage as stage_utils
import omni.physics.tensors.impl.api as physx import omni.physics.tensors.impl.api as physx
from isaacsim.core.prims import XFormPrim from isaacsim.core.prims import XFormPrim
import isaaclab.utils.math as math_utils import isaaclab.utils.math as math_utils
from isaaclab.sensors.camera import CameraData from isaaclab.sensors.camera import CameraData
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.warp import raycast_mesh from isaaclab.utils.warp import raycast_mesh
from .ray_caster import RayCaster from .ray_caster import RayCaster
......
...@@ -23,9 +23,9 @@ from typing import TYPE_CHECKING, Any ...@@ -23,9 +23,9 @@ from typing import TYPE_CHECKING, Any
import omni.kit.app import omni.kit.app
import omni.timeline import omni.timeline
from isaacsim.core.simulation_manager import IsaacEvents, SimulationManager from isaacsim.core.simulation_manager import IsaacEvents, SimulationManager
from isaacsim.core.utils.stage import get_current_stage
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.utils.stage import get_current_stage
if TYPE_CHECKING: if TYPE_CHECKING:
from .sensor_base_cfg import SensorBaseCfg from .sensor_base_cfg import SensorBaseCfg
......
...@@ -10,10 +10,11 @@ import logging ...@@ -10,10 +10,11 @@ import logging
import math import math
import omni.physx.scripts.utils as physx_utils import omni.physx.scripts.utils as physx_utils
from isaacsim.core.utils.stage import get_current_stage
from omni.physx.scripts import deformableUtils as deformable_utils from omni.physx.scripts import deformableUtils as deformable_utils
from pxr import PhysxSchema, Usd, UsdPhysics from pxr import PhysxSchema, Usd, UsdPhysics
from isaaclab.sim.utils.stage import get_current_stage
from ..utils import ( from ..utils import (
apply_nested, apply_nested,
find_global_fixed_joint_prim, find_global_fixed_joint_prim,
......
...@@ -24,7 +24,6 @@ from typing import Any ...@@ -24,7 +24,6 @@ from typing import Any
import carb import carb
import flatdict import flatdict
import isaacsim.core.utils.stage as stage_utils
import omni.physx import omni.physx
import omni.usd import omni.usd
from isaacsim.core.api.simulation_context import SimulationContext as _SimulationContext from isaacsim.core.api.simulation_context import SimulationContext as _SimulationContext
...@@ -33,7 +32,7 @@ from isaacsim.core.utils.viewports import set_camera_view ...@@ -33,7 +32,7 @@ from isaacsim.core.utils.viewports import set_camera_view
from isaacsim.core.version import get_version from isaacsim.core.version import get_version
from pxr import Gf, PhysxSchema, Sdf, Usd, UsdPhysics from pxr import Gf, PhysxSchema, Sdf, Usd, UsdPhysics
from isaaclab.sim.utils import create_new_stage_in_memory, use_stage from isaaclab.sim.utils import stage as stage_utils
from .simulation_cfg import SimulationCfg from .simulation_cfg import SimulationCfg
from .spawners import DomeLightCfg, GroundPlaneCfg from .spawners import DomeLightCfg, GroundPlaneCfg
...@@ -138,7 +137,7 @@ class SimulationContext(_SimulationContext): ...@@ -138,7 +137,7 @@ class SimulationContext(_SimulationContext):
# create stage in memory if requested # create stage in memory if requested
if self.cfg.create_stage_in_memory: if self.cfg.create_stage_in_memory:
self._initial_stage = create_new_stage_in_memory() self._initial_stage = stage_utils.create_new_stage_in_memory()
else: else:
self._initial_stage = omni.usd.get_context().get_stage() self._initial_stage = omni.usd.get_context().get_stage()
...@@ -629,7 +628,7 @@ class SimulationContext(_SimulationContext): ...@@ -629,7 +628,7 @@ class SimulationContext(_SimulationContext):
def _init_stage(self, *args, **kwargs) -> Usd.Stage: def _init_stage(self, *args, **kwargs) -> Usd.Stage:
_ = super()._init_stage(*args, **kwargs) _ = super()._init_stage(*args, **kwargs)
with use_stage(self.get_initial_stage()): with stage_utils.use_stage(self.get_initial_stage()):
# a stage update here is needed for the case when physics_dt != rendering_dt, otherwise the app crashes # a stage update here is needed for the case when physics_dt != rendering_dt, otherwise the app crashes
# when in headless mode # when in headless mode
self.set_setting("/app/player/playSimulations", False) self.set_setting("/app/player/playSimulations", False)
......
...@@ -18,16 +18,9 @@ try: ...@@ -18,16 +18,9 @@ try:
except ModuleNotFoundError: except ModuleNotFoundError:
from pxr import Semantics from pxr import Semantics
from isaacsim.core.utils.stage import get_current_stage
from isaaclab.sim import converters, schemas from isaaclab.sim import converters, schemas
from isaaclab.sim.utils import ( from isaaclab.sim.utils import bind_physics_material, bind_visual_material, clone, select_usd_variants
bind_physics_material, from isaaclab.sim.utils.stage import get_current_stage, is_current_stage_in_memory
bind_visual_material,
clone,
is_current_stage_in_memory,
select_usd_variants,
)
from isaaclab.utils.assets import check_usd_path_with_timeout from isaaclab.utils.assets import check_usd_path_with_timeout
if TYPE_CHECKING: if TYPE_CHECKING:
......
...@@ -8,10 +8,10 @@ from __future__ import annotations ...@@ -8,10 +8,10 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
from isaacsim.core.utils.stage import get_current_stage
from pxr import PhysxSchema, Usd, UsdPhysics, UsdShade from pxr import PhysxSchema, Usd, UsdPhysics, UsdShade
from isaaclab.sim.utils import clone, safe_set_attribute_on_usd_schema from isaaclab.sim.utils import clone, safe_set_attribute_on_usd_schema
from isaaclab.sim.utils.stage import get_current_stage
if TYPE_CHECKING: if TYPE_CHECKING:
from . import physics_materials_cfg from . import physics_materials_cfg
......
...@@ -12,7 +12,8 @@ import isaacsim.core.utils.prims as prim_utils ...@@ -12,7 +12,8 @@ import isaacsim.core.utils.prims as prim_utils
import omni.kit.commands import omni.kit.commands
from pxr import Sdf, Usd from pxr import Sdf, Usd
from isaaclab.sim.utils import attach_stage_to_usd_context, clone from isaaclab.sim.utils import clone
from isaaclab.sim.utils.stage import attach_stage_to_usd_context
from isaaclab.utils import to_camel_case from isaaclab.utils import to_camel_case
if TYPE_CHECKING: if TYPE_CHECKING:
......
...@@ -11,12 +11,11 @@ from typing import TYPE_CHECKING ...@@ -11,12 +11,11 @@ from typing import TYPE_CHECKING
import carb import carb
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
from isaacsim.core.utils.stage import get_current_stage
from pxr import Sdf, Usd from pxr import Sdf, Usd
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.spawners.from_files import UsdFileCfg from isaaclab.sim.spawners.from_files import UsdFileCfg
from isaaclab.sim.utils import stage as stage_utils
if TYPE_CHECKING: if TYPE_CHECKING:
from . import wrappers_cfg from . import wrappers_cfg
...@@ -48,7 +47,7 @@ def spawn_multi_asset( ...@@ -48,7 +47,7 @@ def spawn_multi_asset(
The created prim at the first prim path. The created prim at the first prim path.
""" """
# get stage handle # get stage handle
stage = get_current_stage() stage = stage_utils.get_current_stage()
# resolve: {SPAWN_NS}/AssetName # resolve: {SPAWN_NS}/AssetName
# note: this assumes that the spawn namespace already exists in the stage # note: this assumes that the spawn namespace already exists in the stage
......
This diff is collapsed.
...@@ -7,24 +7,19 @@ ...@@ -7,24 +7,19 @@
from __future__ import annotations from __future__ import annotations
import contextlib
import functools import functools
import inspect import inspect
import logging import logging
import re import re
import time import time
from collections.abc import Callable, Generator from collections.abc import Callable
from typing import TYPE_CHECKING, Any from typing import TYPE_CHECKING, Any
import carb
import isaacsim.core.utils.stage as stage_utils
import omni import omni
import omni.kit.commands import omni.kit.commands
from isaacsim.core.cloner import Cloner from isaacsim.core.cloner import Cloner
from isaacsim.core.utils.carb import get_carb_setting
from isaacsim.core.utils.stage import get_current_stage
from isaacsim.core.version import get_version from isaacsim.core.version import get_version
from pxr import PhysxSchema, Sdf, Usd, UsdGeom, UsdPhysics, UsdShade, UsdUtils from pxr import PhysxSchema, Sdf, Usd, UsdGeom, UsdPhysics, UsdShade
# from Isaac Sim 4.2 onwards, pxr.Semantics is deprecated # from Isaac Sim 4.2 onwards, pxr.Semantics is deprecated
try: try:
...@@ -35,8 +30,10 @@ except ModuleNotFoundError: ...@@ -35,8 +30,10 @@ except ModuleNotFoundError:
from isaaclab.sim import schemas from isaaclab.sim import schemas
from isaaclab.utils.string import to_camel_case from isaaclab.utils.string import to_camel_case
from .stage import attach_stage_to_usd_context, get_current_stage
if TYPE_CHECKING: if TYPE_CHECKING:
from .spawners.spawner_cfg import SpawnerCfg from isaaclab.sim.spawners.spawner_cfg import SpawnerCfg
# import logger # import logger
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -1038,157 +1035,6 @@ def select_usd_variants(prim_path: str, variants: object | dict[str, str], stage ...@@ -1038,157 +1035,6 @@ def select_usd_variants(prim_path: str, variants: object | dict[str, str], stage
) )
"""
Stage management.
"""
def attach_stage_to_usd_context(attaching_early: bool = False):
"""Attaches the current USD stage in memory to the USD context.
This function should be called during or after scene is created and before stage is simulated or rendered.
Note:
If the stage is not in memory or rendering is not enabled, this function will return without attaching.
Args:
attaching_early: Whether to attach the stage to the usd context before stage is created. Defaults to False.
"""
from isaacsim.core.simulation_manager import SimulationManager
from isaaclab.sim.simulation_context import SimulationContext
# if Isaac Sim version is less than 5.0, stage in memory is not supported
isaac_sim_version = float(".".join(get_version()[2]))
if isaac_sim_version < 5:
return
# if stage is not in memory, we can return early
if not is_current_stage_in_memory():
return
# attach stage to physx
stage_id = get_current_stage_id()
physx_sim_interface = omni.physx.get_physx_simulation_interface()
physx_sim_interface.attach_stage(stage_id)
# this carb flag is equivalent to if rendering is enabled
carb_setting = carb.settings.get_settings()
is_rendering_enabled = get_carb_setting(carb_setting, "/physics/fabricUpdateTransformations")
# if rendering is not enabled, we don't need to attach it
if not is_rendering_enabled:
return
# early attach warning msg
if attaching_early:
logger.warning(
"Attaching stage in memory to USD context early to support an operation which doesn't support stage in"
" memory."
)
# skip this callback to avoid wiping the stage after attachment
SimulationContext.instance().skip_next_stage_open_callback()
# disable stage open callback to avoid clearing callbacks
SimulationManager.enable_stage_open_callback(False)
# enable physics fabric
SimulationContext.instance()._physics_context.enable_fabric(True)
# attach stage to usd context
omni.usd.get_context().attach_stage_with_callback(stage_id)
# attach stage to physx
physx_sim_interface = omni.physx.get_physx_simulation_interface()
physx_sim_interface.attach_stage(stage_id)
# re-enable stage open callback
SimulationManager.enable_stage_open_callback(True)
def is_current_stage_in_memory() -> bool:
"""Checks if the current stage is in memory.
This function compares the stage id of the current USD stage with the stage id of the USD context stage.
Returns:
Whether the current stage is in memory.
"""
# grab current stage id
stage_id = get_current_stage_id()
# grab context stage id
context_stage = omni.usd.get_context().get_stage()
with use_stage(context_stage):
context_stage_id = get_current_stage_id()
# check if stage ids are the same
return stage_id != context_stage_id
@contextlib.contextmanager
def use_stage(stage: Usd.Stage) -> Generator[None, None, None]:
"""Context manager that sets a thread-local stage, if supported.
In Isaac Sim < 5.0, this is a no-op to maintain compatibility.
Args:
stage: The stage to set temporarily.
Yields:
None
"""
isaac_sim_version = float(".".join(get_version()[2]))
if isaac_sim_version < 5:
logger.warning("[Compat] Isaac Sim < 5.0 does not support thread-local stage contexts. Skipping use_stage().")
yield # no-op
else:
with stage_utils.use_stage(stage):
yield
def create_new_stage_in_memory() -> Usd.Stage:
"""Creates a new stage in memory, if supported.
Returns:
The new stage in memory.
"""
isaac_sim_version = float(".".join(get_version()[2]))
if isaac_sim_version < 5:
logger.warning(
"[Compat] Isaac Sim < 5.0 does not support creating a new stage in memory. Falling back to creating a new"
" stage attached to USD context."
)
return stage_utils.create_new_stage()
else:
return stage_utils.create_new_stage_in_memory()
def get_current_stage_id() -> int:
"""Gets the current open stage id.
This function is a reimplementation of :meth:`isaacsim.core.utils.stage.get_current_stage_id` for
backwards compatibility to Isaac Sim < 5.0.
Returns:
The current open stage id.
"""
stage = get_current_stage()
stage_cache = UsdUtils.StageCache.Get()
stage_id = stage_cache.GetId(stage).ToLongInt()
if stage_id < 0:
stage_id = stage_cache.Insert(stage).ToLongInt()
return stage_id
"""
Logger.
"""
# --- Colored formatter --- # --- Colored formatter ---
class ColoredFormatter(logging.Formatter): class ColoredFormatter(logging.Formatter):
COLORS = { COLORS = {
......
...@@ -15,13 +15,13 @@ simulation_app = AppLauncher(headless=True).app ...@@ -15,13 +15,13 @@ simulation_app = AppLauncher(headless=True).app
import torch import torch
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.cloner import GridCloner from isaacsim.core.cloner import GridCloner
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.assets import Articulation from isaaclab.assets import Articulation
from isaaclab.controllers import DifferentialIKController, DifferentialIKControllerCfg from isaaclab.controllers import DifferentialIKController, DifferentialIKControllerCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.math import ( # isort:skip from isaaclab.utils.math import ( # isort:skip
compute_pose_error, compute_pose_error,
......
...@@ -15,7 +15,6 @@ simulation_app = AppLauncher(headless=True).app ...@@ -15,7 +15,6 @@ simulation_app = AppLauncher(headless=True).app
import torch import torch
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.cloner import GridCloner from isaacsim.core.cloner import GridCloner
...@@ -25,6 +24,7 @@ from isaaclab.controllers import OperationalSpaceController, OperationalSpaceCon ...@@ -25,6 +24,7 @@ from isaaclab.controllers import OperationalSpaceController, OperationalSpaceCon
from isaaclab.markers import VisualizationMarkers from isaaclab.markers import VisualizationMarkers
from isaaclab.markers.config import FRAME_MARKER_CFG from isaaclab.markers.config import FRAME_MARKER_CFG
from isaaclab.sensors import ContactSensor, ContactSensorCfg from isaaclab.sensors import ContactSensor, ContactSensorCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.math import ( from isaaclab.utils.math import (
apply_delta_pose, apply_delta_pose,
combine_frame_transforms, combine_frame_transforms,
......
...@@ -34,7 +34,6 @@ import logging ...@@ -34,7 +34,6 @@ import logging
import torch import torch
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import omni.kit.commands import omni.kit.commands
import omni.physx import omni.physx
from isaacsim.core.api.world import World from isaacsim.core.api.world import World
...@@ -45,6 +44,7 @@ from pxr import PhysxSchema, UsdPhysics ...@@ -45,6 +44,7 @@ from pxr import PhysxSchema, UsdPhysics
# import logger # import logger
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
import isaaclab.sim.utils.nucleus as nucleus_utils import isaaclab.sim.utils.nucleus as nucleus_utils
import isaaclab.sim.utils.stage as stage_utils
# check nucleus connection # check nucleus connection
if nucleus_utils.get_assets_root_path() is None: if nucleus_utils.get_assets_root_path() is None:
......
...@@ -14,13 +14,13 @@ simulation_app = AppLauncher(headless=True).app ...@@ -14,13 +14,13 @@ simulation_app = AppLauncher(headless=True).app
import torch import torch
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.markers import VisualizationMarkers, VisualizationMarkersCfg from isaaclab.markers import VisualizationMarkers, VisualizationMarkersCfg
from isaaclab.markers.config import FRAME_MARKER_CFG, POSITION_GOAL_MARKER_CFG from isaaclab.markers.config import FRAME_MARKER_CFG, POSITION_GOAL_MARKER_CFG
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.math import random_orientation from isaaclab.utils.math import random_orientation
from isaaclab.utils.timer import Timer from isaaclab.utils.timer import Timer
......
...@@ -23,7 +23,6 @@ import scipy.spatial.transform as tf ...@@ -23,7 +23,6 @@ import scipy.spatial.transform as tf
import torch import torch
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import omni.replicator.core as rep import omni.replicator.core as rep
import pytest import pytest
from isaacsim.core.prims import SingleGeometryPrim, SingleRigidPrim from isaacsim.core.prims import SingleGeometryPrim, SingleRigidPrim
...@@ -31,6 +30,7 @@ from pxr import Gf, Usd, UsdGeom ...@@ -31,6 +30,7 @@ from pxr import Gf, Usd, UsdGeom
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sensors.camera import Camera, CameraCfg from isaaclab.sensors.camera import Camera, CameraCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils import convert_dict_to_backend from isaaclab.utils import convert_dict_to_backend
from isaaclab.utils.math import convert_quat from isaaclab.utils.math import convert_quat
from isaaclab.utils.timer import Timer from isaaclab.utils.timer import Timer
......
...@@ -16,7 +16,6 @@ import math ...@@ -16,7 +16,6 @@ import math
import scipy.spatial.transform as tf import scipy.spatial.transform as tf
import torch import torch
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
...@@ -24,6 +23,7 @@ import isaaclab.utils.math as math_utils ...@@ -24,6 +23,7 @@ import isaaclab.utils.math as math_utils
from isaaclab.assets import RigidObjectCfg from isaaclab.assets import RigidObjectCfg
from isaaclab.scene import InteractiveScene, InteractiveSceneCfg from isaaclab.scene import InteractiveScene, InteractiveSceneCfg
from isaaclab.sensors import FrameTransformerCfg, OffsetCfg from isaaclab.sensors import FrameTransformerCfg, OffsetCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.terrains import TerrainImporterCfg from isaaclab.terrains import TerrainImporterCfg
from isaaclab.utils import configclass from isaaclab.utils import configclass
......
...@@ -17,7 +17,6 @@ simulation_app = app_launcher.app ...@@ -17,7 +17,6 @@ simulation_app = app_launcher.app
import pathlib import pathlib
import torch import torch
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
...@@ -27,6 +26,7 @@ from isaaclab.assets import ArticulationCfg, RigidObjectCfg ...@@ -27,6 +26,7 @@ from isaaclab.assets import ArticulationCfg, RigidObjectCfg
from isaaclab.markers.config import GREEN_ARROW_X_MARKER_CFG, RED_ARROW_X_MARKER_CFG from isaaclab.markers.config import GREEN_ARROW_X_MARKER_CFG, RED_ARROW_X_MARKER_CFG
from isaaclab.scene import InteractiveScene, InteractiveSceneCfg from isaaclab.scene import InteractiveScene, InteractiveSceneCfg
from isaaclab.sensors.imu import ImuCfg from isaaclab.sensors.imu import ImuCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.terrains import TerrainImporterCfg from isaaclab.terrains import TerrainImporterCfg
from isaaclab.utils import configclass from isaaclab.utils import configclass
......
...@@ -21,7 +21,6 @@ import random ...@@ -21,7 +21,6 @@ import random
import torch import torch
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import omni.replicator.core as rep import omni.replicator.core as rep
import pytest import pytest
from flaky import flaky from flaky import flaky
...@@ -30,6 +29,7 @@ from pxr import Gf, UsdGeom ...@@ -30,6 +29,7 @@ from pxr import Gf, UsdGeom
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sensors.camera import TiledCamera, TiledCameraCfg from isaaclab.sensors.camera import TiledCamera, TiledCameraCfg
from isaaclab.sim.utils import stage as stage_utils
@pytest.fixture() @pytest.fixture()
......
...@@ -21,7 +21,6 @@ import os ...@@ -21,7 +21,6 @@ import os
import torch import torch
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import omni.replicator.core as rep import omni.replicator.core as rep
import pytest import pytest
from pxr import Gf from pxr import Gf
...@@ -30,6 +29,7 @@ import isaaclab.sim as sim_utils ...@@ -30,6 +29,7 @@ import isaaclab.sim as sim_utils
from isaaclab.sensors.camera import Camera, CameraCfg from isaaclab.sensors.camera import Camera, CameraCfg
from isaaclab.sensors.ray_caster import RayCasterCamera, RayCasterCameraCfg, patterns from isaaclab.sensors.ray_caster import RayCasterCamera, RayCasterCameraCfg, patterns
from isaaclab.sim import PinholeCameraCfg from isaaclab.sim import PinholeCameraCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.terrains.trimesh.utils import make_plane from isaaclab.terrains.trimesh.utils import make_plane
from isaaclab.terrains.utils import create_prim_from_mesh from isaaclab.terrains.utils import create_prim_from_mesh
from isaaclab.utils import convert_dict_to_backend from isaaclab.utils import convert_dict_to_backend
......
...@@ -19,11 +19,11 @@ from collections.abc import Sequence ...@@ -19,11 +19,11 @@ from collections.abc import Sequence
from dataclasses import dataclass from dataclasses import dataclass
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sensors import SensorBase, SensorBaseCfg from isaaclab.sensors import SensorBase, SensorBaseCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils import configclass from isaaclab.utils import configclass
......
...@@ -21,12 +21,13 @@ import random ...@@ -21,12 +21,13 @@ import random
import torch import torch
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import omni.replicator.core as rep import omni.replicator.core as rep
import pytest import pytest
from isaacsim.core.prims import SingleGeometryPrim, SingleRigidPrim from isaacsim.core.prims import SingleGeometryPrim, SingleRigidPrim
from pxr import Gf, UsdGeom from pxr import Gf, UsdGeom
from isaaclab.sim.utils import stage as stage_utils
# from Isaac Sim 4.2 onwards, pxr.Semantics is deprecated # from Isaac Sim 4.2 onwards, pxr.Semantics is deprecated
try: try:
import Semantics import Semantics
......
...@@ -18,7 +18,6 @@ import random ...@@ -18,7 +18,6 @@ import random
import tempfile import tempfile
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import omni import omni
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
...@@ -26,6 +25,7 @@ from pxr import UsdGeom, UsdPhysics ...@@ -26,6 +25,7 @@ from pxr import UsdGeom, UsdPhysics
from isaaclab.sim.converters import MeshConverter, MeshConverterCfg from isaaclab.sim.converters import MeshConverter, MeshConverterCfg
from isaaclab.sim.schemas import schemas_cfg from isaaclab.sim.schemas import schemas_cfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR, retrieve_file_path from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR, retrieve_file_path
......
...@@ -15,12 +15,12 @@ simulation_app = AppLauncher(headless=True).app ...@@ -15,12 +15,12 @@ simulation_app = AppLauncher(headless=True).app
import os import os
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
from isaacsim.core.utils.extensions import enable_extension, get_extension_path_from_name from isaacsim.core.utils.extensions import enable_extension, get_extension_path_from_name
from isaaclab.sim.converters import MjcfConverter, MjcfConverterCfg from isaaclab.sim.converters import MjcfConverter, MjcfConverterCfg
from isaaclab.sim.utils import stage as stage_utils
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
......
...@@ -15,13 +15,13 @@ simulation_app = AppLauncher(headless=True).app ...@@ -15,13 +15,13 @@ simulation_app = AppLauncher(headless=True).app
import math import math
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
from pxr import UsdPhysics from pxr import UsdPhysics
import isaaclab.sim.schemas as schemas import isaaclab.sim.schemas as schemas
from isaaclab.sim.utils import find_global_fixed_joint_prim from isaaclab.sim.utils import find_global_fixed_joint_prim
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR
from isaaclab.utils.string import to_camel_case from isaaclab.utils.string import to_camel_case
......
...@@ -13,12 +13,12 @@ simulation_app = AppLauncher(headless=True).app ...@@ -13,12 +13,12 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows.""" """Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
from isaacsim.core.utils.extensions import enable_extension, get_extension_path_from_name from isaacsim.core.utils.extensions import enable_extension, get_extension_path_from_name
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR
......
...@@ -13,12 +13,12 @@ simulation_app = AppLauncher(headless=True).app ...@@ -13,12 +13,12 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows.""" """Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
from pxr import UsdLux from pxr import UsdLux
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.string import to_camel_case from isaaclab.utils.string import to_camel_case
......
...@@ -13,12 +13,12 @@ simulation_app = AppLauncher(headless=True).app ...@@ -13,12 +13,12 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows.""" """Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
from pxr import UsdPhysics, UsdShade from pxr import UsdPhysics, UsdShade
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.assets import NVIDIA_NUCLEUS_DIR from isaaclab.utils.assets import NVIDIA_NUCLEUS_DIR
......
...@@ -13,11 +13,11 @@ simulation_app = AppLauncher(headless=True).app ...@@ -13,11 +13,11 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows.""" """Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
@pytest.fixture @pytest.fixture
......
...@@ -13,12 +13,12 @@ simulation_app = AppLauncher(headless=True).app ...@@ -13,12 +13,12 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows.""" """Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.spawners.sensors.sensors import CUSTOM_FISHEYE_CAMERA_ATTRIBUTES, CUSTOM_PINHOLE_CAMERA_ATTRIBUTES from isaaclab.sim.spawners.sensors.sensors import CUSTOM_FISHEYE_CAMERA_ATTRIBUTES, CUSTOM_PINHOLE_CAMERA_ATTRIBUTES
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.string import to_camel_case from isaaclab.utils.string import to_camel_case
......
...@@ -13,11 +13,11 @@ simulation_app = AppLauncher(headless=True).app ...@@ -13,11 +13,11 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows.""" """Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
@pytest.fixture @pytest.fixture
......
...@@ -13,11 +13,11 @@ simulation_app = AppLauncher(headless=True).app ...@@ -13,11 +13,11 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows.""" """Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR
......
...@@ -13,7 +13,6 @@ simulation_app = AppLauncher(headless=True, enable_cameras=True).app ...@@ -13,7 +13,6 @@ simulation_app = AppLauncher(headless=True, enable_cameras=True).app
"""Rest everything follows.""" """Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import omni import omni
import omni.physx import omni.physx
import omni.usd import omni.usd
...@@ -24,6 +23,7 @@ from isaacsim.core.version import get_version ...@@ -24,6 +23,7 @@ from isaacsim.core.version import get_version
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.sim.simulation_context import SimulationCfg, SimulationContext from isaaclab.sim.simulation_context import SimulationCfg, SimulationContext
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR
...@@ -59,7 +59,7 @@ def test_stage_in_memory_with_shapes(sim): ...@@ -59,7 +59,7 @@ def test_stage_in_memory_with_shapes(sim):
# grab stage in memory and set as current stage via the with statement # grab stage in memory and set as current stage via the with statement
stage_in_memory = sim.get_initial_stage() stage_in_memory = sim.get_initial_stage()
with sim_utils.use_stage(stage_in_memory): with stage_utils.use_stage(stage_in_memory):
# create cloned cone stage # create cloned cone stage
for i in range(num_clones): for i in range(num_clones):
prim_utils.create_prim(f"/World/env_{i}", "Xform", translation=(i, i, 0)) prim_utils.create_prim(f"/World/env_{i}", "Xform", translation=(i, i, 0))
...@@ -88,7 +88,7 @@ def test_stage_in_memory_with_shapes(sim): ...@@ -88,7 +88,7 @@ def test_stage_in_memory_with_shapes(sim):
cfg.func(prim_path_regex, cfg) cfg.func(prim_path_regex, cfg)
# verify stage is in memory # verify stage is in memory
assert sim_utils.is_current_stage_in_memory() assert stage_utils.is_current_stage_in_memory()
# verify prims exist in stage in memory # verify prims exist in stage in memory
prims = prim_utils.find_matching_prim_paths(prim_path_regex) prims = prim_utils.find_matching_prim_paths(prim_path_regex)
...@@ -96,7 +96,7 @@ def test_stage_in_memory_with_shapes(sim): ...@@ -96,7 +96,7 @@ def test_stage_in_memory_with_shapes(sim):
# verify prims do not exist in context stage # verify prims do not exist in context stage
context_stage = omni.usd.get_context().get_stage() context_stage = omni.usd.get_context().get_stage()
with sim_utils.use_stage(context_stage): with stage_utils.use_stage(context_stage):
prims = prim_utils.find_matching_prim_paths(prim_path_regex) prims = prim_utils.find_matching_prim_paths(prim_path_regex)
assert len(prims) != num_clones assert len(prims) != num_clones
...@@ -104,7 +104,7 @@ def test_stage_in_memory_with_shapes(sim): ...@@ -104,7 +104,7 @@ def test_stage_in_memory_with_shapes(sim):
sim_utils.attach_stage_to_usd_context() sim_utils.attach_stage_to_usd_context()
# verify stage is no longer in memory # verify stage is no longer in memory
assert not sim_utils.is_current_stage_in_memory() assert not stage_utils.is_current_stage_in_memory()
# verify prims now exist in context stage # verify prims now exist in context stage
prims = prim_utils.find_matching_prim_paths(prim_path_regex) prims = prim_utils.find_matching_prim_paths(prim_path_regex)
...@@ -128,7 +128,7 @@ def test_stage_in_memory_with_usds(sim): ...@@ -128,7 +128,7 @@ def test_stage_in_memory_with_usds(sim):
# grab stage in memory and set as current stage via the with statement # grab stage in memory and set as current stage via the with statement
stage_in_memory = sim.get_initial_stage() stage_in_memory = sim.get_initial_stage()
with sim_utils.use_stage(stage_in_memory): with stage_utils.use_stage(stage_in_memory):
# create cloned robot stage # create cloned robot stage
for i in range(num_clones): for i in range(num_clones):
prim_utils.create_prim(f"/World/env_{i}", "Xform", translation=(i, i, 0)) prim_utils.create_prim(f"/World/env_{i}", "Xform", translation=(i, i, 0))
...@@ -154,7 +154,7 @@ def test_stage_in_memory_with_usds(sim): ...@@ -154,7 +154,7 @@ def test_stage_in_memory_with_usds(sim):
cfg.func(prim_path_regex, cfg) cfg.func(prim_path_regex, cfg)
# verify stage is in memory # verify stage is in memory
assert sim_utils.is_current_stage_in_memory() assert stage_utils.is_current_stage_in_memory()
# verify prims exist in stage in memory # verify prims exist in stage in memory
prims = prim_utils.find_matching_prim_paths(prim_path_regex) prims = prim_utils.find_matching_prim_paths(prim_path_regex)
...@@ -162,7 +162,7 @@ def test_stage_in_memory_with_usds(sim): ...@@ -162,7 +162,7 @@ def test_stage_in_memory_with_usds(sim):
# verify prims do not exist in context stage # verify prims do not exist in context stage
context_stage = omni.usd.get_context().get_stage() context_stage = omni.usd.get_context().get_stage()
with sim_utils.use_stage(context_stage): with stage_utils.use_stage(context_stage):
prims = prim_utils.find_matching_prim_paths(prim_path_regex) prims = prim_utils.find_matching_prim_paths(prim_path_regex)
assert len(prims) != num_clones assert len(prims) != num_clones
...@@ -170,7 +170,7 @@ def test_stage_in_memory_with_usds(sim): ...@@ -170,7 +170,7 @@ def test_stage_in_memory_with_usds(sim):
sim_utils.attach_stage_to_usd_context() sim_utils.attach_stage_to_usd_context()
# verify stage is no longer in memory # verify stage is no longer in memory
assert not sim_utils.is_current_stage_in_memory() assert not stage_utils.is_current_stage_in_memory()
# verify prims now exist in context stage # verify prims now exist in context stage
prims = prim_utils.find_matching_prim_paths(prim_path_regex) prims = prim_utils.find_matching_prim_paths(prim_path_regex)
...@@ -191,7 +191,7 @@ def test_stage_in_memory_with_clone_in_fabric(sim): ...@@ -191,7 +191,7 @@ def test_stage_in_memory_with_clone_in_fabric(sim):
# grab stage in memory and set as current stage via the with statement # grab stage in memory and set as current stage via the with statement
stage_in_memory = sim.get_initial_stage() stage_in_memory = sim.get_initial_stage()
with sim_utils.use_stage(stage_in_memory): with stage_utils.use_stage(stage_in_memory):
# set up paths # set up paths
base_env_path = "/World/envs" base_env_path = "/World/envs"
source_prim_path = f"{base_env_path}/env_0" source_prim_path = f"{base_env_path}/env_0"
...@@ -218,7 +218,7 @@ def test_stage_in_memory_with_clone_in_fabric(sim): ...@@ -218,7 +218,7 @@ def test_stage_in_memory_with_clone_in_fabric(sim):
# verify prims do not exist in context stage # verify prims do not exist in context stage
context_stage = omni.usd.get_context().get_stage() context_stage = omni.usd.get_context().get_stage()
with sim_utils.use_stage(context_stage): with stage_utils.use_stage(context_stage):
prims = prim_utils.find_matching_prim_paths(prim_path_regex) prims = prim_utils.find_matching_prim_paths(prim_path_regex)
assert len(prims) != num_clones assert len(prims) != num_clones
...@@ -226,10 +226,10 @@ def test_stage_in_memory_with_clone_in_fabric(sim): ...@@ -226,10 +226,10 @@ def test_stage_in_memory_with_clone_in_fabric(sim):
sim_utils.attach_stage_to_usd_context() sim_utils.attach_stage_to_usd_context()
# verify stage is no longer in memory # verify stage is no longer in memory
assert not sim_utils.is_current_stage_in_memory() assert not stage_utils.is_current_stage_in_memory()
# verify prims now exist in fabric stage using usdrt apis # verify prims now exist in fabric stage using usdrt apis
stage_id = sim_utils.get_current_stage_id() stage_id = stage_utils.get_current_stage_id()
usdrt_stage = usdrt.Usd.Stage.Attach(stage_id) usdrt_stage = usdrt.Usd.Stage.Attach(stage_id)
for i in range(num_clones): for i in range(num_clones):
prim = usdrt_stage.GetPrimAtPath(f"/World/envs/env_{i}/Robot") prim = usdrt_stage.GetPrimAtPath(f"/World/envs/env_{i}/Robot")
......
...@@ -16,13 +16,13 @@ import numpy as np ...@@ -16,13 +16,13 @@ import numpy as np
import os import os
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from isaacsim.core.api.simulation_context import SimulationContext from isaacsim.core.api.simulation_context import SimulationContext
from isaacsim.core.prims import Articulation from isaacsim.core.prims import Articulation
from isaacsim.core.utils.extensions import enable_extension, get_extension_path_from_name from isaacsim.core.utils.extensions import enable_extension, get_extension_path_from_name
from isaaclab.sim.converters import UrdfConverter, UrdfConverterCfg from isaaclab.sim.converters import UrdfConverter, UrdfConverterCfg
from isaaclab.sim.utils import stage as stage_utils
# Create a fixture for setup and teardown # Create a fixture for setup and teardown
......
...@@ -16,12 +16,12 @@ import numpy as np ...@@ -16,12 +16,12 @@ import numpy as np
import torch import torch
import isaacsim.core.utils.prims as prim_utils import isaacsim.core.utils.prims as prim_utils
import isaacsim.core.utils.stage as stage_utils
import pytest import pytest
from pxr import Sdf, Usd, UsdGeom, UsdPhysics from pxr import Sdf, Usd, UsdGeom, UsdPhysics
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
import isaaclab.utils.math as math_utils import isaaclab.utils.math as math_utils
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR, ISAACLAB_NUCLEUS_DIR from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR, ISAACLAB_NUCLEUS_DIR
......
...@@ -70,9 +70,10 @@ def get_camera_position(): ...@@ -70,9 +70,10 @@ def get_camera_position():
tuple: (x, y, z) camera position or None if not available tuple: (x, y, z) camera position or None if not available
""" """
try: try:
import isaacsim.core.utils.stage as stage_utils
from pxr import UsdGeom from pxr import UsdGeom
from isaaclab.sim.utils import stage as stage_utils
stage = stage_utils.get_current_stage() stage = stage_utils.get_current_stage()
if stage is not None: if stage is not None:
# Get the viewport camera prim # Get the viewport camera prim
......
...@@ -7,7 +7,6 @@ from __future__ import annotations ...@@ -7,7 +7,6 @@ from __future__ import annotations
import torch import torch
from isaacsim.core.utils.stage import get_current_stage
from isaacsim.core.utils.torch.transformations import tf_combine, tf_inverse, tf_vector from isaacsim.core.utils.torch.transformations import tf_combine, tf_inverse, tf_vector
from pxr import UsdGeom from pxr import UsdGeom
...@@ -17,6 +16,7 @@ from isaaclab.assets import Articulation, ArticulationCfg ...@@ -17,6 +16,7 @@ from isaaclab.assets import Articulation, ArticulationCfg
from isaaclab.envs import DirectRLEnv, DirectRLEnvCfg from isaaclab.envs import DirectRLEnv, DirectRLEnvCfg
from isaaclab.scene import InteractiveSceneCfg from isaaclab.scene import InteractiveSceneCfg
from isaaclab.sim import SimulationCfg from isaaclab.sim import SimulationCfg
from isaaclab.sim.utils.stage import get_current_stage
from isaaclab.terrains import TerrainImporterCfg from isaaclab.terrains import TerrainImporterCfg
from isaaclab.utils import configclass from isaaclab.utils import configclass
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR, ISAACLAB_NUCLEUS_DIR from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR, ISAACLAB_NUCLEUS_DIR
......
...@@ -14,12 +14,11 @@ try: ...@@ -14,12 +14,11 @@ try:
except ModuleNotFoundError: except ModuleNotFoundError:
from pxr import Semantics from pxr import Semantics
from isaacsim.core.utils.stage import get_current_stage
import isaaclab.sim as sim_utils import isaaclab.sim as sim_utils
from isaaclab.assets import Articulation, RigidObject from isaaclab.assets import Articulation, RigidObject
from isaaclab.scene import InteractiveSceneCfg from isaaclab.scene import InteractiveSceneCfg
from isaaclab.sensors import TiledCamera, TiledCameraCfg from isaaclab.sensors import TiledCamera, TiledCameraCfg
from isaaclab.sim.utils.stage import get_current_stage
from isaaclab.utils import configclass from isaaclab.utils import configclass
from isaaclab.utils.math import quat_apply from isaaclab.utils.math import quat_apply
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment