Unverified Commit aec36d94 authored by Pascal Roth's avatar Pascal Roth Committed by GitHub

Replaces IsaacSim `prim_utils` with IsaacLab `prim_utils` (#3924)

# Description

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

NOTE: this PR depends on #3923 

## Type of change

- Dependency removal

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [x] I have made corresponding changes to the documentation
- [x] 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 avatarooctipus <zhengyuz@nvidia.com>
Signed-off-by: 's avatarKelly Guo <kellyg@nvidia.com>
Co-authored-by: 's avatarOcti Zhang <zhengyuz@nvidia.com>
Co-authored-by: 's avatarKelly Guo <kellyg@nvidia.com>
parent 95723762
......@@ -157,6 +157,7 @@ autodoc_mock_imports = [
"omni.client",
"omni.physx",
"omni.physics",
"usdrt",
"pxr.PhysxSchema",
"pxr.PhysicsSchemaTools",
"omni.replicator",
......
......@@ -245,11 +245,10 @@ import random
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 (
......@@ -261,6 +260,7 @@ from isaaclab.sensors import (
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
......
......@@ -35,9 +35,8 @@ simulation_app = app_launcher.app
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
......
......@@ -45,13 +45,13 @@ import torch
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.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
......
......@@ -35,9 +35,8 @@ simulation_app = app_launcher.app
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
##
......
......@@ -37,7 +37,6 @@ simulation_app = app_launcher.app
import random
from isaacsim.core.utils.stage import get_current_stage
from pxr import Gf, Sdf
import isaaclab.sim as sim_utils
......@@ -52,6 +51,7 @@ from isaaclab.assets import (
)
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
......
......@@ -35,9 +35,8 @@ simulation_app = app_launcher.app
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
##
......
......@@ -64,12 +64,11 @@ simulation_app = app_launcher.app
"""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
......@@ -96,7 +95,7 @@ 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)
......
......@@ -93,9 +93,9 @@ import contextlib
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
......
......@@ -63,9 +63,9 @@ import contextlib
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 MjcfConverter, MjcfConverterCfg
from isaaclab.utils.assets import check_file_path
from isaaclab.utils.dict import print_dict
......
......@@ -81,9 +81,9 @@ import contextlib
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 UrdfConverter, UrdfConverterCfg
from isaaclab.utils.assets import check_file_path
from isaaclab.utils.dict import print_dict
......
......@@ -31,9 +31,8 @@ simulation_app = app_launcher.app
"""Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR
......
......@@ -34,9 +34,8 @@ simulation_app = app_launcher.app
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.sim import SimulationContext
......
......@@ -35,9 +35,8 @@ simulation_app = app_launcher.app
import torch
import isaacsim.core.utils.prims as prim_utils
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.utils.math as math_utils
from isaaclab.assets import DeformableObject, DeformableObjectCfg
from isaaclab.sim import SimulationContext
......
......@@ -35,9 +35,8 @@ simulation_app = app_launcher.app
import torch
import isaacsim.core.utils.prims as prim_utils
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.utils.math as math_utils
from isaaclab.assets import RigidObject, RigidObjectCfg
from isaaclab.sim import SimulationContext
......
......@@ -35,9 +35,8 @@ simulation_app = app_launcher.app
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, SurfaceGripper, SurfaceGripperCfg
from isaaclab.sim import SimulationContext
......
......@@ -33,9 +33,8 @@ simulation_app = app_launcher.app
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 RigidObject, RigidObjectCfg
from isaaclab.sensors.ray_caster import RayCaster, RayCasterCfg, patterns
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR
......
......@@ -38,10 +38,10 @@ simulation_app = app_launcher.app
import os
import torch
import isaacsim.core.utils.prims as prim_utils
import omni.replicator.core as rep
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sensors.ray_caster import RayCasterCamera, RayCasterCameraCfg, patterns
from isaaclab.utils import convert_dict_to_backend
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR
......
......@@ -65,10 +65,10 @@ import os
import random
import torch
import isaacsim.core.utils.prims as prim_utils
import omni.replicator.core as rep
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.assets import RigidObject, RigidObjectCfg
from isaaclab.markers import VisualizationMarkers
from isaaclab.markers.config import RAY_CASTER_MARKER_CFG
......
[package]
# Note: Semantic Versioning is used: https://semver.org/
version = "0.49.1"
version = "0.49.2"
# Description
title = "Isaac Lab framework for Robot Learning"
......
Changelog
---------
0.49.2 (2025-11-26)
~~~~~~~~~~~~~~~~~~~
Changed
^^^^^^^
* Changed import from ``isaacsim.core.utils.prims`` to ``isaaclab.sim.utils.prims`` across repo to reduce IsaacLab dependencies.
0.49.1 (2025-12-08)
~~~~~~~~~~~~~~~~~~~
......@@ -45,7 +54,9 @@ Added
Changed
^^^^^^^
* Changed import from ``isaaclab.sim.utils`` to ``isaaclab.sim.utils.stage`` to properly propagate the Isaac Sim stage context.
* Changed import from ``isaaclab.sim.utils`` to ``isaaclab.sim.utils.stage`` in ``isaaclab.devices.openxr.xr_anchor_utils.py``
to properly propagate the Isaac Sim stage context.
0.48.6 (2025-11-18)
......
......@@ -14,6 +14,7 @@ fault occurs. The launched :class:`isaacsim.simulation_app.SimulationApp` instan
import argparse
import contextlib
import logging
import os
import re
import signal
......@@ -25,6 +26,9 @@ with contextlib.suppress(ModuleNotFoundError):
from isaacsim import SimulationApp
# import logger
logger = logging.getLogger(__name__)
class ExplicitAction(argparse.Action):
"""Custom action to track if an argument was explicitly passed by the user."""
......@@ -993,10 +997,9 @@ class AppLauncher:
def __patch_pxr_gf_matrix4d(self, launcher_args: dict):
import traceback
import carb
from pxr import Gf
carb.log_warn(
logger.warning(
"Due to an issue with Pinocchio and pxr.Gf.Matrix4d, patching the Matrix4d constructor to convert arguments"
" into a list of floats."
)
......@@ -1058,13 +1061,13 @@ class AppLauncher:
original_matrix4d(self, *args, **kwargs)
except Exception as e:
carb.log_error(f"Matrix4d wrapper error: {e}")
logger.error(f"Matrix4d wrapper error: {e}")
traceback.print_stack()
# Fall back to original constructor as last resort
try:
original_matrix4d(self, *args, **kwargs)
except Exception as inner_e:
carb.log_error(f"Original Matrix4d constructor also failed: {inner_e}")
logger.error(f"Original Matrix4d constructor also failed: {inner_e}")
# Initialize as identity matrix if all else fails
original_matrix4d(self)
......
......@@ -14,12 +14,12 @@ from abc import ABC, abstractmethod
from collections.abc import Sequence
from typing import TYPE_CHECKING, Any
import isaacsim.core.utils.prims as prim_utils
import omni.kit.app
import omni.timeline
from isaacsim.core.simulation_manager import IsaacEvents, SimulationManager
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sim.utils.stage import get_current_stage
if TYPE_CHECKING:
......
......@@ -6,7 +6,6 @@
import torch
from dataclasses import MISSING
import isaacsim.core.utils.prims as prim_utils
from isaacsim.core.api.simulation_context import SimulationContext
from isaacsim.core.prims import SingleArticulation
......@@ -19,6 +18,7 @@ enable_extension("isaacsim.robot_motion.motion_generation")
from isaacsim.robot_motion.motion_generation import ArticulationMotionPolicy
from isaacsim.robot_motion.motion_generation.lula.motion_policies import RmpFlow, RmpFlowSmoothed
import isaaclab.sim.utils as sim_utils
from isaaclab.utils import configclass
from isaaclab.utils.assets import retrieve_file_path
......@@ -81,7 +81,7 @@ class RmpFlowController:
# obtain the simulation time
physics_dt = SimulationContext.instance().get_physics_dt()
# find all prims
self._prim_paths = prim_utils.find_matching_prim_paths(prim_paths_expr)
self._prim_paths = sim_utils.find_matching_prim_paths(prim_paths_expr)
self.num_robots = len(self._prim_paths)
# resolve controller
if self.cfg.name == "rmp_flow":
......
......@@ -29,8 +29,8 @@ import omni.physx.scripts.utils as physx_utils
from pxr import Gf, PhysxSchema, Sdf, Usd, UsdGeom, UsdPhysics, Vt
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.sim.spawners import SpawnerCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.configclass import configclass
from isaaclab.utils.math import convert_quat
......@@ -68,7 +68,7 @@ class VisualizationMarkers:
The class parses the configuration to create different the marker prototypes into the stage. Each marker
prototype prim is created as a child of the :class:`UsdGeom.PointInstancer` prim. The prim path for the
marker prim is resolved using the key of the marker in the :attr:`VisualizationMarkersCfg.markers`
dictionary. The marker prototypes are created using the :meth:`isaacsim.core.utils.create_prim`
dictionary. The marker prototypes are created using the :meth:`isaaclab.sim.utils.prims.create_prim`
function, and then instanced using :class:`UsdGeom.PointInstancer` prim to allow creating multiple
instances of the marker prims.
......
......@@ -21,8 +21,8 @@ from isaacsim.core.version import get_version
from pxr import Sdf, UsdGeom
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.stage as stage_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.array import convert_to_torch
from isaaclab.utils.math import (
......
......@@ -13,9 +13,9 @@ from isaacsim.core.simulation_manager import SimulationManager
from pxr import UsdPhysics
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.stage as stage_utils
import isaaclab.utils.math as math_utils
from isaaclab.markers import VisualizationMarkers
from isaaclab.sim.utils import stage as stage_utils
from ..sensor_base import SensorBase
from .imu_data import ImuData
......
......@@ -12,9 +12,9 @@ from typing import TYPE_CHECKING, ClassVar, Literal
import omni.physics.tensors.impl.api as physx
from isaacsim.core.prims import XFormPrim
import isaaclab.sim.utils.stage as stage_utils
import isaaclab.utils.math as math_utils
from isaaclab.sensors.camera import CameraData
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.warp import raycast_mesh
from .ray_caster import RayCaster
......
......@@ -32,12 +32,15 @@ from isaacsim.core.utils.viewports import set_camera_view
from isaacsim.core.version import get_version
from pxr import Gf, PhysxSchema, Sdf, Usd, UsdPhysics
from isaaclab.sim.utils import stage as stage_utils
import isaaclab.sim.utils.stage as stage_utils
from .simulation_cfg import SimulationCfg
from .spawners import DomeLightCfg, GroundPlaneCfg
from .utils import ColoredFormatter, RateLimitFilter, bind_physics_material
# import logger
logger = logging.getLogger(__name__)
class SimulationContext(_SimulationContext):
"""A class to control simulation-related events such as physics stepping and rendering.
......@@ -539,7 +542,7 @@ class SimulationContext(_SimulationContext):
if self._anim_recording_enabled:
is_anim_recording_finished = self._update_anim_recording()
if is_anim_recording_finished:
carb.log_warn("[INFO][SimulationContext]: Animation recording finished. Closing app.")
logger.warning("[INFO][SimulationContext]: Animation recording finished. Closing app.")
self._app.shutdown()
# check if the simulation timeline is paused. in that case keep stepping until it is playing
......@@ -927,7 +930,7 @@ class SimulationContext(_SimulationContext):
def _finish_anim_recording(self):
"""Finishes the animation recording and outputs the baked animation recording."""
carb.log_warn(
logger.warning(
"[INFO][SimulationContext]: Finishing animation recording. Stage must be saved. Might take a few minutes."
)
......
......@@ -8,10 +8,11 @@ from __future__ import annotations
import logging
from typing import TYPE_CHECKING
import isaacsim.core.utils.prims as prim_utils
import omni.kit.commands
from pxr import Gf, Sdf, Usd
import isaaclab.sim.utils.prims as prim_utils
# from Isaac Sim 4.2 onwards, pxr.Semantics is deprecated
try:
import Semantics
......@@ -160,7 +161,7 @@ def spawn_ground_plane(
# Apply physics material to ground plane
collision_prim_path = prim_utils.get_prim_path(
prim_utils.get_first_matching_child_prim(
prim_path, predicate=lambda x: prim_utils.get_prim_type_name(x) == "Plane"
prim_path, predicate=lambda x: prim_utils.from_prim_get_type_name(x) == "Plane"
)
)
bind_physics_material(collision_prim_path, f"{prim_path}/physicsMaterial")
......
......@@ -7,9 +7,9 @@ from __future__ import annotations
from typing import TYPE_CHECKING
import isaacsim.core.utils.prims as prim_utils
from pxr import Usd, UsdLux
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sim.utils import clone, safe_set_attribute_on_usd_prim
if TYPE_CHECKING:
......
......@@ -31,7 +31,7 @@ When parsing physics material properties on an object, the following priority is
Usage:
.. code-block:: python
import isaacsim.core.utils.prims as prim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim as sim_utils
......
......@@ -7,9 +7,9 @@ from __future__ import annotations
from typing import TYPE_CHECKING
import isaacsim.core.utils.prims as prim_utils
from pxr import PhysxSchema, Usd, UsdPhysics, UsdShade
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sim.utils import clone, safe_set_attribute_on_usd_schema
from isaaclab.sim.utils.stage import get_current_stage
......
......@@ -8,10 +8,10 @@ from __future__ import annotations
import logging
from typing import TYPE_CHECKING
import isaacsim.core.utils.prims as prim_utils
import omni.kit.commands
from pxr import Usd
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sim.utils import attach_stage_to_usd_context, clone, safe_set_attribute_on_usd_prim
from isaaclab.utils.assets import NVIDIA_NUCLEUS_DIR
......
......@@ -10,9 +10,9 @@ import trimesh
import trimesh.transformations
from typing import TYPE_CHECKING
import isaacsim.core.utils.prims as prim_utils
from pxr import Usd, UsdPhysics
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sim import schemas
from isaaclab.sim.utils import bind_physics_material, bind_visual_material, clone
......
......@@ -8,12 +8,11 @@ from __future__ import annotations
import logging
from typing import TYPE_CHECKING
import isaacsim.core.utils.prims as prim_utils
import omni.kit.commands
from pxr import Sdf, Usd
from isaaclab.sim.utils import clone
from isaaclab.sim.utils.stage import attach_stage_to_usd_context
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sim.utils import attach_stage_to_usd_context, clone
from isaaclab.utils import to_camel_case
if TYPE_CHECKING:
......
......@@ -7,9 +7,9 @@ from __future__ import annotations
from typing import TYPE_CHECKING
import isaacsim.core.utils.prims as prim_utils
from pxr import Usd
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sim import schemas
from isaaclab.sim.utils import bind_physics_material, bind_visual_material, clone
......
......@@ -10,12 +10,12 @@ import re
from typing import TYPE_CHECKING
import carb
import isaacsim.core.utils.prims as prim_utils
from pxr import Sdf, Usd
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.sim.spawners.from_files import UsdFileCfg
from isaaclab.sim.utils import stage as stage_utils
if TYPE_CHECKING:
from . import wrappers_cfg
......
......@@ -3,4 +3,8 @@
#
# SPDX-License-Identifier: BSD-3-Clause
from .utils import * # noqa: F401, F403
from .logger import * # noqa: F401, F403
from .nucleus import * # noqa: F401, F403
from .prims import * # noqa: F401, F403
from .semantics import * # noqa: F401, F403
from .stage import * # noqa: F401, F403
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
"""Sub-module with logging utilities."""
from __future__ import annotations
import logging
import time
# import logger
logger = logging.getLogger(__name__)
# --- Colored formatter ---
class ColoredFormatter(logging.Formatter):
COLORS = {
"WARNING": "\033[33m", # orange/yellow
"ERROR": "\033[31m", # red
"CRITICAL": "\033[31m", # red
"INFO": "\033[0m", # reset
"DEBUG": "\033[0m",
}
RESET = "\033[0m"
def format(self, record):
color = self.COLORS.get(record.levelname, self.RESET)
message = super().format(record)
return f"{color}{message}{self.RESET}"
# --- Custom rate-limited warning filter ---
class RateLimitFilter(logging.Filter):
def __init__(self, interval_seconds=5):
super().__init__()
self.interval = interval_seconds
self.last_emitted = {}
def filter(self, record):
"""Allow WARNINGs only once every few seconds per message."""
if record.levelno != logging.WARNING:
return True
now = time.time()
msg_key = record.getMessage()
if msg_key not in self.last_emitted or (now - self.last_emitted[msg_key]) > self.interval:
self.last_emitted[msg_key] = now
return True
return False
This diff is collapsed.
This diff is collapsed.
......@@ -80,10 +80,10 @@ def create_prim_from_mesh(prim_path: str, mesh: trimesh.Trimesh, **kwargs):
physics_material: The physics material to apply. Defaults to None.
"""
# need to import these here to prevent isaacsim launching when importing this module
import isaacsim.core.utils.prims as prim_utils
from pxr import UsdGeom
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
# create parent prim
prim_utils.create_prim(prim_path, "Xform")
......
......@@ -9,7 +9,6 @@ from contextlib import suppress
from matplotlib import cm
from typing import TYPE_CHECKING, Optional
import carb
import omni
with suppress(ImportError):
......@@ -82,7 +81,7 @@ class ImagePlot(UIWidgetWrapper):
self._byte_provider = omni.ui.ByteImageProvider()
if image is None:
carb.log_warn("image is NONE")
logger.warning("image is NONE")
image = np.ones((480, 640, 3), dtype=np.uint8) * 255
image[:, :, 0] = 0
image[:, :240, 1] = 0
......
......@@ -10,11 +10,12 @@ from typing import Any, TypeAlias
import omni.kit.commands
import omni.ui as ui
from isaacsim.core.utils.prims import delete_prim, get_prim_at_path
from omni.kit.xr.scene_view.utils import UiContainer, WidgetComponent
from omni.kit.xr.scene_view.utils.spatial_source import SpatialSource
from pxr import Gf
from isaaclab.sim.utils.prims import delete_prim, get_prim_at_path
Vec3Type: TypeAlias = Gf.Vec3f | Gf.Vec3d
camera_facing_widget_container = {}
......
......@@ -370,3 +370,46 @@ def resolve_matching_names_values(
)
# return
return index_list, names_list, values_list
def find_unique_string_name(initial_name: str, is_unique_fn: Callable[[str], bool]) -> str:
"""Find a unique string name based on the predicate function provided.
The string is appended with "_N", where N is a natural number till the resultant string
is unique.
Args:
initial_name (str): The initial string name.
is_unique_fn (Callable[[str], bool]): The predicate function to validate against.
Returns:
str: A unique string based on input function.
"""
if is_unique_fn(initial_name):
return initial_name
iterator = 1
result = initial_name + "_" + str(iterator)
while not is_unique_fn(result):
result = initial_name + "_" + str(iterator)
iterator += 1
return result
def find_root_prim_path_from_regex(prim_path_regex: str) -> tuple[str, int]:
"""Find the first prim above the regex pattern prim and its position.
Args:
prim_path_regex (str): full prim path including the regex pattern prim.
Returns:
Tuple[str, int]: First position is the prim path to the parent of the regex prim.
Second position represents the level of the regex prim in the USD stage tree representation.
"""
prim_paths_list = str(prim_path_regex).split("/")
root_idx = None
for prim_path_idx in range(len(prim_paths_list)):
chars = set("[]*|^")
if any((c in chars) for c in prim_paths_list[prim_path_idx]):
root_idx = prim_path_idx
break
root_prim_path = None
tree_level = None
if root_idx is not None:
root_prim_path = "/".join(prim_paths_list[:root_idx])
tree_level = root_idx
return root_prim_path, tree_level
......@@ -35,9 +35,8 @@ simulation_app = app_launcher.app
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
##
......
......@@ -20,11 +20,11 @@ simulation_app = AppLauncher(headless=True).app
import ctypes
import torch
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.version import get_version
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.utils.math as math_utils
import isaaclab.utils.string as string_utils
from isaaclab.actuators import ActuatorBase, IdealPDActuatorCfg, ImplicitActuatorCfg
......
......@@ -20,11 +20,11 @@ import ctypes
import torch
import carb
import isaacsim.core.utils.prims as prim_utils
import pytest
from flaky import flaky
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.utils.math as math_utils
from isaaclab.assets import DeformableObject, DeformableObjectCfg
from isaaclab.sim import build_simulation_context
......
......@@ -20,11 +20,11 @@ import ctypes
import torch
from typing import Literal
import isaacsim.core.utils.prims as prim_utils
import pytest
from flaky import flaky
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.assets import RigidObject, RigidObjectCfg
from isaaclab.sim import build_simulation_context
from isaaclab.sim.spawners import materials
......
......@@ -19,10 +19,10 @@ simulation_app = AppLauncher(headless=True).app
import ctypes
import torch
import isaacsim.core.utils.prims as prim_utils
import pytest
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.assets import RigidObjectCfg, RigidObjectCollection, RigidObjectCollectionCfg
from isaaclab.sim import build_simulation_context
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR
......
......@@ -18,11 +18,11 @@ simulation_app = AppLauncher(headless=True).app
import torch
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.version import get_version
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.actuators import ImplicitActuatorCfg
from isaaclab.assets import (
Articulation,
......
......@@ -14,14 +14,14 @@ simulation_app = AppLauncher(headless=True).app
import torch
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.cloner import GridCloner
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.assets import Articulation
from isaaclab.controllers import DifferentialIKController, DifferentialIKControllerCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.math import ( # isort:skip
compute_pose_error,
......
......@@ -14,17 +14,17 @@ simulation_app = AppLauncher(headless=True).app
import torch
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.cloner import GridCloner
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.assets import Articulation
from isaaclab.controllers import OperationalSpaceController, OperationalSpaceControllerCfg
from isaaclab.markers import VisualizationMarkers
from isaaclab.markers.config import FRAME_MARKER_CFG
from isaaclab.sensors import ContactSensor, ContactSensorCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils.math import (
apply_delta_pose,
combine_frame_transforms,
......
......@@ -45,7 +45,6 @@ import numpy as np
import os
import random
import isaacsim.core.utils.prims as prim_utils
import omni.replicator.core as rep
from isaacsim.core.api.world import World
from isaacsim.core.prims import Articulation, RigidPrim, SingleGeometryPrim, SingleRigidPrim
......@@ -54,6 +53,7 @@ from PIL import Image, ImageChops
from pxr import Gf, UsdGeom
import isaaclab.sim.utils.nucleus as nucleus_utils
import isaaclab.sim.utils.prims as prim_utils
# check nucleus connection
if nucleus_utils.get_assets_root_path() is None:
......
......@@ -33,7 +33,6 @@ simulation_app = SimulationApp({"headless": args_cli.headless})
import logging
import torch
import isaacsim.core.utils.prims as prim_utils
import omni.kit.commands
import omni.physx
from isaacsim.core.api.world import World
......@@ -41,11 +40,14 @@ from isaacsim.core.prims import Articulation
from isaacsim.core.utils.viewports import set_camera_view
from pxr import PhysxSchema, UsdPhysics
# import logger
logger = logging.getLogger(__name__)
import isaaclab.sim.utils.nucleus as nucleus_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
# import logger
logger = logging.getLogger(__name__)
# check nucleus connection
if nucleus_utils.get_assets_root_path() is None:
msg = (
......
......@@ -44,15 +44,16 @@ import logging
import os
import torch
import isaacsim.core.utils.prims as prim_utils
from isaacsim.core.api.world import World
from isaacsim.core.cloner import GridCloner
from isaacsim.core.prims import Articulation
from isaacsim.core.utils.viewports import set_camera_view
import isaaclab.sim.utils.nucleus as nucleus_utils
import isaaclab.sim.utils.prims as prim_utils
# import logger
logger = logging.getLogger(__name__)
import isaaclab.sim.utils.nucleus as nucleus_utils
# check nucleus connection
if nucleus_utils.get_assets_root_path() is None:
......
......@@ -38,13 +38,15 @@ import gc
import logging
import torch # noqa: F401
import isaacsim.core.utils.prims as prim_utils
from isaacsim.core.api.simulation_context import SimulationContext
from isaacsim.core.prims import Articulation
import isaaclab.sim.utils.nucleus as nucleus_utils
import isaaclab.sim.utils.prims as prim_utils
# import logger
logger = logging.getLogger(__name__)
import isaaclab.sim.utils.nucleus as nucleus_utils
# check nucleus connection
if nucleus_utils.get_assets_root_path() is None:
......
......@@ -45,7 +45,6 @@ simulation_app = app_launcher.app
import numpy as np
import torch
import isaacsim.core.utils.prims as prim_utils
import omni.replicator.core as rep
from isaacsim.core.api.simulation_context import SimulationContext
from isaacsim.core.cloner import GridCloner
......@@ -53,6 +52,8 @@ from isaacsim.core.objects import DynamicSphere
from isaacsim.core.prims import RigidPrim
from isaacsim.core.utils.viewports import set_camera_view
import isaaclab.sim.utils.prims as prim_utils
def main():
"""Spawn a bunch of balls and randomly change their textures."""
......
......@@ -18,9 +18,9 @@ import pytest
from isaacsim.core.api.simulation_context import SimulationContext
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.markers import VisualizationMarkers, VisualizationMarkersCfg
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.timer import Timer
......
......@@ -36,12 +36,12 @@ simulation_app = app_launcher.app
import torch
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.viewports import set_camera_view
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.assets import Articulation
from isaaclab.sensors.contact_sensor import ContactSensor, ContactSensorCfg
from isaaclab.utils.timer import Timer
......
......@@ -12,6 +12,7 @@ from __future__ import annotations
"""Launch Isaac Sim Simulator first."""
import argparse
import logging
from isaacsim import SimulationApp
......@@ -54,6 +55,9 @@ from isaaclab.terrains.terrain_importer import TerrainImporter
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR
from isaaclab.utils.timer import Timer
# import logger
logger = logging.getLogger(__name__)
def design_scene(sim: SimulationContext, num_envs: int = 2048) -> RigidObject:
"""Design the scene."""
......@@ -188,8 +192,8 @@ if __name__ == "__main__":
# Run the main function
main()
except Exception as err:
carb.log_error(err)
carb.log_error(traceback.format_exc())
logger.error(err)
logger.error(traceback.format_exc())
raise
finally:
# close sim app
......
......@@ -41,13 +41,13 @@ simulation_app = app_launcher.app
import torch
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.prims import RigidPrim
from isaacsim.core.utils.viewports import set_camera_view
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.terrains as terrain_gen
from isaaclab.sensors.ray_caster import RayCaster, RayCasterCfg, patterns
from isaaclab.terrains.config.rough import ROUGH_TERRAINS_CFG
......
......@@ -22,15 +22,15 @@ import random
import scipy.spatial.transform as tf
import torch
import isaacsim.core.utils.prims as prim_utils
import omni.replicator.core as rep
import pytest
from isaacsim.core.prims import SingleGeometryPrim, SingleRigidPrim
from pxr import Gf, Usd, UsdGeom
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
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.math import convert_quat
from isaaclab.utils.timer import Timer
......
......@@ -28,6 +28,7 @@ from isaaclab.assets import RigidObject, RigidObjectCfg
from isaaclab.scene import InteractiveScene, InteractiveSceneCfg
from isaaclab.sensors import ContactSensor, ContactSensorCfg
from isaaclab.sim import SimulationContext, build_simulation_context
from isaaclab.sim.utils.stage import get_current_stage
from isaaclab.terrains import HfRandomUniformTerrainCfg, TerrainGeneratorCfg, TerrainImporterCfg
from isaaclab.utils import configclass
......@@ -418,9 +419,6 @@ def test_contact_sensor_threshold(setup_simulation, device):
# Play the simulator
sim.reset()
# Get the stage and check the USD threshold attribute on the rigid body prim
from isaacsim.core.utils.stage import get_current_stage
stage = get_current_stage()
prim_path = scene_cfg.shape.prim_path
prim = stage.GetPrimAtPath(prim_path)
......
......@@ -19,11 +19,11 @@ import torch
import pytest
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.stage as stage_utils
import isaaclab.utils.math as math_utils
from isaaclab.assets import RigidObjectCfg
from isaaclab.scene import InteractiveScene, InteractiveSceneCfg
from isaaclab.sensors import FrameTransformerCfg, OffsetCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.terrains import TerrainImporterCfg
from isaaclab.utils import configclass
......
......@@ -20,13 +20,13 @@ import torch
import pytest
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.stage as stage_utils
import isaaclab.utils.math as math_utils
from isaaclab.actuators import ImplicitActuatorCfg
from isaaclab.assets import ArticulationCfg, RigidObjectCfg
from isaaclab.markers.config import GREEN_ARROW_X_MARKER_CFG, RED_ARROW_X_MARKER_CFG
from isaaclab.scene import InteractiveScene, InteractiveSceneCfg
from isaaclab.sensors.imu import ImuCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.terrains import TerrainImporterCfg
from isaaclab.utils import configclass
......
......@@ -20,7 +20,6 @@ import numpy as np
import random
import torch
import isaacsim.core.utils.prims as prim_utils
import omni.replicator.core as rep
import pytest
from flaky import flaky
......@@ -28,8 +27,9 @@ from isaacsim.core.prims import SingleGeometryPrim, SingleRigidPrim
from pxr import Gf, UsdGeom
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.sensors.camera import TiledCamera, TiledCameraCfg
from isaaclab.sim.utils import stage as stage_utils
@pytest.fixture()
......
......@@ -20,16 +20,16 @@ import numpy as np
import os
import torch
import isaacsim.core.utils.prims as prim_utils
import omni.replicator.core as rep
import pytest
from pxr import Gf
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.sensors.camera import Camera, CameraCfg
from isaaclab.sensors.ray_caster import RayCasterCamera, RayCasterCameraCfg, patterns
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.utils import create_prim_from_mesh
from isaaclab.utils import convert_dict_to_backend
......
......@@ -18,12 +18,12 @@ import torch
from collections.abc import Sequence
from dataclasses import dataclass
import isaacsim.core.utils.prims as prim_utils
import pytest
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.sensors import SensorBase, SensorBaseCfg
from isaaclab.sim.utils import stage as stage_utils
from isaaclab.utils import configclass
......
......@@ -20,13 +20,13 @@ import numpy as np
import random
import torch
import isaacsim.core.utils.prims as prim_utils
import omni.replicator.core as rep
import pytest
from isaacsim.core.prims import SingleGeometryPrim, SingleRigidPrim
from pxr import Gf, UsdGeom
from isaaclab.sim.utils import stage as stage_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
# from Isaac Sim 4.2 onwards, pxr.Semantics is deprecated
try:
......
......@@ -40,9 +40,8 @@ import random
import torch
import tqdm
import isaacsim.core.utils.prims as prim_utils
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
def define_origins(num_origins: int, spacing: float) -> list[list[float]]:
......
......@@ -21,10 +21,10 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows."""
import pytest
from isaacsim.core.utils.prims import is_prim_path_valid
from isaaclab.sim.simulation_cfg import SimulationCfg
from isaaclab.sim.simulation_context import build_simulation_context
from isaaclab.sim.utils.prims import is_prim_path_valid
@pytest.mark.parametrize("gravity_enabled", [True, False])
......
......@@ -20,10 +20,10 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows."""
import pytest
from isaacsim.core.utils.prims import is_prim_path_valid
from isaaclab.sim.simulation_cfg import SimulationCfg
from isaaclab.sim.simulation_context import build_simulation_context
from isaaclab.sim.utils.prims import is_prim_path_valid
@pytest.mark.parametrize("gravity_enabled", [True, False])
......
......@@ -17,15 +17,15 @@ import os
import random
import tempfile
import isaacsim.core.utils.prims as prim_utils
import omni
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
from pxr import UsdGeom, UsdPhysics
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.sim.converters import MeshConverter, MeshConverterCfg
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
......
......@@ -14,13 +14,13 @@ simulation_app = AppLauncher(headless=True).app
import os
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
from isaacsim.core.utils.extensions import enable_extension, get_extension_path_from_name
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.sim.converters import MjcfConverter, MjcfConverterCfg
from isaaclab.sim.utils import stage as stage_utils
@pytest.fixture(autouse=True)
......
......@@ -14,14 +14,14 @@ simulation_app = AppLauncher(headless=True).app
import math
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
from pxr import UsdPhysics
import isaaclab.sim.schemas as schemas
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
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.string import to_camel_case
......
......@@ -14,10 +14,10 @@ simulation_app = AppLauncher(headless=True).app
import numpy as np
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext as IsaacSimulationContext
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sim import SimulationCfg, SimulationContext
......
......@@ -12,13 +12,13 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
from isaacsim.core.utils.extensions import enable_extension, get_extension_path_from_name
import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR
......
......@@ -12,13 +12,14 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
from pxr import UsdLux
import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.utils.string import to_camel_case
......
......@@ -12,13 +12,14 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
from pxr import UsdPhysics, UsdShade
import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.utils.assets import NVIDIA_NUCLEUS_DIR
......
......@@ -12,12 +12,13 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
@pytest.fixture
......
......@@ -12,13 +12,14 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
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
......
......@@ -12,12 +12,12 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
@pytest.fixture
......@@ -259,7 +259,7 @@ def test_spawn_cone_clones(sim):
assert prim.IsValid()
assert prim_utils.get_prim_path(prim) == "/World/env_0/Cone"
# find matching prims
prims = prim_utils.find_matching_prim_paths("/World/env_*/Cone")
prims = sim_utils.find_matching_prim_paths("/World/env_.*/Cone")
assert len(prims) == num_clones
......@@ -285,8 +285,8 @@ def test_spawn_cone_clone_with_all_props_global_material(sim):
assert prim.IsValid()
assert prim_utils.get_prim_path(prim) == "/World/env_0/Cone"
# find matching prims
prims = prim_utils.find_matching_prim_paths("/World/env_*/Cone")
prims = sim_utils.find_matching_prim_paths("/World/env_.*/Cone")
assert len(prims) == num_clones
# find matching material prims
prims = prim_utils.find_matching_prim_paths("/Looks/visualMaterial.*")
prims = sim_utils.find_matching_prim_paths("/Looks/visualMaterial.*")
assert len(prims) == 1
......@@ -12,12 +12,13 @@ simulation_app = AppLauncher(headless=True).app
"""Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
import isaaclab.sim as sim_utils
from isaaclab.sim.utils import stage as stage_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR
......@@ -69,7 +70,7 @@ def test_spawn_multiple_shapes_with_global_settings(sim):
assert prim.IsValid()
assert prim_utils.get_prim_path(prim) == "/World/env_0/Cone"
prim_paths = prim_utils.find_matching_prim_paths("/World/env_*/Cone")
prim_paths = sim_utils.find_matching_prim_paths("/World/env_.*/Cone")
assert len(prim_paths) == num_clones
for prim_path in prim_paths:
......@@ -115,7 +116,7 @@ def test_spawn_multiple_shapes_with_individual_settings(sim):
assert prim.IsValid()
assert prim_utils.get_prim_path(prim) == "/World/env_0/Cone"
prim_paths = prim_utils.find_matching_prim_paths("/World/env_*/Cone")
prim_paths = sim_utils.find_matching_prim_paths("/World/env_.*/Cone")
assert len(prim_paths) == num_clones
for prim_path in prim_paths:
......@@ -158,5 +159,5 @@ def test_spawn_multiple_files_with_global_settings(sim):
assert prim.IsValid()
assert prim_utils.get_prim_path(prim) == "/World/env_0/Robot"
prim_paths = prim_utils.find_matching_prim_paths("/World/env_*/Robot")
prim_paths = sim_utils.find_matching_prim_paths("/World/env_.*/Robot")
assert len(prim_paths) == num_clones
......@@ -12,7 +12,7 @@ simulation_app = AppLauncher(headless=True, enable_cameras=True).app
"""Rest everything follows."""
import isaacsim.core.utils.prims as prim_utils
import omni
import omni.physx
import omni.usd
......@@ -22,8 +22,9 @@ from isaacsim.core.cloner import GridCloner
from isaacsim.core.version import get_version
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
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
......@@ -91,13 +92,13 @@ def test_stage_in_memory_with_shapes(sim):
assert stage_utils.is_current_stage_in_memory()
# verify prims exist in stage in memory
prims = prim_utils.find_matching_prim_paths(prim_path_regex)
prims = sim_utils.find_matching_prim_paths(prim_path_regex)
assert len(prims) == num_clones
# verify prims do not exist in context stage
context_stage = omni.usd.get_context().get_stage()
with stage_utils.use_stage(context_stage):
prims = prim_utils.find_matching_prim_paths(prim_path_regex)
prims = sim_utils.find_matching_prim_paths(prim_path_regex)
assert len(prims) != num_clones
# attach stage to context
......@@ -107,7 +108,7 @@ def test_stage_in_memory_with_shapes(sim):
assert not stage_utils.is_current_stage_in_memory()
# verify prims now exist in context stage
prims = prim_utils.find_matching_prim_paths(prim_path_regex)
prims = sim_utils.find_matching_prim_paths(prim_path_regex)
assert len(prims) == num_clones
......@@ -157,13 +158,13 @@ def test_stage_in_memory_with_usds(sim):
assert stage_utils.is_current_stage_in_memory()
# verify prims exist in stage in memory
prims = prim_utils.find_matching_prim_paths(prim_path_regex)
prims = sim_utils.find_matching_prim_paths(prim_path_regex)
assert len(prims) == num_clones
# verify prims do not exist in context stage
context_stage = omni.usd.get_context().get_stage()
with stage_utils.use_stage(context_stage):
prims = prim_utils.find_matching_prim_paths(prim_path_regex)
prims = sim_utils.find_matching_prim_paths(prim_path_regex)
assert len(prims) != num_clones
# attach stage to context
......@@ -173,7 +174,7 @@ def test_stage_in_memory_with_usds(sim):
assert not stage_utils.is_current_stage_in_memory()
# verify prims now exist in context stage
prims = prim_utils.find_matching_prim_paths(prim_path_regex)
prims = sim_utils.find_matching_prim_paths(prim_path_regex)
assert len(prims) == num_clones
......@@ -219,7 +220,7 @@ def test_stage_in_memory_with_clone_in_fabric(sim):
# verify prims do not exist in context stage
context_stage = omni.usd.get_context().get_stage()
with stage_utils.use_stage(context_stage):
prims = prim_utils.find_matching_prim_paths(prim_path_regex)
prims = sim_utils.find_matching_prim_paths(prim_path_regex)
assert len(prims) != num_clones
# attach stage to context
......
......@@ -15,14 +15,14 @@ simulation_app = AppLauncher(headless=True).app
import numpy as np
import os
import isaacsim.core.utils.prims as prim_utils
import pytest
from isaacsim.core.api.simulation_context import SimulationContext
from isaacsim.core.prims import Articulation
from isaacsim.core.utils.extensions import enable_extension, get_extension_path_from_name
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_utils
from isaaclab.sim.converters import UrdfConverter, UrdfConverterCfg
from isaaclab.sim.utils import stage as stage_utils
# Create a fixture for setup and teardown
......
......@@ -15,13 +15,13 @@ simulation_app = AppLauncher(headless=True).app
import numpy as np
import torch
import isaacsim.core.utils.prims as prim_utils
import pytest
from pxr import Sdf, Usd, UsdGeom, UsdPhysics
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.sim.utils.stage as stage_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
......@@ -104,36 +104,6 @@ def test_get_first_matching_child_prim():
assert isaaclab_result.GetPrimPath() == "/World/env_1/Franka/panda_link0/visuals/panda_link0"
def test_find_matching_prim_paths():
"""Test find_matching_prim_paths() function."""
# create scene
for index in range(2048):
random_pos = np.random.uniform(-100, 100, size=3)
prim_utils.create_prim(f"/World/Floor_{index}", "Cube", position=random_pos, attributes={"size": 2.0})
prim_utils.create_prim(f"/World/Floor_{index}/Sphere", "Sphere", attributes={"radius": 10})
prim_utils.create_prim(f"/World/Floor_{index}/Sphere/childSphere", "Sphere", attributes={"radius": 1})
prim_utils.create_prim(f"/World/Floor_{index}/Sphere/childSphere2", "Sphere", attributes={"radius": 1})
# test leaf paths
isaac_sim_result = prim_utils.find_matching_prim_paths("/World/Floor_.*/Sphere")
isaaclab_result = sim_utils.find_matching_prim_paths("/World/Floor_.*/Sphere")
assert isaac_sim_result == isaaclab_result
# test non-leaf paths
isaac_sim_result = prim_utils.find_matching_prim_paths("/World/Floor_.*")
isaaclab_result = sim_utils.find_matching_prim_paths("/World/Floor_.*")
assert isaac_sim_result == isaaclab_result
# test child-leaf paths
isaac_sim_result = prim_utils.find_matching_prim_paths("/World/Floor_.*/Sphere/childSphere.*")
isaaclab_result = sim_utils.find_matching_prim_paths("/World/Floor_.*/Sphere/childSphere.*")
assert isaac_sim_result == isaaclab_result
# test valid path
with pytest.raises(ValueError):
sim_utils.get_all_matching_child_prims("World/Floor_.*")
def test_find_global_fixed_joint_prim():
"""Test find_global_fixed_joint_prim() function."""
# create scene
......
......@@ -64,7 +64,6 @@ simulation_app = app_launcher.app
import numpy as np
import isaacsim.core.utils.prims as prim_utils
import omni.kit
import omni.kit.commands
from isaacsim.core.api.materials import PhysicsMaterial
......@@ -77,6 +76,7 @@ from isaacsim.core.utils.extensions import enable_extension
from isaacsim.core.utils.viewports import set_camera_view
import isaaclab.sim as sim_utils
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.terrains as terrain_gen
from isaaclab.terrains.config.rough import ROUGH_TERRAINS_CFG
from isaaclab.terrains.terrain_importer import TerrainImporter
......
......@@ -17,7 +17,6 @@ import torch
import trimesh
from typing import Literal
import isaacsim.core.utils.prims as prim_utils
import omni.kit
import omni.kit.commands
import pytest
......@@ -28,6 +27,7 @@ from isaacsim.core.prims import RigidPrim, SingleGeometryPrim, SingleRigidPrim
from isaacsim.core.utils.extensions import enable_extension
from pxr import UsdGeom
import isaaclab.sim.utils.prims as prim_utils
import isaaclab.terrains as terrain_gen
from isaaclab.sim import PreviewSurfaceCfg, SimulationContext, build_simulation_context, get_first_matching_child_prim
from isaaclab.terrains import TerrainImporter, TerrainImporterCfg
......
......@@ -72,7 +72,7 @@ def get_camera_position():
try:
from pxr import UsdGeom
from isaaclab.sim.utils import stage as stage_utils
import isaaclab.sim.utils.stage as stage_utils
stage = stage_utils.get_current_stage()
if stage is not None:
......
......@@ -10,9 +10,9 @@ import torch
import trimesh
from trimesh.sample import sample_surface
import isaacsim.core.utils.prims as prim_utils
from pxr import UsdGeom
import isaaclab.sim.utils.prims as prim_utils
from isaaclab.sim.utils import get_all_matching_child_prims
# ---- module-scope caches ----
......
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