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

Slides:



Advertisements
Similar presentations
Robofest 2005 Introduction to Programming RIS 2.0 RCX Code.
Advertisements

AITI Lecture 19 Linked List Adapted from MIT Course 1.00 Spring 2003 Lecture 26 and Tutorial Note 9 (Teachers: Please do not erase the above note)
4. Object-Oriented Programming Procedural programming Structs and objects Object-oriented programming Concepts and terminology Related keywords.
Sonar and Localization LMICSE Workshop June , 2005 Alma College.
Robotics Invention System 2.0
Nawwaf Kharma.  Programming as Problem Solving with Applied Algorithms  Algorithm Design as Instruction selection, configuration and sequencing  The.
Programing Concept Ken Youssefi/Ping HsuIntroduction to Engineering – E10 1 ENGR 10 Introduction to Engineering (Part A)
Robot Programming. Programming Behaviors Behaviors describe the actions and decisions of your robot.
Behavior-Based Robots Bert G. Wachsmuth Seton Hall University.
Mrs. Chapman. Tabs (Block Categories) Commands Available to use Script Area where you type your code Sprite Stage All sprites in this project.
Alternative Programming Languages Myles McNally LMICSE Workshop November , 2004 University of Mississippi.
Building robots Spring Mindstorms Programming Java + leJOS, NQC, and others.
The Turtle Laboratory Sequence Myles McNally LMICSE Workshop November , 2004 University of Mississippi.
Introduction to Lego Mindstorms LMICSE Workshop June , 2005 Alma College.
Not Quite C: A CS 0 Option LMICSE Workshop June , 2005 Alma College.
Walking the Grid: Robotics in CS 2
The Turtle Laboratory Sequence LMICSE Workshop June , 2005 Alma College.
Using LeJOS LMICSE Workshop August , 2006 Villanova University.
Using LeJOS LMICSE Workshop June , 2005 Alma College.
Programming with Lejos Part 1. What is lejos? Cut-down version of Java for the RCX platform Includes: –Lejos API –JVM API includes functionality needed.
1 Flash Programming Introduction Script Assist. 2 Course Description This course concentrates on the teaching of Actionscript, the programming language.
Chapter 2: Algorithm Discovery and Design
19-Aug-15 Simple Recursive Algorithms. 2 A short list of categories Algorithm types we will consider include: Simple recursive algorithms Backtracking.
Java for Robots How to program an NXT robot with a Java Brain Bert G. Wachsmuth Seton Hall University.
LEGO NXT Robot Programming Introduction to Programming a Lego NXT robot in Java.
Week 4-5 Java Programming. Loops What is a loop? Loop is code that repeats itself a certain number of times There are two types of loops: For loop Used.
Teach.NET Workshop Series Track 4: AP Computer Science with.NET and J#
Programming Logic Program Design. Objectives Steps in program development Algorithms and Pseudocode Data Activity: Alice program.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
Department of Computing and Information Sciences Kansas State University Design Methodology for State based Embedded Systems Case Study: Robot Controller.
GIRLS Robotic Camp. Let’s Begin Meet and Greet – Camp leaders introduce themselves – Students introduce themselves.
LabVIEW Program and Data Flow Review LabVIEW Robotics Fundamentals.
Karel J Robot An introduction to BlueJ and Object- Oriented Programming.
EE4E. C++ Programming Lecture 1 From C to C++. Contents Introduction Introduction Variables Variables Pointers and references Pointers and references.
Programing Concept Ken Youssefi/Ping HsuIntroduction to Engineering – E10 1 ENGR 10 Introduction to Engineering (Part A)
Robotics Overview of NXT-G Actuators in Mindstorms. Touch sensor Labwork: Right turn. Touch/bump. [Explore move versus Motor Move mini & motor mini. Motor*.]
Sound, Touch Sensor, and Motors. Wheeled Vehicles Using the Pilot class: –Constructor Pilot(float wheelDiameter, float trackWidth,Motor leftMotor, Motor.
Session 11 Border Layout, using Panels, Introduction to PinBallGame.
Spring 2008 Mark Fontenot CSE 1341 Principles of Computer Science I Note Set 3.
A tiny turtle robot DEI The University of Padova.
CS 206 Introduction to Computer Science II 09 / 10 / 2009 Instructor: Michael Eckmann.
1 Web Based Programming Section 8 James King 12 August 2003.
Overview of Project 3 Slides are available at : Updated 1/28 Due Date for project has been extended to next Friday 2/6.
Digital Electronics and Computer Interfacing Tim Mewes 4. LabVIEW - Advanced.
Event Driven Programming Minus the GUI Plus a Robot By Charlie Vick.
CSE 1341 Honors Professor Mark Fontenot Southern Methodist University Note Set 11.
1 Linked-list, stack and queue. 2 Outline Abstract Data Type (ADT)‏ Linked list Stack Queue.
BEGINNING PROGRAMMING.  Literally – giving instructions to a computer so that it does what you want  Practically – using a programming language (such.
Castor Bot. Now, we will begin creating a robot Log onto your computer On your screen, click on the website labeled “castor bot” Your building instructions.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 4: Events Programming with Alice and Java First Edition by John Lewis.
Topic 7 Interfaces I once attended a Java user group meeting where James Gosling (one of Java's creators) was the featured speaker. During the memorable.
A High Flying Overview CS139 – Fall 2006 How far we have come.
Using the BlueJ IDE with Mindstorms LMICSE Workshop June , 2005 Alma College.
CS 116 Object Oriented Programming II Lecture 4 Acknowledgement: Contains materials provided by George Koutsogiannakis and Matt Bauer.
Introduction to Robots and the Mind - Programming with Sensors - Bert Wachsmuth & Michael Vigorito Seton Hall University.
Learning Plan 6 Java Programming Intro to Object Oriented Programming.
Python Programming Module 4 Sensors and Loops Python Programming, 2/e1.
Presentation Outline I. Background Information II. Design Project
Introduction to Robots and the Mind - Path Integration -
IT Basic Wednesday 14 April 2010
Programming Part 2 Mod Kit
Computational Thinking
IMDL Summer 2007: RoBeDeS by David Ladolcetta.
CMSC201 Computer Science I for Majors Lecture 16 – Recursion
CS139 – Fall 2010 How far we have come
Week 4 Lecture-2 Chapter 6 (Methods).
LEGO Mindstorms Robot and Java
Introduction to Methods and Interfaces
Presentation transcript:

The Turtle Laboratory Sequence LMICSE Workshop August , 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

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

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

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

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

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”

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.

Turtle Laboratory Topics (1) Sequential Control: Use straight-line code and a "Turtle" robot to move in a few geometric figures. Sequential Control Variables and Expressions: Use more advanced code and variables to create more interesting shapes. Variables and Expressions Methods: Use methods to separate code into parts and also use the Random class. Methods Methods with Parameters / Scope: Use methods with parameters and returns, instance variables, and the Math class. Methods with Parameters / Scope Classes: Define a class that allows musical notes and rests to be represented and played back by the RCX. Classes

Lab 4, Task 5 Right Angle Random Patrol

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. Event Driven Programming Loop Control Structures: Work with each of the loop control structures in Java in the context of event processing. Loop Control Structures Using Interfaces: Define interfaces then implement them to run races and to draw figures with the robots. Using Interfaces 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. Array Structures

Lab 6, Task 3 Use Events to Drive the Turtle

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. Navigation Inheritance: Define several classes that handle notes and rests, and an abstract class that each is an extension of. Inheritance Sorting and Polymorphism: Use polymorphism with various sorting algorithms. Sorting and Polymorphism

Lab 12, Task 2 Travel to Points Sorted by Horizontal Position

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.

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)

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

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

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

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.