getting ready to go with lejos and an ide nsf workshop november 19-21, 2004 the university of...

49
etting Ready to go with LeJos and an ID NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Post on 19-Dec-2015

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Getting Ready to go with LeJos and an IDE

NSF WorkshopNovember 19-21, 2004The University of MississippiPam Lawhead

Page 2: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Part 0 – Installing LeJos

Taken from:http://lejos.sourceforge.net/tutorial/getstarted/firstbrick/win32.html

Page 3: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

You will need:LEGO MINDSTORMS RCX, IR Tower and the leJOS environmentand

The JavaTM 2 Platform, Standard Edition

download it from http://java.sun.com/j2se/1.4/download.html and to consult the associated installation instructions (make sure to download the SDK, not the JRE!).

Step 1

Page 4: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

The leJOS environment may be downloaded from: Download section of http://www.lejos.org.

Installation of the leJOS environment

1. After you have downloaded the leJOS environment zip file, unzip it directly to your C: directory.

2. Add the SDK's bin directory to your PATH environment variable. (Using Start/Control Panel/System/ [advanced]/[environment variables]

3. In XP Start/Control Panel/Performance and Maintenance/System/[advanced]/[environment variables]

4. Set the LEJOS_HOME environment variable to the directory you installed lejos into:

set LEJOS_HOME=< your lejos directory > 5. Add leJOS's bin directory to your PATH environment variable:

set PATH=%PATH%;%LEJOS_HOME%\bin 6. Add the leJOS classes to your CLASSPATH environment variable:

set CLASSPATH=%CLASSPATH%;.;%LEJOS_HOME%/lib/classes.jar;%LEJOS_HOME%/lib/pcrcxcomm.jar

7. Set the RCXTTY environment variable to your 'tower' device:set RCXTTY=COM1 or set RCXTTY=USB

Page 5: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

leJOS-enable your RCXTo enable your RCX for the execution of leJOS programs, you will have to replace the original LEGO® with the leJOS operating system.

1. Place the IR sensor of the RCX in front of the IR Tower 2. Turn on the RCX 3. Open a command shell and change to the bin directory of your

leJOS installation call firmdl.bat

4. The progress of the download is displayed in the command shelland on the display of the RCX; the RCX will double beep when the download is completeand display the battery voltage

OR…

RCX Firmware

Page 6: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Use the RXC Direct Interface

Available from: http://lejos.sourceforge.net/utilities.html

1. Download the file RCXTools1.5.zip2. Unpack "RCXTools_1_5.zip3. doubleclick"RCXDownload.bat"

4. Set up preferences as in Get Started slide5. Download firmware using button

GETTING STARTED

Page 7: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Setting up the IDE

NSF Workshop November 19-21, 2004The University of Mississippi Pam Lawhead

Page 8: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Setting up the IDE

http://rcxtools.sourceforge.net/e_download.htmlDownload RCXTools_1.5.zipDouble Click "RCXDownload.bat"

You will now participate in the dialog that follows

Page 9: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Here put the path to your lejos

bin directoryHere put the

path to your JDK

Page 10: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Set Up Continues

Used courtesy of RCX Tools Install page

Page 11: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Let us test it

Create Program “Hello World”Save it as HelloWorld.javaRun RCXDownload.batUse the “Open” button to find the fileLoad the fileUse the Compile button to compile

Page 12: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

helloWorld.javaimport josx.platform.rcx.*;public class HelloWorld { public static void main (String[] aArg) throws Exception { LCD.clear(); TextLCD.print ("hello"); Thread.sleep(2000); TextLCD.print ("world"); Thread.sleep(2000); }}

Page 13: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead
Page 14: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Download program to RCX

Place robot in front of IR TowerBe careful to cover it if you are not aloneTurn Robot onClick IDE Download ButtonWatch numbers on LCD if they are not increasing try again

Page 15: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Run the Program

When the robot beeps twiceHit the RUN buttonYou will see

HELLO

WORLD

Page 16: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

LeJos, Mindstorm Linkshttp://lejos.sourceforge.net/tutorial/index.htmlhttp://lejos.sourceforge.net/http://dudley.wellesley.edu/~anderson/robots/lejosdocs/ The Lejos APIhttp://www.informatik.fh_muenchen.de/~schieder/usinglejoshttp://dudley.wellesley.edu/~anderson/robots/lejos/http://lvi.sourceforge.net/ Another way to interface with LeJoshttp://rcxtools.sourceforge.net/ My Favorite IDEhttp://graphics.stanford.edu/~kekoa/rcx/ How the internals of the RCX workhttp://www.informatik.fh_muenchen.de/~schieder/usinglejos/

“Instant Lejos” For a quick uncomplicated approachhttp://mindstorms.lego.com/eng/default.asp The Official Lego Mindstorm sitehttp://www.devdaily.com/java/lejos/GettingStartedWithLejos/ Another Introductory Site

Page 17: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Using LeJos

NSF Workshop November 19-21, 2004The University of Mississippi Pam Lawhead

Page 18: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Button and LeJos

All buttons my be re-programmed except “RUN”Controlled by a “button class”Polling or Using a Listener (Discuss) “listener” or directly using waitForPressAndRelease()

Page 19: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Button Example(Polling)

import josx.platform.rcx.*;

public class RunButton{public static void main(String[] args) throws InterruptedException {// Move forward Motor.A.forward(); Motor.B.forward();// just run until RUN button is pressed again Button.RUN.waitForPressAndRelease(); }}

Page 20: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Button Example(listener) -from Tutorial

public class MyButtonListener implements ButtonListener { public void buttonPressed(Button b) { // maybe do something here } // buttonPressed() public void buttonReleased(Button b) { // maybe do something here } // buttonReleased() } // class MyButtonListener

//used it looks like this

Button.RUN.addButtonListener(myButtonListener);

Page 21: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Motors

Three Motors A, B, CControlled using: public static void forward() public static void backward() public static void reverseDirection() public static void flt() public static void stop()

Page 22: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Motor Examples

Motor.A.forward();Motor.B.forward();Motor.B.flt(); //like an idleMotor.A.reverseDirection();Motor.A.setPower(3); //possible values 1-7

(deceptive – does not cause the motor to go slow it just causes to use less energy which, perhaps, might slow it down)

Page 23: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Sensors

There are three possible Sensor.S1, Sensor.S2, Sensor.S3You must “set type and mode” to know the type of the sensor setTypeAndMode(int aType, int aMode)

Parameters include:aType _ 0 = RAW, 1 = TOUCH, 2 = TEMP, 3 =

LIGHT, 4 = ROTaMode _ 0x00 = RAW, 0x20 = BOOL, 0x40 =

EDGE, 0x60 = PULSE, 0x80 = PERCENT, 0xA0 = DEGC, 0xC0 = DEGF, 0xE0 = ANGLE

Also, mode can be OR'd with slope (0..31).

Page 24: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

More Sensors

Sensor.S1.activate(); //turns the sensor on

Sensor.S1.passivate(); //turns the sensor off

Same argument exists:Do I want listeners or do I poll?

(see Barnes article for full discussion)

Page 25: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Sensor Examples

Sensor.S2.readRawValue(); (must be used if aType = 0)

Sensor.S2.readBooleanValue(); (used if aMode = BOOL e.g. touch sensor)

Sensor.S2.readValue(); (used for light sensor percentage

aMode = 3aType – 0x80)

Page 26: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Sensor Code Example

import josx.platform.rcx.*; class LCDShowLight { public static void main(String[] args) {

Sensor.S1.setTypeAndMode(3,0x80); Sensor.S1.activate();

while(true) LCD.showNumber(Sensor.S1.readValue()); } }

Page 27: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Sound

Uses RCX speaker – useful for debugging beep //one beep beepSequence() // a series of beeps going down buzz() playTone(int aFrequency, int aDuration)aFrequency – 31-2100 Hz //human sound rangeaDuration – 1 – 256 Centiseconds

Page 28: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Sound Exampleimport josx.platform.rcx.*;class AudibleSounds { public static void main(String[] args) throws InterruptedException { for(int f = 440; f < 10000; f = 110*f/100) { LCD.showNumber(f); Sound.playTone(f, 50); Thread.sleep(500); } for(int f = 440; f > 20; f = 90*f/100) { LCD.showNumber(f); Sound.playTone(f, 50); Thread.sleep(500); } } }

Page 29: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Part 4Doing an Assignment

The Light Sensor

NSF Workshop November 19-21, 2004The University of Mississippi Pam Lawhead

Page 30: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Assignment:

The Light Sensor

Page 31: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

The Sensors

Normally, there are three types of sensors used programming the RCX, and they are:

Touch Sensor Light Sensor Rotation Sensor

This assignment will focus on the Light sensor.

Page 32: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Overview

The purpose of this assignment is to give the student experience in Java event programming involving light sensors. It will give students more chances to practice using the RCX-Lejos LCD screen control, the If statement, and additional loop control skills.

Page 33: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

The Lego Mindstorm with Light and Touch SensorThe sensor illuminates whatever is in front of it with an LED (light emitting diode) and records the amount of light it get back with a photo-sensitive device.This photo-sensitive device returns a signal that is amplified and digitized (transformed into a number).The range of values for the signal is 0(dark) to 100(bright). The value measured will vary with the surface it examines, the distance separating it, and the ambient light (environment)

Page 34: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

The Lego Mindstorm with Light Sensor

The LEGO Mindstorm’s light sensor has a range of about 3 inches.In Java, the sensor can measure the percentage of light received by the photo sensitive device.The RCX, displays a lower percentage of light on black colors and a higher percentage on white colors.The robot can follow a path by reacting to light percentages.

Page 35: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Problem StatementWrite a small Java program to demonstrate to how the light sensor works. There are three different colors used on the background surface, (black, green, and white). Through the program, the LCD should show the percentage of light corresponding to different colors on the background. When the light sensor is on white, there should be a range of numbers, on green another, and finally on black another.

***Battery power and ambient light will affect how the machine behaves.***

Using data gained from above experiment, write a Java program to make an RCX, equipped with one light sensor and at least two wheels, navigate on flat surfaces and follow the black line.

Page 36: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Laboratory Preparation

How does this program get input data or receive data in this lab? What is the difference from the previous labs?How many variables do you plan to use? And what data types are the variables?Write a small method called LeftAndRight that makes the RCX turn left or turn right based on some value that it receives?Write the program outline for the testing light sensor assignment.Write the method headers for this assignment. Once this is done write the full code. Bring this code to the lab.

Page 37: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

LaboratoryRobot Needed:

RCX brick, 2 motors, 2 or 4 wheels, and 1 light sensor.

Lejos classes and method needed:Motor: setPower (int aPower), forward(), backward(), stop() Sensor: activate(), passvate(), int readPercentage() (for light sensor)LCD: showNumber(int value)

Other equipment:TrackIR Tower

Page 38: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Solution StrategyFix the light sensor at a 90 degree angle to surface. Allow no more than 3 inches from sensors to surface.The key to functionality is using the method readPercentage() of the class Sensor,Sensor.S1.readPercentage() returns an integer value representing the percentage of light received.The shape of the trace is ellipsoid. Set one Motor to stop and allow the other Motor to move forward, causing the RCX to turn left or right.When executing, watch direction RCX is moving. If the program allows the RCX to turn left, keep the left side of the RCX inside of the black line. Otherwise, place right side on the inside.

Page 39: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Testing

Stand in different places when checking the color percentages.Start Robot on Green, on White, on BlackWhat happens if you reverse directions?Could you adjust if you had to change directions? How?

Page 40: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Submissions

Answers to Pre-Lab questionsBrief description of expectations before labDiscussion of how time was spent in labHow long did lab take, including Pre-Lab preparation?A list of the problems encountered writing code for lab.A list of the problems had running and using lab.Names and roles of any collaboratorsEmail program after demonstration

Page 41: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Assignment Array Sorter

NSF Workshop November 19-21, 2004The University of Mississippi Pam Lawhead

Page 42: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

OverviewThe purpose of this assignment is to give the student experience using Java arrays, light sensors and arrays to sort the sensor reading stored in an array. The text used for this class (Lambert and Osborne) provides code for sorting a simple on dimensional array. This code may be used in this assignment. The only sensor required is a light sensor.You need to read Chapter 7 in your textbook very carefully to understand classes. Next, you need to answer the following questions BEFORE you come to lab.

Page 43: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Background

The array data structure is provided by the Java programminglanguage to handle those situations where many similar items need to be read, manipulated, stored, written or dealt with by the computer in some way. ...The actual assignment has an extensive background section

Page 44: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Problem StatementYou have been chosen as the field tester for the Our Colors Don’t Fadein the Sun Paint company. The sun shines unrelentingly here insummertime Mississippi and you have decided that it is entirely toohot for you to go out each day and take the readings from each colorsample to determine if there has been any change. The goal is to keepthe colors stored in the company’s primary computer from lightest to darkest. To do this you must write a program that allows a robot totravel across a field of sample paint colors, take a reading of each usingthe light sensor, and then store that value in an array of colors. Oncethe colors have been collected, you need the robot to return those values to the main computer where they will be stored and sorted for futureuse. Your company is a start-up company so it is not making many different colors of paint at this time. In this case, “summer paint sun test” there are only 5 colors that are being tested. As profits increase, the company will add additional colors to it’s a pallette but, for now, 5 will do.

Page 45: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Lab Preparation

1. What is the Java syntax for declaring an array?2. What new leJos classes will you need to complete this

assignment?3. What are constructors used for? How are they defined?4. What is the simplest way that you can sort a list of

numbers?5. What are the classes that have you already written that

can be reused here?6. Will you need two arrays to sort the numbers? How will

you handle that?

Page 46: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Laboratory

Robot needed: RCX brick, two motors, 4 (or 2) wheels and one light sensor

LeJos classes and methods needed: Motor: setPower(int aPower), forward(), backward(), stop(),flt()Sensor: activate(), passvate(), int readPercentage()(for light sensor )LCD: showNumber(int value), RCXComm

Page 47: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Solution Strategy

(Note: You might need to write a little test program to determine the light sensor percentage for the different colors.)You need to be sure that the paint colors are distinct enough that the different colors can be recognized by the. You might need to put a black line between the colors. You need to first identify the different parts of your program - objects, attributes and methods.Decide what variables that you will need. What methods will be required to access these variables?Using the description of a class template found in your book on p. 160 define each of the four parts of your robot class template.

Page 48: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Solution Strategy (continued)

Write each of the methods that you have identified in step one.How will you get your robot to return values to the PC? What class will you use?What methods in that class will be required? What are the arguments required?Hint: You might have a problem with the robot running too fast to get accurate readings of each of the colors, what are some solutions to that problem?

Page 49: Getting Ready to go with LeJos and an IDE NSF Workshop November 19-21, 2004 The University of Mississippi Pam Lawhead

Testing

1. What is the first thing that you need to test?2. What should the output from this program look like?3. What is the input?4. What would be an example of the program not

working?5. What would you do to fix the problem identified in

question 4?6. What are the expected inputs and outputs of each

module?7. What would it mean for a value to be out of bounds for

each module?8. What are two different ways that an array could be out

of bounds?