Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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