Before the robot is used
Safety: Treat this as source analysis, not a deployment request. Learn and enabled metadata are not competition or physical-run approval. Autonomous sends real powers, has no wall guard, no age/pipeline validity checks in scanTags, and no approach edge-angle limit. Its centered counter is not five verified consecutive fresh frames. Any independently authorized bench demonstration needs wheels clear, exclusion space, an operator, and a supervisor at STOP. Do not use a camera-range endpoint as a bumper-clearance guarantee.
Required hardware & dependencies
- Four mecanum drive motors named front_left_drive, front_right_drive, back_left_drive, and back_right_drive; verify each configured name against its physical cable and wheel.
- FTC Robot Controller, Driver Station, secure battery, and a notebook. Motor direction settings are specific to the source and mounting, not universal wiring instructions.
- Limelight 3A named limelight with calibrated AprilTag pipeline 0; correct tag sizes, camera mounting, and expected ID 30-45 geometry.
- Accurate target-layout reference and tape measure for a separate stationary range audit; encoder-capable drive motors for the source's RUN_USING_ENCODER configuration.
Source remains AprilTagAuto.blk. Required native Blocks/devices are Limelight 3A named limelight, four drive motors, and an AprilTag pipeline 0 with the expected ID 30-45 layout. No helper ZIP is supplied. An educational name and enabled flag are not authorization; independently review axes, frame age, centering logic, calibrated range, and wheel directions before physical use. This page does not deploy anything.
Robot setup checklist
- Inspect AprilTagAuto.blk and resolve native motor and Limelight Blocks without deploying. No helper installation or ZIP is claimed.
- Verify autonomous FL/BL REVERSE, FR/BR FORWARD, BRAKE, RUN_USING_ENCODER, zero INIT powers, 100 Hz poll request, and 50 ms telemetry transmission request.
- Review the literal endpoint equations against the real camera pose convention. Check the half-group target layout before accepting a reconstructed center.
- Document absent age/distinct-frame checks and the centered counter's loss behavior. Source timeouts limit duration but do not certify a safe route or stopping distance.
90-minute teaching sequence
- 0-15 min
Compare direction profiles and identify each timer's phase.
Look for: BR FORWARD in Auto; 3/6/8 seconds belong to different phases.
- 15-35 min
Reconstruct endpoints, midpoint range, and bearing.
Look for: Signed offsets in meters and literal X/Y yaw projection.
- 35-60 min
Trace first usable selection and centered-counter branches, including loss.
Look for: Locked alliance, zero on loss, retained counter, no frame deduplication.
- 60-90 min
Calculate exact approach powers and classify outcomes; quiz and exit ticket.
Look for: Strict +/-2 comparisons, actual FR bias, and completion distinct from timeout.
Observation notebook
Notebook: autonomous evidence, counters, commands, and stop reason| Phase / elapsed time | Selected alliance / found | Range / tx | centered or done | Decision |
|---|
| Acquire / 0.2 s | Red / true | 50 in / +3 degrees | selectedId 0 | End acquisition; retain red |
|---|
| Center / within 6 s | Red / false | Old values not usable | centered remains 2 | Four zero requests |
|---|
| Approach / within 8 s | Red / true | 24 in / any reported tx | done true | Four zero requests; range threshold reached |
|---|
| Approach / 8 s | Red / true | 30 in / 0 degrees | done false | Timeout, not arrival |
|---|
Mark freshness as unverified. Record range change separately from tape-measured chassis travel; a timeout or STOP is never relabeled successful completion.
Troubleshooting · stop before investigating
- Acquisition stops without choosing a target.
- Check for a matching pair of halves, pipeline contents, device mapping, and the 3-second maximum. Seeing many same-half tags is insufficient.
- A nearer blue target does not replace acquired red.
- That is the selecting=false policy. Only the chosen alliance can restore found during centering and approach.
- Five centered checks arrive implausibly fast or survive a dropout.
- The source counts loops without frame deduplication and omits loss reset. Record the limitation rather than claiming five fresh consecutive frames.
- A robot direction would disagree with TeleOp.
- Keep physical outputs disabled; compare BR FORWARD versus REVERSE and inspect mounting and encoder mode. Do not assume a shared hardware profile.
- Display says distance traveled but independent tape disagrees.
- The display is startRange-currentRange, not direct odometry. Check camera offset, target motion, height, and pose projection before interpreting it.
Exit ticket & assessment
- Name the three phase time limits.
- Explain the counter behavior on missing versus off-center targets.
- State what <= 24 measures and why an educational label is not approval to run.
Assessment: Require a correct phase trace, matching-half selection, counter-loss explanation, exact powers at +/-2 boundaries, and outcome classification. Students must recognize absent freshness/wall guards and the autonomous-specific direction profile.
Extension challenge: On paper design a comparison of camera range change, independent tape displacement, and verified fresh-frame counts. Describe improvements as proposals without editing the supplied Blocks or deploying.
Teacher key · discuss after students predict
Timer and counter trace
Acquisition exits on first selected center or at 3 seconds; center has 6 seconds; approach has 8. Counts 1,2,missing,3,4,5 can reach the gate because missing does not reset. A found +3 result resets to 0.
Approach outputs
At range 30: tx +3 gives 0.30/0.26/0.30/0.20; +2 and -2 give 0.25/0.31/0.25/0.25; -3 gives 0.20/0.36/0.20/0.30. Loss is zero; exactly 24 with found sets done.
Range interpretation
The 0.30/0.40/0 pose gives 0.50 m, about 19.685 inches. The midpoint practice gives about 39.57 inches and +5.71 degrees. A 16-inch range reduction is not independently verified robot travel.
Threshold guard
targetRange is assigned 24, so targetRange >= 10 always passes. Its else label about already being within 24 is not a measured current-range branch; the actual <=24 check is inside approach.