-
Notifications
You must be signed in to change notification settings - Fork 3k
feat(devices): add Meta Quest 3 body tracking via OSC protocol #4419
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
brukg
wants to merge
6
commits into
isaac-sim:main
Choose a base branch
from
brukg:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+1,040
−23
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Contributor
Greptile Summary
Important Files Changed
Confidence score: 3/5
Sequence DiagramsequenceDiagram
participant User as User
participant Quest as Meta Quest 3
participant ALVR as ALVR
participant OSCReceiver as BodyOscReceiver
participant OpenXRDevice as OpenXRDevice
participant GR1T2Retargeter as GR1T2Retargeter
participant Robot as GR1T2 Robot
User->>Quest: "Performs body movements"
Quest->>ALVR: "Captures body tracking data"
ALVR->>OSCReceiver: "Sends OSC messages on port 9000"
OSCReceiver->>OSCReceiver: "Updates body joint positions"
OSCReceiver->>OSCReceiver: "Computes heuristic orientations"
User->>Quest: "Performs hand gestures"
Quest->>OpenXRDevice: "Provides hand tracking via OpenXR"
OpenXRDevice->>OpenXRDevice: "Calculates joint poses for hands"
OpenXRDevice->>OSCReceiver: "Requests body tracker poses"
OSCReceiver-->>OpenXRDevice: "Returns body tracking data"
OpenXRDevice->>GR1T2Retargeter: "Sends raw tracking data"
GR1T2Retargeter->>GR1T2Retargeter: "Retargets to robot commands"
GR1T2Retargeter-->>OpenXRDevice: "Returns robot joint commands"
OpenXRDevice-->>Robot: "Applies retargeted commands"
Robot->>Robot: "Executes movements"
|
Contributor
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
15 files reviewed, 4 comments
source/isaaclab/isaaclab/devices/openxr/retargeters/humanoid/fourier/gr1t2_retargeter.py
Show resolved
Hide resolved
Add support for Meta Quest body tracking through OSC protocol while maintaining compatibility with existing Vision Pro/OpenXR support. Changes: - Add OscReceiver class for receiving body tracking data via OSC - Add BODY_TRACKING requirement to RetargeterBase - Add BODY TrackingTarget to DeviceBase enum - Lazily initialize OSC receiver only when body tracking is needed - Add configurable OSC port via OpenXRDeviceCfg.body_osc_port - Add Se2Keyboard toggle controls for teleoperation and recording - Pre-compute joint index mappings in GR1T2Retargeter for performance - Export body tracking constants and classes in openxr __init__.py - Add documentation for Meta Quest setup with ALVR and SteamVR
Format imports and improve code alignment for Meta Quest body tracking feature. Add missing contribution requirements: - Add changelog entry for version 0.53.3 - Bump extension version to 0.53.3 - Add author name to CONTRIBUTORS.md - Add unit tests for BodyOscReceiver class
- Add .copy() to wrist poses before modification to avoid mutating original data - Remove conditional skip for head tracker in body tracker loop - Relocate head tracking comment outside loop for clarity
- Only create separate keyboard listener for non-keyboard teleop devices - Add shutdown method to BodyOscReceiver for proper resource cleanup
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
isaac-mimic
Related to Isaac Mimic team
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add support for Meta Quest 3 body tracking through OSC protocol for full-body humanoid robot teleoperation. This enables users to use
Meta Quest 3's inside-out body tracking cameras with ALVR and SteamVR to control humanoid robots in Isaac Lab.
Changes:
BodyOscReceiverclass for receiving body tracking data via OSC (VRChat protocol compatible)BODYtracking target toDeviceBaseandBODY_TRACKINGrequirement toRetargeterBaseOpenXRDeviceCfg.body_osc_portparameterSe2KeyboardGR1T2Retargeterwith pre-computed joint index mappings for better performanceDependencies:
python-oscpackage (installed via./isaaclab.sh -p -m pip install python-osc)Type of change
Checklist
guidelines
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there