FLL Techniques
What scores on the competition table isn't clever algorithms - it's runs that do the same thing every time. This lesson combines everything so far into FLL-specific plays.
Reliability > speed > elegance
A robot game match is 2:30, scored by mission completion state (referees also observe the team's Core Values behavior). A mission that succeeds 9 of 10 attempts beats one that's 5 seconds faster but succeeds 6 of 10. Every technique here serves one word: repeatability.
Position calibration: fighting error accumulation
Every segment driven adds position error. Calibration = using a known landmark to zero it out.
Wall squaring
Back into the wall; the wall is straight, so a firm contact fixes both heading and position:
define wallSquare
set movement speed [30] %
start moving [backward]
wait [1.5] seconds ← long enough to press in; wheel slip is fine here
stop moving
reset yaw angle [0] ← pose is known: zero the gyroKey points:
- Low speed (25-35%): a full-speed hit bounces and sheds parts.
- The robot's tail must be flat (two contact points touching together); a skewed approach jams at an angle.
- With a force sensor, replace the fixed wait with "wait until pressed" - faster and confirmed.
Line calibration
Drive perpendicularly across a known black line; the instant you see it, your position along the driving direction is known:
start moving [forward]
wait until <color sensor [C] reflected light < [blackThreshold]>
stop moving
move [forward] for [3] cm ← fixed offset from line edge to line center, etc.The two-sensor version also fixes heading: if one sensor hits the line first, the robot is skewed - stop the early wheel until the other catches up ("line squaring").
Launch and return
- Start jig: build a LEGO alignment frame that sits against the base wall; place the robot against the jig every launch. Placement error drops from centimeters to millimeters. Highest value-for-effort "technique" in FLL.
- Launch heading = gyro zero: square the robot, then press start.
- Return home fast: the trip home needs no pose precision - full speed, roughly aimed at base. Per the BIOGLOW rules, if you interrupt a run to relaunch, the robot and everything it carries must be completely inside Home, or you lose a Precision Token.
Structuring a run
A common workflow (not a rule): one launch (run) per program slot. The standard skeleton:
when program starts
init ← My Block: motor setup + threshold variables + reset yaw
gyroStraight [60]
turn [90]
follow [30] ← line follow the final approach for lateral precision
attachment action
wallSquare ← if a wall is on the way, wipe the error before the next model
move [backward] for [70] cm ← back to base (speed over pose precision here)Principles:
- Pick the right navigation per segment: long haul = gyro straight, final approach = line/distance sensor, return = speed over precision.
- Put failure-prone missions last: an early failure can wreck the field for everything after it.
- Attachment swap time is run time: drill swaps to under 5 seconds.
Robustness details
| Problem | Countermeasure |
|---|---|
| Battery level changes speed | Full charge at competition; end every move on encoders/sensors, never time |
| Venue lighting | Recalibrate color thresholds on site; shield the sensors |
| Wheel slip | Gentle acceleration at launch; keep tires clean (wipe before matches) |
| Table wall differences | Leave margin in wall-squaring wait times |
| Shaky hands | Start jig + fixed roles (same person places, same person presses) |
Testing discipline
- Test every mission 10 times in a row and record the success rate. Below 8/10 = not done.
- After any program change, retest from robot placement, not just the changed segment.
- Keep a log: mission, success rate, average time, failure causes. Let the data decide, not gut feeling.
Exercises
- Build a start jig, measure end-position scatter over 10 launches, compare with freehand placement.
- Write one complete run: launch → gyro straight → turn → line-follow approach → attachment action → return. Run it 10 times and log the success rate.
This is about as far as Word Blocks goes. For faster loops, real functions and PID, continue to Python.