We got involved in FLL in 2003. Since that time I have coached a dozen or so teams, judged multiple tournaments, and served as a tournament director for since 2010.
Of the thousands of teams I've observed, most are using only rudientary programming skills. I call it brute force programming.
This includes only the basic commands.
- Drive for N rotation or degrees.
- Turn with the turn function.
- Run some other motor.
This type of programming will almost always get you the basic challenges. The ones that are close to base and easy to access. I can get you over the threshhold for awards. However, it is generally frustrating for the students for the following reasons:
- It is at all times unpredictable. A minor change in battery charge, change in humidity (effecting traction), a bump in the table surface, human variance/adrenaline, and more, all combine to make it hard to run repeatable missions.
- The imprecise mechanical properties of LEGO robotics. Even if you follow all the recommended construction techniques which include axles mounted with holders on both sides, wheels that don't compress, tightly installed motors, good center of balance, it is still an imprecise system.
- Variations in tables from event to event. Even thought all tournament directors strive to make sure the tables are competition ready and field kits are setup according to the guidelines, there are slight variations. Therefore, programming that relies on a precise positioning of the mat will fail.
- The speeds required to complete some challenges will cause wide variations in directional performance.
To excel and demonstrate precision in robot programing teams need to learn more advanced techniques with sensors. The advance functions will allow for repteatable, precise, predictable results. These include:
- Use of light sensors and all the related functionality. In particular, to capture and follow a line, follow one edge of a lines and switch edges, count objects, stop at a color or shape, measure with precision variations in color or shade, and how to calibrate them to the lighting at the event.
- Use of touch sensors in conditional programming. They need to know how to use them to stop at an object, confirm an action.
- Use of gyro sensors. These sensors have their own touchy issues, but they can be used effectively to keep the robot running straight and making precise turns.
- Use of ultrasonic sensors. While these are not effective at distance, they do work well in close quarters.
And they need to learn advanced programming techniques. The EV3 and NXT software packages provide a full range of modern programing features beyond the linear programming use by most teams.
- Conditional looping and switching.
- Parallel tasks.
- Use Loops and Switches to avoid an obstacle
- Navigate using Motor Rotation sensor feedback
- Navigate using Gyro Sensor feedback
- Simplify programs using My Blocks
- Simplify programs using Arrays
- Storing and transferring variable values from step to step.
- Doing calculations based on stored values.
- And more.
The best way to understand this is to watch high scoring robots from years of FLL events. Watch some of the videos at this YouTube search link.
And look at some of the images at a google image search for "advanced ev3 programming"
So that is your mission. The good news is your robot will not self-destruct after this message.