Fix latest OV stack integration - #7626
Conversation
|
run-ci |
Greptile SummaryThis PR repairs integration with newer OvPhysX/OVStage/OVRTX packages by deriving the required OmniClient release from installed OvPhysX metadata and publishing rigid transforms through the active scene-data backend.
Confidence Score: 5/5The PR appears safe to merge, with the changed dependency-resolution and transform-publication paths matching the current runtime and backend contracts. No concrete behavioral, security, or repository-rule violation remains after checking the runtime initialization order, CI execution context, compatibility-marker behavior, and current Newton and OvPhysX scene-data implementations. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
W[Installed OvPhysX wheel] --> M[Read OVStage OmniClient marker]
M --> V[Resolve omniverseclient version]
V --> C[Install matched dependency in wheelhouse CI]
V --> R[Validate runtime environment]
R --> P[Bootstrap OvPhysX]
S[SimulationContext] --> D[Active SceneDataBackend]
D --> T[World rigid transforms and paths]
A[Authored USD scales] --> K[Transform composition kernel]
T --> K
K --> O[OVStage omni:xform updates]
Reviews (1): Last reviewed commit: "Fix latest OV stack integration" | Re-trigger Greptile |
There was a problem hiding this comment.
Isaac Lab Review Bot
The OvPhysX/OmniClient compatibility guard and backend-agnostic OVStage transform sourcing are internally consistent, but the changed exception contract of import_ovphysx needs to be documented.
- Design and architecture: Using the active
SceneDataBackendfor OVStage rigid transforms cleanly generalizes the path beyond Newton while preserving scale and world-pose handling. The stricter missing-marker behavior in the CI resolver is appropriate for wheelhouse jobs that must resolve an exact matched dependency and need not mirror the runtime fallback. - API:
import_ovphysxnow raisesRuntimeErrorfor malformed compatibility metadata or an OmniClient mismatch, but itsRaisessection still documents onlyModuleNotFoundError. The public helper’s documented exception contract should include this new failure mode. - Implementation: The marker parsing, installed-distribution lookup, CI installation path, backend transform indexing, Warp kernel inputs, zero-copy write ordering, and teardown state were traced and are internally consistent. The private kernel and state renames are updated across their consumers and tests.
Minor fixes needed. Posted 1 actionable finding inline.
Automated review; human maintainers own approval decisions.
| if exc.name != "ovphysx": | ||
| raise | ||
| raise ModuleNotFoundError(_OVPHYSX_INSTALL_MESSAGE, name="ovphysx") from exc | ||
| _validate_ovphysx_omniverseclient() |
There was a problem hiding this comment.
🔵 Suggestion · Api — New RuntimeError not in documented Raises
_validate_ovphysx_omniverseclient() can raise RuntimeError for a mismatched or malformed marker, but the import_ovphysx docstring still declares only ModuleNotFoundError. Callers that guard optional-backend selection with except ModuleNotFoundError will now see an undocumented error escape. Add the RuntimeError case to the Raises: section so the stated contract matches the implementation.
Description
Fix the Isaac Lab integration boundaries exposed by testing the latest internal OV stack:
omniverseclientrelease embedded in the installed OvPhysX wheel and install it before importing OvPhysX in wheelhouse CI jobs.SceneDataBackend, enabling OvPhysX as well as Newton while preserving authored scale and world-pose semantics.The original internal run used
omniverseclient==2.72.3with an OvPhysX wheel whoseovstage-omniclient.versionrequires2.74.0-release.7316+gl.ec99a64b. That mismatch caused 544 of 569isaaclab_ovfailures to share the sameovphysx_create_instance()startup error. Installing the marker-selected release removes that cascade.The subsequent rendering run exposed 22 additional physics failures. The USD stage contained the required PhysX schemas, but OVStage population dropped them because its schema registry is independent of the host USD
Plug.Registry. Registeringovphysx.codeless_schema_root()withovstage.population.register_usd_schemas()fixes all 11 contact-reporter and all 11 fixed-tendon rendering cases.Original run: https://github.com/NVIDIA-Omniverse/IsaacLab-Internal/actions/runs/33908292244
Baseline run: https://github.com/NVIDIA-Omniverse/IsaacLab-Internal/actions/runs/33908863254
The current public package pins remain unchanged; the dynamic OmniClient resolution is limited to internal wheelhouse overlays. Schema registration is feature-gated for compatibility with the currently pinned public OvPhysX/OVStage stack.
Type of change
Release backport
developValidation
Tested with:
0.5.0.3776150.6.20.2.0.3773492.74.01.6.0rc1595.58.03Passing focused checks:
19 passed: OvPhysX manager lifecycle and schema-registration tests.14 passed, 4 skipped; CPU15 passed, 4 skipped.3 passed, 2 skipped.60 passed: runtime-import, OVRTX renderer-contract, and deformable-binding focused tests from the first integration pass.uv run isaaclab -f.Full rendering correctness after the schema fix:
All 22 physics-caused rendering failures are fixed. The remaining failures are image comparisons: four on the legacy path and 39 on the OVStage path. Nine image mismatches were previously masked by the physics initialization failures.
A separate CPU-only Shadow Hand tendon run now reaches an OvPhysX 0.6.2 native segmentation fault in
PhysX.step_sync. The GPU path used by rendering passes; this appears to be an upstream OvPhysX CPU issue and is not hidden by this change.Screenshots
The investigation generated full golden/actual/diff galleries and JUnit XML as a local test artifact. They are intentionally not committed because they are diagnostic output rather than source assets.
Checklist
pre-commitchecks withuv run isaaclab -fsource/<pkg>/changelog.d/for every touched packageCONTRIBUTORS.mdor my name already exists there