The Finch Robot
Download
Report
Transcript The Finch Robot
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.