fix(isaac): resolve default Franka USD for Isaac Sim 6.0 asset move (closes #110)#111
Merged
cagataycali merged 1 commit intoJun 18, 2026
Conversation
…loses strands-labs#110) NVIDIA relocated the bundled Franka Panda asset in Isaac Sim 6.0 from `{assets_root}/Isaac/Robots/Franka/franka.usd` (4.x) to `{assets_root}/Isaac/Robots/FrankaRobotics/FrankaPanda/franka.usd`. Every example loading the default Franka USD 404'd on 6.0 because the hardcoded sub-path was the stale 4.x one. Make the default Franka resolution version-robust in all three helpers (`examples/isaac_gs/scene.py::_default_franka_usd`, `examples/libero/run_isaac.py::_resolve_robot_asset`, `examples/libero/run_isaac_agent.py::_resolve_robot_asset`): HEAD-probe the 6.0 vendor path first, fall back to the legacy 4.x path, and on a definitive miss raise a clear "pass --robot-usd/--robot-urdf" hint. A non-HTTP root (e.g. an `omniverse://` Nucleus path) is inconclusive, so it degrades to the 6.0 candidate rather than failing on a probe it can't perform. Verified against the public Omniverse bucket: the 6.0 path returns 200, the legacy path 404s. Secondary: propagate render_demo failures to the process exit status. Isaac's SimulationApp fast-shutdown swallowed the non-zero exit, so a failed build_default_scene exited 0 and hid the failure from CI. The __main__ entry point now catches, logs, and forces a non-zero exit via os._exit after teardown.
cagataycali
approved these changes
Jun 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
NVIDIA relocated the bundled Franka Panda asset in Isaac Sim 6.0, from the
4.x path
{assets_root}/Isaac/Robots/Franka/franka.usdto a vendor folder at{assets_root}/Isaac/Robots/FrankaRobotics/FrankaPanda/franka.usd. Everyexample that loads the default Franka USD 404'd on 6.0 because the sub-path was
hardcoded to the stale 4.x layout.
This PR makes the default Franka resolution version-robust in all three
affected helpers:
examples/isaac_gs/scene.py→_default_franka_usd()(the reproduced failure)examples/libero/run_isaac.py→_resolve_robot_asset()examples/libero/run_isaac_agent.py→_resolve_robot_asset()Resolution logic (shared shape in each file):
pass --robot-usd/--robot-urdf(resp.robot_usd=...) hint naming thetried paths.
omniverse://Nucleus path that can't beHEAD-probed) is treated as inconclusive and degrades to the 6.0
candidate rather than failing on a probe it can't perform —
add_robotthen surfaces a clear error if it's wrong.
Secondary (also from the issue)
render_demoexited 0 even whenbuild_default_sceneraised, becauseIsaac's
SimulationAppfast-shutdown swallows the non-zero exit. The__main__entry point now catches, logs, flushes, and forces a non-zero exitvia
os._exit(1)after teardown, so CI/scripts notice the failure.Why
The 4.x → 6.0 asset move is permanent and the bucket layout differs by release,
so a single hardcoded sub-path can't be correct for both. HEAD-probing the
candidates makes the examples run out-of-the-box on whichever Isaac Sim version
the host has, while keeping the explicit
--robot-usd/--robot-urdfoverrides as the escape hatch.
Test surface
hatch run lint— pass (black/isort/flake8 overstrands_robots_sim+examples).hatch run test— 203 passed, 33 skipped (skips are GPU/Isaac-gated)._resolve_*correctly selects the 6.0 path.No new test failures introduced. (The 7 environmental failures in
test_rendering.py/test_policy_runner.pymentioned in the issue contextare not part of this repo's
hatch run testslice — that slice is thestrands_robots_sim/isaac/tests/Isaac unit/lazy-import suite, which is fullygreen here.)
Acceptance criteria (from #110)
--robot-usd/--robot-urdf" hint on a definitive miss.render_demofailure to the process exit status.Out-of-scope follow-ups
round-trips on the default path; if that ever becomes a concern on
cold-start-sensitive CI, a small per-process cache of the resolved root could
be a separate optimization.
Closes #110.