Falcon Construccion
Falcon Construccion
Unlike the EXPLOR3R you built earlier, the race car uses three motors. Two Large Motors in
the rear make the car drive, while the Medium Motor lets you steer the front wheels. Think of
the rear motors as the car’s engine and the motor in the front as the car’s steering wheel.
Once you’ve built the race car, you’ll create several My Blocks to make it easy to program the
car to drive and steer. Then you’ll combine these blocks in one program that lets you control the
car remotely and another program that makes the robot drive around autonomously and avoid
obstacles. Finally, you’ll be challenged to add more functionality to the design and to make it
race faster using gears.
Figure 12-2. The pieces needed to build the Formula EV3 Race Car
driving and steering
The Formula EV3 Race Car uses two separate mechanisms to drive and steer. To drive the car,
you switch on the Large Motors in the rear. You can steer the car by turning the front wheels to
the left or to the right with the Medium Motor in the front. When you combine driving and
steering in one program, you can move the car in any direction.
To see how this works, use your hands to set the front wheels in the centered position, as shown
in Figure 12-3. Then, go to Port View on the EV3 brick, and observe the Rotation Sensor value
(port A) as you manually steer the front wheels to the left and to the right. You’ll find values
around 60 degrees for the left, 0 degrees for the center, and −60 degrees for the right. Note that
these angles indicate the position of the motor. The wheels turn left and right by a smaller
amount because of the gears in the steering mechanism.
Figure 12-3. Rotation Sensor values for various positions of the front wheels. Make sure the wheels are in the center
position before you start Port View in order to see these measurements.
As shown in Figure 12-3, the Medium Motor should move toward the point where the sensor
measures 60 degrees in order to make the robot steer left. To steer right, it should move toward
the −60 degree measurement, and to drive straight ahead, it should move back to 0 degrees.
You’ll make three My Blocks, called Left, Right, and Center, to put the wheels in each of these
positions.
These blocks will work only if the sensor value is 0 degrees when the wheels are centered.
Because you don’t want to center the front wheels manually each time you run the program,
you’ll make another My Block, called Reset, to do this for you. This My Block centers the
wheels and sets the Rotation Sensor value to 0. You’ll place it at the start of each program for
this robot.
The stalled motor position should be 78 degrees past the center, which means you can move the
wheels all the way to the left, then use a Medium Motor block to turn 78 degrees backward to
reach the center position. Once the front wheels are aligned properly, you set the Rotation
Sensor value to 0. From that point on, Rotation Sensor values near 0 indicate that the front
wheels are aligned in the center.
Begin by creating a new project called FormulaEV3 for all of the programs for your race car.
Then create the Reset My Block, as shown in Figure 12-4.
Figure 12-4. The Reset My Block moves the steering wheel to the center and resets the Rotation Sensor to 0. The
completed My Block is shown on the right.
You’ll use a Switch block to determine whether the wheels are already in the left orientation. If
they are, the motor is turned off; if not, the motor turns forward until it reaches 60 degrees. This
works regardless of whether the wheels are currently centered or steered right because the
motor turns until it is in the correct position, rather than turning a fixed number of degrees.
The Brake at End setting is set to True, locking the motor in this position until you have it make
another movement. Place and configure the blocks shown in Figure 12-5, and turn them into a
My Block called Left.
NOTE
The Switch and Wait blocks in the Left, Right, and Center My Blocks are all configured in Motor Rotation
– Compare – Degrees mode.
Figure 12-5. The Left My Block makes the front wheels steer to the left. The completed My Block is shown on the
right.
Figure 12-6. The Right My Block makes the front wheels steer to the right. The completed My Block is shown on the
right.
If the motor is already in the center region when this My Block runs, the motor is switched off.
If the wheels are to the left of the center (the sensor value is greater than 5 degrees), they turn
right until they reach the center (less than 5 degrees). If the wheels are to the right (less than −5
degrees), they turn left until they reach the center (greater than −5 degrees). You use two Switch
blocks to determine which of these positions the motor is in.
Figure 12-8. Use the SteerTest program to test your My Blocks. Run the program a few times, trying a different
starting position for the front wheels each time.
You use Move Tank blocks so you can choose the speed of both motors separately. If the robot
goes straight forward or backward, both wheels turn at 75% speed. When turning, the outermost
wheel should go slightly faster than the inner wheel, so you’ll make the faster wheel drive at
80% speed and the slower wheel at 70%.
A negative speed value, such as −75, makes the robot go forward due to the orientation of the
motors in this robot. Positive values, such as 75, make the robot go backward. Now create
the RemoteControl program using Figure 12-10.
NOTE
If the robot does not drive in a straight line when driving forward, adjust the degrees value in the Medium
Motor block in the Reset My Block shown in Figure 12-4. Try a value slightly larger than 78 degrees if you
see a deviation to the left; try a smaller value if the robot deviates to the right.
Figure 12-9. The button combinations to make the Formula EV3 Race Car drive in any direction.
Figure 12-10. The RemoteControl program. Don’t forget to add the Reset My Block at the start of the program. If
none of the buttons on the remote is pressed (default case), the robot centers the front wheels and then switches off
the rear wheels.
racing autonomously
Now you’ll create a program to make the race car drive around your room autonomously,
avoiding obstacles with the Infrared Sensor. The robot begins by driving straight forward until
the sensor detects a proximity value below 70%. Then, the robot reverses and steers left to
move away from the obstacle. Finally, the robot centers its wheels so that it can drive straight
forward in a new direction. Create the AutonomousDrive program, as shown in Figure 12-11.
further exploration
In this chapter, you had a chance to build and program a robot from instructions. This is, of
course, a lot of fun, but it’s even more fun to create your own robot designs. For example, you
could expand the design with gears or larger wheels to make the car faster, or you could turn the
robot into a completely different vehicle, such as a passenger car or an off-road vehicle.
Don’t worry if you don’t succeed on the first try; you’ll gain more and more building
experience as you continue to try new designs. Try out the Design Discoveries at the end of this
chapter to get started, and be sure to use the techniques you learned
in Chapter 10 and Chapter 11.
Difficulty: Time:
In the Center My Block, you consider any position between −5 and 5 to be close enough to the center. To
see why the robot should use such a large range of values, try changing the settings of the Wait and Switch
blocks to reduce the center range boundaries to −1 and 1. What happens when you run
the RemoteControl program?
So far you haven’t used the Color Sensor that’s built into the rear of the robot. Can you use this sensor to
have the robot drive only when the lights in the room are off? Does the robot still detect obstacles when it’s
dark?
HINT
Begin by modifying the AutonomousDrive program to measure the ambient light intensity. You’ll need a
Switch block to determine whether the lights are on or off. What is the threshold value, and how do you
place the other blocks in the switch?
Difficulty: Time:
Can you create a program to control the race car’s speed with the Touch Sensor and to control the steering
with the remote? Create two parallel sequences in your program: One sequence should control the
orientation of the front wheels using the remote control; the other sequence should control the speed of the
rear wheels with the Touch Sensor.
When you’re ready, add engine sounds to your program using Sound blocks configured to play
the Speeding, Speed idle, and Speed down sounds.
HINT
Connect the Touch Sensor to input port 1 on the EV3 brick using a long cable. Remember that the Touch
Sensor can detect only whether the red button is pressed or not; it can’t detect any intermediate position.
Difficulty: Time:
Formula 1 race cars have a bright red light in the rear that blinks in poor weather conditions to make them
visible to other drivers. Can you make the light on the Color Sensor switch between blue and red every
second to mimic the blinking pattern? There’s no standard block that changes the light color, so you’ll have
to make one My Block to switch the light to blue and another to switch the light to red.
HINT
Use a Switch block to measure ambient light intensity, but don’t place any blocks in the switch. The robot
won’t do anything with the measurement, but it will change the light to blue when doing an ambient light
measurement.
When you ran the AutonomousDrive program, you probably noticed that the Infrared Sensor is good at
detecting the presence of walls and other large objects, but it doesn’t always detect small objects, like a
chair leg. Can you make the robot avoid obstacles in other ways?
Use Unregulated Motor blocks to drive, and use the Rotation Sensors in the rear motors to detect a sudden
drop in rotational speed. Make the robot reverse and drive away when it either sees an object with the
Infrared Sensor or detects one by running into it.
HINT
Use the techniques you learned in Discovery #53 in Discovery #53: Low Speed Obstacle Detection!.
Building: Programming:
Can you improve the Formula EV3 Race Car design to make the car go faster? Use 36T and 12T gears to
speed up the rear wheels by a factor of 3, as shown in Figure 12-12. You can also make the car go faster by
using bigger wheels from other LEGO Technic sets, but you may need to adjust the front and rear wings to
make space.
FIGURE 12-12. YOU CAN MAKE THE RACE CAR GO FASTER USING GEARS FOUND IN YOUR
EV3 SET. (THE WHEEL AND THE REST OF THE VEHICLE ARE NOT SHOWN FOR BETTER
VISIBILITY.)
DESIGN DISCOVERY #21: CAR UPGRADE!
Building: Programming:
Can you create your own vehicle based on the robot you built in this chapter? Take the Formula EV3 Race
Car apart, except for the front-wheel steering mechanism (building the Formula EV3 Race Car). By
choosing a new placement for the EV3 brick and the rear motors, you can create a completely different
vehicle.
To create a passenger car, for example, place the rear wheels closer to the front wheels and place the EV3
brick on top of the motors. You can also build an off-road vehicle by positioning the motors at an angle to
create more ground clearance. Test your creation using the RemoteControl program you made in this
chapter.