Skip to content

Dependency upgrades and AprilTag AI comments - #183

Open
agasser wants to merge 21 commits into
QuestNav:SeanErn/AprilTagfrom
STMARobotics:Andy/AprilTag-Updates
Open

Dependency upgrades and AprilTag AI comments#183
agasser wants to merge 21 commits into
QuestNav:SeanErn/AprilTagfrom
STMARobotics:Andy/AprilTag-Updates

Conversation

@agasser

@agasser agasser commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

This PR includes everything in #182 plus:

  • Upgraded dependencies for the docs and web UI
  • Updated Unity to the latest LTS (6000.3.21f1)
  • Fixed several AI comments from @juchong:
  1. 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.

  2. 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.

  3. 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.

  4. 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.

SeanErn and others added 21 commits March 22, 2026 02:39
* 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
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

4 participants