Skip to content

Add OpenXR controller health monitoring - #1270

Open
sgrizan-nv wants to merge 1 commit into
mainfrom
sgrizan/branch3
Open

sgrizan-nv wants to merge 1 commit into
mainfrom
sgrizan/branch3

Conversation

@sgrizan-nv

@sgrizan-nv sgrizan-nv commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Expose configured left and right OpenXR controllers through the existing TeleopSession health-monitoring API.

  • Add stable per-side controller device IDs under the OpenXR runtime provider.
  • Reduce controller aim/grip validity into connected, degraded, and disconnected states with a one-second tracking-loss grace period.
  • Preserve provider-failure precedence and isolate malformed per-side observations.
  • Document the controller inventory and add reducer and session integration coverage.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Testing

  • SKIP=check-copyright-year pre-commit run --all-files
  • pytest -q tests/python/core/teleop_session_manager/test_status_monitor.py tests/python/core/teleop_session_manager/test_teleop_session.py (184 passed)
  • make -C docs current-docs with warnings treated as errors
  • Live hardware: CONNECTED -> DEGRADED -> CONNECTED
  • Live hardware: UNKNOWN/NO_CURRENT_DATA -> DISCONNECTED/NO_CURRENT_DATA -> CONNECTED

Checklist

  • I have read and understood the contribution guidelines
  • I have run the linter and formatter with SKIP=check-copyright-year pre-commit run --all-files
  • I have made corresponding changes to the documentation
  • I have added tests that prove the feature works
  • I have signed off all commits per the DCO

Summary by CodeRabbit

  • New Features
    • Live status monitoring now includes left and right OpenXR controllers when controller tracking sources are configured.
    • Controller status reflects tracking availability, recovers when tracking resumes, and reports observation errors or OpenXR provider failures.
  • Documentation
    • Updated OpenXR device provider guidance to include controller devices.

Signed-off-by: Sergey Grizan <sgrizan@nvidia.com>
@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/IsaacCapture/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: e33bc799-6ba7-41ee-ae5f-03640acee9bb
📥 Commits

Reviewing files that changed from the base of the PR and between e07a2cc and 4418772.

📒 Files selected for processing: 5
  • docs/source/references/device_provider_monitoring.rst
  • src/python/isaaccapture/teleop_session_manager/status_monitor.py
  • src/python/isaaccapture/teleop_session_manager/teleop_session.py
  • tests/python/core/teleop_session_manager/test_status_monitor.py
  • tests/python/core/teleop_session_manager/test_teleop_session.py

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review.

📝 Walkthrough

When live mode has controller trackers, TeleopSession passes left and right controller snapshots to StatusMonitor after each DeviceIO update. The monitor can include both controllers in the OpenXR inventory. It reports controller tracking status, applies a one-second delay before reporting tracking loss, and handles pose-read errors and OpenXR provider failures.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant TeleopSession
  participant DeviceIO
  participant ControllerTrackers
  participant StatusMonitor
  TeleopSession->>DeviceIO: update
  TeleopSession->>ControllerTrackers: read cached left and right samples
  TeleopSession->>StatusMonitor: refresh with OpenXR session and controller snapshots
  StatusMonitor->>StatusMonitor: reduce headset and controller statuses
Loading
Merge Risk: ⚪ Minimal · up to 44187

Controller health monitoring is ready to merge after normal checks; no material issue remains identified.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 38.46% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 26 functions across 4 files. (1 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely summarizes the primary change: adding OpenXR controller health monitoring.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 38.46% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 26 functions across 4 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

This branch was successfully deployed

1 active deployment
dev — 4418772f Deployed Oct 14, 2026 by sgrizan-nv via publish-wheel #5639
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants