ReleaseNVIDIANVIDIApublished Oct 14, 2026seen 7h

NVIDIA/IsaacCapture v1.5.175

NVIDIA/IsaacCapture

Open original ↗

Captured source

source ↗
published Oct 14, 2026seen 7hcaptured 7hhttp 200method plain

v1.5.175

Repository: NVIDIA/IsaacCapture

Tag: v1.5.175

Published: 2026-10-14T04:01:23Z

Prerelease: no

Release notes:

Release Notes — Isaac Teleop 1.5

Everything that landed in release/1.5.175 since v1.4.145.

Build & Packaging

Standard Python tooling can build and install Isaac Teleop from source

#735

A scikit-build-core backend now supports pip install ., editable installs, and source distributions while driving the same top-level CMake build. Retargeting, DeviceIO live-view, and session-manager examples are also installable under the shared isaacteleop_examples namespace and can be launched with python -m without relying on the checkout directory being on sys.path.

Authored Python sources moved under src/python

`4bff0fd`

The installed isaacteleop package is unchanged, but its authored sources now live under src/python/isaacteleop/ with standard __init__.py files instead of the former *_init.py shims. Out-of-tree tooling and editable-install helpers that read the repository by path must update their source locations; tests also moved into their own top-level directory.

CloudXR Runtime & Session Management

The CloudXR runtime is now a host service that survives application restarts

`426c813`, `1bffe26`, `17be1cf`

CloudXRService is now the single owner of the runtime process and WSS proxy. Applications attach to the running service instead of launching a runtime tied to their own lifetime, so restarting a teleoperation application no longer forces the headset to reconnect.

Use python -m isaacteleop.cloudxr.service to start, stop, inspect status, or read logs. Startup is serialized, refuses to overwrite a live runtime, and reports bind or WSS failures before returning instead of leaving a partially started service behind. The service is detached, not supervised: if it crashes, status reports that state and an operator must start it again. Container entry points that must own the runtime for their entire lifetime can opt into embedded operation with run_embedded=True.

The WebXR client can be reopened without restarting the runtime

`783200a`, #978

python -m isaacteleop.cloudxr.webclient reopens the versioned WebXR client on a USB-connected headset with the host address and port prefilled, without restarting the launcher or CloudXR runtime. It also accepts an explicit client URL, can resolve the target with --print-only without touching ADB, and redacts access tokens from terminal output.

The ROS 2 integration exposes the CloudXR.js OOB client route as a node parameter, allowing deployments to select the appropriate application route without modifying the bundled client.

OpenXR sessions wait for a headset by default

`32c9cd6`

Creating an OpenXRSession before the headset connects is now treated as the normal startup path. Sessions wait for an OpenXR system instead of immediately failing with XR_ERROR_FORM_FACTOR_UNAVAILABLE, so operators can start the host application first and connect the headset afterward.

Devices, Plugins & Partner Integrations

VIVE Ultimate Trackers stream as independent SE3 pose sources

#986 (partner contribution — HTC)

A new VIVE plugin reads Ultimate Tracker poses from VIVEHub and publishes each physical tracker as its own generic Se3TrackerPose collection, keyed by the tracker serial number. Stale poses are marked invalid, unchanged samples are not duplicated, and a synthetic mode supports hardware-free testing.

Record and replay examples discover the active tracker collections automatically, write them to MCAP, and visualize replayed poses with viser. The full live → record → replay path was verified with VIVEHub 1.0.1 hardware.

Wuji gloves provide OpenXR hand input and 20-DoF hand retargeting

#791, #997, #1027, #1090, #1099 (partner contribution — Wuji)

The optional Wuji plugin maps glove skeletons into the standard OpenXR 26-joint hand layout, fuses a wrist pose from optical tracking or a calibrated controller pose, and injects the result through the existing hand-tracking path. WujiHandRetargeter converts that input into 20-DoF commands for Wuji Hand and Wuji Hand 2, with live, synthetic, and replay workflows.

The ROS 2 integration can now install, launch, and supervise Wuji or MANUS glove plugins through TeleopSession, while externally managed and replay providers keep their selected routing.

Noitom full-body capture drives G1 teleoperation, recording, and replay

#742 (partner contribution — Noitom)

The new Noitom plugin reads Hybrid Data Server updates through MocapApi and publishes the standard vendor-neutral FullBodyPose layout. A complete example records the stream to the existing MCAP schema, replays it through the generic full-body workflow, and maps shoulder, elbow, and wrist motion into a G1 upper-body Pink IK task in Isaac Lab.

Sharpa Avatar gloves provide hand tracking, joint streams, and per-finger haptics

#1150, #1185 (partner contribution — Sharpa)

The optional Linux plugin connects Sharpa Avatar gloves through the pinned Avatar SDK and publishes HUMAN landmarks as standard OpenXR 26-joint hands. It also exposes the RAW and ROBOT 22-DoF joint streams through DeviceIO and consumes per-finger vibration commands through the existing haptic interface.

Left and right gloves connect independently, recover after disconnection, and can operate one side at a time. A TeleopSession example provides live browser...

Excerpt shown — open the source for the full document.