Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
56ecfd7
Use usd-exchange as the only standalone USD provider
hujc7 Aug 7, 2026
54940e4
Add an importers extra for the standalone URDF/MJCF importers
hujc7 Aug 7, 2026
79b38c7
Select a physics variant on converted assets
hujc7 Aug 7, 2026
ed60409
Run the converter tests in the kit-less image
hujc7 Aug 7, 2026
f97e1b2
Merge remote-tracking branch 'upstream/develop' into jichuanh/usd-exc…
hujc7 Aug 7, 2026
d5e4cb9
Consolidate the changelog fragments
hujc7 Aug 8, 2026
2f6bf12
Address review findings on the importers extra
hujc7 Aug 8, 2026
153bdaf
Reject importers against an environment that already has Isaac Sim
hujc7 Aug 8, 2026
8817a8d
Merge remote-tracking branch 'upstream/develop' into jichuanh/usd-exc…
hujc7 Aug 8, 2026
ecdc05f
Drop the aarch64-only usd-exchange override
hujc7 Aug 8, 2026
d8d4996
Update the install contracts for the importers feature
hujc7 Aug 8, 2026
021f83b
Merge remote-tracking branch 'upstream/develop' into jichuanh/usd-exc…
hujc7 Aug 8, 2026
bd283f2
Merge remote-tracking branch 'upstream/develop' into jichuanh/usd-exc…
hujc7 Aug 10, 2026
480c68d
Address review: keep public APIs and the smoke helper unchanged
hujc7 Aug 10, 2026
e1fcd0b
Document only the flag the wheel install actually needs
hujc7 Aug 10, 2026
a78748f
Select a physics backend for converter previews
hujc7 Aug 10, 2026
820b8b7
Fork only the importers extra in uv conflicts
hujc7 Aug 11, 2026
cf4b624
Document the importers extra in the installation guide
hujc7 Aug 11, 2026
f3652bf
Document the importers extra with verified commands
hujc7 Aug 11, 2026
25b7726
Merge remote-tracking branch 'upstream/develop' into jichuanh/usd-exc…
hujc7 Aug 11, 2026
adb68ef
Merge remote-tracking branch 'upstream/develop' into jichuanh/usd-exc…
hujc7 Aug 11, 2026
4ba8c8e
Sync uv.lock with the bumped package versions
hujc7 Aug 11, 2026
f947ebb
Trim the kit-less collection comment
hujc7 Aug 11, 2026
3b89155
Let the importers extra install beside Isaac Sim
hujc7 Aug 12, 2026
b4c27af
Drop the Isaac Sim incompatibility from the importers docs
hujc7 Aug 12, 2026
27cb826
Merge remote-tracking branch 'upstream/develop' into jichuanh/usd-exc…
hujc7 Aug 12, 2026
33fbc2d
Reject a variant selection the set does not offer
hujc7 Aug 12, 2026
3a4cea8
Restore enum members inside lists and tuples
hujc7 Aug 12, 2026
eff5d53
Record the standalone USD provider in benchmark metadata
hujc7 Aug 12, 2026
f38ef4b
Merge remote-tracking branch 'upstream/develop' into jichuanh/usd-exc…
hujc7 Aug 12, 2026
e7cc57d
Sync uv.lock with the bumped package versions
hujc7 Aug 12, 2026
574bd9f
Pin Newton after the extra features install
hujc7 Aug 12, 2026
60b37dd
Simplify converter comments and test fixtures
hujc7 Aug 12, 2026
b48a6c1
Install the standalone importers by default
hujc7 Aug 12, 2026
d7d1adf
Merge remote-tracking branch 'upstream/develop' into jichuanh/usd-exc…
hujc7 Aug 12, 2026
77e6abd
Write converter test output under tmp_path
hujc7 Aug 12, 2026
223ea16
Merge remote-tracking branch 'upstream/develop' into jichuanh/usd-exc…
hujc7 Aug 12, 2026
2cd1a8f
Choose the importer backend by availability, not installation
hujc7 Aug 12, 2026
36c5514
Trim the importer backend comments to the rationale's one home
hujc7 Aug 12, 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: 4 additions & 4 deletions .github/actions/validate-kitless-image/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,8 @@ runs:
print("ovrtx renderer initialized")
'

# The Newton training probe is the shared one architecture CI also runs, so
# the command and its assertions live in one place. pytest goes only into
# this disposable layer; reinstalling the workspace would fail against the
# read-only source mount.
# Discover files by grep, not by pointing pytest at a directory: this image has no Isaac
# Sim, and collecting a directory imports every module to read its markers.
docker run --rm --gpus all --network host \
"${mount_args[@]}" \
"$IMAGE_TAG" \
Expand All @@ -67,6 +65,8 @@ runs:
python -m pytest \
source/isaaclab/test/install_ci/misc/cartpole_training_smoke.py::test_train_cartpole_state_completes \
source/isaaclab/test/benchmark/test_asset_suite_runtime_semantics.py \
source/isaaclab/test/sim/test_urdf_converter.py \
source/isaaclab/test/sim/test_mjcf_converter.py \
-q -p no:cacheprovider
'

Expand Down
5 changes: 3 additions & 2 deletions docker/Dockerfile.kitless
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,13 @@ COPY source/ source/
COPY isaaclab.sh ./

# Same entry point as Dockerfile.base. The selectors are explicit because a bare
# --install excludes `ov` and `visualizer`; both take `[all]` here. The venv pins
# --install excludes `ov` and `visualizer`; both take `[all]` here. `importers` carries
# the standalone URDF/MJCF importers that replace the Isaac Sim ones. The venv pins
# python3.12 to match the runtime stage's libpython3.12, and isaaclab.sh resolves
# VIRTUAL_ENV first.
RUN uv venv --python /usr/bin/python3.12 --seed --no-managed-python "${VIRTUAL_ENV}" \
&& chmod +x "${ISAACLAB_PATH}/isaaclab.sh" \
&& "${ISAACLAB_PATH}/isaaclab.sh" --install newton,rl[all],ov[all],visualizer[all] \
&& "${ISAACLAB_PATH}/isaaclab.sh" --install newton,rl[all],ov[all],visualizer[all],importers \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see importers anywhere in the PR for isaaclab.sh -i, is this correct?

&& python -c "import importlib.metadata as m; \
names = {d.metadata['Name'].lower() for d in m.distributions()}; \
assert 'isaacsim' not in names; \
Expand Down
6 changes: 3 additions & 3 deletions docs/source/api/lab/isaaclab.sim.converters.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Mesh Converter
:members:
:inherited-members:
:show-inheritance:
:exclude-members: __init__
:exclude-members: __init__, PhysicsVariant


URDF Converter
Expand All @@ -53,7 +53,7 @@ URDF Converter
:members:
:inherited-members:
:show-inheritance:
:exclude-members: __init__
:exclude-members: __init__, PhysicsVariant

MJCF Converter
--------------
Expand All @@ -67,4 +67,4 @@ MJCF Converter
:members:
:inherited-members:
:show-inheritance:
:exclude-members: __init__
:exclude-members: __init__, PhysicsVariant
24 changes: 8 additions & 16 deletions docs/source/how-to/import_new_asset.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ use the Omniverse Kit to edit the asset and export it to other file formats. Isa
these importers by default. They can also be enabled manually in Omniverse Kit.

Isaac Lab's URDF and MJCF converter utilities first use the importer APIs from
Isaac Sim when the full runtime is installed. In kit-less environments, install
the standalone importer wheel as described in
Isaac Sim when the full runtime is installed. In kit-less environments they fall back
to the standalone importers described in
:ref:`installation-standalone-importers` below.
The Kit visualizer and GUI import dialogs still require an Omniverse Kit runtime.

Expand All @@ -43,25 +43,17 @@ For more details on instanceable assets, please check the Isaac Sim `documentati
Standalone URDF/MJCF importers
------------------------------

The URDF and MJCF converter scripts can run without Isaac Sim when the standalone
``isaacsim-asset-isolated`` wheel is installed in the active environment. The wheel is not
published on PyPI, so replace ``PACKAGE_INDEX_URL`` with the package index that hosts it:
The URDF and MJCF converter scripts run without Isaac Sim. The standalone
``isaacsim-asset-isolated`` wheel is a base dependency, so no extra install step is needed.
Optionally pass ``--viz newton`` (or ``rerun`` / ``viser``) to preview the converted asset in a
kit-less Isaac Lab visualizer:

.. code-block:: bash

uv pip install "isaacsim-asset-isolated>=6.0,<6.1" \
--extra-index-url "PACKAGE_INDEX_URL"

After installing the wheel, run conversion in the kit-less environment. Optionally pass
``--viz newton`` (or ``rerun`` / ``viser``) to preview the converted asset in a kit-less
Isaac Lab visualizer:

.. code-block:: bash

python scripts/tools/convert_urdf.py \
uv run python scripts/tools/convert_urdf.py \
path/to/robot.urdf path/to/output_dir --merge_joints

python scripts/tools/convert_mjcf.py \
uv run python scripts/tools/convert_mjcf.py \
path/to/model.xml path/to/output.usd --merge_mesh

If Isaac Sim is installed in the same environment, Isaac Lab uses the Isaac Sim importer
Expand Down
8 changes: 4 additions & 4 deletions docs/source/setup/installation/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -304,8 +304,8 @@ Install `uv <https://docs.astral.sh/uv/getting-started/installation/>`__ or

``-i`` always installs the core source packages. With no value, it also installs the optional
``mimic`` and ``teleop`` submodules plus the default Newton, RL, and visualizer dependencies.
It does not install ``tetrahedralization``, ``contrib``, ``ov``, or Isaac Sim; request those
explicitly when needed.
It does not install ``tetrahedralization``, ``contrib``, ``ov``, or Isaac Sim;
request those explicitly when needed.

Use ``-i core`` for core packages only. Otherwise, pass a comma-separated list of selectors:

Expand Down Expand Up @@ -603,8 +603,8 @@ Extras can be combined freely: none of them conflict, so any set of extras -- in
the Isaac Sim and OV backend stacks together -- resolves into a single environment.
Use ``all`` to get every backend, RL library, and visualizer in one flag. The
specialized extras (``rlinf``, ``mimic``, ``teleop``, ``tetrahedralization``, ``video``,
``leapp``) and the developer ``test`` tooling are not part of ``all``; request them by
name.
``leapp``) and the developer ``test`` tooling are not part of ``all``;
request them by name.

.. isaaclab-uv-wheel-install::

Expand Down
47 changes: 30 additions & 17 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ dependencies = [
"protobuf>=4.25.8,!=5.26.0",
"hidapi>=0.14.0",
"gymnasium>=1.2.0",
"trimesh",
"trimesh>=4.6.8", # lower bound inherited from newton[importers]
"pyglet>=2.1.6,<3",
"transformers==4.57.6",
"einops",
Expand All @@ -66,11 +66,15 @@ dependencies = [
"pin ; platform_system == 'Linux' and (platform_machine == 'x86_64' or platform_machine == 'aarch64')",
"pin-pink==3.3.0 ; platform_system == 'Linux' and (platform_machine == 'x86_64' or platform_machine == 'aarch64')",
"daqp==0.8.5 ; platform_system == 'Linux' and (platform_machine == 'x86_64' or platform_machine == 'aarch64')",
# OpenUSD (kit-less mode). Both packages vendor a complete ``pxr`` runtime, so
# they must never co-install: usd-core supplies pxr where it has wheels (x86_64),
# usd-exchange supplies it on aarch64 (where usd-core has no wheel).
"usd-core>=25.11,<26.0 ; platform_machine == 'x86_64' or platform_machine == 'AMD64'",
"usd-exchange>=2.2 ; platform_machine == 'aarch64'",
# OpenUSD (kit-less mode). Use the same provider required by the URDF and MJCF importer
# packages so another complete ``pxr`` runtime cannot co-install with it. Two providers in
# one environment overwrite each other's files, and removing either then breaks ``pxr``.
# usd-exchange 2.3.0 vendors USD 25.5, matching the Isaac Sim 6.0 wheel stack.
"usd-exchange==2.3.0",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're removing core completely in favor of exchange. Is there anything we're loosing? Is 2.3.0 OV libraries friendly?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should be no? There's a commit to update usdex to 26.08. I checked with author and it's expected this month if everything goes well.

# Standalone URDF/MJCF importers, so conversion works without Isaac Sim. They install
# alongside it without displacing it: Kit serves ``isaacsim.asset`` from its extension
# roots when the runtime is present, and the standalone packages serve it otherwise.
"isaacsim-asset-isolated>=6.0,<6.1",
# avoid broken hf-xet pre-release cached on NVIDIA Artifactory
"hf-xet>=1.4.1,<2.0.0 ; platform_machine == 'x86_64' or platform_machine == 'AMD64' or platform_machine == 'aarch64'",
# ----- tasks -----
Expand All @@ -87,9 +91,19 @@ dependencies = [
# ----- newton (default physics engine) -----
# Loose bound so the wheel co-resolves with isaacsim's newton[sim]==1.2.0 pin; the
# exact git commit is forced via [tool.uv].override-dependencies (uv sync only).
# The importers extra carries the mesh-processing deps (coacd, fast-simplification,
# ...) that honoring USD-authored ``physics:approximation`` requires.
"newton[sim,importers]>=1.2.0",
"newton[sim]>=1.2.0",
# Import and mesh-processing packages used by Newton, including the ones that honoring
# USD-authored ``physics:approximation`` requires. Keep these explicit instead of selecting
# newton[importers], whose standalone USD dependency would overlap with usd-exchange.
"requests>=2.25.0",
"scipy>=1.11.0",
"coacd>=1.0.7",
"fast-simplification>=0.1.11",
"alphashape>=1.3.1",
"meshio>=5.3.5",
"pycollada>=0.9",
"resolve-robotics-uri-py>=0.4.0",
"open3d>=0.19.0 ; python_version < '3.13' and (sys_platform != 'linux' or platform_machine != 'aarch64')",
# Loose bound co-resolves with isaacsim's ==0.2.0; the override below forces >=0.4.1.
"newton-usd-schemas>=0.2.0",
"PyOpenGL-accelerate>=3.1.0",
Expand Down Expand Up @@ -146,6 +160,7 @@ rerun = [
]

isaacsim = ["isaacsim[all,extscache]==6.0.1.0"]

ov = ["ovphysx==0.5.9", "ovrtx>=0.4.0,<0.5.0", "ovstage==0.1.0.346039"]
ovphysx = ["ovphysx==0.5.9", "ovstage==0.1.0.346039"]
ovrtx = ["ovrtx>=0.4.0,<0.5.0", "ovstage==0.1.0.346039"]
Expand Down Expand Up @@ -179,9 +194,9 @@ leapp = [
"leapp>=0.5.2",
]
# Every backend, RL library, and visualizer in one flag. No extra is forked in
# [tool.uv].conflicts, so Isaac Sim and both OV backends resolve into a single
# environment. The specialized extras (rlinf, mimic, teleop, tetrahedralization,
# video, leapp) and the developer ``test`` tooling stay opt-in by name.
# [tool.uv].conflicts, so any combination resolves into a single environment. The
# specialized extras (rlinf, mimic, teleop, tetrahedralization, video, leapp)
# and the developer ``test`` tooling stay opt-in by name.
all = [
"isaaclab-dev[sb3,skrl,rl-games,rsl-rl,viser,rerun,isaacsim,ov]",
]
Expand All @@ -192,6 +207,7 @@ all = [
# ``test_version_single_source`` fails CI if they drift.
[tool.isaaclab.versions]
isaacsim = "6.0.1.0"
usd_exchange = "2.3.0"
torch = "2.11.0"
torchvision = "0.26.0"
torchaudio = "2.11.0"
Expand Down Expand Up @@ -335,6 +351,7 @@ markers = [
"benchmark: test covers the Isaac Lab benchmark framework and infrastructure",
"rendering: test exercises the rendering / camera / visualizer pipeline",
"smoke: tests for core installation, task, and RL functionality",
"kitless: test must pass inside the Kit-less container, which has no Isaac Sim runtime",
]

# Add pypi.nvidia.com so that `uv pip install isaaclab[isaacsim]` works without --extra-index-url.
Expand Down Expand Up @@ -380,7 +397,7 @@ override-dependencies = [
"numpy>=2",
"mujoco~=3.11.0",
"mujoco-warp~=3.11.0",
"newton[sim,importers] @ git+https://github.com/newton-physics/newton.git@release-1.5",
"newton[sim] @ git+https://github.com/newton-physics/newton.git@release-1.5",
# Force the Newton-matched schemas over isaacsim's ==0.2.0 pin.
"newton-usd-schemas>=0.4.1",
"torch==2.11.0",
Expand All @@ -393,10 +410,6 @@ override-dependencies = [
# ovphysx caps packaging at <24 and isaacsim-core pins ==26.0; both caps are
# stricter than the code needs, so widening lets them resolve together at 26.0.
"packaging>=20,<27",
# usd-exchange and usd-core each vendor a full ``pxr`` built against a different
# USD version, and newton[importers] pulls usd-exchange unmarked. Re-impose the
# platform split from [project.dependencies] so only one lands per platform.
"usd-exchange>=2.2 ; platform_machine == 'aarch64'",
]
python-preference = "only-managed"
package = false
Expand Down
16 changes: 7 additions & 9 deletions scripts/tools/convert_mjcf.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@
"""Parse CLI first so we can decide whether to launch Isaac Sim Kit."""

import argparse
from importlib import metadata

from isaaclab.app import AppLauncher, add_launcher_args, launch_simulation
from isaaclab.utils.version import standalone_importers_available

parser = argparse.ArgumentParser(description="Utility to convert a MJCF into USD format.")
parser.add_argument("input", type=str, help="The path to the input MJCF file.")
Expand Down Expand Up @@ -82,14 +82,12 @@
add_launcher_args(parser)
args_cli = parser.parse_args()

# The MJCF importer ships as a Kit extension unless the standalone importer wheel is installed, so
# Kit is only required when the wheel is absent. With the wheel present the conversion runs kitlessly
# and the kitless visualizers can host the preview.
try:
metadata.distribution("isaacsim-asset-isolated")
args_cli.require_kit = False
except metadata.PackageNotFoundError:
args_cli.require_kit = True
# Prefer kit-less: it skips Kit startup and the kitless visualizers can host the preview.
args_cli.require_kit = not standalone_importers_available()

# ``launch_simulation`` receives a bare ``PhysicsCfg()`` placeholder, so name the backend the
# runtime provides; without it the preview builds a simulation with no physics manager.
args_cli.physics = "isaacsim_physx" if args_cli.require_kit else "newton_mjwarp"

# Report the missing importer before converting anything. Without this the launcher reports only
# that Isaac Sim is absent, which does not mention the wheel that would make this run kitlessly.
Expand Down
16 changes: 7 additions & 9 deletions scripts/tools/convert_urdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@
"""Parse CLI first so we can decide whether to launch Isaac Sim Kit."""

import argparse
from importlib import metadata

from isaaclab.app import AppLauncher, add_launcher_args, launch_simulation
from isaaclab.utils.version import standalone_importers_available

parser = argparse.ArgumentParser(description="Utility to convert a URDF into USD format.")
parser.add_argument("input", type=str, help="The path to the input URDF file.")
Expand Down Expand Up @@ -78,14 +78,12 @@
add_launcher_args(parser)
args_cli = parser.parse_args()

# The URDF importer ships as a Kit extension unless the standalone importer wheel is installed, so
# Kit is only required when the wheel is absent. With the wheel present the conversion runs kitlessly
# and the kitless visualizers can host the preview.
try:
metadata.distribution("isaacsim-asset-isolated")
args_cli.require_kit = False
except metadata.PackageNotFoundError:
args_cli.require_kit = True
# Prefer kit-less: it skips Kit startup and the kitless visualizers can host the preview.
args_cli.require_kit = not standalone_importers_available()

# ``launch_simulation`` receives a bare ``PhysicsCfg()`` placeholder, so name the backend the
# runtime provides; without it the preview builds a simulation with no physics manager.
args_cli.physics = "isaacsim_physx" if args_cli.require_kit else "newton_mjwarp"

# Report the missing importer before converting anything. Without this the launcher reports only
# that Isaac Sim is absent, which does not mention the wheel that would make this run kitlessly.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Added
^^^^^

* Added the standalone URDF and MJCF importers as base dependencies, so conversion works without
Isaac Sim and without an extra install step.

* Added :attr:`~isaaclab.sim.converters.AssetConverterBaseCfg.physics_variant` to choose which
``"Physics"`` variant the URDF and MJCF converters select.

Fixed
^^^^^

* Fixed ``scripts/tools/convert_urdf.py`` and ``scripts/tools/convert_mjcf.py`` crashing when the
converted asset was previewed with a kitless visualizer (``--viz newton``, ``--viz rerun``, or
``--viz viser``), by selecting the physics backend that matches the runtime.

* Fixed URDF and MJCF conversion producing assets with no joints, articulation roots, or mass
properties.

* Fixed MJCF conversion failing with ``Cannot find a valid schema for 'MjcSceneAPI'``.

* Fixed installation failures caused by overlapping standalone USD providers by using
``usd-exchange`` on all supported platforms and installing required Newton mesh-processing
packages directly.

* Fixed :meth:`~isaaclab.utils.dict.class_to_dict` expanding enum values into their internal
members.

Changed
^^^^^^^

* Changed :meth:`~isaaclab.sim.utils.select_usd_variants` to raise when a variant set exists on the
prim but does not offer the requested variant, which includes
:attr:`~isaaclab.sim.UsdFileCfg.variants` at spawn time. USD accepts such a selection and composes
the prim as if nothing were selected, so the asset used to spawn silently without what the variant
carries. A variant set the prim does not have is still skipped with a warning. Set a variant the
asset offers, or drop the entry.
27 changes: 27 additions & 0 deletions source/isaaclab/isaaclab/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"""Package containing the core framework."""

import importlib.metadata
import importlib.util
import os
import sys

Expand Down Expand Up @@ -79,7 +80,33 @@ def _should_demote(path: str) -> bool:
os.environ["PYTHONPATH"] = os.pathsep.join(env_clean + env_demoted)


def _expose_mujoco_usd_schemas():
"""Put the MuJoCo USD schemas on OpenUSD's plugin search path.

``mujoco-usd-converter`` ships them as a codeless schema plugin that it registers when the
package is imported. OpenUSD builds its schema registry once, on the first schema query, and
ignores plugins registered after that -- so MJCF conversion fails with "Cannot find a valid
schema for ``MjcSceneAPI``" whenever anything touched a schema first. Adding the plugin to the
search path lets OpenUSD find it while building the registry, so importing the converter late
no longer matters.

OpenUSD reads the search path while building the registry, so this only helps while the
registry is still unbuilt. A host that queries a schema before importing Isaac Lab has to put
the plugin directory on ``PXR_PLUGINPATH_NAME`` itself.
"""
spec = importlib.util.find_spec("mujoco_usd_converter")
if spec is None or spec.origin is None:
return
plugins = os.path.join(os.path.dirname(spec.origin), "plugins")
if not os.path.isdir(plugins):
return
search_path = os.environ.get("PXR_PLUGINPATH_NAME", "")
if plugins not in search_path.split(os.pathsep):
os.environ["PXR_PLUGINPATH_NAME"] = os.pathsep.join(filter(None, (search_path, plugins)))


_deprioritize_prebundle_paths()
_expose_mujoco_usd_schemas()


try:
Expand Down
1 change: 1 addition & 0 deletions source/isaaclab/isaaclab/benchmark/capture.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ def capture_versions(bm: Any) -> Versions:
mujoco=md.get("mujoco_version"),
cuda_bindings=md.get("cuda_bindings_version"),
usd_core=md.get("usd_core_version"),
usd_exchange=md.get("usd_exchange_version"),
isaaclab_release=md.get("isaaclab_release_version"),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,10 @@ def _get_version_info(self) -> None:
# Key dependencies
self._record("gymnasium", self._get_pkg_version("gymnasium"))
self._record("cuda_bindings", self._get_pkg_version("cuda-bindings"))
# usd-exchange is the standalone USD provider; usd-core only appears in environments
# that predate the switch, so record whichever one is installed.
self._record("usd_core", self._get_pkg_version("usd-core"))
self._record("usd_exchange", self._get_pkg_version("usd-exchange"))

# Release version from root VERSION file
version_file = os.path.join(_REPO_ROOT, "VERSION")
Expand Down
Loading
Loading