v1.3.131
This release expands Isaac Teleop from a CloudXR/WebXR teleoperation core into a multi-device, multi-robot platform: new dexterous-hand and arm retargeting, data gloves and exoskeletons, a ROS 2 reference integration, ARM64 support, a record/replay data pipeline, a preview Vulkan visualization stack, and a substantially streamlined CloudXR operations story.
Top 10 new features
1. SO-101 arm teleoperation — leader arm + XR controller (LeRobot ecosystem)
Two complementary ways to drive the low-cost SO-101 5-DOF arm:
- Generic joint-space device + SO-101 leader arm (#660): a reusable device path (name-keyed
JointStateOutputschema →JointStateSource→JointStateRetargeter) withjoint(leader→follower mirror) andee_pose(URDF forward-kinematics) modes — reusable for any joint-encoder device (leader arms, exoskeletons, gloves). The referenceso101_leaderplugin reads the 6 Feetech STS3215 servos over serial with no SDK dependency, wire-compatible with LeRobot'sFeetechMotorsBus, and ships acalibratesubcommand that mirrorslerobot-calibrate(and can emit LeRobot-format calibration files). - SO-101 XR-controller retargeters (#651, hardened by #692): drive an SO-101 follower from an XR controller in Isaac Lab (
Isaac-Stack-Cube-SO101-IK-Abs-v0) — clutch-rebased absolute EE pose (engaging never jerks the arm) + proportional analog-trigger gripper; #692 gates the clutch on grip-pose validity to prevent NaN/IK crashes on tracking loss.
Maturity: the leader / joint-space device is a complete reference implementation (plugin, retargeter, calibration tool, docs, example, MCAP-replay backend); the SO-101 XR-controller retargeters are experimental (tune-in-sim). No LeRobot package dependency — SO-101 is a LeRobot-ecosystem arm; a separate examples/lerobot dataset integration predates this release.
2. Sharpa Wave dexterous-hand retargeters
Map OpenXR hand tracking onto the Sharpa Wave hand via two interchangeable backends (#449, #474, #484, #490, #491): dexpilot (default for hand teleop) wrapping the open-source dex-retargeting DexPilot optimizer with SHA-pinned official URDFs, and pink_ik — a Pinocchio/Pink IK path ported from V2D (robotic_grounding). Bimanual combiners and ROS hand-mode integration with output joint-name aliasing.
Maturity: mixed — dexpilot runs on open-source deps; pink_ik requires V2D's robotic_grounding (bundled as a temporary bridge). dexpilot emits a fixed 22-joint set; pink_ik's DOF count is model-dependent.
3. Teleoperation with Isaac ROS (ROS 2 reference) — teleop_ros2
A single-node rclpy publisher (ROS 2 Humble) that streams controller, hand, head, end-effector, locomotion, and retargeted finger-joint data over standard topics. Four selectable modes (controller_teleop, hand_teleop, controller_raw, full_body); standard ROS remapping (#343); foot-pedal locomotion (#395); configurable TF frames, finger-joint names, and config/asset roots (#368, #507); in-process CloudXR via CloudXRLauncher (#609); head-pose publishing (#618); deterministic MCAP-fixture integration tests.
Maturity: preview. This ships under the Isaac ROS umbrella (the web-client picker has an isaacros entry; the quick start has a "Teleoperation with Isaac ROS" card pointing here) as a ROS 2 reference publisher; the broader Isaac ROS CUDA-accelerated framework remains tracked as "Planned."
4. Egocentric Hand Reconstruction (codename "Ego4Robo")
A post-processing pipeline (src/postprocessing/egocentric_hand_reconstruction, #363/#417/#672/#599) that recovers world-frame 4D hand + camera motion from a single egocentric video by chaining two containerized models — ViPE (camera pose/depth) → Dyn-HaMR (MANO hand mesh). Exports per-track MANO meshes/joint trajectories, "jumpy-track" quality control, and an OSMO cloud-batch workflow — turning head-cam video into demonstration data for imitation learning.
Maturity: experimental (v0.0.1; requires user-supplied licensed MANO/BMC assets). User-facing name is "Egocentric Hand Reconstruction"; "Ego4Robo" is the internal codename / CI branch prefix.
5. ARM64 / aarch64 support
Isaac Teleop now installs and runs on ARM64 hosts such as NVIDIA DGX Spark (#506, #516, #509, #513, #358, #589, #681): the ROS 2 reference container auto-builds the nlopt wheel (none on PyPI for aarch64), required-environments platform constraints, Manus-plugin arch-conditional SDK fixes, and a Python 3.13 + arm64 CI leg.
Maturity: first-class for the containerized ROS 2 / CI path; bare-metal pip install of the [retargeters] extra still needs a documented one-time nlopt wheel build. (Jetson Nano remains planned.)
6. Streamlined CloudXR operations
- CloudXRLauncher (#353): programmatic, in-process
start/health_check/stopof the CloudXR runtime + WSS TLS proxy (context-manager API; runs the runtime as an isolated subprocess to avoid CUDA-context clashes with Isaac Sim). Replaces the now-deprecatedrun_cloudxr_via_docker.sh(#440) and powers ROS 2 live teleop (#609). - Out-of-band (OOB) teleop setup (#388, #390, #415, #438, #461, #655):
--setup-oobauto-opens the web client on a USB-tethered headset over ADB and clicks CONNECT for you via Chrome DevTools Protocol; optional--usb-localrelays signalling/media over the USB cable with a local coturn TURN server; a side-channel metrics/control hub; configurable ports. - CloudXR runtime and web SDK bumped to 6.2.0 (#564, #528).
Maturity: mixed (Launcher GA; OOB automation newer). Note: OOB = out-of-band, not out-of-box — the control hub runs on a side channel beside the video stream. --usb-local still requires Wi-Fi associated (Chromium's WebRTC excludes loopback ICE candidates), though no teleop traffic crosses Wi-Fi.
7. Televiz (preview)
A new opt-in (BUILD_VIZ default OFF) Vulkan + OpenXR + CUDA compositor exposed to Python as isaacteleop.viz (#423, #427, #451, #466, #471, #502, #517, #535, #536, #542, #641). VizSession composites GPU camera frames into XR / window / offscreen targets via QuadLayer (mono or true stereo), with zero-copy CUDA↔Vulkan interop (DeviceImage). Ships a camera_viz example driving v4l2 / OAK-D / ZED / synthetic sources (plus a RealSense 435i config, #683), locally or over RTP H.264, and can share one OpenXR session with TeleopSession.
Maturity: preview — QuadLayer only today; ProjectionLayer / 3D rendered content explicitly not yet shipped. Product name: "Televiz" (capital T, lowercase v).
8. MCAP record & replay
Record any teleop session — head, hands, controllers, full-body (Pico), pedals, message channels — to an MCAP file (the open Foxglove standard, with FlatBuffer payloads), then replay it headless through the exact same retargeting pipeline (SessionMode.REPLAY), frame-aligned and deterministic, with no headset attached (#290, #330, #389, #396, #401–#404, #425, #508, #527, #554). Ideal for CI/regression, debugging, and dataset generation; includes viser browser replay examples for hand/controller/full-body.
Maturity: mixed — recording is GA-quality; replay has preview edges (no end-of-file signal; recordings made before #527 must be re-recorded for correct frame alignment).
9. Manus data-glove plugin (partner-authored)
Integrates MANUS Core SDK gloves for full hand-joint tracking (#431, #441, #510, #526, #513, #520, #525). The wrist anchor auto-selects between HMD optical hand tracking (XR_MNDX_xdev_space) and a Quest 3 controller fallback; per-finger poses are injected into the OpenXR hand layer so any retargeter consumes them transparently. Includes installer/udev scripts (SHA-256-verified SDK), a Vulkan "MANUS Data Visualizer", and a ROS controller-mode path feeding the Sharpa retargeters.
Maturity: mixed (Linux/x86_64 primary, ARM fixed; proprietary SDK not redistributed). Authored by Manus — see Community & partner contributions.
10. Web client overhaul
The browser teleop client (now simply the "web client", renamed from "WebXR client" in #671) becomes the default entry point (#338, #398, #420, #473/#476, #537, #556/#560, #561, #591, #629, #671, #685, #687):
- Registry-driven application picker including Isaac Lab, Isaac Sim, ROS, and GEAR.
- Every CloudXR setting is URL-settable via a param registry; settings persist per application.
- Headless mode +
window.xrDeviceexposure for programmatic / AI-agent control. - Per-version hosting (
/client/<slug>/,/client/stable/) and self-hosting via--host-client. - Robustness: old-browser warning, self-signed-cert acceptance link, stale-WebGL-error draining, exit-on-streaming-error, XR-panel drag fix, Server-IP clear button.
Maturity: mixed.
Other notable improvements
- OpenXR controller haptic feedback (rumble) (#566) — a vendor-neutral device-output path (
HapticSink/IHapticDevice→xrApplyHapticFeedback) so sim contact force or a trigger pull can vibrate the operator's controller. GA path with example + tests; the broader force-feedback framework (EndEffectorForce) is foundation ahead of consumers. - Haptikos hands plugin (#486, #642) (partner — Magos) — an OpenXR plugin for the Haptikos hand exoskeleton (hand/finger pose injection only; Linux / Meta Quest). See Community section.
- Pipelined retargeting (#467) — opt-in
RetargetingExecutionMode.PIPELINEDruns the retarget graph on a background worker sostep()returns the latest finished result instead of blocking the control loop, with latency telemetry and deadline pacing. - Teleop state machine (#340, #391) —
DefaultTeleopStateManager(stopped/paused/running + reset), fail-safe to STOPPED on input loss, with reset wired into stateful retargeters. - Camera pipeline (#323, #266, #349, #341, #203) — correct full-range BT.601 OAK-D color via a custom CUDA kernel, working stereo, graceful auto-reconnect, an OAK-D W center-RGB stream, and a standalone depthai 3.7.1 recording CLI with live preview.
- Monotonic tracker API (#352, #315, #320, #351) — trackers now implement
update(monotonic_time_ns)instead ofXrTime, removing OpenXR fromdeviceio_base; schema-defined hand tracker and factory-based tracker creation make adding new devices easier. - Pico full-body tracking — new body-tracking docs (#397), graceful bypass when the runtime lacks body-tracking support (#287), and full-body demo videos (#573).
- New XR controller "menu" button (
menu_click) added to the controller schema and live tracker. - Python 3.13 support (#358, #405) and CMake structure standardization (#600 + conformance refactors).
- Ecosystem / docs: Social links — Discord + WeChat (#667), a device roadmap (Haply, 3D Space Mouse), MCAP record/replay docs (#424), body-tracking docs, and a headset-firmware quick-start note (#643).
Community & partner contributions
Contributions from outside NVIDIA, verified by commit-author email and GitHub org membership:
Manus (manus-meta.com) — Manus data-glove integration
- Tim van Wankum — authored the foundational Manus plugin: HMD hand tracking, installer, docs, and Vulkan visualizer (#431). (The PR was merged under an NVIDIA account, but the implementation is Manus's.)
- Aniket Mazumder — Manus SDK root-path handling in CMake (#441).
Magos / Haptikos (themagos.com) — Haptikos hand-exoskeleton plugin
Community
- Minh Vu (@fallintoplace) — documented Python environment activation in the quick start (#661).
Detailed PR List
- Fix CloudXR runtime crash from OpenSSL symbol conflict by @rwiltz in #254
- docs: use 1.0.0 as version for pip install by @jiwenc-nv in #255
- Whitelist docs from nspect OSS scan by @jiwenc-nv in #259
- Adjust polling timeout for Kitmaker release with exponential backoff by @aristarkhovNV in #256
- Download CloudXR from the final public NGC by @jiwenc-nv in #258
- Restore NGC workflow for run_cloudxr_via_docker.sh by @aristarkhovNV in #261
- Update CloudXR to 6.1.0 release by @yanziz-nvidia in #262
- docs: more enhancement for 1.0 release by @jiwenc-nv in #265
- Bump version to 1.1 by @jiwenc-nv in #281
- Add hero image by @jiwenc-nv in #280
- fix: ensure 'isaacteleop' is installed from the local dir by @aristarkhovNV in #284
- Use action context extension for the controller tracker. by @nvddr in #282
- Clean up trackers by @nvddr in #283
- Fix oakd stereo and handle disconnection gracefully by @farbod-nv in #266
- Bypass body tracker if not supported by the runtime by @nvddr in #287
- docs: fix docs pointer for Isaac Lab 3.0 beta by @jiwenc-nv in #288
- Refactor tracker creation pattern by @nvddr in #289
- Fix reconfigure error due to existing venv by @aristarkhovNV in #293
- Quieter unzip when installing NGC CLI by @aristarkhovNV in #263
- Switch Kitmaker to use Artifactory by @aristarkhovNV in #292
- Refactor mcap recording by @nvddr in #290
- Bump version to 1.2 by @jiwenc-nv in #296
- Add GitHub workflow to auto merge main to release/1.2.x by @jiwenc-nv in #298
- Remove unnecessary install targets by @nvddr in #314
- Move get_required_extensions to the session level by @nvddr in #313
- Rename individual tracker implementation interfaces to be consistent by @nvddr in #320
- Make exception handling consistent across examples by @nvddr in #321
- Make update consistent, remove bool return and throw only on critical error by @nvddr in #315
- Add quotations to pip install cmds by @lotusl-code in #332
- Fix setuptools warnings, embed README.md in package metadata by @aristarkhovNV in #294
- Add custom bt601 full range cuda kernel and fix color conversion by @farbod-nv in #323
- feat[client]: Supports show/hide dashboard by @yanziz-nvidia in #338
- fix[client]: Exit WebXR when failed to connect or streaming error by @yanziz-nvidia in #342
- Replace manual sccache installation with github action by @aristarkhovNV in #337
- Remove ROS 2 topic parameters in favor of standard remapping by @sgrizan-nv in #343
- Add teleop state transitions by @nvddr in #340
- Decouple camera sender logic to subgraph and add rgb output for oakdw by @farbod-nv in #341
- Python utils to sync GitHub projects to a Google sheet by @jiwenc-nv in #334
- Fix oak-d reconnection issue by @farbod-nv in #349
- Add code rabbit configs by @jiwenc-nv in #347
- Remove OXR dependency from public hand-tracker, and define in schema by @nvddr in #351
- Use bridge network for test container by @jiwenc-nv in #302
- Run teleop_ros2 in all modes in the teleop-ros2-docker test by @life1ess in #226
- Place ROS 2 test after CloudXR test by @sgrizan-nv in #350
- Add CloudXR to ROS pose conversion by @sgrizan-nv in #346
- Add no cache to camera_streamer build by @farbod-nv in #354
- feat[proxy]: Persist the self cert generated by proxy by @yanziz-nvidia in #355
- Add support for Python 3.13 by @jiwenc-nv in #358
- ego4robo release: 0.0.1 by @shaosu-nvidia in #363
- Print docker log if docker run of ROS 2 publisher fails by @sgrizan-nv in #369
- Add configurable finger joint names to teleop_ros2 publisher by @sgrizan-nv in #368
- Rename ROS 2 publisher to node by @sgrizan-nv in #374
- Migrate XrTime to monotonic time in devicetracker API by @nvddr in #352
- Add CloudXRLauncher for programmatic runtime lifecycle management by @rwiltz in #353
- ROS 2: do a full basis change instead of world-frame change only by @sgrizan-nv in #378
- Replace ROS test timeout with a readiness poll by @sgrizan-nv in #380
- ci: move docs deploy into a separate workflow by @jiwenc-nv in #372
- WebXR client localhost bugfix and self-signed cert acceptance feedback by @blongs-nv in #379
- Do dl-pack conversion before copying, because old numpy returns read-… by @nvddr in #384
- Remove restrictive cert validation by @blongs-nv in #387
- ROS: Swap left and right EE in EE topic by @sgrizan-nv in #385
- feat(oob): Adds initial oob implementation with metrics by @yanziz-nvidia in #388
- enable preview for oak camera by @shaosu-nvidia in #189
- ROS: Publish raw controller commands in teleop mode by @sgrizan-nv in #393
- Create missing file cloudxr.env by @lotusl-code in #377
- feat(oob): Adds USB ADB automation for OOB teleop by @yanziz-nvidia in #390
- feat(web): Expose xrDevice on window for programmatic agent control by @yanziz-nvidia in #398
- ROS: Add foot pedal support to hand mode and split TeleopSessionConfigs by mode by @sgrizan-nv in #395
- Add docs for building the WebXR client by @jiwenc-nv in #371
- Add body tracking doc by @blongs-nv in #397
- ego4robo release: 0.0.1 by @shaosu-nvidia in #399
- Wire up ExecutionEvents.reset in stateful retargeters by @rwiltz in #391
- ego4robo release: 0.0.1 by @shaosu-nvidia in #400
- Add message channel tracker by @nvddr in #330
- [Replay] Add latest channel support in schema_tracker. by @shaosu-nvidia in #389
- fix(proxy): Handles CORS preflight OPTIONS by @yanziz-nvidia in #403
- Requires-Python must be the same for all wheels by @aristarkhovNV in #405
- fix(webclient): Uses opaque data channel UUID to route teleop messages by @yanziz-nvidia in #407
- ego4robo release: 0.0.1 by @shaosu-nvidia in #408
- [Replay] Add McapTrackerViewers to read mcap file. by @shaosu-nvidia in #396
- ci: enable sonarqube scanning on ego4robo/* branches by @qingsi-at-nv in #411
- [Replay] Add replay trackers by @shaosu-nvidia in #402
- fix: skip publish-wheel correctly by @jiwenc-nv in #413
- fix(webclient): Updates react package to address CVE-2026-23869 by @yanziz-nvidia in #414
- [Replay] Add replay_deviceio_session by @shaosu-nvidia in #401
- Add web client app profiles by @blongs-nv in #409
- ego4robo release: ego-reconstruction@ea9f774 by @shaosu-nvidia in #417
- fix(webclient): Fix webpack by @gareth-morgan-nv in #419
- [Replay] Replay API in TeleopSession by @shaosu-nvidia in #404
- feat(webclient): Add headless option by @gareth-morgan-nv in #420
- Add menu button by @jiwenc-nv in #412
- Initial TeleViz scaffold and vulkan core code by @farbod-nv in #423
- fix: [Replay] MCAP replay corruption at chunk boundaries by @shaosu-nvidia in #425
- feat(oob): Support USB only local connection with TURN server by @yanziz-nvidia in #415
- [TeleViz] Adds LayerBase and RenderTarget by @farbod-nv in #426
- Add docs for mcap record/replay by @shaosu-nvidia in #424
- docs: fix docs preview by @jiwenc-nv in #430
- Manus plugin: HMD hand tracking, installer, docs, and visualizer by @jiwenc-nv in #431
- feat(oob): Configurable ports for OOB by @yanziz-nvidia in #438
- Consolidate how we are downloading CloudXR SDK by @jiwenc-nv in #437
- fix: update Manus SDK root path handling in CMakeLists.txt by @Aniket-Manus in #441
- Print deprecation warning for run_cloudxr_via_docker.sh by @jiwenc-nv in #440
- Add VizSession + VizCompositor + offscreen e2e milestone by @farbod-nv in #427
- ci: automated workflow for release tag by @jiwenc-nv in #446
- ci(webclient): Multi version client /client// by @yanziz-nvidia in #460
- [TeleViz] Add televiz basic shaders + DeviceImage CUDA-Vulkan interop by @farbod-nv in #451
- fix(oob): Hardening ADB by @yanziz-nvidia in #461
- ci: Fix test from adb oob by @yanziz-nvidia in #468
- [TeleViz] Add QuadLayer + textured-quad pipeline + VizCudaArray by @farbod-nv in #466
- Bump version to 1.3 by @jiwenc-nv in #448
- [TeleViz] Add DisplayBackend + WindowBackend + Window smoke test example by @farbod-nv in #469
- Bring in Sharpa retargeter from V2D by @jiwenc-nv in #449
- Force VR in headless by @gareth-morgan-nv in #473
- feat(teleop): add latest-result pipelined retargeting by @hougantc-nvda in #467
- ROS: add Sharpa retargeter to hand mode by @sgrizan-nv in #474
- ROS: Update Sharpa joint name remapping logic by @sgrizan-nv in #484
- Fix ROS test by @sgrizan-nv in #485
- Disable AR/VR dropdown on headless by @gareth-morgan-nv in #476
- docs: Adds device vendor contacts if any by @yanziz-nvidia in #464
- Harden publish-wheel as the CI gate by @aristarkhovNV in #488
- ROS: add dex retargeter for Sharpa hard teleop by @sgrizan-nv in #490
- fix(cmake): allow build wihtout git by @jiwenc-nv in #489
- ROS: Add Sharpa URDFs for dex-retargeting and make it default for hand teleop by @sgrizan-nv in #491
- Improvement Manus SDK installation logic by @jiwenc-nv in #492
- Improve manus install scripts by @jiwenc-nv in #494
- [TeleViz] Add XR session and xr compositing utils by @farbod-nv in #471
- docs(manus): more updates by @jiwenc-nv in #495
- docs-preview: stop publishing webxr client by @jiwenc-nv in #498
- Fix manus plugin build by @jiwenc-nv in #499
- python deps: add viser to the grounding extra by @jiwenc-nv in #500
- Prioritize XDev hand tracker sources by @nv-jakob in #483
- Drop viser dependency by @jiwenc-nv in #501
- [TeleViz] isaacteleop.viz Python bindings + array-interface tests by @farbod-nv in #502
- [ROS2 Ref]: Skip implicit uv sync at container start to fix aarch64 nlopt by @nv-mhaselton in #506
- Add a quick example for mcap record replay by @jiwenc-nv in #508
- ROS: add parameter to customize config and asset root by @sgrizan-nv in #507
- Fix manus plugin for ARM by @jiwenc-nv in #509
- ROS: Add Manus support to controller mode by @sgrizan-nv in #510
- docs-preview: restore webxr client, tolerate missing artifact by @yanziz-nvidia in #503
- [TeleViz] camera_viz example scaffolding by @farbod-nv in #505
- add required-environments platform constraints by @aristarkhovNV in #516
- Work around Manus API difference depending on platform by @nv-jakob in #513
- ci: dedicated wheel gate job to deal with fork PRs by @aristarkhovNV in #504
- [TeleViz] Add camera modules, v4l2, oakd, zed based on camera_streamer by @farbod-nv in #517
- Fix Manus plugin failing to launch on auto-webrtc mode by @nv-jakob in #520
- ROS: apply Manus transform offset for controller teleop by @kajananchinniahNV in #526
- Fix Manus build file by @sgrizan-nv in #524
- ROS: Check that the poses are valid before using them by @sgrizan-nv in #529
- [TeleViz] Add basic RTP-based camera streamer by @farbod-nv in #518
- [TeleViz] expose required_extensions + get_oxr_handles for TeleopSession by @farbod-nv in #531
- [TeleViz] QuadLayer mipmap generation by @farbod-nv in #532
- [TeleViz] camera_viz/setup: venv-isolate Python deps by @farbod-nv in #533
- Clear WebGL errors on startup by @gareth-morgan-nv in #537
- Do not fail fast on push by @aristarkhovNV in #519
- Manus: Improve Manus udev rule verification by @sgrizan-nv in #525
- [TeleViz] Add stereoscopic quad layer to viz core module by @farbod-nv in #535
- [TeleViz] Adds stereo quad layer support to camera_viz example by @farbod-nv in #536
- Add frame-aligned MessageChannelTracker replay by @rwiltz in #527
- Add 10-minute timeout to publish-wheel CI job by @aristarkhovNV in #543
- [TeleViz] Add E2E integration test with offscreen renderer for camera_viz by @farbod-nv in #542
- ROS: Keep ROS time and other callbacks updated by @sgrizan-nv in #547
- deps: bump @nvidia/cloudxr to 6.2.0 by @yanziz-nvidia in #528
- deps: pin cmeel-urdfdom<5 and cmeel-tinyxml2<11 for pinocchio by @aristarkhovNV in #551
- ROS: verify topic data in integration tests by @sgrizan-nv in #549
- ROS: Refactor node by @sgrizan-nv in #523
- Port web client perf updates from cloudxr-js 6.2.0 by @yanziz-nvidia in #530
- revert(webclient): Revert client bump for CXR.js by @yanziz-nvidia in #552
- bump gh actions versions by @aristarkhovNV in #545
- ROS: Fix controller placeholder quaternion by @sgrizan-nv in #553
- ci: publish per-tag web client and seed /client/stable/ by @yanziz-nvidia in #556
- Add Isaac Lab to application picker by @blongs-nv in #561
- ROS: Extract node parameters into a separate module by @sgrizan-nv in #557
- Add controller and full-body MCAP replay examples by @nv-mhaselton in #554
- ci: flip root /client/ redirect from ./main/ to ./stable/ by @yanziz-nvidia in #560
- Haptikos hands plugin by @giorgosbabanis in #486
- Add demo videos for full body tracker by @jiwenc-nv in #573
- restore: Bumps client back to 6.2.0 for CXR.js by @yanziz-nvidia in #555
- feat(webclient): add auto-refresh-on-session-end option by @yanziz-nvidia in #586
- feat(cloudxr): print matching WebXR client URL on startup by @jiwenc-nv in #588
- feat(cmake): add comprehensive CMake structure documentation and rules by @aristarkhovNV in #600
- Viz cmake rules conformance by @aristarkhovNV in #601
- refactor: core - pusherio exports inc/ via INTERFACE, own include made relative by @aristarkhovNV in #603
- refactor: plugins - own includes relative, plugin_utils INTERFACE, leaf plugins drop inc/ by @aristarkhovNV in #604
- refactor: manus - core owns header under inc/manus, drop ../inc and bare core/ prefix by @aristarkhovNV in #605
- refactor: schema - colocate flatbuffer generation with the library (no ../), drop unused tensor_utils.h by @aristarkhovNV in #606
- docs: nlopt wheel build for aarch64 (fixes #452) by @jiwenc-nv in #589
- ROS: switch to CloudXRLauncher for CloudXR runtime by @sgrizan-nv in #609
- Rename GEAR presents in CloudXR.js by @sgrizan-nv in #613
- Include oak and hand-reconstruction doc in rst by @shaosu-nvidia in #599
- Bump CloudXR Runtime SDK to 6.2.0 by @yanziz-nvidia in #564
- ROS: publish head pose by @sgrizan-nv in #618
- build: enable ccache for ros2 sample build, replaces build dir caching by @aristarkhovNV in #619
- ROS: name MCAP fixture sample constants by @sgrizan-nv in #620
- feat(webclient): make CloudXR config URL-settable via a param registry by @yanziz-nvidia in #591
- Check Python verisons by @nv-jakob in #626
- Specify os/linux for gitlab sonar ci by @shaosu-nvidia in #628
- Add OpenXR motion-controller haptic feedback by @rwiltz in #566
- ROS: extract tensor group helpers from messages.py by @sgrizan-nv in #621
- ROS: Add a live test job for CloudXR runtime bring-up by @sgrizan-nv in #623
- fix(build): inline async chunks into bundle.js for production by @yanziz-nvidia in #633
- ROS: order hand topic poses left-right and include wrist by @sgrizan-nv in #631
- docs(quick-start): note to update headset firmware before connecting by @sgrizan-nv in #643
- Specify os/linux on sonarqube-vulnerability-report by @shaosu-nvidia in #647
- Use [[ instead of [ for conditional tests in shell scripts by @jiwenc-nv in https://github.com//pull/653
- Remove oak build from windows ci. by @shaosu-nvidia in #654
- ROS: add oob teleop control hub and usb local parameters by @sgrizan-nv in #655
- ROS: fix variable naming in node_parameters.py by @sgrizan-nv in #656
- improve error handling and retry logic for Kitmaker status polling by @aristarkhovNV in #596
- camera recording with depthai 3.7.1 by @shaosu-nvidia in #203
- Document Python environment activation in quick start by @fallintoplace in #661
- ci: Only run sheets sync workflow on main repository by @nv-jakob in #665
- docs(ecosystem): add Social Links section (Discord + WeChat) by @jiwenc-nv in #667
- camera_viz: add --mode override and fix setup pipefail bugs by @nv-mhaselton in #632
- webxr: use versioned client URL by @jiwenc-nv in #617
- docs: add pull request template with explicit linter-fix checklist by @jiwenc-nv in #670
- feat(retargeters): add SO-101 5-DOF arm retargeters by @jiwenc-nv in #651
- ego4robo: pin numpy==1.23.5 in DynHaMR Dockerfile by @qingsi-at-nv in #672
- [Televiz] Add Televiz core module and camera-viz sample documentation for 1.3 by @farbod-nv in #641
- git: Track images in git lfs by @nv-jakob in #669
- feat(webclient): add --host-client to serve web client locally by @yanziz-nvidia in #671
- docs: trim quick start, fix section anchors, clarify nlopt build by @yanziz-nvidia in #681
- fix(webclient): fix XR panel snapping to face away from user when moved by @yanziz-nvidia in #629
- feat(camera_viz): add Intel RealSense 435i V4L2 config by @jsepulveda-nvidia in #683
- feat(webclient): warn users when browser version is below minimum requirement by @yanziz-nvidia in #687
- fix(retargeters): gate SO-101 clutch on grip pose validity by @rwiltz in #692
- Add Haptikos documentation by @PKonMagos in #642
- feat: add generic joint-space teleop device (SO-101 leader) by @rwiltz in #660
- webxr client: add clear button to Server IP field by @jiwenc-nv in #685
New Contributors
- @lotusl-code made their first contribution in #332
- @sgrizan-nv made their first contribution in #343
- @qingsi-at-nv made their first contribution in #411
- @Aniket-Manus made their first contribution in #441
- @giorgosbabanis made their first contribution in #486
- @fallintoplace made their first contribution in #661
- @jsepulveda-nvidia made their first contribution in #683
- @PKonMagos made their first contribution in #642
Full Changelog: v1.1.8...v1.3.131