Skip to content

OpenXR handtracking support for Isaac Lab#448

Open
Ashok93 wants to merge 8 commits intointrinsic-dev:mainfrom
Ashok93:openxr-support
Open

OpenXR handtracking support for Isaac Lab#448
Ashok93 wants to merge 8 commits intointrinsic-dev:mainfrom
Ashok93:openxr-support

Conversation

@Ashok93
Copy link
Copy Markdown

@Ashok93 Ashok93 commented Mar 30, 2026

Summary

Adds OpenXR hand-tracking teleop support for the AIC environment for Isaac, alongside the existing keyboard, spacemouse, and gamepad devices.

What's included

  • XrCfg and OpenXRDeviceCfg with Se3RelRetargeter added to the environment config
  • xr_utils.py — shared helpers for XR sessions (camera removal, robot base-frame alignment, stdin reader)
  • XR-specific runtime overrides in teleop.py and record_demos.py (only active when --teleop_device handtracking)
  • Robot base-frame realignment so world-frame deltas from the retargeter map correctly to the DifferentialIK base frame
  • IK action scale override (0.05 → 0.5) for hand-tracking responsiveness

Hacky bit — terminal hotkeys

Added a stdin reader thread that listens for single-key hotkeys (s/p/r/q) when XR is active. It works, but it's not the cleanest solution — ideally the OpenXR device itself would emit these via controller buttons or hand gestures. Open to better approaches here.

Setup

Requires XR_RUNTIME_JSON environment variable pointing to your SteamVR runtime JSON before launching:

export XR_RUNTIME_JSON=/home/user/.steam/debian-installation/steamapps/common/SteamVR/steamxr_linux64.json
isaaclab -p aic/aic_utils/aic_isaac/aic_isaaclab/scripts/teleop.py \
    --task AIC-Task-v0 --num_envs 1 --teleop_device handtracking

Figured this might be useful for anyone looking to do VR teleop data collection with the AIC environment.

Ashok93 added 8 commits March 28, 2026 11:08
Add XR configuration and handtracking device to the AIC task environment,
enabling VR teleoperation via OpenXR/SteamVR alongside the existing
keyboard, spacemouse, and gamepad devices.
Isaac Lab's remove_camera_configs() expects observation attributes named
*_camera, but AIC uses *_rgb. Fall back to AIC naming on AttributeError.
Hand-tracking devices do not emit START/STOP/RESET messages, so XR
sessions need terminal hotkeys (s/p/r/q) as a control channel. Adds
xr_utils module with stdin reader and camera removal that handles
AIC observation naming. Only active when --teleop_device handtracking.
@Yadunund Yadunund requested a review from trushant05 April 1, 2026 17:38
@Yadunund Yadunund added the help wanted Extra attention is needed label Apr 16, 2026
@Yadunund
Copy link
Copy Markdown
Collaborator

Thanks for the PR!
Unfortunately the dev team does not have access to openxr to help test this PR so we'd rely on community efforts to review and test changes proposed.

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

Labels

help wanted Extra attention is needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants