Title: Institute for Personal Robots in Education -- One Year On
1Computer 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 OHara, and
Jay Summet and many others
2Introduction
- 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.
3IPRE 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
4Personal 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
5Personal Robot
turnLeft(1, .5) speak(Hello, SIGCSE!)
6IPRE Pilot Hardware KitFeaturing Parallaxs
Scribbler
- 6 Light sensors
- 7 IR sensors
- Stall sensor
- Speaker
- 5 LEDs
- 2 motors
- Bluetooth wireless
- Camera
- Gamepad
7IPREs 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
8Scribbler with IPRE Fluke
9A CS1 Assignment Exploring a Pyramid
10Civic Computing
11Myro is Python
- Looks like English
- Indentation matters
- Interactive
- Easy to learn, but powerful
12Myro 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
13Python Functions
- def functionName(arg1, arg2value)
- print hello world!, arg1, arg2
- this is a comment
- functionName(1)
14Myro, inspired by MediaComp
15Myro, inspired by MediaComp
- picture takePicture()
- count 0.0
- for pixel in getPixels(picture)
- if distance(getRGB(pixel), getRGB(pink)) lt 100
- totalX getX(pixel)
- count 1
- if totalX/count lt getWidth(picture)/2
- turnLeft(1, .2)
- else
- turnRight(1, .2)
16Panorama
- for i in range(10) show(takePicture(gray))tur
nLeft(1, .2)
ONLINE Evaluation
www.cse.buffalo.edu/sigcse08/evaluations
Password sigcse08
17IPRE Open Textbook
18Connections to Biology and Psychology
19www.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.
20Analysis so far Retention?
CS2 Data Structures Enrollment
21Analysis so far Retention!
CS2 Data Structures Enrollment
22Hands-on with Myro
- 10 IPRE Robot kits
- Explore image processing, or any aspect of robots
and education - Install software
- Explore Python, Myro, and Robot
23Using Myro
- Install software on any computer (Mac, Linux, or
Windows) - Establish Bluetooth connection (via a Serial
port) - Start Python
- Load Myro
- Initialize connection with robot
- Have fun!
241. Install software
Myro
252. Serial Connection over Bluetooth (com4)
Serial Bluetooth Adapter
Myro
USB Bluetooth Adapter
263. Start Python (IDLE)
274. Load Myro
285. Initialize connection to robot
- gtgtgt from myro import
- gtgtgt init(com4)
296. Have Fun!
30Gamepad controls
- Pad Action
- ------ -------
- Left/Right turnLeft() and turnRight()
- Up/Down forward() and backward()
- Button Action
- ------ -------
- 1 takePicture()
- 2 beep(.25, 523)
- 3 beep(.25, 587)
- 4 beep(.25, 659)
- 5 speak('Hello. My name is Scribby.')
- 6 speak('Ouch! I'm a sensitive
robot.') - 7 speak('I'm hungry.')
- 8 speak('Good bye, for now.') and
stop()
31Manual Control
- gtgtgt 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!
- gtgtgt init()
- Waking robot from sleep...
- Hello, I'm Scribby!
- gtgtgt senses()
- gtgtgt gamepad()
-
6
5
3
7
8
Forward
2
4
Left
Right
Back
1
32Lets get Personal!
- Name your robot
- gtgtgt setName(Fifi)
- gtgtgt setName(Robbie)
- gtgtgt setName(Toaster)
- gtgtgt setName(Bob)
33Challenges
- Is there Life on Mars?
- Build a Dancing Robot
- Build a Robo Cockroach
34Challenge 1Is 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?
35Its alive!
36Challenge 2Build a Dancing Robot
www.blogguelph.com
37Movement
- forward(speed, seconds)
- gtgtgt forward(1, 2.3)
- backward(speed, seconds)
- gtgtgt backward(.5, 4.6)
- turnLeft(speed, seconds)
- gtgtgt turnLeft(1, .3)
- turnRight(speed, seconds)
- gtgtgt turnRight(1, .6)
38Dancing
- gtgtgt forward(1, 1.4)
- gtgtgt turnLeft(1, .3)
39Dancing
- gtgtgt forward(1, 1.4)
- gtgtgt turnLeft(1, .3)
- gtgtgt forward(1, 1.4)
- gtgtgt turnLeft(1, .3)
40Square Dancing
- gtgtgt forward(1, 1.4)
- gtgtgt turnLeft(1, .3)
- gtgtgt forward(1, 1.4)
- gtgtgt turnLeft(1, .3)
- gtgtgt forward(1, 1.4)
- gtgtgt turnLeft(1, .3)
- gtgtgt forward(1, 1.4)
- gtgtgt turnLeft(1, .3)
41range()
- gtgtgt range(4)
- 0, 1, 2, 3
- gtgtgt for i in range(4)
- print Hi
- Hi!
- Hi!
- Hi!
- Hi!
42range()
- gtgtgt for i in range(4)
- forward(1, 1.4)
- turnLeft(1, .3)
43Making Noise
- beep(duration, freq1)
- gtgtgt beep(.5, 880)
- gtgtgt beep(.5, 440)
- beep(duration, freq1, freq2)
- gtgtgt beep(1, 440, 880)
44Making Noise
- speak(any string)
- gtgtgt speak(Hello world!)
- gtgtgt speak(Whats up, Doctor Jay?)
- getVoices()
- gtgtgt getVoices()
- setVoice(Name)
- gtgtgt setVoice(Fred)
45Making Noise
- playSong( makeSong(string))
- gtgtgt playSong(makeSong(a 1 c 1/8))
- gtgtgt playSong(makeSong(c4 1 d3 1 a5 1))
46Putting 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 -gt New Window
- Name it by selecting File -gt Save asfrom the
new window - Name it Dance.py
47Python
- Looks like English
- Indentation matters
- Interactive
- Easy to learn, but powerful
48Dance.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)
49Dance.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 -gt Run
Module from the new window menu
50Myro control
- wait(seconds)
- gtgtgt wait(.5)
- for seconds in timer(10) do something for
10 seconds - while timeRemaining(20)
- do something for 20 seconds
51Camera
- gtgtgt picture takePicture()
- gtgtgt show(picture)
- Click and drag in show window
- gtgtgt picture takePicture(blob)
- gtgtgt count, x, y getBlob()
- gtgtgt configureBlob(y1,y2,u1,u2,v1,v2)
52Robot Bling
- gtgtgt setLEDBack(1)
- gtgtgt setLEDBack(0)
53Challenge 3Build a Robo Cochroach
54Robot Sensors
55Senses
- getLight()- left, center, right
- getBright() - left, center, right
- getIR() - left, right
- getObstacle() - left, center, right
56Reading the Light Sensors
Light sensors
- getLight(left)
- getLight(center)
- getLight(right)
- getLight()
- 657, 1453, 1025
57Python functions
- def functionName(arg1, arg2value)
- print hello world!, arg1, arg2
- this is a comment
- functionName(1)
58Thank you for your time!
For more information see www.roboteducation.org