The Finch Robot

advertisement
THE FINCH ROBOT
AND THE WHILE LOOP
Pepper
THE ROBOT
Developed by Carnegie Mellon students to teach CS
 Supports many compilers, including Java
 Web site: http://www.finchrobot.com/
 Why – Illustrate while and do /while loops with
physical example
 Why 2: See how hardware and physical actions can be
controlled with code
 Lab group practice
 Extra: One robot available for creating game

Will need to learn methods
 May need to debug issues
 Will it help you learn for the final?

HARDWARE

Input Sensors





Obstacles
Light
Accelerometer
(how fast is it
going)
Temperature
Output
Wheels turn
 LED lights
 Speaker


Power

Long USB Cord
INSTALLING
Download Java package from
http://www.finchrobot.com/Creating,%20Compili
ng,%20and%20Running%20Programs%20for%20
Finch/bluej
 Place it in the folder you want to use
 Unzip it
 Open sample project in sourceFiles bluej.pkg
 Create your own package inside sample project


(or add jar file finch.jar to bluej via preferences Or
add finch.jar to the +libs folder inside SourceFiles)
MAKE A FINCH CONTROLLER

Bring in the knowledge:


Create a finch object that knows finch commands:


import edu.cmu.ri.createlab.terk.robot.finch.Finch;
Finch myFinch = new Finch();
Always end with quit and exit:
myFinch.quit();
 System.exit(0);

CONTROLLING COMMANDS

Set Finch Beak Color:


Make Finch Speak:


myFinch.setLED(red,green,blue); // 0 to 255
myFinch.saySomething("The Finch will say this.");
Make Finch Move:

myFinch.setWheelVelocities(left,right,time)
// -255 to 255 & time is in milliseconds
// negative number rolls backwards
// hold the cord or it may have difficulty
SIMPLE PROGRAM –













package Pepper;
import edu.cmu.ri.createlab.terk.robot.finch.Finch;
public class FinchSimple {
public static void main(final String[] args) {
// Instantiating the Finch object
Finch myFinch = new Finch();
myFinch.setWheelVelocities(255,255,1000);
myFinch.saySomething(“I am now All Done");
// Always end your program
myFinch.quit();
System.exit(0);
}
}
GET FINCH SENSE INFORMATION

Obstacles: All true/false
isObstacle()
 isObstacleLeftSide()
 isObstacleRightSide()


Light: All true/false, but using light level
threshold. Returns true if less than the threshold
isRightLightSensor(10)
 isLeftLightSensor(10)

In dark, it will be true up to about 4
 In light, it will be true up to about 40
 Ex: if (myFinch.isRightLightSensor(10) == true)
{ System.out.println(“It is light out”);}
else {System.out.println(“It is dark out”);}

MAKE IT DO AN ACTION WHILE A
CONDITION IS TRUE
Keep moving forward until it senses an obstacle
while ( myFinch.isObstacle() == false ){
myFinch.setWheelVelocities(255,255,200);
}
// then back up
myFinch.setWheelVelocities(-255,-255,1000);

ANOTHER - MAKE IT DO AN ACTION WHILE
A CONDITION IS TRUE

Spin until the lights turn off
while (myFinch.isRightLightSensor(10) == true){
myFinch.setWheelVelocities(255,-255,1000);
}
// when the lights are out, this will be false
// when the lights are on, this will be true
// could say spin while lights are on
// WILL NOT SPIN AT ALL IF LIGHTS OFF
DO WHILE

Spin at least once, and then keep spinning until
the lights turn off
do
{ myFinch.setWheelVelocities(255,-255,1000);
}
while (myFinch.isRightLightSensor(10) ==
true);
// run with lights off – see one spin first
GET ORIENTATION INFO

Orientation: All true/false






isFinchLevel()
isFinchUpsideDown()
isBeakDown()
isBeakUp()
isLeftWingDown()
isRightWingDown()
YOUR TAKEAWAY
Difference between while and do while
 Creating an object of a class gives your program
powerful tools
 A sense of how hardware can be controlled by
code
 Perhaps a desire to code your game using this
little robot

YOUR TURN

Probably not needed, but see finch.jar in preferences

Download java finch package



New class
Import above class:


import edu.cmu.ri.createlab.terk.robot.finch.Finch;
Inside main method, create a finch object


http://www.finchrobot.com/Creating,%20Compiling,%20and%2
0Running%20Programs%20for%20Finch/bluej
Finch myFinch = new Finch();
Close your finch at the end of main
myFinch.quit();
 System.exit(0);



Add code to make it move right and test.
Then make it do something until it hits a wall.
Download