fll programming 101_nxt_g

92
1 ©2006, 2007 INSciTE FLL Programming 101 NXT-G September 2007 Version 1.1b

Upload: -

Post on 16-May-2015

1.525 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Fll programming 101_nxt_g

1 ©2006, 2007 INSciTE

FLL Programming 101NXT-G

September 2007Version 1.1b

Page 2: Fll programming 101_nxt_g

2 ©2006, 2007 INSciTE

Legal Stuff

© 2006 INSciTE in agreement with, and permission from FIRST and the LEGO Group. This document is developed by INSciTE and is not an official FLL document from FIRST and the LEGO Group. This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit

http://creativecommons.org/licenses/by-nc-sa/2.0/

or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

LEGO , ROBOLAB, and MINDSTORMS are trademarks of the LEGO Group used here with special permission. FIRST LEGO League is a trademark owned by FIRST (For Inspiration and Recognition of Science and Technology) and the LEGO Group used here with special permission. INSciTE is a trademark of Innovations in Science and Technology Education.

INSciTE

PO Box 41221

Plymouth, MN 55441

www.hightechkids.org

Page 3: Fll programming 101_nxt_g

3 ©2006, 2007 INSciTE

Creative Commons License

High Tech Kids is committed to making the best possible training material. Since HTK has such a dynamic and talented global community, the best training material and processes, will naturally come from a team effort.

Professionally, the open source software movement has shown that far flung software developers can cooperate to create robust and widely used software. The open source process is a model High Tech Kids wants to emulate for much of the material we develop. The open source software license is a key enabler in this process. That is why we have chosen to make this work available via a Creative Commons license. Your usage rights are summarized below, but please check the complete license at: http://creativecommons.org/licenses/by-nc-sa/2.0/.

Page 4: Fll programming 101_nxt_g

4 ©2006, 2007 INSciTE

Credits

This presentation was developed by Doug Frevert. It is based

on the work of Fred Rose. The accompanying labs were

originally done in RCX Code by Joel Stone and converted to

ROBOLAB by Doug Frevert. A portion of the material is taken

from “Building LEGO Robots for FIRST LEGO League” by

Dean Hystad. Amy Harris defined the 10 programming steps.

Eric Engstrom, Jen Reichow, and Ted Cochran reviewed

ongoing drafts. Eric taught the first class and helped modify

the content accordingly.

Page 5: Fll programming 101_nxt_g

5 ©2006, 2007 INSciTE

Computer Programming 101

ObjectiveLearn to program robots.

FLL, NXT, NXT-G

Structure TheoryExamples specific to NXT-GHands-on

This class isAn approach to programming

This class is notExhaustive reference on NXT-G

Page 6: Fll programming 101_nxt_g

6 ©2006, 2007 INSciTE

Class Agenda

Computer Basics The Programming EnvironmentMoving and Turning

Lab #1

MyBlocks and LoopsLab #2

SensorsLab #3

Advanced TopicsProblem Solving

Page 7: Fll programming 101_nxt_g

7 ©2006, 2007 INSciTE

Computer Basics

Page 8: Fll programming 101_nxt_g

8 ©2006, 2007 INSciTE

The Computer (Generic)

The processor executes commands.Memory stores program and data.Inputs tell the computer about the world.Outputs tell the world about the computer.

Memory

Processor

Inputs Outputs

Page 9: Fll programming 101_nxt_g

9 ©2006, 2007 INSciTE

Processor: 32 bit ARM Atmel AT91SAM256 running at 50 Mhz

Memory: 64K Static RAM, 256K Flash

3 Motor Outputs(A, B, C)

4 Sensor Inputs (1, 2, 3, 4)

Go Back button

Right button

On/Select button

LCD display

USB communications port

NXT

Left button

Page 10: Fll programming 101_nxt_g

10 ©2006, 2007 INSciTE

Firmware Loaded?

Firmware must be loaded onto an NXT so that the NXT can understand your programs.Only required to be loaded

To install a new firmware release To restore lost firmware (was a problem for RCX).

Tick .. Tick ...No firmware Firmware loaded.

Page 11: Fll programming 101_nxt_g

11 ©2006, 2007 INSciTE

Writing a Computer Program

Specify the taskInputs to be suppliedOutputs to be produced

Devise an algorithmExpress that algorithm in a computer language

From: Introduction to Pascal, Welsh and Elder

Page 12: Fll programming 101_nxt_g

12 ©2006, 2007 INSciTE

Running a computer program (NXT)

Write program on PC

(NXT-G)

Downloadto the NXT

NXT executes

commands

Program conv. to bytecodes (text

description)

Bytecodes converted to ARM (NXT) machine code

commands

Move X to register 001 1000111...

SetPower(A,3)

Page 13: Fll programming 101_nxt_g

13 ©2006, 2007 INSciTE

NXT-GThe Programming Environment

Page 14: Fll programming 101_nxt_g

14 ©2006, 2007 INSciTE

NXT-G Opening Workspace

Program Blocks

Help and Zoom Panel

Profiles

Pre-builtRobots,

Programs, and

Challenges

Select a Program

Name

BlockSettings

Page 15: Fll programming 101_nxt_g

15 ©2006, 2007 INSciTE

NXT-G Work Space

a. Common,b. Complete, andc. Custom tabs

Add Program

Blocks here

View NXT. See the next slide.

Download and Run

Page 16: Fll programming 101_nxt_g

16 ©2006, 2007 INSciTE

NXT-G to NXT

When connected by USB cable or Bluetooth Give your NXT a new nameCheck Battery voltageView available memory (in KiloBytes)Firmware version

Communications

Page 17: Fll programming 101_nxt_g

17 ©2006, 2007 INSciTE

NXT-G to NXT

Memory

Select, then delete Programs, Sounds, Graphics, and Unused files.

Can free up to 130Kb of Free Storage on the NXT.

Page 18: Fll programming 101_nxt_g

18 ©2006, 2007 INSciTE

NXT-G Work Space

Comment

Pointer Tool

Grab Hand to move the

display

Page 19: Fll programming 101_nxt_g

19 ©2006, 2007 INSciTE

Tips and Tricks (1)

The NXT has memory to store many programs

NXT automatically powers down.

Bluetooth CommunicationsThe NXT has bluetooth communications. If enabled, PCs, NXTs and other bluetooth devices can talk to each other.Disable bluetooth during competition.

Page 20: Fll programming 101_nxt_g

20 ©2006, 2007 INSciTE

Tips and Tricks (2)

Direction of connecting wiresNXT wire connectors only fit one way. Can not be rotated.

BatteriesAANo worry about losing firmware.NiMH rechargeable batteries work. NiCads don't. Lithium rechargeables come with the FLL Mindstorm kits.Avoid stalling the motors, it drains batteries.

Page 21: Fll programming 101_nxt_g

21 ©2006, 2007 INSciTE

Common Blocks

Common blocks are full featured actionsLike English statements

MoveWait for an actionDisplay a value

With many modifiersMove direction, steering, distance, motors used . . .Wait for light sensor, light threshold, sensor port, . . .

Move Block

Move Block Settings

Page 22: Fll programming 101_nxt_g

22 ©2006, 2007 INSciTE

Common Blocks

Move

Wait For Touch

Display

Switch (Touch)

Sound

Page 23: Fll programming 101_nxt_g

23 ©2006, 2007 INSciTE

Adding a Block to a Program

Click on a BlockMove cursor onto Program and drop it into place. NXT-G will make room.Change settings

Click a Block

Drag it here

Change the settings

Release when the white

position preview marks appear.

Page 24: Fll programming 101_nxt_g

24 ©2006, 2007 INSciTE

WaitFor Blocks

Click on the hourglass.Click on a WaitFor Block

TimeTouchLightSoundDistance (Ultrasonic sensor)Others (see settings)

WaitFor Blocks

Page 25: Fll programming 101_nxt_g

25 ©2006, 2007 INSciTE

Motors

9 volt geared motorMaking the motors turn is the output of your program. It makes your creation a robot!Without load, motor shaft turns at about 150 rpm.Servo sensitive to 1 degree.With a typical robot, 3-4 hours on a set of batteries.

FLL allows up to 3 motors.

Page 26: Fll programming 101_nxt_g

26 ©2006, 2007 INSciTE

Motor Details

Motor can be set to different power settingsPower levels 0-100Power is adjusted by Pulse Width Modulation

Turning the power setting up higher essentially makes the shaft turn faster.

Page 27: Fll programming 101_nxt_g

27 ©2006, 2007 INSciTE

Using the Move Block

Ports A, B, and/or C

Forward, Backward or Stationary

SteeringSpin, Pivot, Arc, Straight

Power 0-100%Duration

Time, Degrees, Rotations, Forever

Brake or Coast

Page 28: Fll programming 101_nxt_g

28 ©2006, 2007 INSciTE

Rotation: Move and Motor Blocks

A sensor is built into each motor.

Measure by rotations or degrees.

Page 29: Fll programming 101_nxt_g

29 ©2006, 2007 INSciTE

Lab One

Task:Given rectangle ABCD.

Move from A to B to C to D.Extra Credit: A to C to D to A.

AB

CD

Page 30: Fll programming 101_nxt_g

30 ©2006, 2007 INSciTE

Lab 1 An Answer

Page 31: Fll programming 101_nxt_g

31 ©2006, 2007 INSciTE

Problem Solving

Page 32: Fll programming 101_nxt_g

32 ©2006, 2007 INSciTE

Generic Problem Solving Process

Define the problemBrainstorm solutionsEvaluate solutions Pick oneTry (implement) itEvaluate results

Express the solution as an algorithm, then convert it into a computer program.

Page 33: Fll programming 101_nxt_g

33 ©2006, 2007 INSciTE

Pseudocode

Pseudocode: Not software code, not English, but somewhere in between.

Count EggsAdd IngredientsMix and StrainDip, Fry, SprinkleServe

set counter to zerofor each egg

increment countercrack open into bowl

next

do counter timesadd ½ cup milkadd ¼ cup flour

end dodo counter/2 times

do 4 timesdip 2 slices of breadfry, sprinkle, serve

end doend do

Page 34: Fll programming 101_nxt_g

34 ©2006, 2007 INSciTE

Flowcharts

Flowcharts: A graphic representation of logic.Convert from pseudocode.One step closer to software.

set counter to zerofor each egg

increment countercrack into bowl

next

Set Counter to 0

Increment Counter

More Eggs?

Crack Egg into Bowl

Yes

No

Page 35: Fll programming 101_nxt_g

35 ©2006, 2007 INSciTE

Debugging and Analysis

Split into pieces. Test each piece.Do little pieces at a time

For example, get the robot to where it needs to be first, then work on getting it to do something

Reuse pieces that work For example, you know how to turn 90°

Brainstorm a new solutionLook outside your box.

Ask for help.

Page 36: Fll programming 101_nxt_g

36 ©2006, 2007 INSciTE

Keep It Simple Strategies

KISS #1: Subroutines #2: Comments

#3: Loops

Page 37: Fll programming 101_nxt_g

37 ©2006, 2007 INSciTE

KISS #1: Subroutines

Wrap a complicated process into a neat and tidy package.Once wrapped, just worry about the package.

In NXT-G, Subroutines are MyBlocksSelect from the Custom Tab

Page 38: Fll programming 101_nxt_g

38 ©2006, 2007 INSciTE

Subroutines: When to Use

To do the same thing from different places.Reuse

To divide a task into pieces.Modules

To hide complex details.

Page 39: Fll programming 101_nxt_g

39 ©2006, 2007 INSciTE

MyBlock Names

Useful and informativeClearSoccerField not Csf_amy_3a12 characters visible on a MyBlock15 characters visible on the NXT

Suggest using “action + to + target”:Fwd2Wall or ForwardToWall or Forward_To_WallFwdDistTurnRight

Name the task accomplished, not how it was done.

FollowLine not FollowLine1LightSensor

Page 40: Fll programming 101_nxt_g

40 ©2006, 2007 INSciTE

MyBlock Creation 1

Add and wire Variable Blocks to your program.

Create, name, and select the

datatype.

For each parameter, add a variable.

Click here to reveal wire

connections.

Page 41: Fll programming 101_nxt_g

41 ©2006, 2007 INSciTE

MyBlock Creation 2

Select blocks to include.

Click the Create My Block button.

Create My Block button

Page 42: Fll programming 101_nxt_g

42 ©2006, 2007 INSciTE

MyBlock Creation 3

Name the MyBlock.Give it a description.

Click “Next” to add an icon.

Page 43: Fll programming 101_nxt_g

43 ©2006, 2007 INSciTE

MyBlock Creation 4

MyBlock replaces the selected Blocks!

To add the new MyBlock to a program, select it from the Custom Tab.

Can only set the duration.

Page 44: Fll programming 101_nxt_g

44 ©2006, 2007 INSciTE

KISS #2: Comments

Explain the program.Programmers forget. Teams compete in FLL. More than one person will be working on the program.

Enter comments with the balloon text tool

Page 45: Fll programming 101_nxt_g

45 ©2006, 2007 INSciTE

Comment Use

Add who, when, how to use, assumptions taken, and expected results.

Page 46: Fll programming 101_nxt_g

46 ©2006, 2007 INSciTE

KISS #3: Loops

Loops are a control structure

In other programming languages: For … Next Do loop n timesDo ... Until Do it. Unless some test, do it again.

There are loops for

ForeverEvery sensor (including time)LogicCount

Loop Block

Page 47: Fll programming 101_nxt_g

47 ©2006, 2007 INSciTE

Simple Loop

Convert thisto something simpler using a loop

Page 48: Fll programming 101_nxt_g

48 ©2006, 2007 INSciTE

Lab Two

Task:Make Forward and Right Turn MyBlocks.

Move around the rectangle twice, ending at A.

AB

CD

Page 49: Fll programming 101_nxt_g

49 ©2006, 2007 INSciTE

Lab 2 Answer

One possible answer.

Page 50: Fll programming 101_nxt_g

50 ©2006, 2007 INSciTE

Data Input

Sensors

Page 51: Fll programming 101_nxt_g

51 ©2006, 2007 INSciTE

SensorsAllow your robot to detect the real world.

TouchHas your robot made contact with something?

LightIs the surface light or dark?

Sound (Microphone)Ultrasound (Distance)Rotation

Embedded in the motors

TimeInternal sensor, keeps track of time

Battery Voltage

Page 52: Fll programming 101_nxt_g

52 ©2006, 2007 INSciTE

Sensor #1: Touch

To detect touching or bumping into something.Good for detecting robot arm movements. The sensor activates when the arm moves far enough to push in the touch sensor.

Page 53: Fll programming 101_nxt_g

53 ©2006, 2007 INSciTE

Pressed, Released, Bumped

Bumped: pressed and released in any order.

Page 54: Fll programming 101_nxt_g

54 ©2006, 2007 INSciTE

Touch Sensor WaitFor Block

Pressed, released, or

bumped

Robot waits until sensor responds

Page 55: Fll programming 101_nxt_g

55 ©2006, 2007 INSciTE

Touch Sensor Switch BlockWaiting for a touch sensor can be useful, but many times you want to do different things based on the current value.

Sensor ports 1, 2, 3, or 4

True

False

Page 56: Fll programming 101_nxt_g

56 ©2006, 2007 INSciTE

Loop contents always run at least

once.

Touch Sensor Loop CommandsLoop until a touch sensor is pressed. Useful if the loop contains commands that may be repeated.

For instance, a routine that beeps until a bumper hits something.

Page 57: Fll programming 101_nxt_g

57 ©2006, 2007 INSciTE

Sensor #2: Light

Operates in "percent" mode 0 to 100Higher number = more light. A lighter surface reflects more light.

Calibrate the sensor.Light can be turned off.Shines a red light.

Page 58: Fll programming 101_nxt_g

58 ©2006, 2007 INSciTE

Light Sensor Spectrum

Most sensitive to red/IR light.

Wavelength

Page 59: Fll programming 101_nxt_g

59 ©2006, 2007 INSciTE

Light Sensor ReadingsLowest likely reading 5%Highest likely reading 100% (pointing at a light)Readings also depend on the color of the surface

See “Building LEGO Robots for FIRST LEGO League” by Dean Hystad.

Sensitive to the distance between the sensor and the reflecting surface. Variations can make the readings unusable. Keep the sensor close to the surface, but not too close.Shield the sensor from other light sources.

Page 60: Fll programming 101_nxt_g

60 ©2006, 2007 INSciTE

Light Sensor Readings

The light sensor averages its readings over roughly a circular area.Cross a line too fast and you may miss the line.Test and recalibrate on competition day.

Page 61: Fll programming 101_nxt_g

61 ©2006, 2007 INSciTE

Light Sensor WaitFor Block

Use WaitFor Blocks when watching only one sensor.

Turn light on/off

Page 62: Fll programming 101_nxt_g

62 ©2006, 2007 INSciTE

Light Sensor Switch Block

If brighter than 50, turn motor B on. Stop C.Otherwise, turn motor C on. Stop B.

What is this?

Outside Loop

Switch a.k.a. If/then/else

Page 63: Fll programming 101_nxt_g

63 ©2006, 2007 INSciTE

Calibrate Light Sensor

Move your robot over light and dark areas.Resets light sensor percentages.Can also be done on the NXT.

Maximum (White)

Page 64: Fll programming 101_nxt_g

64 ©2006, 2007 INSciTE

Sensor #3: Rotation

Measures how far a rotating axle has turned. As the axle turns, a counter in the NXT is incremented or decremented.360 counts per rotation.Each motor has an embedded rotation sensor.

Page 65: Fll programming 101_nxt_g

65 ©2006, 2007 INSciTE

Rotation Sensor Loop Block

Possible to make a rotation loop.Select any loop. Pick “Sensor” type and then “Rotations.”

Page 66: Fll programming 101_nxt_g

66 ©2006, 2007 INSciTE

The rotation sensor also brings in the possibility of doing some real math!

We’ll leave that as an exercise for the reader!Of course, trial and error also works.Sources of error in calculation - dirt on surface, using a skid rather than a wheel, backlash (poor fitting gears).

Calculating Distance

Page 67: Fll programming 101_nxt_g

67 ©2006, 2007 INSciTE

More on Rotation Sensor

Rotation sensor counts forward and backwards.Live updates (Bluetooth or USB connected).

Run

Select the Rotation Sensor

Live updates

Page 68: Fll programming 101_nxt_g

68 ©2006, 2007 INSciTE

Debugging and Analysis

Common problemsProgramming: reset the sensor to zero before use. Design: inadequate sensor resolution (trying to measure something very accurately, when the sensor is not that accurate).Control: starting, stopping, turning too fast.Variations in the initial conditions: not putting everything in the same place before pushing the run button.

Page 69: Fll programming 101_nxt_g

69 ©2006, 2007 INSciTE

Sensor #4: Timer

3 TimersTime in thousandths of a secondGreater or Less than testResetTrigger PointTimer NumberYes/NoTime as a number

Page 70: Fll programming 101_nxt_g

70 ©2006, 2007 INSciTE

Other Sensors

Sound (microphone)Is the FLL competition too loud?

Ultrasonic (distance)Interference with other NXTs?

NXT ButtonsOne touch running of the next program.

Received Messages

Page 71: Fll programming 101_nxt_g

71 ©2006, 2007 INSciTE

Keep it Simple Strategies

KISS #4: Variables #5: Parallel Sequence

Page 72: Fll programming 101_nxt_g

72 ©2006, 2007 INSciTE

What’s a Variable?

A value that you can change during your program.

This value is “variable”, hence the name.For example, your program may store a light sensor reading in a variable called LightBright. Use that value later.Use a meaningful name.Useful to pass values to MyBlocks

Page 73: Fll programming 101_nxt_g

73 ©2006, 2007 INSciTE

KISS #4: Variables

Creating a variable<Edit><Define Variables>CreateName the variableSelect a datatypeNumberTextLogic

Page 74: Fll programming 101_nxt_g

74 ©2006, 2007 INSciTE

Using a Variable

Use the Write action

Pick a variable

Set the value

Page 75: Fll programming 101_nxt_g

75 ©2006, 2007 INSciTE

Using a Variable

Use the Read action

Pick a variable

Wire variable value to motor duration

Page 76: Fll programming 101_nxt_g

76 ©2006, 2007 INSciTE

KISS #5: Parallel Sequences

Make two tasks that run independently.(Can you walk and chew gum?)One task lifts the arm.The other task heads for home.

Drag up a sequence beam, release here.

Move your cursor here. Hold the shift key down

and the cursor becomes a wiring tool.

Page 77: Fll programming 101_nxt_g

77 ©2006, 2007 INSciTE

Lab Three

Task:Use a light sensor to detect the lines.

Move from A to B to C to D.Extra Credit: While moving, touch the touch sensor to

stop.

AB

CD

Page 78: Fll programming 101_nxt_g

78 ©2006, 2007 INSciTE

Lab 3 An Answer

Page 79: Fll programming 101_nxt_g

79 ©2006, 2007 INSciTE

Advanced Topics

Debugging ToolsSwitch between Cases

File OperationsBluetooth Communication Setup

Additional Resources

Page 80: Fll programming 101_nxt_g

80 ©2006, 2007 INSciTE

Debugging ToolsMusic

Use music to identify sections of code.One or two quick notes, a good ear can hear the difference.

LCDWrite text, even graphics, to the NXT LCD panel.

NXT Live updatesFrom your PC (or MAC), use NXT-G to view the values of variables and sensors.

Page 81: Fll programming 101_nxt_g

81 ©2006, 2007 INSciTE

Switch Between Cases

Must not use flat view

One switch block with 3 tabs, one for each case.

Click here to add cases.

Text or number

type.

Page 82: Fll programming 101_nxt_g

82 ©2006, 2007 INSciTE

Reset Motor/Move Block

Motor and Move Blocks are servo controls.Corrects momentum over runsFor several blocks in a series, the correction is based on a total rotation target.Even applies across programs

Use the Reset Motor Block to reset the target.

Page 83: Fll programming 101_nxt_g

83 ©2006, 2007 INSciTE

Arithmetic

Operation

Wired Input

Output

Page 84: Fll programming 101_nxt_g

84 ©2006, 2007 INSciTE

Combining Structures

Outside Loop runs forever.

Light Sensor Switchruns inside.

Page 85: Fll programming 101_nxt_g

85 ©2006, 2007 INSciTE

Compare that line follower to this one:

BetterSimpler. One motor changes speed. Faster.

WorseTight corners?

Comparing Algorithms

Page 86: Fll programming 101_nxt_g

86 ©2006, 2007 INSciTE

Watching 3 SensorsLogical ORs combine results into a single

True or False

Outside Loop (Logical)

Page 87: Fll programming 101_nxt_g

87 ©2006, 2007 INSciTE

Optimizing Code

Which is faster?more reliable?best?

Use the one that makes sense to you, the programmer.

Page 88: Fll programming 101_nxt_g

88 ©2006, 2007 INSciTE

File Operations

ReadWriteCloseDelete

Upload/Download

Page 89: Fll programming 101_nxt_g

89 ©2006, 2007 INSciTE

Bluetooth Communication Setup

On the NXT, select Bluetooth -> On/off -> ONBluetooth -> Visibility -> Visible

In NXT-G, select a NXT and click “Connect”Enter a passkey, like “mysecret”and click “OK.”On the NXT a screen will appear. Re-enter the same passkey. (Be quick, you've got 30 sec.)After NXT-G shows “connected”, on the NXT,

Bluetooth -> Visibility -> Invisible

Page 90: Fll programming 101_nxt_g

90 ©2006, 2007 INSciTE

Page 91: Fll programming 101_nxt_g

91 ©2006, 2007 INSciTE

Lab Four

Task:Move exactly one lap around an oval.

(Black 2cm line on white paper)

Page 92: Fll programming 101_nxt_g

92 ©2006, 2007 INSciTE

Lab 4 An Answer

Did you start by copying? Why not?Is building a robot like taking a test?