2013 Ev 3 Programming
2013 Ev 3 Programming
2013 Natures Fury Coach Call Basic programming of the Mindstorm EV3 Robot
People Introductions Deborah Kerr & Faridodin Lajvardi - FIRST Senior Mentor Jason Yount - Technical Training Manager - LEGO Education North America Glenn Swinson , FIRST FLL Logistics Manager Main Topic: Jason will walk through a slide set for programming the EV3 robot This call is meant to present Basic programming, not advanced methods, and thus geared toward newcomers to the Mindstorm and FLL experience Technical Support where to get help Q&A
Outline
Purpose: This workshop is intended for FLL coaches who are interested in learning about Mindstorms EV3 programming language. Programming EV3 Controller (aka: the brick) User Interface Building Blocks Controlling the robot with MOVE Blocks What is New: EV3 vs. NXT Turns - there is more than one way to turn Geometry and Math for the Robot Gyro Sensor Advanced Programming Light Sensor Program Control (WAIT, LOOP, SWITCH Blocks) Math (VARIABLES, MATH and COMPARE Blocks) My Block Resources
EV3 Brick
2 = Center, press the center button to select and accept options, or run a program. 1 = Back, this button is used to reverse actions, to stop a running program, and to shut down the EV3.
1 3
3 2 3 3
3 = left, right, Up, Down These four buttons are used to navigate through the various menus.
The PC USB port is used to connect to The PC so you can download the Programs into EV3 Controller
Large Motor
Medium Motor
EV3 Motors
Two types of motors Redesigned to allow easy construction The Large Motor is a strong and powerful full motor. The Medium Motor is a less powerful motor but runs at a higher revolution rate.
Touch Sensor
Detects pressed Detects released
Detects bumped
Improved design for easier build solutions
Auto ID
Gyro Sensor
Angle mode Gyro Sensor mode Angle and Gyro Sensor modes Can reset accumulated angle value Improved design for easier build solutions Auto ID
EV3 Navigation
Open a previously saved project Lobby Button Open New Project
12
Robot Educator
Opened Project
14
Programming canvas where you can lay out the programs blocks / instructions
Programming palettes where you can find the various building blocks
Hardware page establishes communication with the EV3 brick and where you download programs into the EV3, view memory usages, battery level, and to find out motors or sensors and where they are connected.
15
Content Editor
Animations Build guides Interactive guides Sample programs Challenges Save as a project Teacher and student modes Edit facility
Palettes
Action Blocks
Medium Motor, Large Motor, Move Steering, Move Tank, Display, Sound, Brick Status Light. Flow Blocks
Brick Buttons, Color, Gyro, Infrared, Motor Rotation, Temperature, Timer, Touch, Ultrasonic, Energy Meter, Sound
18
Palettes
Action Blocks
Variable, Constant, Array, Logic, Math, Round, Compare, Range, Text, Random
Advanced Blocks
File Access, Data Logging, Messaging, BlueTooth, Keep Awake, Raw Sensor Value, Unregulated Motor, Invert Motor, Stop Program My Blocks
Block you create to repeat same actions in multiple programs. Programmers refer to this as subroutines or functions.
19
All examples used in this document assume the robot configuration and motor is mounted as shown.
B - Motor C - Motor
20
Brake or Coast
Steering Control from (-100- 100) where 0 = move straight; Positive# = C more power than B negative# = B more power than C
Power (100 to -100); positive number is move forward; negative, moves backward. Note: small amount of power may cause the robot to stall.
21
Move Tank Control two motors and allows each motor to move with different power level including in different direction for turning or spinning. For turning: one motor has zero power; the other has positive (forward) or negative(backward) power. When zero power is specified, the motor is locked and will not move to ensure accurate turns For spinning, use positive power for one and negative for the other
Brake or Coast
Power (100 to -100); positive number is move forward; negative, moves backward. Note: small amount of power may cause the robot to stall.
22
Large Motor Control a single large motor When zero power is specified, the motor is locked and will not move to ensure accurate turns
Brake or Coast
Power (100 to -100); positive number is move forward; negative, moves backward. Note: small amount of power may cause the robot to stall.
23
Medium Motor The Medium Motor block controls the Medium Motor. You can turn the motor on or off, control its power level, or turn the motor on for a specified amount of time or rotations When zero power is specified, the motor is locked and will not move Use positive or negative power to control direction
Brake or Coast
Power (100 to -100); positive number is move forward; negative, moves backward. Note: small amount of power may cause robot to stall.
24
4. Click download to compile and load the program in the EV3 controller
25
Whats new
All files are stored within the Project file, i.e., programs, my blocks. You can move / copy the project file to other computers and it will work. Now you can backup the entire project or even use a memory stick to store your project! Turning on/off the EV3 now takes about 30 seconds
The MOVE block is replaced by the MOVE STEERING and MOVE TANK blocks MOVE STEERING has single power control; motors are regulated, i.e., if one motor moves faster than the other, the faster motor will be slowed down to compensate. MOVE TANK: has independent power controls for each motor where one can move faster than the other or even in opposite direction. This too is regulated.
NOTE: with limited testing, it appears that issues using steering in NXT are solved in EV3!
The MOTOR block is replaced by LARGE MOTOR and MEDIUM MOTOR In NXT-G you specified direction, in EV3, you specify either negative or positive power to control the direction of the motors The unlimited duration option is replaced by ON The STOP option of MOVE and MOTOR blocks are replaced by OFF
26
Then you can enter your own function and obtain the result
This reduces the number of math blocks used. QUIZ: what is the answer?
27
Use the Invert Motor block to have a normal forward and backward directions swapped. Any programming blocks after the Invert Motor block that would normally make the motor turn clockwise will instead make the motor turn counter-clockwise, and vice-versa. Programming Bug NOTE: IT DOESNT WORK with Move Steering or Move Tank. Built-in light sensor calibration is gone! You have to build your own (see example on the following pages)
28
X
2000
Black 2300
29
Numeric
Text
30
B
One Motor move: Right Turn Use MOVE TANK block and select a power level for the B motor and zero for the "C" motor In this case the robots right wheel will be stationary and the left wheel will move.
Right brake
Forward B
Turning with two motors in opposite direction To turn right, use the MOVE TANK block where the B motor will turn clockwise (positive power) and the C motor will turn counter clockwise (negative power).
TIP: for turning in a tight spot, use the two motors.
31
Backward
Turns Continued
To make 180 degree right turn using a tank move or large motor
Start Position
B
C
End Position
C B
To make 180 degree right turn using tank move (spin in place)
Start Position
B C
End Position
C B
Note the distance travelled is shorter (exactly half) when using both two motors.
32
C = x Diameter
33
Circumference of wheel = x Diameter = 3.14 x 2.2 = 6.9 inches Degrees traveled per inch = 360 / 6.9 = 52 motor degrees
1 Rotation = 7 inches
1.6 inches
Circumference of wheel = x Diameter = 3.14 x 1.6 = 5 inches Degrees traveled per inch = 360 / 5 = 72 motor degrees 1 Rotation = 5 inches
5.5 in
5.5 in
2.2 inches If the robot is using the wheel whose diameter is 2.2 inches and therefore its circumference is 7 inches, how many wheel rotations will it take to make a complete robot turn rotation (34.5 inches)?
Circumference of Robot Turn Circle Circumference of Robots Wheel
Diameter X Diameter X
4.9
Note: it takes 4.9 wheel rotations to make a complete (360 turn) (or 4.9 motor degrees to travel 1 degree of turn circle) Example: to make a 90 robot turn Motor Degrees = 90 X 4.9 = 441 Motor Degrees
35
Negative
+
Positive
NOTE: you must reset the gyro sensor as the first step and immediately before turning so that your turn is measured from the robots current position!
36
Programming Process
Analysis and Planning Steps Define the problem Brainstorm solution and select one KEEP IT SIMPLE! Plan and create a flowchart and take measurements
Programming suggestions Divide the program into small pieces Program one pieces at a time
Example: Move the robot to black line
Once the step is consistently repeatable, go to the next Whenever possible reuse repeatable combination of blocks using MYBLOCK Ask for help
http://forums.usfirst.org/forumdisplay.php?f=24 The questions should be generic and not specific to strategy
37
Tips
For moving straight, the MOVE STEERING / MOVE TANK blocks have a
built-in PID to regulate the movement of B & C motors. If one motor falls behind, the MOVE STEERING block compensate by applying less power to the faster motor. For driving the robot, use the B & C motor ports; the A and D ports should be used for the robots arm. Using full motor power (100%) may cause erratic robot movement, use 75% or less. Conversely, too little power (below 25%) may cause the robot to stall. Brake at the end of each MOVE block to take advantage of the PID which self corrects to achieve more precise moves. Using Degrees is a more accurate way to move motors; using time, will be inconsistent when the batteries become weak The MOVE STEERING / MOVE TRACK block also keeps track of errors that accumulate in multiple blocks and adjusts itself. Use the brake option and also use the RESET block. REMEMBER: the tradeoff between speed and accuracy!
38
39
70% 50% 20% 50% 70% Black Violet Dark Blue Dark Red / Brown
To obtain more accurate reading, make sure the light sensor is close to the mat (less than inch) Calibrate the sensor whenever light conditions change (see calibrate slide)
40
41
Select > greater than or < less than. Example: if you select < and entered 50, and the light sensor encounters a black block, the result will be the test is True
42
Example 2:
Move to detect a black line, using a LOOP block instead of WAIT. Simultaneously use the WAIT for time block and if two seconds elapsed, end the loop using LOOP INTERRUPT and stop the motors.
43
44
Warning: Deleting the LOOP block will also delete all the blocks within the loop. You can move the blocks out of the loop, then delete it.
45
SWITCH block
The SWITCH block will check for a condition and will take one action if the condition is true and another action if the condition is false
B
The Switch block contains two or more sequences of programming blocks that are run based on condition.
46
Advanced Blocks
VARIABLE block The variable block is a bucket where you can store information and retrieve it at a later time. There are three types: Number, Text, and Logic
MATH block The math block allows the addition, subtraction, division or multiplication of two numbers.
Input Result
Input
COMPARE block The compare allows you to determine if one number is greater than, less than or equal to another number.
Result (True or False)
47
9/26/2013
48
My Block
My Block is a combination of one or more blocks that are grouped into a single "Block". Once created, it can be used in many programs. My Block can be used in the following ways: 1. Minimize the coding, if certain actions are repeated in multiple programs. Often, you need to repeat certain steps, for example, different programs require that the robot would back into the wall to re-orient itself. This process can be placed into a My Block. 2. Divide a program into smaller manageable pieces 3. Reduces the amount of memory used. 4. Clarify the action taken in programs by creating self explanatory My Blocks
Example 1: your program already includes 22 blocks and youre not finished. It is time to consider breaking up the program into chunks, i.e., My Blocks. Example 2: For turning left or right you use the LARGE MOTOR block. When someone is reviewing the program, they cant tell which way the robot is turning if you are only using MOTOR block. Solution: create a Turn Left My Block to make it easy to understand the program. Example 3: One youve fine tuned a perfect 90 degree turn, you can create your own My Block for the perfect 90 degree left and right turn.
49
3. Type My Block Name MoveInches, and enter an optional description and select a my block icon 4. Click on the Parameter Icon, then enter parameter name and click on Finish.
50
Using My Block
Once youve created My Block, it will become available on the My Block palette
1. Select the My Block palette
2. Drag and drop the My Block named "MoveInches" into the program
Type the number of inches into the "a" input valueThats it.
51
My Block Tips
Use My Block to break down a large program into two or more My Blocks
If you create a My Block with one input and decided later to add another input, youll have to start over
If you create a My Block with two inputs and decided later to remove one, you cannot delete the input; either start over, or ignore it.
52
53