Skip to content

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 and the referee only sees results. 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 gyro

Key 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 on the highway: the trip home needs no precision - full speed, roughly aimed at base.

Structuring a run

One launch (run) = one 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
gyroStraight [-70]          ← back to base

Principles:

  • Pick the right navigation per segment: long haul = gyro straight, final approach = line/distance sensor, return = fast and rough.
  • 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

ProblemCountermeasure
Battery level changes speedFull charge at competition; end every move on encoders/sensors, never time
Venue lightingRecalibrate color thresholds on site; shield the sensors
Wheel slipGentle acceleration at launch; keep tires clean (wipe before matches)
Table wall differencesLeave margin in wall-squaring wait times
Shaky handsStart 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. Data beats vibes.

Exercises

  1. Build a start jig, measure end-position scatter over 10 launches, compare with freehand placement.
  2. 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.