Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
6fd9082
adds initial code and implementation for xform class
Mayankm96 Dec 30, 2025
dcc4737
wraps code inside sdf block for optimization
Mayankm96 Dec 30, 2025
fcf6c1a
runs formatter
Mayankm96 Dec 30, 2025
f54ae43
updates doc strings
Mayankm96 Dec 30, 2025
2f9afad
fixes type-hinting
Mayankm96 Dec 30, 2025
c1413d4
removes isaac sim xform class from create_prim
Mayankm96 Dec 30, 2025
4652ac6
moves functions for pose to transforms module
Mayankm96 Dec 30, 2025
a10e419
adds api docs
Mayankm96 Dec 30, 2025
a1a714d
makes a function to abstract out convert world pose call
Mayankm96 Dec 30, 2025
d347aef
runs formatter
Mayankm96 Dec 30, 2025
9929597
adds test for different backend data types to create prim
Mayankm96 Dec 30, 2025
263054d
adds test for get usd references
Mayankm96 Dec 30, 2025
53a8ddb
adds error code
Mayankm96 Dec 30, 2025
590ff75
adds example for all transform calls
Mayankm96 Dec 30, 2025
8e5153f
runs formatter
Mayankm96 Dec 30, 2025
17d6936
fixes type issues and adds more tests for to_tuple
Mayankm96 Jan 2, 2026
836d0c6
Merge branch 'main' into fix/clear-xform
Mayankm96 Jan 2, 2026
62361ac
adds test for flaot precision in standardize
Mayankm96 Jan 2, 2026
113ac86
removes benchmark test
Mayankm96 Jan 2, 2026
b33eb9a
makes a habit of sending stage
Mayankm96 Jan 2, 2026
3a085d1
adds new implementations
Mayankm96 Jan 2, 2026
67faf0a
use inplace operation for ortho
Mayankm96 Jan 2, 2026
2bc8c1e
ensures stage is cached for deletion
Mayankm96 Jan 2, 2026
ac1619b
updates changelog
Mayankm96 Jan 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/source/api/lab/isaaclab.sim.utils.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
stage
queries
prims
transforms
semantics
legacy

Expand All @@ -34,6 +35,13 @@ Prims
:members:
:show-inheritance:

Transforms
----------

.. automodule:: isaaclab.sim.utils.transforms
:members:
:show-inheritance:

Semantics
---------

Expand Down
2 changes: 1 addition & 1 deletion source/isaaclab/config/extension.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]

# Note: Semantic Versioning is used: https://semver.org/
version = "0.51.1"
version = "0.52.0"

# Description
title = "Isaac Lab framework for Robot Learning"
Expand Down
17 changes: 17 additions & 0 deletions source/isaaclab/docs/CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,23 @@
Changelog
---------

0.52.0 (2026-01-02)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

* Added :mod:`~isaaclab.sim.utils.transforms` module to handle USD Xform operations.
* Added passing of ``stage`` to the :func:`~isaaclab.sim.utils.prims.create_prim` function
inside spawning functions to allow for the creation of prims in a specific stage.

Changed
^^^^^^^

* Changed :func:`~isaaclab.sim.utils.prims.create_prim` function to use the :mod:`~isaaclab.sim.utils.transforms`
module for USD Xform operations. It removes the usage of Isaac Sim's XformPrim class.


0.51.2 (2025-12-30)
~~~~~~~~~~~~~~~~~~~

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ def spawn_ground_plane(

# Spawn Ground-plane
if not stage.GetPrimAtPath(prim_path).IsValid():
create_prim(prim_path, usd_path=cfg.usd_path, translation=translation, orientation=orientation)
create_prim(prim_path, usd_path=cfg.usd_path, translation=translation, orientation=orientation, stage=stage)
else:
raise ValueError(f"A prim already exists at path: '{prim_path}'.")

Expand Down Expand Up @@ -327,6 +327,7 @@ def _spawn_from_usd_file(
translation=translation,
orientation=orientation,
scale=cfg.scale,
stage=stage,
)
else:
logger.warning(f"A prim already exists at prim path: '{prim_path}'.")
Expand Down
4 changes: 3 additions & 1 deletion source/isaaclab/isaaclab/sim/spawners/lights/lights.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ def spawn_light(
if stage.GetPrimAtPath(prim_path).IsValid():
raise ValueError(f"A prim already exists at path: '{prim_path}'.")
# create the prim
prim = create_prim(prim_path, prim_type=cfg.prim_type, translation=translation, orientation=orientation)
prim = create_prim(
prim_path, prim_type=cfg.prim_type, translation=translation, orientation=orientation, stage=stage
)

# convert to dict
cfg = cfg.to_dict()
Expand Down
4 changes: 2 additions & 2 deletions source/isaaclab/isaaclab/sim/spawners/shapes/shapes.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ def _spawn_geom_from_prim_type(

# spawn geometry if it doesn't exist.
if not stage.GetPrimAtPath(prim_path).IsValid():
create_prim(prim_path, prim_type="Xform", translation=translation, orientation=orientation)
create_prim(prim_path, prim_type="Xform", translation=translation, orientation=orientation, stage=stage)
else:
raise ValueError(f"A prim already exists at path: '{prim_path}'.")

Expand All @@ -291,7 +291,7 @@ def _spawn_geom_from_prim_type(
mesh_prim_path = geom_prim_path + "/mesh"

# create the geometry prim
create_prim(mesh_prim_path, prim_type, scale=scale, attributes=attributes)
create_prim(mesh_prim_path, prim_type, scale=scale, attributes=attributes, stage=stage)
# apply collision properties
if cfg.collision_props is not None:
schemas.define_collision_properties(mesh_prim_path, cfg.collision_props)
Expand Down
4 changes: 2 additions & 2 deletions source/isaaclab/isaaclab/sim/spawners/wrappers/wrappers.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def spawn_multi_asset(

# find a free prim path to hold all the template prims
template_prim_path = sim_utils.get_next_free_prim_path("/World/Template", stage=stage)
sim_utils.create_prim(template_prim_path, "Scope")
sim_utils.create_prim(template_prim_path, "Scope", stage=stage)

# spawn everything first in a "Dataset" prim
proto_prim_paths = list()
Expand Down Expand Up @@ -116,7 +116,7 @@ def spawn_multi_asset(
Sdf.CopySpec(env_spec.layer, Sdf.Path(proto_path), env_spec.layer, Sdf.Path(prim_path))

# delete the dataset prim after spawning
sim_utils.delete_prim(template_prim_path)
sim_utils.delete_prim(template_prim_path, stage=stage)

# set carb setting to indicate Isaac Lab's environments that different prims have been spawned
# at varying prim paths. In this case, PhysX parser shouldn't optimize the stage parsing.
Expand Down
1 change: 1 addition & 0 deletions source/isaaclab/isaaclab/sim/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@
from .queries import * # noqa: F401, F403
from .semantics import * # noqa: F401, F403
from .stage import * # noqa: F401, F403
from .transforms import * # noqa: F401, F403
Loading
Loading