Before the robot is used
Safety: This calibration has NO automatic range, stall, timeout, or sensor-disagreement motion guards. INIT ranges are display-only. Use a clear floor, measured travel and buffer space, a held-bumper operator, and a supervisor at Driver Station STOP. Keep people out of the path and buffers; STOP promptly for obstruction, drift, wrong direction, stall, or unexpected motion. Bumper release requests zero but does not eliminate coast. Isolate power before inspection.
Required hardware & dependencies
- Four-motor drivetrain with front_left_drive, back_left_drive, front_right_drive, and back_right_drive; GoBilda Pinpoint odometry; drive encoders; Control Hub; secure battery; Driver Station and paired gamepad.
- Front-right FORWARD; front-left, back-left, and back-right REVERSE; BRAKE and RUN_USING_ENCODER on all four. Check mounting, wiring, forward encoder signs, and Pinpoint X direction before floor travel.
- Limelight 3A configured as limelight, a fixed camera mount, and published cluster corners. Match the 640×480 camera setting and intrinsics to the installed practice profile.
- A stationary planar practice cluster with IDs 30–33. Each black tag is 2 inches wide; the outer black span is 9.5 inches and center gap is 1.25 inches. Measure both outer gaps and configure the matching profile; the supplied profile specifies 0.125 inches for each.
- Tape measure, marked origin and one-way endpoint, notebook, and a clear area sized using the actual robot footprint, stopping motion, and buffers. For a 36-inch leg, 18-inch footprint, and 2-foot end buffers, about 10×6 feet is a starting layout estimate, not an automatic safety clearance.
The ZIP contains required Java / MyBlocks helper sources and assets for an Android Studio Robot Controller project, not an APK or a standalone browser app. A supervisor must build and install the lesson-helper app, configure the hardware, then import the Blocks. These lesson OpModes are disabled by default; enable one only after completing the setup checks.
Robot setup checklist
- Before class, download the required helper ZIP, read INSTALL, and review the linked technical manifest. Install the required Java/MyBlocks/OpenCV/IPPE sources, libraries, and camera/profile assets in an FTC SDK 12+ Android Studio Robot Controller project. Build and install the lesson-helper app; the ZIP is not a complete APK and Blocks import does not install these dependencies.
- Use Upload Op Mode in the Control Hub FTC Blocks editor to import RoundTripCalibrationBlocks.blk. It is disabled by default. Resolve every missing helper and device before supervisor review and the editor's Enabled control. Select the intended mode in Driver Station; importing does not start it.
- With wheels safely raised, verify motor names, directions, encoder signs, Pinpoint availability, and zero INIT power; use only brief supervised sign checks. STOP before relocating to the floor. A raised-wheel check does not measure floor travel.
- Measure the printed black tag width, outer span, center gap, and both outer gaps. Fix the planar cluster and camera mount. Use the matching 640×480 intrinsics and practice profile and enable corner publication. A 3.25-inch field tag layout needs its own matching profile; moving HIVE tags are not stationary references.
- Measure floor buffers and mark the origin and default 36-inch endpoint (914.4 mm). Record battery, floor, lighting, profile, and geometry. If reviewing a shorter edited exercise, accepted targetInches values are 6, 12, 24, or 36; update tape marks and student calculations too.
- During INIT, inspect Pinpoint, wheel, cluster-corner and timestamp readings with power zero. Ranges are display-only. Agree on a supervisor's STOP boundary before START; there is no automatic range/stall/timeout/disagreement guard.
- Begin with LEFT BUMPER held only while safe and at least five distinct valid cluster frames within the last second. Check a planned bumper-release pause and gated resume. Compare completed, settled observations with tape; STOP early on any concern rather than waiting for a nonexistent timeout.
90-minute teaching sequence
- 0–10 min
Discuss the opening question, assign roles, and agree on path boundaries and STOP criteria.
Look for: Students name tape as an independent reference and understand that the motion gates are not obstacle protection.
- 10–25 min
Check hardware/helper installation, signs, measured cluster geometry, matching camera profile, and floor setup.
Look for: Zero INIT power, correctly configured devices, distinct frame timestamps, and a measured origin/endpoint with buffers.
- 25–40 min
Use the Blocks walkthrough and highlighted program view. Arrange the selected stop actions, change the browser target to 12 inches, and trace the frame/phase decisions before a floor trial.
Look for: Zero before marking the stop; 304.8 mm target with correct endpoint predictions; frame count rather than tag count; one origin retained through pauses.
- 40–55 min
Work the distance, median, and error practice; discuss signed units and zero-reference residuals.
Look for: 914.4 mm target, correct conversion denominators, signed errors, and no division by zero.
- 55–72 min
With supervisor approval, make supervised repeats and record tape and settled sensor comparisons. Robot-free groups complete the phase trace and practice calculations.
Look for: Held-bumper operation, STOP supervision, separate paused/stopped/completed notes, and measured rather than invented trial values.
- 72–83 min
Compare completed records with notebook measurements and use the self-check quiz to discuss differences.
Look for: A reasonable explanation involving scale, slip, coast, or camera geometry; completion is distinguished from matching the tape.
- 83–90 min
Use STOP, make the robot safe, and discuss the exit ticket.
Look for: Correct gates, endpoint sensor, return residual, and a named absent automatic guard.
Observation notebook
Round-trip notebook: compare settled estimates with tape| Trial / phase | Tape displacement (mm) | Pinpoint / wheels (mm) | Camera / conditions |
|---|
| 1 · outward settled | Measure travel from marked origin | Record signed outward estimates | Record settled comparison and recent distinct frames |
|---|
| 1 · return settled | Measure signed return residual | Record signed residuals | Record comparison, lighting, and coast |
|---|
| 2 · repeat or early STOP | Record measured position | Record available estimates | Record pause/STOP reason and whether the trip completed |
|---|
Record raw starting/ending X, signed wheel changes, camera axis/profile, battery, floor, cluster dimensions, and completion state. Completed measurements go to /sdcard/FIRST/calibration_results.jsonl; use the team's approved file workflow to retrieve them. Keep early-STOP notes separate from completed trips. Compare camera changes in matching axes, not raw depth alone. Use signed residual millimeters at the zero-reference return.
Troubleshooting · stop before investigating
- Missing helper blocks, assets, or camera pose output
- Keep the mode disabled. Compare the helper build with the technical manifest; check SDK 12+, configured devices, required libraries/assets, 640×480 intrinsics, profile, and corner publication.
- The travel phase is paused
- Check held LEFT BUMPER and at least five distinct valid frames in the rolling last second. Inspect timestamps and frame validity; do not substitute tag count or bypass either gate.
- Drift, wrong direction/sign, stall, or excessive coast
- Use STOP promptly and isolate power. Check motor direction, wiring, Pinpoint X, forward encoder signs, traction, and buffers. The program has no automatic range/stall/timeout/disagreement motion guards.
- Camera comparison jumps or disagrees with tape
- Keep stopped. Recheck stationary IDs 30–33, black 2-inch widths, 9.5-inch span, center and both outer gaps, camera mount, lighting, corners, and matching profile. Do not substitute moving tags or averaged individual-tag depths for the cluster comparison.
- Pause does not seem to reset the target
- That is intentional: the software origin is captured once. Trace WAIT/FORWARD/BACKWARD and distinguish displayed PAUSED from the retained travel phase. Resume only when both gates pass and the path is safe.
- No completed record after STOP during settling
- An unfinished trip is not a completed record. Note the STOP and position separately. For a fully completed trip, check the results file through the approved file workflow and compare its measurements with tape.
Exit ticket & assessment
- Explain the two motion gates and why four tags in one frame are not four frame observations.
- Name the distance-endpoint sensor and explain how settled camera and wheel readings are used.
- Calculate an outward percent error, report a return residual without dividing by zero, and name one absent automatic motion guard.
Assessment: Look for a correct frame/phase trace, unit conversions, signed tape comparison, median, and return residual. Ask students to explain an error and how they would investigate it. Assess the reasoning rather than how close a sensor reading looks to the target; supervisor approval of physical operation is a separate setup decision.
Extension challenge: Plan three repeats at one target, changing only one condition. Predict how slip or a shared scale error could let sensors agree yet differ from tape. Propose an independent measurement for a later lateral-motion or turn experiment; this lesson does not automatically fit sensor scales.
Teacher key · discuss after students predict
Frames, origin, and pauses
A counts once despite four tags and repeated reads. A–E within 0.9 seconds make five valid distinct observations; LEFT BUMPER must also be held. Passing WAIT captures the origin and changes phase at zero power; a later FORWARD loop may request +0.10. Bumper/frame loss requests zero without changing the retained goal.
Distance arithmetic
36 × 25.4 = 914.4 mm. (19191.4091848 − 1000) / 19.894367 = 914.4 mm. 1955.46 / 2.18 = 897 mm. Against 900 mm tape, Pinpoint error is +1.6% and wheel error is −0.333…%. Reaching the software threshold and matching measured travel are different questions.
Median, settling, and return
Sorted values are 908, 910, 950, so the median is 910 mm. The program waits 0.8 seconds at zero and uses endpoint camera median frames after stop +0.25 seconds. Report +18 mm return residual, not percent error relative to zero. STOP halfway through return settling does not complete the trip.
Cluster geometry and reference
Four 2-inch black tags total 8 inches; 1.25 + 0.125 + 0.125 inches of gaps give a 9.5-inch span. Measure both outer gaps and use a matching profile. Camera change depends on axis, pose, and mount; moving HIVE tags are not fixed field coordinates. Tape supplies a separate comparison.
Controls and safe stopping
Pinpoint X selects ≥ target outward and ≤ 0 return endpoints. Camera and wheels compare only; there is no automatic scale fit or range/stall/timeout/disagreement protection. Clear floor, measured buffers, held-bumper operation, and a STOP supervisor remain necessary.