Institute for Personal Robots in Education

Download Report

Transcript Institute for Personal Robots in Education

Computer vision and image
processing
Accessible resources for robotics and
CS curricula
Designed for Pedagogy:
Exploring Robot Vision in CS1
The Institute for Personal Robots in Education
Doug Blank, Bryn Mawr College
In association with Tucker Balch, Deepak Kumar, Stewart Tansley,
Mark Guzdial, Keith O’Hara, and Jay Summet and many others
Introduction
Institute for Personal Robots in Education
(IPRE)
Fluke + Scribbler, hardware
Myro, software
Learning Computing with Robots
Summer workshops at GATech and Bryn
Mawr College this summer! See our booth
over the next couple of days.
IPRE Overview
Mission:
Make education more fun and effective
through the use of personal robots
Audience: All levels, from middle
school to graduate school
Joint effort hosted at Georgia Tech
with Bryn Mawr College and
Microsoft Research
3 year seed funding provided by
Microsoft Research
Special ingredient and hypothesis:
A personal robot for every student programmer
Personal Robot
Every student gets their own robot
Small enough to carry in backpack
Cost about the price of a textbook
Wireless, controlled from computer
Interactive and easy to program
Robust
Personalizable
More than “just a robot”
Personal Robot
turnLeft(1, .5)
speak(“Hello, SIGCSE!”)
IPRE Pilot Hardware Kit
Featuring Parallax’s Scribbler
6 Light sensors
7 IR sensors
Stall sensor
Speaker
5 LEDs
2 motors
Bluetooth wireless
Camera
Gamepad
IPRE’s Philosophy
The Personal Robot provides the context
The needs of the curriculum drive the design of
the robot, software, and text
The software is easy to pickup, but scales with
experience (“pedagogically scalable”)
An accessible, engaging environment for new,
diverse students
Computer Science ≠ programming
Computing a social activity
Computing a medium for creativity
Focus on performances rather than competitions
Scribbler with IPRE Fluke
A CS1 Assignment: Exploring a Pyramid
“Civic Computing”
Myro is Python
Looks like English
Indentation matters
Interactive
Easy to learn, but powerful
Myro is Python
Looks like English
Indentation matters
Interactive
Easy to learn, but powerful
… IronPython gives access to Microsoft
Robotics Studio
… and Linux and Macintosh via Mono
Python Functions
def functionName(arg1, arg2=value):
print “hello world!”, arg1, arg2
# this is a comment
functionName(1)
Myro, inspired by MediaComp
Myro, inspired by MediaComp
picture = takePicture()
count = 0.0
for pixel in getPixels(picture):
if distance(getRGB(pixel), getRGB(pink)) < 100:
totalX += getX(pixel)
count += 1
if totalX/count < getWidth(picture)/2:
turnLeft(1, .2)
else:
turnRight(1, .2)
Panorama
for i in range(10):
show(takePicture(“gray”))
turnLeft(1, .2)
ONLINE Evaluation
www.cse.buffalo.edu/sigcse08/evaluations
Password: sigcse08
IPRE “Open” Textbook
Connections to Biology and Psychology
www.roboteducation.org
Institute for Personal Robots in Education
(IPRE)
Fluke + Scribbler, hardware
Myro, software
Learning Computing with Robots
If you are interested in working with us to
explore robots and education, please let
us know.
Analysis so far: Retention?
10
8
6
4
2
0
CS2 Data Structures Enrollment
Analysis so far: Retention!
20
15
10
5
0
CS2 Data Structures Enrollment
Hands-on with Myro
10 IPRE Robot kits
Explore image processing, or any aspect
of robots and education
Install software
Explore Python, Myro, and Robot
Using Myro
1. Install software on any computer
(Mac, Linux, or Windows)
2. Establish Bluetooth connection
(via a Serial port)
3.
4.
5.
6.
Start Python
Load Myro
“Initialize” connection with robot
Have fun!
1. Install software
2. Serial Connection over
Bluetooth (“com4”)
Serial Bluetooth
Adapter
USB Bluetooth
Adapter
3. Start Python (IDLE)
4. Load Myro
>>> from myro import *
5. Initialize connection to robot
>>> from myro import *
>>> init(“com4”)
6. Have Fun!
>>> gamepad()
Gamepad controls
Pad
-----Left/Right
Up/Down
Button
-----1
2
3
4
5
6
7
8
Action
------turnLeft() and turnRight()
forward() and backward()
Action
------takePicture()
beep(.25, 523)
beep(.25, 587)
beep(.25, 659)
speak('Hello. My name is Scribby.')
speak('Ouch! I'm a sensitive robot.')
speak('I'm hungry.')
speak('Good bye, for now.') and stop()
Manual Control
>>> from myro import *
Myro, (c) 2008 Institute for Personal Robots in Education
[See http://www.roboteducation.org/ for more information]
Version 2.6.5, ready!
>>> init()
Waking robot from sleep...
Hello, I'm Scribby!
Left
>>> senses()
>>> gamepad()
6
5
Forward
7
Right
3
8
2
4
Back
1
Let’s get Personal!
Name your robot
>>> setName(“Fifi”)
>>> setName(“Robbie”)
>>> setName(“Toaster”)
>>> setName(“Bob”)
Challenges
1. Is there Life on Mars?
2. Build a Dancing Robot
3. Build a Robo Cockroach
Challenge 1:
Is there Life on Mars?
“Mars” is the center of the room
There is a picture of an alien in the
mountains
Manually drive your robot to “Mars”
Photograph the specimen
Is there life on mars?
It’s alive!
Challenge 2:
Build a Dancing Robot
www.blogguelph.com
Movement
forward(speed, seconds)
>>> forward(1, 2.3)
backward(speed, seconds)
>>> backward(.5, 4.6)
turnLeft(speed, seconds)
>>> turnLeft(1, .3)
turnRight(speed, seconds)
>>> turnRight(1, .6)
Dancing
>>> forward(1, 1.4)
>>> turnLeft(1, .3)
Dancing
>>> forward(1, 1.4)
>>> turnLeft(1, .3)
>>> forward(1, 1.4)
>>> turnLeft(1, .3)
“Square” Dancing
>>> forward(1, 1.4)
>>> turnLeft(1, .3)
>>> forward(1, 1.4)
>>> turnLeft(1, .3)
>>> forward(1, 1.4)
>>> turnLeft(1, .3)
>>> forward(1, 1.4)
>>> turnLeft(1, .3)
range()
>>> range(4)
[0, 1, 2, 3]
>>> for i in range(4):
print “Hi”
Hi!
Hi!
Hi!
Hi!
range()
>>> for i in range(4):
forward(1, 1.4)
turnLeft(1, .3)
Making Noise
beep(duration, freq1)
>>> beep(.5, 880)
>>> beep(.5, 440)
beep(duration, freq1, freq2)
>>> beep(1, 440, 880)
Making Noise
speak(“any string”)
>>> speak(“Hello world!”)
>>> speak(“What’s up, Doctor Jay?”)
getVoices()
>>> getVoices()
setVoice(“Name”)
>>> setVoice(“Fred”)
Making Noise
playSong( makeSong(“string”))
>>> playSong(makeSong(“a 1; c 1/8”))
>>> playSong(makeSong(“c4 1; d3 1; a5 1”))
Putting it all together
Instead of entering the commands one at
a time, we can put them all together into
a program
From the IDLE menu, select
File -> New Window
Name it by selecting File -> Save as…
from the new window
Name it “Dance.py”
Python
Looks like English
Indentation matters
Interactive
Easy to learn, but powerful
Dance.py
for i in range(10):
forward(1, 2)
backward(1, 2)
for i in range(3):
beep(.25, 200)
beep(.25, 400)
beep(.25, 800)
beep(.25, 1600)
Dance.py
for i in range(10):
forward(1, 2)
backward(1, 2)
for i in range(3):
beep(.25, 200)
beep(.25, 400)
beep(.25, 800)
beep(.25, 1600)
To run your program,
select Run -> Run Module
from the new window menu
Myro control
wait(seconds)
>>> wait(.5)
for seconds in timer(10):
# do something for 10 seconds
while timeRemaining(20):
# do something for 20 seconds
Camera
>>> picture = takePicture()
>>> show(picture)
Click and drag in show window
>>> picture = takePicture(“blob”)
>>> count, x, y = getBlob()
>>> configureBlob(y1,y2,u1,u2,v1,v2)
Robot Bling
>>> setLEDBack(1)
>>> setLEDBack(0)
Challenge 3:
Build a Robo Cochroach
If you see light, run
Robot Sensors
Senses
getLight()- “left”, “center”, “right”
getBright() - “left”, “center”, “right”
getIR() - “left”, “right”
getObstacle() - “left”, “center”, “right”
Reading the Light Sensors
getLight(“left”)
getLight(“center”)
getLight(“right”)
getLight()
[657, 1453, 1025]
Light
sensors
Python functions
def functionName(arg1, arg2=value):
print “hello world!”, arg1, arg2
# this is a comment
functionName(1)
Thank you for your time!
For more information see
www.roboteducation.org