feat(teleop): add PICO WebXR body tracking - #3695
Conversation
❌ 1 Tests Failed:
View the top 1 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
Greptile SummaryThis change adds configurable PICO WebXR body tracking, validates incoming body-joint snapshots, reports tracking health, and registers a dedicated hardware-test blueprint. The body-only WebXR flow was exercised with a bounded-floor reference space and its emitted snapshot was accepted by the server model. Confidence Score: 5/5No blocking failure remains. No accepted blocking findings remain after exercising the body-only WebXR snapshot contract.
What T-Rex did
Reviews (5): Last reviewed commit: "test(webxr): isolate body monitor timing" | Re-trigger Greptile |
07f3eb8 to
695122a
Compare
PICO WebXR omits its platform-reserved menu button, so controller packets contain six buttons. Treat the trailing menu slot as optional instead of rejecting otherwise valid joystick input.
695122a to
6bcf67d
Compare
|
Addressed the Greptile P1 in 82d7bc6. WebXRControllerState now requires the six button slots it indexes while keeping the seventh menu button optional. A regression test sends a real five-button LCM Joy packet through WebXRTeleopModule and verifies the packet is rejected without escaping the callback, stale controller state is cleared, and zero velocity is published. Local verification: 54 WebXR tests passed; Ruff and mypy passed. |
|
@greptileai please re-review the latest commit 82d7bc6. The prior P1 about short controller packets has been fixed and regression-tested. |
Contribution path
Problem
The renamed WebXR teleop stack has no way to request PICO body-tracking permission, decode the browser's joint poses, or inspect tracking health on hardware.
Solution
BodyTrackingSnapshotoutput and strict JSON decoder.optionalandrequiredWebXR session modes.XRFrame.bodyposes inbounded-floorspace when available and fall back tolocal-floor.How to Test
Run the hardware-facing API test:
Automated checks run locally:
Result: 150 passed, 3 skipped, 40 deselected.
Physical PICO validation remains to be completed with the command above.
AI assistance
OpenAI Codex with GPT-5 implemented the change, resolved the parent rebase conflicts, and ran the checks. The author should review and understand the final diff before merge.
Checklist