Here you will discover how to use the skills you’ve acquired in the educational game Fix EV3 Rover. Whether you are already a member of a FIRST® LEGO® League (FLL®) team, or you would like to become a member, this will help you find a team and understand the similarities and differences between Fix EV3 Rover instructions, and the blocks you’ll need to use when programming real LEGO MINDSTORMS® EV3 robots in FLL competitions. You’ll also get an explanation of why the blocks used in Fix EV3 Rover are particularly useful in FLL competitions.
In the US the FLL competition season begins each fall and extends into the winter. Teams comprised of 2 to 10 children are coached by adults who are often teachers or parents of the participating kids who are 9 to 14 years old. See www.firstlegoleague.org for more information. To find an existing team or form a new team near you, go to FIRST TeamUp.
The command blocks in Fix EV3 Rover are simplified versions of commands available in the LEGO EV3 programming language, so it is useful to know how to apply what you’ve learned in the game to programming actual EV3 robots. Here are some suggestions for making the transition to the EV3 programming language.
= Use the “Move Steering” block from the green “Action” tab and configure the desired number of “Rotations” to move both the robot’s wheel motors
= “Move Steering”, set “Power” to a negative number, and configure “Rotations”
= “Move Steering” and set to “On”
= “Move Steering” and set to “Off”
= Use the “Large Motor” block from the green “Action” tab for turning the robot using a single motor — then set to “Port: C”, and configure “Rotations” to move the robot’s right wheel motor forward
= “Large Motor”, set to “Port: B”, and configure “Rotations” to move the robot’s left wheel motor forward
= “Large Motor”, set to “Port: C”, set “Power” to a negative number, and configure “Rotations” to move the robot’s right wheel motor backward (available with the Fix EV3 Rover Pro upgrade)
= “Large Motor”, set to “Port: B”, set “Power” to a negative number, and configure “Rotations” to move the robot’s left wheel motor backward (available with the Fix EV3 Rover Pro upgrade)
= Use the “Medium Motor” block from the green “Action” tab and set “On for Seconds” to rotate the robot arm’s motor
= “Medium Motor”, set “On for Seconds”, and set “Power” to a negative number to rotate the robot arm’s motor in the reverse direction
= Use the “Wait” block from the orange “Flow Control” tab and set “Touch Sensor – Compare – State” to wait until the touch sensor touches something
= “Wait”, set “Color Sensor – Compare – Reflected Light Intensity”, and configure “Threshold Value” based on test readings of the color sensor, to wait for the color sensor to detect a darker color
= “Wait”, set “Brick Buttons – Compare – Brick Buttons” to pause the program, waiting for the center button (or screen) to be pressed before continuing (available with the Fix EV3 Rover Pro upgrade)
Now for some questions and answers about the commands used in Fix EV3 Rover, and their relation to commands used when participating in FLL competitions:
Q: There are dozens of commands available in the EV3 programming language. What’s so special about these commands?
A: These commands were specifically chosen because they are among the most useful for controlling robots in FLL competitions. Once you have mastered these commands you are free to explore other commands in the EV3 programming language, but you may not need to use anything more than these.
Q: Why are only one-wheel turns available in the game, when there are perfectly good ways of turning using both wheels?
A: Experienced FLL competitors have discovered that moving just one wheel for turning the robot will result in more consistent, repeatable results than turns where both wheels are moving. Since this game was created we have discovered a trick that enables the robot to move only one wheel by using a “move steering” block, but you MUST set the turning angle to either 50 or -50 to keep both wheels from moving.
Q: What does the “Power” setting do, and how does it affect a motor’s direction of rotation?
A: Fix EV3 Rover uses simplified command blocks that don’t use a “Power” setting. When using the EV3 programming language to create programs for real EV3 robots, you need to understand how “Power” works. Positive “Power” numbers, , rotate the motors forward, and negative “Power” numbers, , rotate the motors backward. The larger the positive number, the faster it will move forward; the smaller the negative number, the faster it will move backward.
Q: Why is “On for Rotations” used for moving the robot? What about “On for Seconds” or “On for Degrees”?
A: Moving a motor “On for 360 degrees” is identical to moving a motor “On for 1.0 rotation”, so either would work. But to make the robot travel over a large distance, “On for Rotations” results in more manageable numbers. There’s a temptation to use “On for Seconds” when moving the robot’s wheels, but this is not recommended since the distance traveled will change if you later change the ‘Power” setting to make it move slower or faster. If you use “On for Rotations”, changing the “Power” setting will not affect the distance the robot travels.
Q: EV3 Rover always moves or turns consistently, based on the number of motor rotations. Why don’t real EV3 robots behave more consistently for a given number of motor rotations?
A: There are many factors that can influence the reliability of real EV3 robots. One of the most common problems is caused by a tire slipping on the surface of the competition playing field. Slippage can be caused by: “Power” set too high, robot parts rubbing against a wheel, weight distributed unevenly between the driving wheels, not enough weight directly over the driving wheels, rubber tires used on non-driving wheels, attachments or wires rubbing against the playing field under the robot, accumulation of dust on the playing field or tires.
Q: Why is the robot’s starting position always against the left edge of the screen, near the bottom?
A: The starting “base” for many competitions is in one of the corners of the playing field. If the robot has a flat surface at its rear that can be used to back it up against the playing field wall to quickly aim it before starting, it will behave more reliably. Aiming the robot without a physical guide can be slower and less accurate when competing.
Q: Why is “On for Seconds” used for raising and lowering the robot arm, instead of “On for Rotations” or “On for Degrees”?
A: If you use “On for Rotations” or “On for Degrees” to move the arm, and the arm runs into an obstacle before the required degrees or rotations have completed, the program will stall and the robot will freeze while the program tries to complete the instruction. If you use “On for Seconds” to move the arm, the program will continue after the designated time, even if the arm runs into an obstacle.
Q: When is the “Move Steering – Off” command needed?
A: The “Off” command is needed before a one-wheel turn, if an “On” command (without specifying rotations) is still in effect. The “Off” command will stop both wheels before the turn starts. Without the “Off” command, both wheels would still be moving “On” and the one-wheel turn wouldn’t work properly.
Q: How do I know what “Threshold Value” to put in a “Wait – Color Sensor” block to detect when the robot encounters a black line?
A: Before using the Color Sensor to “Compare Reflected Light Intensity”, the color sensor must be calibrated in the environment where it will be used. To calibrate the color sensor: a) turn on the EV3 and press the right button to the third tab on the screen, b) Press the center button to select “Port View”, c) move right to Port 3 “COL- REFLECT” (where the color sensor is likely to be connected), d) place the EV3’s color sensor over a light colored area and note the number that appears on the screen, e) place the EV3’s color sensor over the nearby black line that you want to detect and note the number that appears on the screen, f) average these two numbers, and use this average as the “Threshold Value” in the program.
Q: Why can’t you end a program with “Move Steering – On” to make the robot keep going forward indefinitely?
A: When a program runs this command, it starts the motors turning and then quickly moves on to the next instruction to see what to do next. If there is no next instruction, the program ends and all motors are immediately stopped.
Q: Why doesn’t EV3 Rover make use of a gyro sensor, or an ultrasonic or infrared sensor?
A: The infrared or ultrasonic sensors can detect the distance between it and another object, but they are not very reliable or accurate. Counting wheel rotations or using a touch sensor is usually more accurate. The gyro sensor may be useful in some situations, but for the sake of simplicity it was not included in Fix EV3 Rover.
Q: Why can you only add or delete blocks at the very end of the program in Fix EV3 Rover?
A: Beginning programmers often try to write an entire program before testing any of it, only to find an error buried somewhere in the middle of the program when they finally run it. This makes it difficult to isolate the location of the problem. It is much better to write a few instructions and test that they work as expected before adding to the program. Being able to only add or delete blocks from the end of the program encourages this practice. If you upgrade to Fix EV3 Rover Pro, you will be able to add, delete, and rearrange blocks in the middle of the program for levels 7 and above.
Q: When will more levels and features be added to the game?
A: Since early 2017, an in-app upgrade to Fix EV3 Rover Pro has been available for a nominal fee. If you have mastered the first 12 levels of the free version, you can try your hand at the challenges offered in the Pro upgrade. Let me know here if you have suggestions for future enhancements.
LEGO®, MINDSTORMS®, and LEGO® logos are trademarks of The LEGO® Group, which does not sponsor, authorize or endorse this product. FIRST®, and all of its trademarks, FIRST®, FIRST® LEGO® League, and FLL® are trademarks of FIRST®, which does not sponsor, authorize or endorse this product.