accuracy.hpp¶
accuracy.hpp — the accuracy targets of Freeze Register ROW F2, the LOCKED spec the autonomous is measured against.
This header declares 5 constants.
Extracted from include/shulib/spec/accuracy.hpp — this page is that header's documentation, reformatted, so it cannot disagree with the code. Prose about how to think about the API lives in the user guide; worked recipes live in the cookbook; this page is the complete, mechanical list of what exists.
Contents¶
kHeadingErrorMaxDeg— constantkDockedHeadingTypicalDeg— constantkPositionErrorEndOfRun— constantkRepeatability— constantkDockedPositionError— constant
kHeadingErrorMaxDeg¶
The one HARD target: |heading error| must ALWAYS be strictly below this. A bare magnitude in DEGREES — not radians, not a units:: quantity — so comparing against it means converting the estimate's radians first, as the acceptance test does. The position targets flex around this one; it never flexes around them.
constant, declared at include/shulib/spec/accuracy.hpp:24.
kDockedHeadingTypicalDeg¶
What closed-loop docking on a tag is expected to reach (degrees), stated beside the cap so the two are read together. An ASPIRATION, not a gate: nothing asserts a run against it; the only test that mentions it checks that it is tighter than kHeadingErrorMaxDeg.
constant, declared at include/shulib/spec/accuracy.hpp:29.
kPositionErrorEndOfRun¶
Absolute position error, in canonical inches, at the END of a 60 s autonomous on the v1 estimator (GPS + tracking wheels + IMU) — the loosest of the three, because it is the one that accumulates for a whole run.
constant, declared at include/shulib/spec/accuracy.hpp:35.
kRepeatability¶
Run-to-run SPREAD (canonical inches), not error against truth: how far apart the same routine's end poses may land across repeats. Deliberately tighter than the absolute target — a repeatable robot can be trimmed, a scattered one cannot.
constant, declared at include/shulib/spec/accuracy.hpp:40.
kDockedPositionError¶
Final alignment error (canonical inches) for closed-loop vision docking on a tag (M3). The tightest number here because the loop closes on the thing being docked to, so it never pays the dead-reckoning accumulation the other two do.
constant, declared at include/shulib/spec/accuracy.hpp:44.
Design commentary, from the header¶
The header opens with the reasoning behind these shapes. It is reproduced here in full because a reference that only lists signatures teaches nobody why.
The header’s own reasoning — 12 lines
accuracy.hpp — the accuracy targets of Freeze Register ROW F2, the LOCKED
spec the autonomous is measured against (master plan §7, ratified
2026-06-08). "F2" here is the REGISTER ROW, not chunk F2 (the sequence
engine, 2026-08-13) — the name collision is real and this line is the
disambiguation.
This is the SINGLE SOURCE OF TRUTH for the numbers. The system-level
acceptance tests at M2/M3 assert against these constants, and a guard test
pins them so they cannot drift without a deliberate Freeze change.
HEADING < 1.0 deg is a HARD requirement; position targets flex around it.
Last updated 2026-08-15 — published from the main release branch, commit fa545ff. This site tracks releases, so between them it can lag the repository — that lag is deliberate, and it is what keeps the development log off the public site. For the current state of the code, see the repository.