Skip to content

Add the OV renderer lease and teleop-owned OVXR adapter - #8787

Draft
hougantc-nvda wants to merge 1 commit into
isaac-sim:mainfrom
hougantc-nvda:hougantc/kitless-borrowed-renderer
Draft

hougantc-nvda wants to merge 1 commit into
isaac-sim:mainfrom
hougantc-nvda:hougantc/kitless-borrowed-renderer

Conversation

@hougantc-nvda

@hougantc-nvda hougantc-nvda commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Description

Review stack · 1/5: #8787 → #8788 → #8789 → #8790 → #8791

Review only this PR’s changes. The PRs target main; the comparison isolates this layer from its predecessors.

Connect kitless Isaac Lab teleoperation to Isaac Capture's OVXR session using the simulation's existing OVRTX renderer and OVStage. An explicit render lease lets Capture borrow those resources while Lab retains ownership and controls their lifetime.

The responsibilities are:

  • isaaclab_ov: owns the renderer, stage and scene publication. The generic lease serializes borrowed access without depending on XR or teleoperation.
  • isaaclab_teleop: implements the OVXR adapter in ov_libraries_xr.py and bootstrap in ovxr_session.py. It binds the environment, supplies XR render products, publishes scene/anchor updates and coordinates shutdown.
  • Isaac Capture: owns the OVXR session and render worker, and makes borrowed OpenXR handles available to the teleoperation input session.

Bootstrap reserves the lease before environment construction; the render worker starts afterward. Shutdown stops input consumers, closes the XR session and retires the lease before Lab destroys the renderer/stage. Pre-worker failure releases the lease before the caller closes the environment; interrupted bootstrap construction restores its process state. Failed retirement preserves resources for cleanup by their owning thread. The current lease supports one environment and a private rendering OVStage.

Lease/thread-transfer logic lives in render_lease.py; publication_buffers.py retains storage until native writes finish. Ordinary rendering stays in ovrtx_renderer.py, with existing public imports preserved. Without a lease, normal rendering continues; while resources are borrowed, conflicting camera rendering, scene writes and destruction are rejected.

See OVXR adapter ownership and lifecycle for details.

Dependencies: compatible Isaac Capture OVXR packages and the provider upgrade in #8858. Native-provider defaults are unchanged.

Type of change

  • New feature
  • Bug fix
  • Documentation update

Testing

Results cover the cumulative five-PR stack on main 6ef40d19a6f8d3770f86b5c4df3f8ccfb6a25f95. Kitless checks use Isaac Capture ae48621f1cc13054c2246210d8f92d30e27fe354 built from source using Python 3.12; Kit checks use Lab's upstream locked Capture selection. They are not independent full-repository results for each PR.

  • 1,039 cases across 51 selected Lab/Kit files passed, with no remaining failures or skips. Coverage includes ordinary rendering, native cross-GPU publication, graph capture, startup interruption, failed-drain ownership, retargeting, task selectors, and 140 Kit-selected cases including launch/replay and Scene UI.
  • Five Omen IWER scenes passed stereo/task-object inspection, meaningful input, Reset and normal mirror-close shutdown: GR1T2 CPU and split-GPU Newton, G1 locomanipulation CPU, fixed-base G1 Newton and SO101 CPU. Humanoid PiP was checked; SO101 uses mirror only. Reconnect/resumed input was checked for G1 and GR1T2 Newton.
  • The ordinary Kit headless Franka XR path passed stereo scene, motion, Reset and reconnect checks. It ended by deliberate owner interrupt after client disconnect; its detached CloudXR service was explicitly stopped afterward.
  • Formatting, changelog checks, warning-as-error Sphinx and the kitless dependency/selected-extra checks passed. The installed Capture wheel and staged package files were verified identical.

Limits: these are synthetic IWER checks, not physical-headset acceptance or full task completion. Cold renderer attach, intermittent GR1T2 first-Play recovery and SO101 cube retention remain open. Kit's upstream dependency selection reports nine metadata inconsistencies, including NumPy/Numba; passing the selected Kit tests does not qualify that entire dependency graph. Full-repository, hosted-CI and arm64 coverage are not claimed.

See #8791 for the matched video-rate measurements.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with uv run isaaclab --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have validated the changed behavior with focused coverage and applied the test-audit criteria to any test changes
  • I have added a changelog fragment under source/<pkg>/changelog.d/ for every touched package (do not edit CHANGELOG.rst or bump package versions — CI handles that)
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

The warnings checkbox remains open: dependency warnings and the separate Kit metadata audit are unresolved.

@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Oct 23, 2026
@hougantc-nvda
hougantc-nvda force-pushed the hougantc/kitless-borrowed-renderer branch from 9e86c66 to f63b4c2 Compare October 26, 2026 17:12
@hougantc-nvda hougantc-nvda changed the title Enable OVXR to use Isaac Lab's renderer and scene Expose the OV renderer and scene through a borrowed-renderer lease Oct 26, 2026
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Oct 26, 2026
@hougantc-nvda hougantc-nvda changed the title Expose the OV renderer and scene through a borrowed-renderer lease Add the OV renderer lease and teleop-owned OVXR adapter Oct 26, 2026
@hougantc-nvda
hougantc-nvda force-pushed the hougantc/kitless-borrowed-renderer branch from 12208c4 to 6afe08b Compare October 27, 2026 16:08
Signed-off-by: Hougant Chen <hougantc@nvidia.com>
@hougantc-nvda
hougantc-nvda force-pushed the hougantc/kitless-borrowed-renderer branch from 6afe08b to d6d62fe Compare October 29, 2026 02:05

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant