Server: reads all 3 cameras from Isaac Sim SHM, encodes JPEG
(head Q85, wrists Q70), sends with 1-byte camera ID prefix.
Head at ~10fps, wrist cameras at ~5fps for bandwidth control.
Godot: teleop_client parses camera ID byte and emits per-camera
signals. Three webcam quads arranged in a row (left|head|right)
in front of the user in AR mode.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reads head camera from Isaac Sim shared memory, encodes as JPEG (quality 85),
and relays to Quest 3 over the existing WebSocket connection at ~15fps.
Falls back to left/right wrist cameras if head SHM unavailable.
Prevents Python resource_tracker from destroying SHM on bridge exit.
Also increases WebSocket write buffer and reduces send rate for stability.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace flat JOINT_GAIN with per-joint JOINT_SCALE/JOINT_OFFSET linear mapping
for accurate retargeting (l_shoulder_pitch/roll/yaw, l_elbow calibrated)
- Switch shoulder parent from chest to hips to avoid head rotation contamination
- Add solo-joint mode (--solo-joint) for isolating single joints during testing
- Use XRHandTracker wrist transforms in body_tracker.gd for better wrist rotation
- Add joint_test.py for single-joint animation with pause-at-peak support
- Add joint_calibrate.py for XR-to-robot range calibration with scale+offset output
- Add calibration_log.md documenting extent tuning and axis mappings
- Disable waist/right arm/hands temporarily for left-arm-only testing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a joint retargeting bridge that converts Quest 3 body tracking
data into G1 robot joint commands for Isaac Sim via CycloneDDS.
- Extend body_tracker.gd with 8 body joint transforms (56 floats)
- Extend teleop_server.py with body_joints_shared memory
- Add retarget_bridge.py: body retargeting, hand mapping, DDS publishing
- Add launch_bridge.py: one-command launcher for sim + bridge
- Update requirements.txt with unitree-sdk2py dependency
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Godot 4.3 project for Quest 3 that replaces the browser-based WebXR
teleoperation with a native app using XR_FB_body_tracking (70 joints).
Key advantage: chest-relative wrist tracking eliminates head-position
subtraction artifacts and decouples body rotation from arm control.
Godot app: body_tracker.gd, teleop_client.gd, webcam_display.gd
Robot server: teleop_server.py (WebSocket, replaces Vuer ~900→~250 lines)
Drop-in wrapper: native_tv_wrapper.py (compatible with teleop_hand_and_arm.py)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>