Dependency upgrades and AprilTag AI comments - #183
Open
agasser wants to merge 21 commits into
Open
Conversation
* feat: config options for adjustable command timeout * feat: web config pose reset timeout ms option * style: add clarifying warning about changing this value * style: format c# * fix: actually read from the config * fix: compile error * fix: change default timeout to 120ms * feat: add callback for command failures * style: format
…uidance
- Replace stale 2024 FRC rule reference in wiring.md with generic game manual link
- Fix missing semicolons in Java Transform3d examples in robot-code.mdx
- Rename passthrough.md to .mdx so Docusaurus processes JSX correctly
- Add macOS gradlew/Cmd+Shift+P variants to robot-code installation steps
- Align AprilTag status language ("upcoming release") across troubleshooting and robot-code
- Reorganize rewrite.md roadmap into Completed/In Progress/Planned, remove stale dates
- Fix absolute internal link in app-setup.md to relative path
- Renumber troubleshooting to 10- to resolve duplicate 9- sidebar prefix
- Add missing top-level heading to passthrough page
- Standardize Meta Developer Hub URL from developer.oculus.com to developers.meta.com
- Replace raw video guide placeholder text with tip admonitions across 6 pages
- Fix grammar in mounting.md ("favor one direction more than")
- Add macOS/Linux IP lookup instructions to simulation.md
- Prominently feature setup.questnav.gg on device-setup, app-setup, and about pages
Made-with: Cursor
…rience - Add Quick Start page with BOM, 10-step setup walkthrough, and competition day checklist - Reorder sidebar: About > Quick Start > Adapters > Device Setup > App Setup > Mounting > Wiring > Simulation > Robot Code > Webcam > Troubleshooting - Rename passthrough page to webcam; rewrite with stream URL, enable steps, video mode API, dashboard integration, and performance notes - Add Key Concepts section to robot-code with WPILib links and coordinate system video reference - Add ROBOT_TO_QUEST diagram placeholder, worked example, and angled mounting guidance - Add import statements to all Java code examples in robot-code - Fix broken #updating-swerve-drive-pose anchor link - Explain team number IP resolution (10.TE.AM.2) in app-setup - Add note about untested adapters in adapters page - Add simulation Wi-Fi re-enable explanation - Replace placeholder diagnostic sections with full web API guidance (status, logs, restart, config endpoints) - Update developer mode instructions to match official Meta documentation - Replace Oculus branding with Meta Quest in about page - Remove 5V-only power language; note USB PD is acceptable - Gate Development Build warning behind from-source note - Fix typos in web-api.md (database, none, trailing JSON comma) - Add angled/rotated mounting note to mounting page - Update wiring next-steps to point to simulation page Made-with: Cursor
Replace hardcoded version strings in robot-code.mdx and quick-start with dynamic JSX components that read questnavLibVersion from siteConfig.customFields, populated from versions.json at build time. Made-with: Cursor
Rewrite README to link to the docs site instead of duplicating content. Add repository structure table, update Discord link, fix Oculus branding, and replace static contributor list with contrib.rocks dynamic image. Made-with: Cursor
Juchong/doc updates
…Nav#176) * docs: refresh getting-started flow and consolidate setup pages - Promote QuestNav Setup Page as the supported headset configuration flow; move legacy manual procedure to a new Development > Manual Headset Setup page and link both setup.questnav.gg and the QuestNavKeepAwake companion app from the headset-setup page and quick start. - Reference the QuestNav-Robot-Sim-Example repo from the simulation, robot-code, quick-start, and troubleshooting pages. - Add Redux Robotics Zinc-V as an alternative power option in the wiring page, quick-start What-You'll-Need table, and Step 6. - Replace Pose3d.transformBy() with .plus() across robot-code examples to match the reference repo, and align std-dev defaults / comment style. - Tighten the troubleshooting page: name the double-tap-to-passthrough vibration bug and its rigid-mount workaround, add /api/logs and /api/status workflows, split App Crashes from Black Screen / freezing, add a baseline latency number, drop misleading advice (radio operational, app cache, dampening), and reference QuestNavKeepAwake from the freeze-recovery flow. - Replace the Thanks list on About with the contrib.rocks contributors graphic from the project README, and update the VR-tracking blurb. - Remove Chief Delphi support pointers (Discord-only), the Python QuestNav viewer mention, the Wiring Best Practices section, the bandwidth warning on the webcam page, and "Video Guide: coming soon" placeholders across getting-started. - Update the FRC game-manual link, fix the headset-cable wording, and consolidate Quick Start steps 3 and 4 into a single setup-page action. - Renumber 1-getting-started/ to be sequential after deleting the legacy app-setup page; mirror every change to versioned_docs/version-2026-2.2.0. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: embed AprilTag detection preview video on Upcoming Changes Adds a YouTube preview of the in-progress AprilTag detection feature under the corresponding bullet on the Upcoming Changes page (both the unversioned and 2026-2.2.0 versioned doc). Co-authored-by: Cursor <cursoragent@cursor.com> * docs: rework mounting page; tighten troubleshooting and setup flow - Mounting: new Pose Origin section (third-eye-pose, Quest 3 7° tilt warning, Quest 3S no-tilt), image-driven Field of View Requirements with good/bad examples, sliding-scale callout, rewritten Orientation to make any orientation valid, danger callout against zip ties across SLAM cameras, replaced passthrough-as-FOV-check with physical inspection plus live tracking metrics. - Troubleshooting: add Wi-Fi-off as the first connection-issue check, replace vague PD-negotiation advice with actionable diagnostics (watch battery %, force 5V via USB-A to USB-C cable, 5V@4A spec), revert .plus(ROBOT_TO_QUEST...) back to .transformBy(...). - Robot Code: add a "Have an example to share?" PR-invite tip under Complete Example. - Images: replace always_allow.jpg with .webp; add 7 mounting webp images (pose origins, SLAM FOVs, good/bad mounting). Mirrored every change to versioned_docs/version-2026-2.2.0. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
…#178) * Clarified the recommendation to use USB-C to USB-A cables * docs: add competition guides, wiring diagram, and sidebar restructure Add competition-day documentation and a theme-aware wiring diagram, and reorganize the docs sidebar so the Getting Started section stays a focused setup funnel. - Add a theme-adaptive SVG WiringDiagram component (Quest -> USB-C ethernet adapter -> optional switch -> radio -> roboRIO, plus USB battery power) and embed it in the Wiring page (renamed 7-wiring.md -> .mdx to import it). - Add Calibration page (headset calibration steps + offset-transform placeholder + Field Calibration TODO for spatial anchors), with a note that calibration is a one-time step unless the mount or headset changes. - Add Pre-Match and Post-Match checklist pages. - Restructure sidebars.ts (Option B): Getting Started now lists the 9 setup pages explicitly; new Competition Day category holds Calibration and the checklists; Webcam and Troubleshooting are promoted to top-level entries. Files stay in 1-getting-started/, so page URLs are unchanged. - Fix a broken link to app-setup in the development-setup page (current and 2026-2.2.0 versioned copy). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.
This PR includes everything in #182 plus:
Native Memory Leak Fix (AprilTagManager.cs)
Issue: aprilTagDetector.Detect(converted) allocates a native ZArray of detections that was never disposed, leaking up to 60 native allocations per second and leading to unbounded native-heap growth.
Fix: Wrapped the detection evaluation loop in a using block to ensure proper disposal of the native results via the wrapper.
Hardware Timestamp Alignment
Issue: captureTimestamp was sampled using Time.time at readback rather than actual sensor exposure time, introducing a ~40 ms systematic bias and variable jitter.
Fix: Swapped to using cameraAccess.Timestamp converted into the Time.time domain.
Camera-to-Headset Extrinsic Application
Issue: PoseLib camera poses were fused directly as center-eye poses, ignoring the physical offset of the Quest camera and introducing a 3–6 cm constant bias plus rotation lever-arm error during turns.
Fix: Applied the constant rigid transform (T_camera->headset derived from cameraAccess.GetCameraPose()) upstream of the Kalman filter prior to calling AddAprilTagObservation.
Per-Frame Intrinsics Guard
Issue: Intrinsics were only refreshed on OnCameraArbiterResolutionChanged, creating a transient window where pixels could be solved against mismatched resolution data (causing 5–50 cm errors).
Fix: Added a frame-skip guard that verifies active resolution (actualW/H versus cached resolutionX/Y), triggering a refresh and dropping mismatched frames.