Top Banner
The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University
20

The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Dec 20, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

The Turtle Laboratory Sequence

LMICSE Workshop

August 11 - 14, 2006

Villanova University

Page 2: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

The Turtle Laboratory Sequence

• Designed for teaching programming fundamentals• Based around the “Turtle,” a LOGO-like abstraction

from the details of motors and sensors

A Turtle

Page 3: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

The Turtle Laboratory Sequence

• Original work was done by Scott Anderson (Wellesley) with support from Frank Klassner (Villanova) • Coded the Turtle software• Created drafts of seven CS 1 oriented labs

• Current work by Myles McNally (Alma)• Simplified somewhat the Turtle software• Twelve labs oriented towards CS 1• Each lab was used in a fall, 2004 CS 1 course• Each lab has now been refined based on that

experience and videos added

Page 4: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

The Turtle’s Basic Abilities

• Motion• Move forward or backward (timed or continuous)• Turn left or right (timed or based on degrees)

• Can calibrate turning time required to turn n degrees• Stop

• Events• Can respond to events• Simple event queue model

• NONE (queue is empty), RIGHT, LEFT, BOTH, VIEW, PGM, RUN

• Singing • Can play a tone for a duration

Page 5: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

The Physical Turtle (1)

• Many designs could be used

• Requirements are• Differential drive

• Left motor in motor port A• Right motor in motor port C

• Left and right front mounted bump sensors• Left touch sensor in sensor port 1• Right touch sensor in sensor port 3

Page 6: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

The Physical Turtle (2)

• The design we recommend is based on designs from the Constructopedia• The Roverbot Driving Base (p. 12)• The Wheel Sets (p. 17)• The Double Bumper (p. 30)

The Standard Roverbot

Page 7: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

The Physical Turtle (3)

• Then make the following modifications• Remove the front (smaller) set of

wheels• Add a slider to the bottom of the

bot between where the front wheels had been

• Move the RCX itself further back on the base, so that its weight is more centered over the remaining wheels

• These changes improve the exactness of turns

The Turtle “top and bottom”

Page 8: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

The Current Turtle Laboratories

• Java-based (in particular LeJOS)• Covers topics found in a modern, object oriented CS 1 course

• Basic types and expressions• Flow of control• Classes and methods• Arrays, stacks and lists• Interfaces• Inheritance and abstract classes• Polymorphism

• Loosely follows the topic order in the Lewis and Loftus text, but could be used with almost any object oriented text.

Page 9: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Turtle Laboratory Topics (1)

• Sequential Control: Use straight-line code and a "Turtle" robot to move in a few geometric figures.

• Variables and Expressions: Use more advanced code and variables to create more interesting shapes.

• Methods: Use methods to separate code into parts and also use the Random class.

• Methods with Parameters / Scope: Use methods with parameters and returns, instance variables, and the Math class.

• Classes: Define a class that allows musical notes and rests to be represented and played back by the RCX.

Page 10: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Lab 4, Task 5

Right Angle Random Patrol

Page 11: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Turtle Laboratory Topics (2)

• Event Driven Programming: Work with the basics of event driven programming and focusing on using decision structures to respond to events.

• Loop Control Structures: Work with each of the loop control structures in Java in the context of event processing.

• Using Interfaces: Define interfaces then implement them to run races and to draw figures with the robots.

• Array Structures: Use arrays to record inputs from the user and then traverse a course using the recorded values to know when to move and when to turn.

Page 12: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Lab 6, Task 3

Use Events to Drive the Turtle

Page 13: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Turtle Laboratory Topics (3)

• Navigation: Implement a navigation interface which allow the Turtle to go to positions in its world, then input a series of positions and have the Turtle visit them.

• Inheritance: Define several classes that handle notes and rests, and an abstract class that each is an extension of.

• Sorting and Polymorphism: Use polymorphism with various sorting algorithms.

Page 14: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Lab 12, Task 2

Travel to Points Sorted by Horizontal Position

Page 15: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Programming: The Turtle Abstraction

• The Turtle is programmed in LeJOS, but using the Turtle library

• While LeJOS provides the ability to directly control motors and poll sensors,

• The Turtle abstracts from these low level routines, allowing users to direct the Turtle move forward, turn, and register events.

• This results in simpler, more readable programs.

Page 16: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

An Example LeJOS Program

• Notice the use of low level control

import josx.platform.rcx.*;public class Patrol { public static void main(String[] args) throws InterruptedException { Motor.A.forward(); while (true) { Motor.C.forward(); // go forward Thread.sleep (5000); Motor.C.reverse(); // turn around Thread.sleep (1000); }

Motor.A.stop(); Motor.C.stop(); }

Patrol back and forth (v. 1)

Page 17: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

The Corresponding Turtle Solution

public class Patrol { public static void main(String args[]) {

while (true) {Turtle.forward(2000); // go forward

Turtle.turn(1000); // turn around }

Turtle.stop(); // stop all motors}

}Patrol back and forth (v. 2)

• Notice the simpler, more direct coding solution

Page 18: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Using Calibration

public class Patrol { public static void main(String args[]) {

Turtle.calibrateTurn(360,3000);// calibrate

while (true) {Turtle.forward(2000); // go forward

Turtle.left(180); // turn around }

Turtle.stop(); // stop all motors}

}Patrol back and forth (v. 3)

• Once calibrated, the Turtle can do degree-based turns

Page 19: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Using the Turtle Event Model

public class MoveForward { public static void main(String args[]) {

Turtle.forward(); // move forward

int event = Turtle.nextEvent();

while (event != Turtle.RUN){ // until RUN button

event = Turtle.nextEvent(); // is pressed

} Turtle.stop(); // stop all motors

}}

Move forward until the RUN button is pressed

• Use the nextEvent() method and the Turtle event constants

Page 20: The Turtle Laboratory Sequence LMICSE Workshop August 11 - 14, 2006 Villanova University.

Hands-on Time!

• Exercise 1: Craft a program that will have the Turtle move in a square shape using a loop which contains one forward command and one turn command.

• Exercise 2: Improve your solution to include calibration, replacing the turn command with a left command

• Exercise 3: Craft a program that uses the Turtle’s event queue to have the Turtle move forward, turning away from obstacles when necessary. That is, when the left bump sensor is pressed, back up and turn right, and likewise for the left bump sensor.

• Exercise 4: Craft a program in which you enter a number by pressing the right bumper that many times, and then have the Turtle travel around in a square shape that many times. Signal the end of your input by pressing the left bumper. The Turtle should then begin to move.