All Classes and Interfaces
Class
Description
Base for fake devices: supplies the boilerplate
HardwareDevice metadata so concrete fakes
(e.g.Season-glue interface: the two numbers that describe a degree of freedom which never runs out of
travel — a continuous-rotation ejector servo, an intake roller, a flywheel (architecture §3, domain
R6/R7).
Season-glue interface: drivetrain geometry + motor-model + field-bound constants the core
plant needs, supplied by the season layer in
TeamCode (architecture §3, domain R7).The seven starter envelope terms from
docs/process/scorer-interface.md §3, sorted honestly into
the ones a run's log can actually answer and the ones it cannot.Fake
AnalogInput returning a settable voltage, so the unchanged SolversLib
AbsoluteAnalogEncoder wrapper (which reads getVoltage() / getMaxVoltage())
resolves headless.Fake
CRServo: a continuous-rotation servo, the actuator V0's deposit ejects a line of pollen
with (docs/specs/deposit.md §2).A simulated hardware device with a kinematic plant.
Fake
DigitalChannel: the one digital IO pin on a REV hub that a beam-break sensor, a limit
switch or a signal LED is wired to.Fake external encoder (fakehardware-plant §4): the plant → sensor → subsystem seam for a 1-DOF
mechanism.
JVM-constructible
HardwareMap that resolves fake devices by config name
(fakehardware-plant §6).Fake
I2cDeviceSynchSimple (the I2C bus client) that an I2cDeviceSynchDevice subclass
holds as its deviceClient.First-order drive-motor plant (fakehardware-plant §3), seeded from PsiKit's test
FakeMotor.Kinematic fake
Servo: a commanded position is held instantly (a bare servo has no dynamics
worth modelling for the drivetrain sim — mechanism dynamics live in Mechanism1DofPlant, R6).The single, advanceable simulation clock (fakehardware-plant §6, domain R5).
Fake
VoltageSensor returning a fixed nominal battery voltage (default 12 V).The one and only place the localizer ↔ field frame rotation is written.
One game piece in the sim: a field position in inches, a physical size, and exactly one
PossessionState.The one place a game piece changes hands.
The acceptance gate: the one place that decides whether a candidate run is allowed to become the new
last-best (`docs/process/scorer-interface.md` §6).
The four §6 clauses, in the order a verdict reports them.
One clause's outcome plus the sentence explaining it, for the verdict a human reads.
A fact the gate is told rather than measures.
What the caller knows about the current last-best score.
How one clause came out.
The two facts that are not in any log: whether the tests passed, and whether an independent review
approved the change.
The gate's answer: accepted or not, plus every clause and why.
One safety-envelope term: something that must stay true no matter how good the objective gets
(
docs/process/scorer-interface.md §3).What a guardrail concluded about one run.
A guardrail's conclusion about one run: a status, a penalty, and why.
One segment of a mechanism, as it should be drawn in AdvantageScope.
Which of a segment's two drawn numbers this joint moves.
One telescoping stage of a linear mechanism — a segment whose drawn length moves while its angle
stays put.
The bookkeeping half of the loop: holds the last-best, judges each candidate with
Gate, emits
a Milestone when the answer gets qualitatively better, and writes the StopReport
(docs/process/scorer-interface.md §5, §6, §8).One candidate offered to the loop: the run, its score, the two facts the gate cannot measure, and
the candidate's own account of what it changed.
What the loop did with one offered candidate.
Closes the sim odometry loop for a mecanum drivetrain (fakehardware-plant §5): each tick it reads the
four drive
FakeMotors' modelled wheel velocities and integrates the pose through
MecanumPoseIntegrator.Kinematic mecanum forward-kinematics pose integrator (architecture §3 core primitive,
fakehardware-plant §5).
Generic 1-DOF mechanism plant (fakehardware-plant §4, domain R6): the season-agnostic primitive every
mechanism (slide, arm, turret) is built on — one class, one config per mechanism.
Season-glue interface: the parameterized first-order dynamics + end-limits of one 1-DOF mechanism,
supplied by the season layer in
TeamCode (architecture §3, domain R6/R7).Draws a
MechanismSketchDefinition into AdvantageScope's Mechanism tab: it owns a PsiKit
LoggedMechanism2d, keeps one ligament per joint, and updates them as the mechanism moves.The complete description of one mechanism as AdvantageScope should draw it: a canvas, a mount point, and
an ordered chain of telescoping stages.
Step-by-step builder for a
MechanismSketchDefinition.One milestone: a point where the loop's best answer got qualitatively better, and the side-by-side
evidence for saying so (
docs/process/scorer-interface.md §5).Why a milestone was emitted.
How one subsystem with several real degrees of freedom is simulated: one plant per degree of
freedom, held side by side, ticked together and logged apart (BACKLOG B13, decided 2026-09-14).
Collects the degrees of freedom, in the order they are added.
What the loop is trying to make better, declared up front
(
docs/process/scorer-interface.md §2).The human's rough estimate of what this objective is worth spending.
Which way a raw metric points.
Thrown when an objective's metric measured
NaN or an infinity.The surface shared by every plant in this package that models exactly one degree of freedom:
Mechanism1DofPlant (power-driven, through a motor or a continuous-rotation servo) and
PositionalServoPlant (command-driven, through a positional servo).1-DOF mechanism plant for a joint driven by a positional servo — the servo-side twin of
Mechanism1DofPlant (fakehardware-plant §4, domain R6).Season-glue interface: everything a
PositionalServoPlant needs to turn a servo command in
[0, 1] into a real mechanism position that takes time to get there (architecture §3, domain
R6/R7).The complete, fixed set of possession states one game piece can be in.
One pivot of a mechanism — a segment of fixed length whose drawn angle moves.
Compares two RLOG files by decoded field value, not raw bytes (BACKLOG B3,
docs/process/scorer-interface.md §2/§7).One decoded-field mismatch between two runs;
frameIndex is -1 for a frame-count mismatch.An immutable 3-D vector in the robot-local frame:
+X robot-right, +Y robot-forward,
+Z up, with the origin at the centre of the drivetrain footprint at floor level
(docs/phase1/01-conventions.md §7, extended to 3-D for CAD in B12).One finished sim run, read back off disk so it can be scored.
Thrown when a metric names a key the run never logged.
Thrown when a metric's logged value is not a number.
Runs one headless sim scenario end-to-end: owns the entire PsiKit lifecycle (sim-harness §2-3) and the
fixed-timestep tick loop, so a test does not hand-write it (BACKLOG "scenario runner" / area B).
One scenario's per-tick behavior: command the robot, advance its fake hardware/plants, log fields.
Turns a finished run into one number, plus the breakdown that number came from
(
docs/process/scorer-interface.md §1, §8).One run's score: the total, and every term that produced it.
Season-glue interface: the device registry the core needs to build a
FakeHardwareMap
that mirrors the real robot configuration (architecture §3, domain R7).What the loop says when it is stopped: the best answer it found, and proof that the answer reproduces.
How the second run of the best candidate's scenario came out.
Runs one accepted candidate's scenario again, from the top, and returns the fresh RLOG.
A rectangular region bolted to the robot that decides whether a game piece is close enough to be
acquired — the "mouth" of an intake, expressed as geometry instead of contact physics (domain R6).