-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Fix converted assets spawning without physics, and install the standalone importers by default #6935
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix converted assets spawning without physics, and install the standalone importers by default #6935
Changes from all commits
56ecfd7
54940e4
79b38c7
ed60409
f97e1b2
d5e4cb9
2f6bf12
153bdaf
8817a8d
ecdc05f
d8d4996
021f83b
bd283f2
480c68d
e1fcd0b
a78748f
820b8b7
cf4b624
f3652bf
25b7726
adb68ef
4ba8c8e
f947ebb
3b89155
b4c27af
27cb826
33fbc2d
3a4cea8
eff5d53
f38ef4b
e7cc57d
574bd9f
60b37dd
b48a6c1
d7d1adf
77e6abd
223ea16
2cd1a8f
36c5514
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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", | ||
|
|
@@ -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", | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 ----- | ||
|
|
@@ -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", | ||
|
|
@@ -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"] | ||
|
|
@@ -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]", | ||
| ] | ||
|
|
@@ -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" | ||
|
|
@@ -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. | ||
|
|
@@ -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", | ||
|
|
@@ -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 | ||
|
|
||
| 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. |
There was a problem hiding this comment.
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?