feat(devices): add Meta Quest 3 body tracking via OSC protocol#4419
Open
brukg wants to merge 12 commits intoisaac-sim:mainfrom
Open
feat(devices): add Meta Quest 3 body tracking via OSC protocol#4419brukg wants to merge 12 commits intoisaac-sim:mainfrom
brukg wants to merge 12 commits intoisaac-sim:mainfrom
Conversation
added 3 commits
January 16, 2026 15:58
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
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"
|
added 6 commits
January 26, 2026 11:03
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
2ef7fc8 to
f3061a4
Compare
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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