North Alabama Robotics Team Monkey Madness

Post on 30-Dec-2015

22 views 1 download

description

North Alabama Robotics Team Monkey Madness. FLL Intro Programming Workshop. 2012. Kim Daugherty bongju328@gmail.com 256-955-9521. Goals. Present NXT-G programming concepts that you can teach your FLL team Conduct a hands-on NXT workshop to facilitate learning - PowerPoint PPT Presentation

Transcript of North Alabama Robotics Team Monkey Madness

1

North Alabama Robotics Team Monkey Madness

FLL Intro Programming FLL Intro Programming WorkshopWorkshop

20122012

Kim DaughertyKim Daughertybongju328@gmail.cobongju328@gmail.comm

256-955-9521256-955-9521

2

Goals

Present NXT-G programming concepts that you can teach your FLL team

Conduct a hands-on NXT workshop to facilitate learning

Provide tips and strategies that have been learned through trial and error over five years

3

Agenda Introductions Our motivation NXT introduction Basic movement Sensors Control flow (loops and switches) Debugging

4

Our Motivation To help Alabama FLL teams be

competitive at the national (US Open) and international level (World Festival) Robot design is typically not an obstacle for

teams – programming is… Teams can design robust software if they

are given a few tips… To help teams have a great FLL

experience so they consider continuing into FTC/FRC

5

NXT Introduction Programming window Version checking NXT brick basics

6

Start a New Program

1. Enter “MoveTest”

TIP: Use descriptive program names written in mixed case

2. Click on Go to open program

7

Programming Window 1 of 2

Common palette

Move

Record/play

Sound

Display

Wait

Loop

Switch

TIP: The common palette is usually sufficient for basic navigation

8

Programming Window 2 of 2

Complete palette

Common

Action

Sensor

Flow

Data

Advanced

TIP: The complete palette contains advanced commands

Move

Record/play

Sound

Display

Wait

Loop

Switch

9

Comment and Pan Tools

Comment tool allows you to add documentation

TIP: Document your program so you can remember what it does

Pan tool allows you move the screen around

Pointer tool allows you to select and insert blocks

10

NXT Version Number

New Program

V2.1.f3

Patch f3 located at http://education.lego.com/en-gb/preschool-and-school/secondary-11-18/11plus-lego-mindstorms-education/downloads/

Help->About

TIP: Patch f3 reportedly fixes the Error 1003 Broken Wire problem in NXT 2.x

11

Firmware Version NumberTools>Update NXT Firmware…

Version 1.31 is the latest

TIP: Check the NXT firmware on the brick by going to Settings->NXT Version

12

Before We Start The NXT

Outputs for Motors/Lights (A,B,C) Inputs for Sensors (1,2,3,4) Buttons (Enter, Back, Left, Right) USB port

Motors Middle (A), Left (B), Right (C)

Sensors Light sensor (1), touch sensor (3), color

sensor, ultrasonic sensor, rotation sensor

B C

A

1 – Light3 – Touch

Practice Robot

13Robot instructions obtained from Oregon Robotics Tournament and Outreach Program (ORTOP) http://www.ortop.org/Workshops/index2011.html

Horizontal mount points

High torque for lifting (small gear connected to large gear)

Two light sensors

Caster wheel

Good balance and weight distribution over drive wheels

Low center of gravity for stability

14

Name Your Robot

This button brings up the NXT window

This is where you name the brick

This tab allows you to delete files from the brick

TIP: You can delete sound files and demo programs to free up space on the NXT

Connect robot to laptop using USB cable

15

Basic Movement The easiest way to get around is the

Move block This is the block you will use the most

16

Most Basic Command

1. Click here and drag a Move block to the Start area

Speed control

Degrees OR rotations should be used; rarely use seconds

It is usually better to brake than coast

Steering control

TIP: Get familiar with all aspects of the Move command

Motor selection

2. Click here to download the program to the brick

Direction control

B C

A

1 – Light3 – Touch

17

Run the Program First menu is “My Files” Select with orange button Second menu is “Software Files” Select with orange button Use arrow keys to find “MoveTest” Select with orange button Press orange button to Run

B C

A

1 – Light3 – Touch

Two Ways to Turn Use slider bar on steering control

Middle position means robot will go straight The further the slider is from the middle (but not all

the way to one side), the sharper the curve will be (swing turn)

If the slider is all the way to one side, the robot will turn in place by turning one wheel forward and the other backward

Make sure motors on steering control set to B and C Move one wheel only

Click on either port B or C, but not both Only one wheel will turn; this is a pivot turn

18TIP: Pivot turns are the most precise, but swing turns are faster

B C

A

1 – Light3 – Touch

19

Experiment with Move Write a program to:

Move forward 100% speed for 2 rotations Make a right pivot turn at 75% speed (hint 390

deg) Move backward 50% speed for 360 degrees Make a left swing turn at 75% speed for 1

second Turn in place clockwise all the way around at

25% speed (hint 800 deg) Move forward 100% speed for 1 rotation

Observations? What could improve repeatability and

accuracy?

B C

A

1 – Light3 – Touch

20

Wait Block

TIP: Waiting a short time after each move improves repeatability and accuracy

B C

A

1 – Light3 – Touch

1. Click here, select 1st block (time), and drag after Move block

2. Enter 0.25 seconds

3. Repeat until 5 Wait blocks have been added

21

Help Screen

Move cursor over block to get short description in this window

TIP: Access help for selected block by clicking on “More help” on NXT right bottom

Click here to get detailed help screen

For Improved Navigation Use Wait blocks after Move blocks to

allow robot motion to completely stop Start in the same position in base each

time; it is common to have the robot bumper pressed again the wall1

Use pivot turns instead of swing turns Don’t exceed 50% power when turning

22

1 In previous years, FLL mat is centered East West and flush with South wall; distance between East or West wall and mat can vary on different tables

Sensors Allows the robot to feel (touch),

see (light), hear (sound), and measure distance (ultrasonic)

Are often used to determine when to stop moving

23TIP: Light and touch sensors are more useful in FLL than ultrasonic and sound

B C

A

1 – Light3 – Touch

24

Developing an algorithm An algorithm is a step-by-step logical

sequence Example: Move forward until robot runs

into wall Step 1: Turn on motors 100% speed Step 2: Wait until touch sensor is

pressed Step 3: Turn off motors

TIP: It is a good idea to write an algorithm before you start writing the program

B C

A

1 – Light3 – Touch

Touch Sensor

25

B C

A

1 – Light3 – Touch

2. Click here and drag a Move block to the Start area

1. Click here to start a new program

3. Select Unlimited for Duration of Move

4. Click here, select 2nd block (touch), and drag next to Move block

5. Change port to 3

8. Save program and name it TouchTest

9. Click here to download the program to the brick

6. Click here and drag a Move block next to Wait block

7. Select Stop for direction

TIP: Be sure to stop the motors after a Wait block

26

Experiment with Touch Write a program to:

Move forward 100% speed until robot touches wall

Move backwards 50% speed for 2 rotations Make a right turn at 50% speed (Hint 390

deg) Move forward 100% speed until robot

touches wall Move backwards 50% speed for 2 rotations Make a right turn at 50% speed (Hint 390

deg) Move forward 100% speed until robot

touches wall Move backwards 50% speed for 2 rotations Make a right turn at 50% speed (Hint 390

deg) Observations?

B C

A

1 – Light3 – Touch

Questions? Did you use copy and paste? Did you remember to add waits

after each move command?

27

One Way to Do It

28

Repeat these blocks 3 times

B C

A

1 – Light3 – Touch

TIP: Copy and paste can save you a lot of time

Move forward 100% speed unlimited

Move backwards 50% speed for 2 rotations

Right pivot turn 50% speed for 390 degrees

The Loop Block (1 of 2)

29

B C

A

1 – Light3 – Touch

1. Click here and drag a Move block next to Wait block

2. Set Control to Count and set Count to 3

TIP: The Loop block allows you to repeat commands

3. Make sure Counter is not checked

The Loop Block (2 of 2)

30

B C

A

1 – Light3 – Touch

1. Click and drag these blocks inside the Loop block

2. Delete the remaining 12 blocks

TIP: Wait for the Loop block to expand before you let go of the blocks

3. Save, download, and run TouchTest

Reusing Blocks You may have a specific block or a

sequence of blocks that you want to repeat many times in the program Wait time block a) Move unlimited block followed by b) Wait

sensor block followed by c) Move stop block followed by d) Wait time block

One or more blocks can be captured in a MyBlock which can be reused

31

Create MyBlock (1 of 4)

32

B C

A

1 – Light3 – Touch

TIP: Use mixed case and name MyBlock something descriptive

1. Select Wait block and then click on Create My Block

2. Name block WaitTimeBlock and click Finish

Create MyBlock (2 of 4)

33

B C

A

1 – Light3 – Touch

TIP: When you edit a MyBlock, save it and download the main program

1. Select Custom palette

3. Select WaitTimeBlock and drag to previous locations of Wait blocks

2. Delete these Wait blocks

4. You can edit the MyBlock by double clicking on it

Why is this Better? Change the wait from .25 seconds

to 1.0 seconds; you only need to change it in the MyBlock instead of changing every Wait block

Don’t download the MyBlock; download the program that uses the MyBlock

34

Create MyBlock (3 of 4)

35

B C

A

1 – Light3 – Touch

TIP: When selecting blocks in a Loop, click outside the loop then drag

1. Select first four blocks and then click on Create My Block

2. Name block MoveTouchBlock and click Finish

Create MyBlock (4 of 4)

36

B C

A

1 – Light3 – Touch

TIP: There is no way to remove the space without redoing the Loop block

You Now Have Two MyBlocks

WaitTimeBlock Wait a specified time

MoveTouchBlock a) Move unlimited block b) Wait for touch sensor block c) Move stop block d) WaitTimeBlock

37TIP: MyBlocks are useful for reusing specific blocks or sequences of blocks

Light Sensors

38

Optimum height above mat is between ¼ and 1 inch; too low saturates sensor and too high gets poor reading of reflected light

Left light sensor connected to port 1

TIP: Light sensors should be calibrated and shielded from ambient light

• Turn on robot• Use arrow keys to move to “View”• Select with orange button• User arrow keys to find “Reflected Light”• Select with orange button• Use arrow keys to find “Port 1”• Select with orange button• Read different areas of the mat – values will be 0 to

100

Light Sensor Readings Percent Mode:

5% = lowest dark, 100% = very bright

Reflected Light Mode: shines a red light

The light can be turned off – detecting ambient light (surrounding light)

39TIP: The light sensor reads reflected light over an area determined by its height

Simple Line Following Does not actually follow the line…

Then what does it follow? HINT: Line following would NOT

work well on a very thin line

40

41

Another Algorithm Follows Left Edge of Line Two states: Left of desired position, Right of

desired position Determine state to control robot movement

If Sensor1 > Boundary (Left) Set Motor B to 60 Stop Motor C

If Sensor1 < Boundary (Right) Set Motor C to 60 Stop Motor B

B C

1 – Light3 – Touch

TIP: It is a good idea to write an algorithm before you start writing the program

Line Following

42TIP: Make sure to set motor ports correctly when line following

2. Click and drag Loop block

3. Click Switch block and put into Loop

4. Select Control to be Sensor and Sensor to be Light Sensor

5. Make sure Port is 1

5. Add Move blocks

1. Start new program and name it LineFollow

Experiment with Line Following Write a program to:

Test line following at 60 percent speed

Test line following at 40 percent speed

Test line following at 100 percent speed

Observations?

43

Line Following Observations Faster line following makes large

swerves back and forth and can lose the line

Slower line following is smoother It is good to have a strategy to end

line following

44

End Line Following

45TIP: Use the rotation sensor to stop line following after a specified distance

1. Click on Loop block

2. Select Control to be Sensor and Sensor to be Rotation Sensor

3. Make sure Port is B

4. Set Until to be > 500 degrees

Put it All Together Use Line Following, WaitTimeBlock,

and MoveTouchBlock to navigate robot from start of line to target area

46

A Possible Solution (1 of 2) Line follow for 1150 degrees at 60% speed WaitTimeBlock Right pivot turn at 50% speed for 390 degrees WaitTimeBlock MoveTouchBlock Move backward 50% speed for 1 rotation WaitTimeBlock Left pivot turn at 50% speed for 390 degrees WaitTimeBlock MoveTouchBlock

47

A Possible Solution (2 of 2)

48

Resources usfirst.org/roboticsprograms/fll – Official FLL site www.alabamafll.com – Official Alabama FLL site www.nxtprograms.com – NXT designs (not all robots) and sample

programs www.techbrick.com – Coaching tips and challenge worksheets www.forums.usfirst.org/forumdisplay.php?f=24 – Get help from the

FLL community; must register to post www.teammonkeymadness.com – Our team site www.ortop.org/Workshops/index2011.html – Coaches workshop

materials www.ortop.org/NXT_Tutorial/index.html – Online NXT tutorial www.education.rec.ri.cmu.edu/content/lego/curriculum/index.htm –

Carnegie Mellon Robotics Academy www.hightechkids.org/for-teams/coaches-library – Coaches

materials http://www.legoeducation.us/eng/characteristics/ProductLine~LEGO

%20Mindstorms%20Education – NXT Education Base set and Resource set

49TIP: Be positive and always set a good example for your team