You are on page 1of 123

Introduction

"Hacking Your iRobot" gives you the complete step-by-step instructions for 13 different projects to modify your iRobot. Turn your Roomba into a printer, make your Roomba remote controlled and much more. All projects come from Instructables.com, are written by our creative community, and contain pictures for each step so you can easily make these yourself. Instructables is the most popular project-sharing community on the Internet. We provide easy publishing tools to enable passionate, creative people like you to share their most innovative projects, recipes, skills, and ideas. Instructables has over 40,000 projects covering all subjects, including crafts, art, electronics, kids, home improvement, pets, outdoors, reuse, bikes, cars, robotics, food, decorating, woodworking, costuming, games, and more. Check it out today! Laura Khalil Editor, Instructables.com

http://www.instructables.com/id/Hacking-Your-iRobot/

Table of Contents Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Author and Copyright Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The PrintBot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Intro: The PrintBot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Step 1: IRobot Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Step 2: Printer Disassembly and Motor Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 6 7 8 8 8 9

Step 3: The Print Head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Step 4: The Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Step 5: The PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Step 6: That's it . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Adaptive Mapping and Navigation with iRobot Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Intro: Adaptive Mapping and Navigation with iRobot Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Step 1: The Stampy Edge Detection Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Step 2: Wiring up the Scanning Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Step 3: Make A Power Distribution Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Step 4: Attach Servo to Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Step 5: Program Your Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Step 6: Adaptive Mapping and Wavefront Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Step 7: Conclusion, Extra Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Step 8: Optional: Wavefront Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Belvedere - A Butler Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Intro: Belvedere - A Butler Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Step 1: CONSTRUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Step 2: ELECTRONIC COMPONENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Step 3: NAVIGATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Step 4: SOFTWARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Step 5: VIDEO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Bluetooth your iRobot Roomba! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Intro: Bluetooth your iRobot Roomba! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Step 1: Connection Cable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Step 2: Attach Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 iRobot Create: WiFi Optimizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Intro: IRobot Create: WiFi Optimizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Step 1: Crack Open Your Wifi Detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Step 2: Solder the LEDs to the DB9 Connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 3: Solder the Jumper Wires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Step 4: Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Step 5: Making A Nicer Looking Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Step 6: Final: Video & Pics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Sparky Jr. - DIY Telepresence Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Intro: Sparky Jr. - DIY Telepresence Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Step 1: Here is a list of the basic hardware used to Build Sparky Jr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Step 2: Part 1a: Computer Hardware Set-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Step 3: Part 1b: Control Computer Set-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Step 4: Part 1c: Test Skype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Step 5: Part 1d: Battery Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Step 6: Part 2a: Joystick Controller Set-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Step 7: Part 2b: Install the Keyspan driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Step 8: Part 2c: Install the Joystick Control Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Step 9: Part 2d: Test the Control Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Step 10: Part 3: Structure and Outer Shell Intro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Step 11: Part 3a: Inner Shelf (part 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Step 12: Part 3a: Inner Shelf (part 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Step 13: Part 3a: Inner Shelf (part 3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Step 14: Part 3b: Outer Shell (part 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Step 15: Part 3b: Outer Shell (part 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Step 16: Part 3b: Outer Shell Monitor Mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Step 17: Part 3b: Outer Shell Speaker Mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Step 18: Part 3b: Outer Shell Assembly 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Step 19: Part 3b: Outer Shell Front Bumper Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Step 20: Part 3b: Outer Shell Final Bracket Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Step 21: Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 iRover: Remotely controlled iRobot Create (or Roomba) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Intro: IRover: Remotely controlled iRobot Create (or Roomba) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Step 1: Install the software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Step 2: Install laptop on Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Step 3: Connect remotely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 eyeRobot - The Robotic White Cane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Intro: EyeRobot - The Robotic White Cane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Step 1: Video Demonstration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Step 2: Operation overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Step 3: Range Sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 4: Cane position sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Step 5: Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Step 6: Code Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Step 7: Parts List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Step 8: Motivation and Improvement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Step 9: Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Step 10: Construction and Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 PosterBot: Make a Marker-Writing Robot out of an Old Inket printer and an iRobot Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Intro: PosterBot: Make a Marker-Writing Robot out of an Old Inket printer and an iRobot Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Step 1: Get the parts from the printer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Step 2: Making the control board and configuring the serial cables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Step 3: Make the marker lowerer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Step 4: Adding the carriage to the robot at large . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Step 5: Calibrating your robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Step 6: Creating and adding your own Bitmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Step 7: Share what you draw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 The SOMA Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Intro: The SOMA Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Step 1: Assembling The Team . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Step 2: Theory of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Step 3: Bill of Materials - Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Step 4: Bill of Materials - Mechanical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Step 5: The Circuit Boards - Intro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Step 6: The Circuit Boards: Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Step 7: The Circuit Boards: IR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Step 8: The Circuit Boards: Time-of-Flight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Step 9: The Circuit Boards: Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Step 10: The Circuit Boards: Localization Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Step 11: Taking Apart the iRobot Create (or... ReCreating the Create) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Step 12: Machining the Cones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Step 13: Cutting out the Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Step 14: Building the Layers - Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Step 15: Building the Layers - The Rest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Step 16: Connectors and Wiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 17: Programming the Boards - Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Step 18: Programming the Boards - Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 Step 19: Setting up the Swarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 Step 20: Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 OLPC Telepresence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 Intro: OLPC Telepresence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 Step 1: Connect the USB-to-serial Adapter and the Create Serial Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 Step 2: Optional: Power the OLPC from the Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105 Step 3: Attach the OLPC and Cables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107 Step 4: Install Telepresence Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 Step 5: Start the Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 How to make an autonomous basketball playing robot using an iRobot Create as a base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Intro: How to make an autonomous basketball playing robot using an iRobot Create as a base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Step 1: Aquire parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Step 2: Create the unique part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Step 3: Assembling the Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112 Step 4: Programming the robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113 Step 5: Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Step 6: Was it worth it? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 Step 7: Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 iRobot Virtual Wall Top Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 Intro: IRobot Virtual Wall Top Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 Step 1: Remove the top half . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 Step 2: Exploring Time! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 Step 3: Serious Business Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 Step 4: Dremel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 Step 5: Wiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 Step 6: Sweet, it worked. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122

http://www.instructables.com/id/Hacking-Your-iRobot/

Author and Copyright Notices


Instructable: The PrintBot Author: TeamEasyEnough License: Attribution-NonCommercial-ShareAlike (by-nc-sa) Instructable: Adaptive Mapping and Navigation with iRobot Create Author: societyofrobots License: Attribution-NonCommercial-ShareAlike (by-nc-sa) Instructable: Belvedere - A Butler Robot Author: wolffan License: Attribution-NonCommercial-ShareAlike (by-nc-sa) Instructable: Bluetooth your iRobot Roomba! Author: djsures License: Attribution-NonCommercial-ShareAlike (by-nc-sa) Instructable: IRobot Create: WiFi Optimizer Author: vector023 License: Attribution-NonCommercial (by-nc) Instructable: Sparky Jr. - DIY Telepresence Robot Author: sparkyrust License: Attribution-NonCommercial-NoDerivs (by-nc-nd) Instructable: IRover: Remotely controlled iRobot Create (or Roomba) Author: techgeek75 License: Attribution-NonCommercial-ShareAlike (by-nc-sa) Instructable: EyeRobot - The Robotic White Cane Author: shrimpy License: Attribution-NonCommercial-ShareAlike (by-nc-sa) Instructable: PosterBot: Make a Marker-Writing Robot out of an Old Inket printer and an iRobot Create Author: W_world License: Attribution-NonCommercial-ShareAlike (by-nc-sa) Instructable: The SOMA Project Author: thesomaproject License: Attribution-NonCommercial-ShareAlike (by-nc-sa) Instructable: OLPC Telepresence Author: damonkohler License: Attribution-NonCommercial-ShareAlike (by-nc-sa) Instructable: How to make an autonomous basketball playing robot using an iRobot Create as a base Author: Matthew Oelke License: Attribution-NonCommercial-ShareAlike (by-nc-sa) Instructable: IRobot Virtual Wall Top Button Author: jkster107 License: Public Domain (pd)

http://www.instructables.com/id/Hacking-Your-iRobot/

Disclaimer
All do-it-yourself activities involve risk, and your safety is your own responsibility, including proper use of equipment and safety gear, and determining whether you have adequate skill and experience. Some of the resources used for these projects are dangerous unless used properly and with adequate precautions, including safety gear. Some illustrative photos do not depict safety precautions or equipment, in order to show the project steps more clearly. The projects are not intended for use by children. Many projects on Instructables are user-submitted, and appearance of a project in this format does not indicate it has been checked for safety or functionality. Use of the instructions and suggestions is at your own risk. Instructables, Inc. disclaims all responsibility for any resulting damage, injury, or expense. It is your responsibility to make sure that your activities comply with all applicable laws.

http://www.instructables.com/id/Hacking-Your-iRobot/

The PrintBot
by TeamEasyEnough on December 21, 2007

Intro: The PrintBot


The PrintBot is a iRobot Create-mounted dot-matrix printer. The PrintBot prints using Talcum powder on any ground surface. Using the robot for the base allows the robot to print a virtually unlimited size. Think football feilds or basketball courts. Maybe the rivals should be on the lookout for a swarm of these thanksgiving weekend next year. the robot also allows the printer mobility, allowing it to travel to a location to print, then move on to another. Wireless is included, so remote control is also possible. Sidewalk art and advertising is also a target-market for this device.

Image Notes 1. Remains of old ink-jet printer. 2. Print head: Funnel, drill bit and DC motor. 3. iRobot Create 4. extra eBoxes acting as counterweight. Many cheaper items would work just as well here. 5. eBox 2300 x86 PC

Image Notes 1. Horizontal motion drive motor. 2. Double-funnel assembly. 3. Drill DC motor. 4. IR white/black sensor. 5. B/W linear encoder strip.

Step 1: IRobot Create


The iRobot Create is very similar to iRobot's Roomba, but without the internal vacuum. This allows us to add a greater payload and gives us convenient mounting holes. iRobot also provides a complete programming interface to the Create that makes controlling the robot very simple. The interface is a simple set of commands and parameters sent to the robot serially. Read the Open Interface specifications for more info. For our simple use we only required a few commands. Upon initialization the 128 command must be sent to tell the robot to start accepting external control. Next a mode must be selected. For full control we send the 132 command to the Create. Note you must send all data to the Create as integers, not regular ascii text. Each command opcode is one byte, the value of that byte is the integer value 128 or whatever. If you were to transmit in ascii or ansi text, each character in 128 would be a byte. For testing or control via PC we recommend Realterm as it makes everything very simiple. You will also need to set the Baud rate to 57600 as stated in the Open Interface documentation. Now that the Create is initialized, we use the 137 command to drive the robot forward. Wait Distance, 156 is used to stop the robot after a specified distance. The script commands 152 and 153 put everything together and make a simple script which can be run over and over. iRobot sells what they call the Command Module which is basically a programmable micro controller and a few serial ports which you may use to control your Create. Instead we used a Cypress Programmable System-on-a-Chip (PSoC) combined with a very small x86 PC called the eBox 2300. The robot has an 18V battery which we will use to power all our peripherals.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 2: Printer Disassembly and Motor Control


We used an old Epson ink-jet printer for the horizontal motion of the printer and the print head mount assembly. First thing to do here was to carefully disassemble the printer. This required removing all non-essential components until all that was left was the track assembly, the motor, the print head holder and the drive belt. Be careful not to break this belt or its driving motor. It may also be cleaver to poke around with a volt-meter before you tear out all the power boards, but we were a little too excited for that. Note you don't need any of the page feed assembly, the actual print heads or cartridges, or any circuit boards. After everything is disassembled, we must figure out how to drive this motor. Since we tore everything apart before testing anything, we needed to find the proper voltage to supply the motor. You can try to find the motor's specs online if you can find a model number, but lacking that, hook it up to a DC power supply and slowly increase the voltage to the motor. We were lucky and found our motor could run on 12-42V, but to be sure we tested it manually as described. We quickly discovered even at 12V the motor will be running way too fast. The solution here is to use Pulse-Width-Modulation (PWM). Basically this turns the motor on and off very quickly to spin the motor at a slower speed. Our battery supplies 18V so to make life easy we will run the motor off the same. When using DC motors that must reverse in circuits you will experience a large backcurrent in your circuit when reversing the motor. Essentially your motor acts as a generator while it is stopping and reversing. To protect your controller from this you can use what is called an H-Bridge. This is essentially 4-transistors arragnged in an H-shape. We used a product from Acroname. Make sure the driver you choose can handle the current needed for your motor. Our motor was rated for 1A continuous, so the 3A controller was plenty of head room. This board also allows us to control the direction of the motor simply by driving an input high or low as well as brakeing (stopping the motor and holding it in position) the motor in the same way.

Image Notes 1. IR B/W sensor. 2. Drill bit motor. 3. Powder-dispensing funnel. 4. Horizontal Drive motor. 5. Linear encoder strip.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. 18V input 2. 18V output 3. Brake, PWM and Direction pins.

Step 3: The Print Head


As much of the original print head assembly that could be was removed. We were left with a plastic box which made it easy to attach our print head. A small 5V DC motor was attached with a drill bit. The bit was chosen to have as close to the same diameter as a funnel as possible. This will allow the drill to fill the entire outlet of the funnel. When the bit spins, powder enters the grooves and rotates down the bit towards the exit. By rotating the bit one rotation we could create a constantly sized pixel. Careful tuning will be required to make everything fit just right. Initially we had problems with the powder simply spraying all over the place, but by adding a second funnel and raising the drill bit, the longer fall while constrained to the funnel made a clean pixel. Since this motor must only be controlled on or off, a H-bridge was not necessary here. Instead we used a simple transistor in series with the ground connection of the motor. The gate of the transistor was controlled by a digital output from our micro controller the same as the digital inputs the H-bridge. The small PCB next to the DC motor is a infrared black and white sensor. This board simply outputs a digital high or low signal when the sensor sees black or white respectively. Combined with the black and white encoder strip allows us to know the position of the print head at all times by counting black to white transitions.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Hex standoff sized to fit drive shaft of motor, and drilled out to fit glued in drill bit.

Step 4: The Microcontroller


The Cypress PSoC integrates all the seperate peices of hardware. A Cypress development board provided an easy interface for working with the PSoC and connecting peripherals. The PSoC is a programmable chip so we can actually create physical hardware in the chip like an FPGA. Cypress PSoC Designer has pre-made modules for common components such as PWM generators, digital inputs and outputs, and serial RS-232 com ports. The development board also has a integrated proto-board which allowed easy mounting of our motor controllers. The code on the PSoC brings everything together. It waits to receive a serial command. This is formatted as a single line of 0 and 1s that indicate to print or not for each pixel. The code then loops through each pixel, starting the drive motor. A edge-sensitive interrupt on the input from the black/white sensor triggers an evaluation of weather or not to print at each pixel. If a pixel is on, the brake output is driven high a timer is started. An interrupt on the timer waits for .5 seconds then drives the dispenser output high, causing the transistor to turn on and the drill bit to spin, the timer counter is reset. After another half second, an interrupt triggers the motor to stop and the drive motor to move again. When the condition to print is false, simply nothing happens until the encoder reads another black to white edge. This allows the head to move smoothly until it needs to stop to print. When the end of a line is reached ("\r\n") a "\n" is sent on the serial port to indicate to the PC it is ready for a new line. The direction control on the H-bridge is also reversed. The Create is sent the signal to move forward 5mm. This is done via another digital output connected to a digital input on the Create's DSub25 connector. Both devices use standard 5V TTL logic, so a full serial interface is unnecessary.

Image Notes 1. MOSFET transistor. 2. RS232 Serial port. 3. Cypress PSoC 4. Digital inputs and Outputs. 5. protoboard for attaching motor drivers. 6. Connectors to B/W sensor and Drill motor.

Step 5: The PC
To create a fully independent device, a small x86 PC was used called the eBox 2300. For maximum flexibility a custom build of Windows CE Embedded was installed on the eBox. An application was developed in C to read an 8-bit gray-scale bitmap from a USB drive. The application then re-sampled the image and then output it one line at a time to the PSoC via serial com port. Using the eBox could allow many further developments. A web server could allow images to be uploaded remotely via integrated wireless. Remote control could be implemented, among many other things. Futher image processing, possibly even a proper print driver could be created to allow the device to print from applications such as notepad. One last thing we almost missed was power. The Create supplies 18V. But most of our devices run on 5V. A Texas Instruments DC-DC power supply was used to actively convert the voltage without wasting the power to heat, thus prolonging battery life. We were able to realize over an hour of printing time. A custom circuit board made the mounting of this device and required resistors and capacitors easy.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Texas Instruments variable DC-DC power supply. 2. 5V output. 3. 18V output 4. Space for chip to implement RS232 serial com port. 5. Connects to 25pin DSub in Create's cargo bay.

Step 6: That's it
Well that is it for our PrintBot created fall 07 for Dr. Hamblen's ECE 4180 Embedded Design class at Georgia Tech. Here's some images we printed with our robot. We hope you like our project and maybe it will inspire further exploration! Big thanks to the PosterBot and all the other iRobot Create Instructables for their inspiration and guidance.

Image Notes 1. Go Buzz!

http://www.instructables.com/id/Hacking-Your-iRobot/

Related Instructables

Voice Controlled How to enter the iRobot Create iRobot Create by phroseph Challenge by jeffreyf

iRover: Remotely controlled iRobot Create (or Roomba) by techgeek75

iRobot Create iRobot Create: Death Machine WiFi Optimizer by by vector023 Weissensteinburg

Sparky Jr. - DIY Telepresence Robot by sparkyrust

Control your iRobot Create with a Palm Pilot by Hungry_Myst

Adaptive Mapping and Navigation with iRobot Create by societyofrobots

http://www.instructables.com/id/Hacking-Your-iRobot/

Adaptive Mapping and Navigation with iRobot Create


by societyofrobots on May 23, 2007

Intro: Adaptive Mapping and Navigation with iRobot Create


This tutorial will demonstrate how to do mapping and navigation with the iRobot Create for under $30! And better yet, its designed to be an easy add-on to your already existing robot (butler robot, anyone?). Why is mapping useful? Have you ever wanted your robot to navigate through your house, by starting in one room and going in to the next, despite unplanned objects in the way? Ever wanted your robot to go to the fridge, navigate around pizza boxes, and then go straight to you before the beer gets hot? This tutorial has two parts. The first part demonstrates how the Create can track and follow objects (specifically, a can of beer) using a single Sharp IR. Video in step 5. The second part demonstrates mapping, and how it can update its map when objects get in the way. Its not just reactive wandering, but planned navigation useful for any house based robot. Video in step 6. Plans and source code to add to your robot will follow. So what do you need? Sharp IR $14.50 http://www.acroname.com/robotics/parts/R48-IR12.html Hitec HS-311 Servo $8.99 http://www.servocity.com/html/hs-311_standard.html Grid-Style PC Board with 356 Holes $1.79 http://www.radioshack.com/product/index.jsp?productId=2102844&cp 36 position breakaway male header $1.63 http://www.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=WM6436-ND Stuff you probably have: wiring solder with soldering iron double sided sticky tape two screws with two matching nuts screwdriver or allen wrench holepuncher or hand drill (local hardware store or Radioshack) Optional: Dremel to cut down the PC Board Final Design (simplicity at its best):

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 1: The Stampy Edge Detection Algorithm


To start off my robots' adventures, I needed to implement a basic highly reactive algorithm to test out my proto-code and sensor setup. To get my Create to perform some complex tasks without requiring huge amounts of memory or processing power, I decided to implement my Stampy Edge Detection algorithm using a scanning Sharp IR rangefinder. The concept is simple. A scanning Sharp IR rangefinder does only two things: If no object is seen, the scanner turns right. If an object is seen, the scanner turns left. The image of a googley-eyed robot shows the scanner converging on the edge. The robot will then drive towards the detected edge of any object. This step is to build the scanner. Here is video instruction on how:

Required parts are shown below. Now that you have the scanner built, lets wire it up . . .

Image Notes 1. Sharp IR Rangefinder 2. 2 screws and 2 nuts 3. Allen wrench (you can also use a screwdriver) 4. Sheet of copper drilled, cut, then bent

Step 2: Wiring up the Scanning Sensor


Now get some wiring to attach the servo and Sharp IR to the Create robot serial port. Going through my box of scrap wire, I found this. Its just basic serial wiring with attached male and female headers. There are a dozen other ways you can do this. Then just plug it in to the middle serial port as shown. I included an image from the Create manual showing you the pinouts of the port. Basically just attach wires to the top four left pins of the middle serial port connector as shown:

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. ground 2. power 3. servo digital output 4. Sharp IR analog input 5. center serial port

Step 3: Make A Power Distribution Board


Now you need to send power to the servo and Sharp IR. The best way to do this is to make a power bus - something that connects all grounds together, all power together, and a pin for each signal wire. The servo and the Sharp IR each have one signal wire. To make a power bus, I got a piece of PC breadboard and male headers as shown. Then I used a dremel to cut off a small square peice of it, and soldered on the broken down headers with the proper power distribution wiring. What does that mean? Connect all the grounds (black) to each other, and connect all the power lines (red) to each other. Each signal line (yellow) gets its own serial cable wire. Then I plugged in everything to the power bus as so. Refer to the pinout in the previous step to make sure where everything plugs in to.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. serial cable to serial port 2. servo cable 3. Sharp IR cable

Image Notes 1. PC Board 2. male header

Image Notes 1. bottom of power bus 2. top of power bus

Step 4: Attach Servo to Create


The last hardware step is to attach the servo. You need to have the Sharp IR sensor centrally located, such as that large empty space in the center (its a no-brainer). I didn't want to drill holes or make a special mount (too much unnecessary effort), so I decided to use extra strength double sided sticky tape (see below image). My only concern about this tape was that I may have difficulties removing the servo in the future . . . (its not a ghetto mount, this stuff really holds).

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 5: Program Your Create


Now you need to simply upload my supplied sourcecode to the Create. There are many ways to program your Create. iRobot recommends you using WinAVR (22.8mb) as do I. Install that program. But I perfer to program using the IDE called AVR Studio, version 4.13, build 528 (73.8mb). An optional install. I wont go into detail in programming the Create because the manual tells you how. But if you are still curious how I did it, here is my write-up on how to program an AVR. I used AVR Dude (that came with WinAVR) to program the Create. To do this, just open up a command window and do stuff like shown in the below image. The command is: avrdude -p atmega168 -P com9 -c stk500 -U flash:w:iRobot.hex Again, its all in the Create manuals. Here is my source code for download: iRobot Create Sharp IR Stampy Edge Finder source code (August 11th, 2007) After uploading the program, just turn on your robot, push the black button, and off to attacking cute kittens it goes! Enjoy the beer-seeking robot video:

Could this not be any more entertaining? Probably the first robot capable of seeking out beer . . . Remember, beer is bad for both you and your robot!

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 6: Adaptive Mapping and Wavefront Algorithm


Now for the mapping you've been waiting for. We are going to do something much more advanced called the Wavefront algorithm. Upload this code to your Create: iRobot_Create_wave_front.zip September 9th, 2007 The wavefront basically discretizes the surroundings and records locations of objects. The attached image of my kitchen is a good visualization of it. In the source code look for a matrix called 'map'. Using the map, redefine the goal location, robot location, and object locations as you like. Dont worry too much about the objects however, the robot will scan and update the map for you. Enjoy the unedited final video!

Yes, I realize I have a lot of cereal boxes . . . I have more actually . . . I like cereal =) Now what if you want to add this algorithm to YOUR robot as an addition? Simple, add this line in your code: #include "wave_front.c"//put this at the top And then put this in your main() code: direction_to_move = propagate_wavefront(robot_x,robot_y,goal_x,goal_y); //input location of robot and desired goal Just tell it where your robot is, and it will tell your robot where to move (1=north, 3=south, 2=east, or 4=west). Dont forget to define start and goal location in the wave_front.c file! To update the map, just call the function find_walls(); and it will automatically do all the hard work for you. With only slight modification, the highly commented code is designed to work on any robot chassis with any sensor, not just the Create! In the map, by default the robot starts at the bottom and the goal is at the top (as in the video).

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 7: Conclusion, Extra Info


My goal of this project was not to make something amazingly cool, but instead something extremely cheap, easy, and useful to add to someone elses robot - basically a feature that enhances (or is required) for any other robot. This meant under $30, minimal hardware construction, and source code that does not require understanding to make use of it. It doesnt even matter what sensors you use, so if you have say sonar on your delivery/butler robot, now your robot can remember where its been and figure out where its going! Remember, this isnt pure reactive mapping: it knows where it is it knows where it has been it knows where it is going it knows the locations of moving obstacles it optimizes for minimal travel distance AND it cannot be tricked! Its adaptive! Note: The algorithm had to be extremely robust to cluttered home environments (any random obstacle can be detected). My algorithm is capable of having the robot wander 5x faster, but I decided to keep it slow because the Create's encoders have high error rates. The encoders are driven by a flexible rubber belt, so useless . . . haha . . . And remember, the most useful feature is that the map updates. No need to reprogram your robot if you rearrange furniture! Note: Below is an example of the wavefront algorithm, with the robot R counting down to the goal G. Theory is out of scope of an instructable, but if you want to understand more, please check out my tutorial on the Wave Front. Note: The goal location can be easily changed for your robot - for example if you say 'get me a beer' to your butler robot, all it would need to do is look up the location of the beer in its memory and it will automatically plan that path for you. Note: The demo map is only 6 x 6 squares, with each square the size of the robot. The algorithm can be easily be modified to accomodate much larger maps (such as below), as the current map takes a fraction of a second to calculate.

Step 8: Optional: Wavefront Simulation


This step is entirely optional, just noted to help you out with planning your own maps. So here goes on robot simulation . . . It can be quite time consuming to test out robot navigation algorithms on the actual robot. It takes forever to tweak the program, compile, upload to robot, set up robot, turn it on, watch it run, then figure out why it failed . . . the list goes on. Instead, it is much easier to do this debugging with simulation. You write the program, compile, then run it locally. You get an instant output of results to view. The disadvantage to simulation is that its really hard to simulate the environment as well as get the robot physics perfect, but for most applications simulation is best to work out all the big bugs in your algorithm. This is a simulation I did showing a robot doing a wavefront, moving to the next location, then doing another wavefront update. For a robot (R) moving through terrain with moving objects (W), the robot must recalculate the wavefront after each move towards the goal (G). I didnt implement the adaptive mapping in simulation, just the wavefront and robot movement. If you want to see the entire simulation, check out the simulation results.txt. You can also download a copy of my wave front simulation software and source. I compiled the software using Bloodshed Dev-C++. If you want, you may also try a

http://www.instructables.com/id/Hacking-Your-iRobot/

different C language compiler. This is an example of the simulated output:

Image Notes 1. A printed out map, showing locations of obstacles, the goal, the robot, and the planned out path.

Related Instructables

The SOMA Project by thesomaproject

Belvedere - A Butler Robot by wolffan

iRobot Create Personal Home Robot by dttworld

Build an autonomous Wall-E Robot by djsures

Wobbly, a Mini Biped robot (Photos) by RoBot-X

Big Egg + Arduino +IR sensor = EasterEgguino by duboisvb

Super Simple Beginners Robot! by BIGBUG

Playful Puppy Robot by OddBot

http://www.instructables.com/id/Hacking-Your-iRobot/

http://www.instructables.com/id/Hacking-Your-iRobot/

Belvedere - A Butler Robot


by wolffan on June 6, 2010

Intro: Belvedere - A Butler Robot


Belvedere is a robot I designed and built to serve appetizers at parties and entertain with jokes and dancing. He has the ability to navigate the first floor of our house while avoiding obstacles. Belvedere's first job assignment was entertaining guests at our son's first birthday! His main body sits on an iRobot Create, which he uses as a drive system. Here is a list of his main features: - Navigates to one of four different rooms by turning a knob on his back - Avoids obstacles using non-contact sensors (ultrasonic and infrared) - Uses his British voice to offer food, make comments, and tell jokes - His flat head is perfect for a plate of appetizers or a cooler of drinks - He will play music and dance on command with a push of a button - LEDs on his front light up in various patterns to show he is active - Spinning bowtie! This project was inspired by many other robot projects. In particular, JoeCreate's Serverbot instructable (LINK) gave me many great ideas and Belvedere wouldn't be a reality without his impressive work and documentation. Continue reading for details of Belvedere's construction, code samples, photos, and videos! Detailed photos can also be found at this picasa album

Image Notes 1. Spinning bowtie 2. speaker for voice and music 3. Joke button 4. 1 of 3 Ultrasonic sensors for obstacle avoidance 5. 1 of 3 Ultrasonic sensors for obstacle avoidance

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Destination knob 2. Movement switch 3. navigation mode 4. use compass or encoders for rotation guidance?

Image Notes 1. looks like a mess, but it is very organized (I promise).

Step 1: CONSTRUCTION
Belvedere's main body is mounted to an iRobot Create which he uses as a drive system. The main body is made from a concrete form tube used in construction. I borrowed this idea from JoeCreate's Serverbot instructable (LINK). The various circuit boards are mounted on a plexiglass table mounted firmly to the iRobot Create. The main body is also mounted firmly to the plexiglass table. Belvedere's flat head is made from a round piece of plexiglass lined with a non-skid mat. In order to make Belvedere more stable, I mounted an extra swivel caster on the opposite side of the caster included with the iRobot Create. This additional caster is shown in the pictures below. Detailed photos can also be found at this picasa album

Image Notes 1. buttons I added to communicate with the Arduino MEGA microcontroller 2. USB connection for the Arduino MEGA microcontroller

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. iRobot Create 2. LCD for message display and debugging 3. Buttons for commanding Belvedere to tell jokes and dance 4. LED light array 5. spinning bowtie 6. ultrasonic distance sensor 7. ultrasonic distance sensor 8. ultrasonic distance sensor 9. speaker for voice and music

Image Notes 1. LCD for message display and debugging

Image Notes 1. swivel caster that I added to the iRobot Create

Image Notes 1. custom amplifier board using the LM386 IC 2. hobby servo for bowtie 3. custom distribution board for signals and power

Image Notes 1. This is the plexiglass table used as a mounting platform to the iRobot Create

Step 2: ELECTRONIC COMPONENTS


Here is a list of electronic components used to create Belvedere: - iRobot Create platform - Arduino MEGA microcontroller (the brains of the operation) - Sparkfun 16x2 LCD for message display and debugging - Adafruit WaveShield used to store and produce voice and music clips - HMC6352 compass module from Sparkfun - Custom LM386 amplifier board to produce voice and music clips through speaker - 3 X Maxbotix Maxsonar EZ1 Ultrasonic Ranging Sensors - 2 X Sharp GP2D12 Analog Distance Sensors - 3 inch speaker - Hobby servo for spinning the bowtie - Many voltage regulators, switches, buttons, etc - A few custom boards for power and signal distribution Pictures of the components are below. Detailed photos can also be found at this picasa album

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. arduino Mega microcontroller with a custom board mounted above it for connections. 2. Adafruit WaveShield with SD card for storing and playing voice and music files. 3. HM6352 compass module 4. LCD display 5. Sharp IR distance sensor 6. Sharp IR distance sensor 7. battery pack for Sharp IR sensors only. They created too much noise for the audio system, so they had to be on their own power source.

Image Notes 1. HM6352 compass module 2. Adafruit WaveShield 3. Arduino MEGA microcontroller with custom board mounted above it for connections.

Image Notes 1. custom amplifier board using the LM386 IC 2. hobby servo for bowtie 3. custom distribution board for signals and power

Image Notes 1. custom distribution board for signals and power 2. rotary switch for choosing Belvedere's destination

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 3: NAVIGATION
Belvedere can run in two different modes, NAVIGATE and ROAM. In NAVIGATE mode, Belvedere keeps track of his location on a large grid of the house. To plan his move to the next destination, he uses a WAVEFRONT algorithm. I got the idea to use a wavefront algorithm from the Society of Robot's website (LINK). In order to use this mode, the floor and permanent obstacles (walls, couches, etc) must be pre-mapped into a large matrix. Also, Belvedere must be started in the same location and orientation when he is turned on, otherwise he wouldn't have a reference. In ROAM mode, Belvedere, will not keep track of his location in the house. He will move a few feet forward, pause for a while, turn randomly, and continue forward. OBSTACLE AVOIDANCE In NAVIGATE mode, Belvedere will constantly monitor his three ultrasonic ranging sensors when he moves forward. If an obstacle is detected closer than a certain threshold, he will begin to slow down gradually. If an obstacle is within 1 foot, he will stop and speak a warning. The Sharp IR sensors are used to veer Belvedere away from walls without slowing him down. In ROAM mode, if Belvedere detects an obstacle while moving forward, he will stop, rotate a random angle, and continue forward in a different direction.

Step 4: SOFTWARE
Belvedere's "brain" is the Arduino MEGA microcontroller. It has an incredible amount of inputs/outputs and memory for such a low-cost controller. For more details on the Arduino MEGA and other Arduino boards, follow this LINK. Belvedere uses almost all of the 54 digital pins on the Arduino MEGA. Details of Belvedere's pinouts can be found at this Google Document. CONNECT ARDUINO MEGA TO iROBOT CREATE Most people that add a microcontroller to the iRobot Create use the iRobot Create Command Module. iRobot engineers supply example code with the Command Module so that it can communicate with the Create over the serial connection. I needed many more inputs/outputs and more memory than the Command Module could offer, so I decided to connect the Arduino MEGA to the Create. I wired the serial communication pins between the two and converted the Command Module code to Arduino code (very similar since they are both written in C). The main change I made to iRobot's example code was that I didn't want to use the same timers to control sensor updates. VOICE AND MUSIC Belvedere's audio clips are pre-recorded and stored on an SD card. The Arduino can access any one of the clips as needed. Belvedere has at least 50 different audio clips that are in different categories (offer food, move obstacle, joke, comment, music). Belvedere's voice was generated by the text-to-speak software at AT&T's Natural Voices website: http://www2.research.att.com/~ttsweb/tts/demo.php#top You can choose gender and various accents. This website was convenient because I could directly export the file to .wav format. SOURCE CODE I have attached the Arduino source code below. It is three files zipped together. Two of the files are header files that support the main .pde file.

File Downloads

Belvedere4.zip (12 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Belvedere4.zip']

Step 5: VIDEO
An HD video of Belvedere in action can be seen at youtube at this LINK. Detailed photos can also be found at this picasa album

http://www.instructables.com/id/Hacking-Your-iRobot/

Related Instructables

Bluetooth your iRobot Roomba! How to enter the by djsures iRobot Create Challenge by jeffreyf

Web-controlled Twittering Roomba by matchlighter

eyeRobot - The Robotic White Cane by shrimpy

Voice Controlled iRobot Create by phroseph

iRover: Remotely controlled iRobot Create (or Roomba) by techgeek75

Control your iRobot Create with a Palm Pilot by Hungry_Myst

How to Clean the Front Wheel of a Roomba Discovery by ewilhelm

http://www.instructables.com/id/Hacking-Your-iRobot/

Bluetooth your iRobot Roomba!


by djsures on March 20, 2011

Author:djsures

http://www.dj-sures.com I build robots to encourage others to do the same. I believe the future is in robotics and playing a part for the future is my passion. Check out my website to see what else I'm up too. :)

Intro: Bluetooth your iRobot Roomba!


Group 18+. The iRobot Roomba is a great platform for robotics. The Roomba has a serial interface that accepts commands for controlling and diagnostics. The EZ-B has hardware support for the Roomba, and the EZ-Builder software has controls for the Roomba also. In this instructable, I'm going to walk you through how to remote control your roomba from the computer over a bluetooth connection. Also, you may add sensors or a camera to the roomba to turn it into an even smarter autonomous robot. In this instructable, I attach a wireless camera to the roomba. This allows the roomba to follow colors (Red, green, or blue) or motion. Watch this video before following the next steps.

Tools Soldering Iron Wire Cutters Hot Glue Gun Zip Tie Parts 1 x iRobot Roomba 1 x EZ-B Bluetooth Robot Controller http://www.ez-robot.com/Shop/View.aspx?id=1 1 x Wireless Webcam http://shop.ebay.com/i.html?_nkw=2.4GHz+GFSK+RF+Mini+Wireless+PC+Webcam+Camera+Receiver+&_trksid=p5197.c0.m627 1 x PS/2 Mouse or Keyboard for cable 1 x Three wire servo cable 1 x Standard Servo

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 1: Connection Cable


The iRobot Roomba uses a minidin connector. The specific model that the roomba uses is a little difficult to find. So a great work-around is to use a regular PS/2 mouse or keyboard connector. The little tab on the inside of the plug will need to be removed first. Only two wires are required to connect to the roomba from the EZ-B for minimal use. The two wire configuration will only transmit, not receive. But for most uses and in this example, it is the easiest. 1. Take the PS2 connector apart 2. Connect the two wires to the PS2 connector according to the attached image 3. Reassemble the PS2 connector

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 2: Attach Camera


I used a standard servo to allow the camera to move. The servo and the camera are held together by a Hot Glue Gun and some Zip Ties. The camera will allow you to configure EZ-Builder to guide the Roomba with colors. Your roomba can chase a ball, or follow motion. If you use the EZ-SDK, you can even write a program to have your roomba detect motion and email your cell phone like a security droid. The EZ-Builder has snapshot ability on a schedule, which will also work for security use. Watch the video on the intro page of this instructable. It will demonstrate in further detail how the roomba is controlled by the EZ-Builder software. Also watching the work being done in by someone will help you out :)

http://www.instructables.com/id/Hacking-Your-iRobot/

Related Instructables

Make a scary scarab robot by djsures

iRover: Remotely controlled iRobot Create (or Roomba) by techgeek75

DIY Mod an Omnibot 80's Robot with Voice, Camera, Servos, Bluetooth by djsures

Web-controlled Twittering Roomba by matchlighter

Retro 80's Master Blaster Robot by djsures

Whiteboard Erasing Robot by 12grahamb

K-9 The Autonomous Robot Pet (Photos) by djsures

Ard-e: The robot with an Arduino as a brain by imadami

http://www.instructables.com/id/Hacking-Your-iRobot/

iRobot Create: WiFi Optimizer


by vector023 on July 30, 2007

Intro: IRobot Create: WiFi Optimizer


Gather round and follow this here Instructable to transform your iRobot Create into your very own personal WiFi scanner and optimizer! What the iRobot Create will do is find the best WiFi signal in a given area or room based on discrete sample relative to the iRobot's starting position. Here's what you need for this project: One (1) iRobotCreate Three (3) DB9/D-Sub Male Connectors (9 Pin) - You can pick these up at Radio Shack Wire One (1) WiFi Signal Detector from IO Gear - Here @ Radio Shack ~The one used in this project has five LEDs, four green displaying signal strength when signal is available, and one red when no signal is found Tools needed: Soldering Iron Flux/Soldering Paste Computer What it does: Takes in WiFi data from four spots, North (up), West (left), South (down), and East (right). Analyzes data, moves towards best wireless direction. Continues to get WiFi data and move towards the best direction. When the data is found, beeps are transmitted for the signal strength. That is, 1 beep for 1 bar strength, 2 beeps for 2 bars, etc. The beeps also move up octaves for each level of signal. The iRobot will continue its algorithm to infinity, and is based around the gradient descent algorithm.
Please "+" this if you like it!

#Featured on Make:Blog! & BitShift

Image Notes 1. Top LED to Pin 1 (Left DB9 connector). 2. Second highest LED to Pin 2 (Left DB9 connector). 3. Middle LED to Pin 1 (Center DB9 connector). 4. Second lowest LED to Pin 2 (Center DB9 connector).

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Off road WiFi trekking!

Image Notes 1. 4 green LEDs when signal is available. 2. One red LED when there is no signal. 3. Ideal for Road Warriors... heh..

Image Notes 1. You can use the hood if you want a really clean looking job. 2. You need three of these.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 1: Crack Open Your Wifi Detector


"If you can't open it, you don't own it." is one of my favorite Make phrases. Take off the back battery panel and then grab a small flathead screwdriver to pry it open. There are clips holding the gadget together at the two ends of the long sides (see pic). Be careful not to scratch or hit the circuit board when opening.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Close...

Image Notes 1. Almost there...

Image Notes 1. Owned!

Step 2: Solder the LEDs to the DB9 Connectors


In this step, we will being soldering the LED voltages to DB-9 connectors. The DB-9 connectors will interface with the iRobot Command Module to provide input data to the WiFi detector program. Also, the powering voltage will be soldered to its own DB-9 connector. This will allow the WiFi detector itself to be turned on and off. To begin, secure the WiFi detector's circuit board in something like the "Helping Hands" set. Then, solder one end of a DIFFERENT color wire to each of the LEDs. We will be soldering to the end of the LED that is NOT connected to the common voltage supply. (See picture) Left DB9 Connector The topmost LED (the one soldered sideways instead of up) connects to Pin 1 of the DB9 connector. The next one down connects to Pin 2 of the DB9 connector. A wire is also soldered onto Pin 5 of this DB9 connector, to be connected to Pin 5 on the center DB9 connector. Center DB9 Connector The middle LED is soldered onto Pin 1 of the DB9 connector, and the one below it connects to the second Pin of the DB9. The wire from Pin 5 on the left DB9 connector is soldered onto Pin 5 of this DB9. Right DB9 Connector A wire is soldered from Pin 4 on the DB9 to the positive end on the WiFi detector. Another wire connects from Pin 9 to the negative end on the WiFi detector.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Ground plane wire used in early testing, disregard.

Image Notes 1. Fluxin' up the LEDs!

Image Notes 1. Testing.... (Not final soldering points)

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Pin 1. 2. Pin 5. 3. Pin 6. 4. Pin 9.

Image Notes 1. Black Wire: From Pin 5 left DB9 connector to Pin 5 center DB9 connector. 2. Yellow Wire: From Second Highest LED to Pin 2. 3. Purple Wire: From Top LED to Pin 1. 4. Left DB9 Connector.

Image Notes 1. Black Wire: Pin 5. 2. Blue Wire: From second lowest LED to Pin 2. 3. Teal Wire: From middle LED to Pin 1. 4. Center DB9 Connector.

Image Notes 1. Orange Wire: Pin 4. 2. Black Wire: Pin 9. 3. Right DB9 Connector.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Top LED to Pin 1 (Left DB9 connector). 2. Second highest LED to Pin 2 (Left DB9 connector). 3. Middle LED to Pin 1 (Center DB9 connector). 4. Second lowest LED to Pin 2 (Center DB9 connector).

Image Notes 1. Positive to Pin 4 (Right DB9 connector). 2. Negative to Pin 9 (Right DB9 connector).

Image Notes 1. The carnage after much testing. 2. Fried WiFi detector: RIP.

Step 3: Solder the Jumper Wires


Now, we want the WiFi detector to run just whenever we send power to it. Therefore, we have to bypass the switch on the detector. Using the multimeter's continuity test (the one with the beep!), it was found that the pins going left to right needed to be soldered together in order to bypass the switch. We got some shielded wire (don't want to mess up the other components by accident!) and soldered onto the pins. See the picture if you're having trouble understanding.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. This pin and the one below. 2. This pin and the one above. 3. This pin and the one above. 4. This pin and the one below. 5. LEDs down here. 6. Top of the detector. 7. Bottom of the detector. Image Notes 1. Good! 2. Testing pins...

Step 4: Coding
The iRobot must be coded to accept and utilize the input given from the wifi detector. Since we specified which LED goes to which pin of the DB-9 in the last step, it won't be too difficult to read the data. Download these files and open "Programmer's Notepad ". Go to "File -> New -> Project" and name it what you wish (search in our case). Then, right click search in the left column and hit "Add Files". Then, find where you saved the attached files "search.c", "makefile", and "oi.h". Go to "Tools -> Make All". This compiles the code so the robot can read it. After it completes (look at the output bar on the bottom of the screen), plug in your iRobot Create and turn the Command Module on. Go to "Tools -> Program". This programs the on board microchip in the module. After this finishes, unplug, turn the Command Module off, and then turn it on again and wait. The program will then start. This program heavily utilizes the demo code provided by the iRobot demo files. A timer and the bump sensor data are based on the SIGNAL interrupt. The rest of the code is divided into various functions which are hopefully not too hard to read. The calculation we used to determine the optimal direction did not use trig functions, but rather, a less intense approximation calculation.

File Downloads

makefile (13 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'makefile']

oi.h (4 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'oi.h']

search.c (11 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'search.c']

Step 5: Making A Nicer Looking Product


Here, we took the case and filed it down so the wires trailing from the LED's on the circuit board could exit the enclosure when it was snapped shut. The case was test fitted and marked with a pencil. A straight file was used to make the holes (see pic three). The key part was to make sure no wires were pinching when the case closed. For the top half, we made four rectangular indentions, and for the bottom, we filed it sown in a straight line. See the picture.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. This filer was mainly used, but you can use whatever floats your boat.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 6: Final: Video & Pics


Here is the final product! (Video attached.) Thanks!

http://www.instructables.com/id/Hacking-Your-iRobot/

Related Instructables

iRover: Remotely How to enter the How to enter the controlled iRobot Create iRobot Create iRobot Create Scholarship Challenge by (or Roomba) by mini-contest by jeffreyf techgeek75 jeffreyf

iRobot Create Pool Skimmer/Cleaner Contest Entry: iRobot Create by Weissensteinburg Protoype 3Sensor Platform by Diane Blackwood

How to make a Robo-Bellhop by jeffreyf

iRobot Create Death Machine by Weissensteinburg

Control your iRobot Create with a Palm Pilot by Hungry_Myst

http://www.instructables.com/id/Hacking-Your-iRobot/

Sparky Jr. - DIY Telepresence Robot


by sparkyrust on September 20, 2009

Author:sparkyrust Gomi Style


Marque Cornblatt was born in Baltimore, Maryland and now lives in San Francisco. He holds an MFA in Conceptual Arts from SFSU; has a diploma in theater technology from the Baltimore School of the Arts and a B.F.A. in film and video production from New York University. Cornblatt's robots, machine art and video scuptures have been exhibited at the SF MoMA, San Jose Museum of Art, Orange County Center for Contemporary Art, di Rosa Preserve, Downey Museum of Art, and at galleries throughout California and New York. A self-described "Promosexual", Marque has appeared on numerous TV programs and is currently producing and hosting "Gomi Style", a DIY lifestyle and design series.

Intro: Sparky Jr. - DIY Telepresence Robot


"You might call Sparky a state-of-the-art schmooze machine" - Wired Magazine

SPARKY: The name Sparky is based on an acronym for Self Portrait Artifact / Roving Chassis - an art project started in the early 90's using trash, found objects and discarded technology. Sparky Jr. can also be made with a wide range of found or scrounged hardware and components, but this one was created with a mix of new and existing materials

All together, this assemblage of hardware becomes a unique machine - Sparky Jr. - a wireless rover capable of face-to-face video chat over the Internet.

Join the growing community of DIY telepresence makers

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 1: Here is a list of the basic hardware used to Build Sparky Jr.
For the Robot Chassis Mac Mini computer Lilliput 7 VGA car-puter monitor iRobot Create robot chassis Keyspan serial to USB adapter Logitech USB desktop microphone Creative Labs Ultra webcam VF0060 USB powered speakers 12 v. 7Ah hobby battery 12 v battery charger 100 watt inverter Cigarette lighter female socket Small hardware corner braces Assorted small 10/32 nuts and bolts Assorted Erector set parts Thin plastic sheet 10/32 hardware For the control computer: Any web-enabled computer with Webcam Chat headset Logitech USB Game pad Tools needed: Hot glue and gun Drill/driver and bits Zip ties Scissors Matt knife Screwdriver Optional: 2nd monitor (for setup) Table saw/drill press 1/8 and 1/4 Acrylic plastic small acrylic cubes Acrylic solvent and applicator

Step 2: Part 1a: Computer Hardware Set-up


First set up Sparky's Mac and monitor as you normally would, as well as the webcam, speakers and mic. Also plug the iRobot Create into the Mac using the Keyspan serial/USB adapter. We will test this connection later while setting up the software.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 3: Part 1b: Control Computer Set-up


Control Computer Set-up: This should be straightforward. You can use any Macintosh with a Webcam that connects to the Internet and can handle video chat. It can be a desktop, laptop or netbook. I personally chose a Dell Mini 9 netbook with a hacked Mac OS installed . This computer will need a USB game pad and USB chat headset attached. Install Skype.

Step 4: Part 1c: Test Skype


Install Skype on both Macs and test that videochat is working. You may need to go into the preferences pane and make adjustments.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 5: Part 1d: Battery Test


Once the computer and Skype are working, shut everything down and plug the Mac and monitor into the 12v. battery using the cigarette lighter inverter. The 3-prong Mac plugs in directly and the monitor can use the included lighter adapter. Restart the Mac and test it again. Everything should work the same as before until the battery drains. You should get at least an hour or two on a full charge

Step 6: Part 2a: Joystick Controller Set-up


Currently, our controller software runs only on a Mac, but the next version will work on both Mac and PC, which will allow a wider range of hardware options. If the text on your Sparky monitor is too difficult to read because you are using a small TV instead of a VGA monitor, you may want to use a second monitor for the software set-up. Once it is complete, you can switch back to Sparky's permanent monitor.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 7: Part 2b: Install the Keyspan driver


Download and install the Keyspan Serial adapter driver onto Sparky's Mac. Follow the instructions provided by Keyspan.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 8: Part 2c: Install the Joystick Control Plugins


Download the Sparky Jr. Joystick installer . Put this on the computer that you use as the "control booth." Download the Sparky Jr. iRobot Server installer . Put this one on the Mac Mini onboard Sparky. These installers will place several files on your system as well as an icon on your desktop. I recommend putting the Skype and controller icons in the dock next to system preferences for easy access on both computers.

Step 9: Part 2d: Test the Control Software


Do the following steps in this exact order 1) Place the iRobot Create on a block, so the wheels can spin freely 2) Make sure all the hardware is connected on Sparky and control computer 3) Switch on the iRobot Create ON button 4) Turn on both computers 5) Start Skype on both computers and sign in. (each computer needs an account) 6) Start the Sparky controller on each computer and hit the connect button. 7) Make sure the messages in the Sparky controller window indicate a connection. 8) Be sure to click and highlight the Skype text chat window on Sparky. 9) Move the joystick forward once or twice. The wheels should spin immediately, but it might take about a minutes lag for the first command to respond. Once it begins, there should be no lag between commands and response.

Step 10: Part 3: Structure and Outer Shell Intro


Sparky Jr. requires a minimum of structural parts to hold all the components. The outer shell is made from a single sheet of flexible plastic, which becomes rigid and strong enough to act as an exo-skeleton once assembled. Sparky's monitor and speakers are attached to this shell and are completely supported by it. The other structural part required by Sparky Jr. is a small internal shelf to hold the Mac and other components in place. It can be made of many different materials, including wood, plastic, and metal - even Lego or Erector set parts will work. But I recommend building it using acrylic or Plexiglas. The results will be strong, lightweight and clean. Both patterns are available for download at SparkyJr.com.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 11: Part 3a: Inner Shelf (part 1)


Download the zip file containing the template for the shelf and print them out. Make sure you print at 100% (even if the printer warns of cropping the image). Measure the image to confirm the proper size. If you are using wood or metal, construct the shelf your own way. If using acrylic, carefully trace the pattern onto the material and cut the pieces using a table saw with fine wood blade and drill press with plastic or fine wood bit. 1/4" thick material is ideal for the legs, but the top and feet are 1/8". If you had to choose a single thickness, go with the 1/4".

Step 12: Part 3a: Inner Shelf (part 2)


Lay the top piece on a flat surface, and align each of the leg pieces so that they are resting on top, flush along the side edge with the 3 holes lined up. Carefully run a single bead of acrylic solvent along the inside joint and let set for a few minutes. Place each foot piece on the iRobot Create using the four small screw holes. Align the pieces so the wider edges are facing inward and forward. Keep the bolts loose so the foot pieces can be adjusted. Place the table on the feet with the angled edge of the legs facing forward. Make adjustments to the feet so their edges line up flush with the legs. Carefully run a bead of solvent down each of these joints and let set. *Optional. Remove the table from the iRobot Create and lay it face down again on a flat surface so the underside is exposed. Use solvent to carefully attach the small cubes to each leg/top joint to act as additional structural support.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 13: Part 3a: Inner Shelf (part 3)


Once the shelf is ready, mount it to the iRobot Create chassis using the four included 10/32 screws. Be sure to place angle brackets mounted in the rear holes under the foot of the shelf, as well as 2 washers in the front holes to maintain an even level. These brackets are used to mount the outer shell to the iRobot.

Step 14: Part 3b: Outer Shell (part 1)


The pattern for Sparky's outer shell can be downloaded at SparkyJr.com. It is a life-size 2D drawing made in Google SketchUp. It measures 35 x 24 1/4" and can be printed using 15 sheets of paper. Follow these steps to insure that the pattern prints at exactly 1:1 scale. 1) Download and install SketchUp for your computer. 2) Download and open the file called Sparky_outer_shell_01 from SparkyJr.com . 3) Open the file and switch to paraline mode by turning perspective mode off. To turn perspective mode off, open the "Camera" menu and click "Perspective" (so that a check mark is not displayed next to it). 4) Select a standard scalable view: Top. To select a standard view, open the "Camera" menu, point to "Standard," and then click one of the views. 5 Resize the SketchUp window so the right and left edges of the drawing touch both side edges of the canvas exactly. 6) Open the "File" menu, and then click "Document Setup." 7) In the "Print Size" section of the "Print" dialog box, clear the "Fit to page" option. 8) If you are in paraline mode (step 1) and have selected a standard view (step 2), the scale options in the "Print Scale" section are enabled when you clear the "Fit to page" option. Set the scale to 1 to 1. 9) Click "OK" to save your document settings, and then print your model by opening the "File" menu, and then clicking "Print." 10) Assemble the pattern using clear tape, taking care to maintain proper alignment.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 15: Part 3b: Outer Shell (part 2)


The pattern was designed with the exact components from the hardware list above - If you are using any different parts, you will need to customize the pattern to fit them. Also, some of the attachment points between the iRobot and the plastic shell are hard to determine with accuracy - it helps to do it bit-by-bit. Assume the first attempt will be a bit of a mess by the time its all assembled, so its 3not a bad idea to have a few extra pieces of plastic handy. Layout and tape together the printout of the pattern. Trace it to the material (or cut the paper pattern out and draw around it if you can't trace it) and cut the pattern out, including the holes for the monitor and speakers and webcam. Drill all the boltholes with a 10/32 drill bit or slightly larger. Allow your cat to help as needed.

Step 16: Part 3b: Outer Shell Monitor Mount


Lay the monitor facedown on the plastic, align and hot-glue four small corner brackets to it. Be sure to orient the monitor so the connectors and jacks are on the top edge. Also line up the webcam and hot-glue it along the top edge of the monitor as well. Now you can confirm the alignment of the webcam and mounting holes. Cut and drill these holes and bolt the monitor/webcam to it with the hardware.

Step 17: Part 3b: Outer Shell Speaker Mount


Center the speakers over their holes and attach them by running a bead of hot-glue around the edge of each.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 18: Part 3b: Outer Shell Assembly 1


Now partially assemble the shell with the 10/32 hardware. Take care to layer the pieces in the proper order or else the holes won't line up properly. You will notice how the shape becomes structurally rigid with just a few bolts added.

Step 19: Part 3b: Outer Shell Front Bumper Alignment


The two holes marked along the bottom front edge of the plastic correspond with two holes drilled through the front bumper of the iRobot Create. Using the holes on the plastic as a guide to mark the bumper, mark and drill the bumper holes. *Notice how the front bumper of the iRobot Create still has full range of motion even with the outer shell attached. In fact, the shell is acting like a bumper spring, keeping it in the out position and helping it spring back when bumped. If yours is not working, check the alignment of the attachment points and make adjustments as needed.

Step 20: Part 3b: Outer Shell Final Bracket Alignment


With the two bumper holes done, and the front edge of the plastic attached to the iRobot Create, check the alignment of the remaining four angle bracket points (one sits on each side of the bumper, and one more sits on each side of the main chassis). Ideally these brackets are aligned so that they have one edge and screw hole flush with the plastic shell. You will need to hot-glue these to the chassis, but take care that they don't shift in the process.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 21: Conclusion


For more info and plans, Join Sparky Jr . The site is dedicated to DIY, open source mobile telepresence. Get free software and instructions, plus how-to videos, hardware links and more connecting you the growing community of mobile telepresence and videochat drone builders. Post your own projects and get feedback from other members. And best of all, its FREE!

Related Instructables

Bluetooth your iRobot Roomba! by djsures

iRover: Remotely controlled iRobot Create (or Roomba) by techgeek75

Sparky - DIY Web-Based Telepresence Robot by sparkyrust

MAYA Budget Telepresence Rover by bhylak

Web-controlled Twittering Roomba by How to enter the matchlighter iRobot Create Challenge by jeffreyf

Sparky - The DIY Telepresence Robot (video) by sparkyrust

eyeRobot - The Robotic White Cane by shrimpy

http://www.instructables.com/id/Hacking-Your-iRobot/

iRover: Remotely controlled iRobot Create (or Roomba)


by techgeek75 on September 9, 2007

Intro: IRover: Remotely controlled iRobot Create (or Roomba)


Not knowing about this iRobot contest sooner and with my boss riding me with overtime at work, I was not able to complete my desired project of an impressive autonomous security patrol bot. What I do have is an overly complicated, rather unimpressive remotely controlled iRobot Create. Robotics has been a long time hobby of mine. I have done most of my work with the Basic Stamp and the MIT Handyboard in other robotic projects. I took a break from this rather expensive hobby for a while after buying a house last year. Now that I am settled in and I've got my lab/work area set up, I am starting to get back to tinkering with various robotics projects. This iRover project is rather simple and does not require any advanced knowledge or skills to build. If the complexity of autonomous robotics seems intimidating, get started with something simple like the iRover. As you learn additional skills such as programming and microcontroller/sensor interfacing, you can add to the iRover to give it a more autonomous behavior. For this iRover, I took an iRobot Create and added a laptop with wireless ethernet, a web cam, and some open source robot control software. Now I have an iRobot that can be remotely controlled over wireless ethernet or even the Internet. For those of you wanting something you can play with and not have to do any programming or electronic assembly work, this project is for you. If you have a Create or Roomba, wireless laptop, and web cam, it's just a matter of installing some software on the laptop and installing the laptop and web cam on the robot and you're in business.

Step 1: Install the software


On the laptop I installed the web cam software, Microsoft C# Express, and the CreateOI open source Visualizer. You can download MS C# Express for free directly from the Microsoft web site: http://msdn2.microsoft.com/en-us/express/aa975050.aspx Visualizer is part of the CreateOI package. You can get this open source package from SourceForge.net: http://sourceforge.net/project/showfiles.php?group_id=186589 Once those are installed, you'll open the Visualizer project in MS C# Express and build/compile the project into an executable file. Copy it to the desktop or make a shortcut to it in an easy to find place. If you don't want to use Windows Remote Assistance or Remote Desktop features to connect to the laptop remotely, then you will also need to download and install a VNC application to allow you to see and control the laptop desktop from a remote computer. RealVNC (http://www.realvnc.com) and TightVNC (http://www.tightvnc.com) are two possible alternatives. If using a VNC application, you will need to install it on both the laptop and the remote computer that will be connecting to the laptop.

Step 2: Install laptop on Create


It doesn't take much to install a laptop on the iRobot Create. Use your imagination...velcro, zip ties, brackets, whatever you have available. I took part of the casing of an old failed ATX power supply and added some additional brackets to mount it to the mounting holes in the Create cargo bay and to secure the laptop to the top. Once installed, connect the web cam and mount it to the laptop or mount it to the front of the Create. Then connect the Create mini-din serial interface cable to the Create and the laptop. If the laptop has no serial port, you can also use a USB to serial adapter to plug the iRobot Create programming cable into a USB port. Such an adapter can be found at your local RadioShack: http://www.radioshack.com/sm-6-ft-usb-to-serial-port-cable--pi-2036258.html

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Lorex mCam from Best Buy. It has a light sensor that turns on IR illuminators for night vision. 2. Cheap (sub $400) Gateway 1.6GHz laptop. 3. Part of the casing of a failed ATX power supply. This is the base for mounting the laptop.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 3: Connect remotely


Initiate the Windows Remote Assistance from the laptop, or start your chosen VNC application on the laptop. On the remote machine you will accept the remote assistance request or use the VNC application to connect to the laptop. Once you have the remote desktop connected and you have full control of the laptop, fire up the web cam software and the Visualizer application on the laptop. Configure the Visualizer application and start the polling to give it control of the Create. The Visualizer has several forms you can open. The Sensor form and the Drive form are the two main forms you want open. You can view the realtime sensor data on the Sensor form. On the Drive form, double clicking the Safe or Full mode will allow you use the arrow keys on the keyboard to control the Create. That's all there is to it. Put your Create in another room and have fun chasing the cat :)

Image Notes 1. Lorex mCam software runs from Internet Explorer. 2. The CreateOI Visualizer drive form (partially hidden by sensor form). 3. The CreateOI Visualizer sensor form. Gives realtime access to all sensor data.

Related Instructables

iRobot Create Death Machine How to enter the How to enter the by iRobot Create iRobot Create Weissensteinburg Scholarship Challenge by mini-contest by jeffreyf jeffreyf

Voice Controlled iRobot Create by phroseph

iRobot Create: WiFi Optimizer by vector023

Control your iRobot Create with a Palm Pilot by Hungry_Myst

Sparky Jr. - DIY Telepresence Robot by sparkyrust Belvedere - A Butler Robot by wolffan

http://www.instructables.com/id/Hacking-Your-iRobot/

eyeRobot - The Robotic White Cane


by shrimpy on August 25, 2007

Intro: EyeRobot - The Robotic White Cane


Abstract: Using the iRobot Roomba Create, I have prototyped a device called eyeRobot. It will guide blind and visually impaired users through cluttered and populated environments by using the Roomba as a base to marry the simplicity of the traditional white cane with the instincts of a seeing-eye dog. The user indicates his/her desired motion by intuitively pushing on and twisting the handle. The robot takes this information and finds a clear path down a hallway or across a room, using sonar to steer the user in a suitable direction around static and dynamic obstacles. The user then follows behind the robot as it guides the user in the desired direction by the noticeable force felt through the handle. This robotic option requires little training: push to go, pull to stop, twist to turn. The foresight the rangefinders provide is similar to a seeing eye dog, and is a considerable advantage over the constant trial and error that marks the use of the white cane. Yet eyeRobot still provides a much cheaper alternative than guide dogs, which cost over $12,000 and are useful for only 5 years, while the prototype was built for well under $400. It is also a relatively simple machine, requiring a few inexpensive sensors, various potentiometers, some hardware, and of course, a Roomba Create.

Step 1: Video Demonstration

High Quality Version

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 2: Operation overview


User Control: The operation of eyeRobot is designed to be as intuitive as possible to greatly reduce or eliminate training. In order to begin motion the user simply has to begin walking forward, a linear sensor at the base of the stick will pick up this motion and begin moving the robot forward. Using this linear sensor, the robot can then match its speed to the desired speed of the user. eyeRobot will move as fast as the user wants to go. To indicate that a turn is desired, the user simply has to twist the handle, and if a turn is possible, the robot will respond accordingly. Robot Navigation: When traveling in open space, eyeRobot will attempt to keep a straight path, detecting any obstacle that may impede the user, and guiding the user around that object and back onto the original path. In practice the user can naturally follow behind the robot with little conscious thought. To navigate a hallway, the user should attempt to push the robot into one of the walls on either side, upon acquiring a wall the robot will begin to follow it, guiding the user down the hallway. When a intersection is reached, the user will feel the robot begin to turn, and can choose, by twisting the handle, whether to turn down the new offshoot or continue on a straight path. In this way the robot is very much like the white cane, the user can feel the environment with the robot and use this information for global navigation.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 3: Range Sensors


Ultrasonics: The eyeRobot carries 4 Ultrasonic rangefinders (MaxSonar EZ1). The ultrasonic sensors are positioned in an arc at the front of the robot to provide information about objects in front of and to the sides of the robot. They inform the robot about the range of the object and help it find a open route around that object and back onto its original path. IR Rangefinders: The eyeRobot also carries two IR sensors (GP2Y0A02YK). The IR rangefinders are positioned to face out 90 degrees to the right and left to aid the robot in wall following. They can also alert the robot of objects too close to its sides that the user may walk into.

Image Notes 1. Ultrasonic Rangefinder 2. IR Rangefinder

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 4: Cane position sensors


Linear Sensor: In order for the eyeRobot to match it's speed to that of the user, the eyeRobot senses whether the user is pushing or retarding its forward motion. This is achieved by sliding the base of the cane along a track, as a potentiometer senses the cane's position. The eyeRobot uses this input to regulate the speed of the robot. The idea of the eyeRobot adapting to the speed of the user through a linear sensor was actually inspired by the family lawnmower. The base of the cane is connected to a guide block moving along a rail. Attached to the guide block is a slide potentiometer that reads the position of the guide block and reports it to the processor. In order to allow the stick to rotate relative to the robot there is a rod running up through a block of wood, forming a rotating bearing. This bearing is then attached to a hinge to allow the stick to adjust to the height of the user. Twist Sensor: The twist sensor allows the user to twist on the handle to turn the robot. A potentiometer is attached to the end of one wooden shaft and the knob is inserted and glued into the upper part of the handle. The wires run down the dowel and feed the twist information into the processor.

Image Notes 1. Rotating bearing (rod through block of wood) 2. Hinge 3. Guide block on a rail (linear bearing) 4. Slide pot

Step 5: Processor
Processor: The robot is controlled by a Zbasic ZX-24a sitting on a Robodyssey Advanced Motherboard II. The processor was chosen for its speed, ease of use, affordable cost, and 8 Analog inputs. It is connected to a large prototyping breadboard to allow for quick and easy changes. All power for the robot comes from the power supply on the motherboard. The Zbasic communicates with the roomba through the cargo bay port, and has full control over the Roomba's sensors and motors.

Image Notes 1. ZX-24a processor 2. Solderless breadboard 3. Roomba cargo bay connector

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 6: Code Overview


Obstacle avoidance: For obstacle avoidance the eyeRobot uses a method where objects near the robot exert a virtual force on the robot moving it away from the object. In other words, objects push the robot away from themselves. In my implementation, the virtual force exerted by an object is inversely proportional to distance squared, so the strength of the push increases as the object gets closer and creates a nonlinear response curve: PushForce = ResponseMagnitudeConstant/Distance2 The pushes coming from each sensor are added together; sensors on the left side push right, and vice versa, to get a vector for the robot's travel. Wheel speeds are then changed so the robot turns toward this vector. To ensure that objects dead in front of the robot do not exhibit a "no response" (because the forces on both sides balance), objects to the dead front push the robot to the more open side. When the robot has passed the object it then uses the Roomba's encoders to correct for the change and get back onto the original vector. Wall Following: The principle of wall following is to maintain a desired distance and parallel angle to a wall. Issues arise when the robot is turned relative to the wall because the single sensor yields useless range readings. Range readings are effected as much by the robots angle to the wall as by the actual distance to the wall. In order to determine angle and thus eliminate this variable, the robot must have two points of reference that can be compared to get the robots angle. Because the eyeRobot only has one side facing IR rangefinder, in order to achieve these two points it must compare the distance from the rangefinder over time as the robot moves. It then determines its angle from the difference between the two readings as the robot moves along the wall. It then uses this information to correct for improper positioning. The robot goes into wall following mode whenever it has a wall alongside it for a certain amount of time and exits it whenever there is an obstacle in its path, which pushes it off its course, or if the user uses the twist handle to bring the robot away from the wall.

Image Notes 1. Wall (robot is following) 2. Obstacle (robot is avoiding 3. User 4. Wall following 5. Obstacle avoidance 6. Back to original course 7. Restart wall following

Step 7: Parts List


Parts Required: 1x) Roomba create 1x) Large sheet of acrylic 2x) Sharp GP2Y0A02YK IR rangefinder 4x) Maxsonar EZ1 ultrasonic rangefinders 1x) ZX-24a microprocessor 1x) Robodyssey Advanced Motherboard II 1x) Slide potentiometer 1x) Single turn potentiometer 1x) Linear bearing 1x) Solderless breadboard )))) Assorted Hinges, dowels, screws,nuts, brackets, and wires

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 8: Motivation and Improvement


Motivation: This robot was designed to fill the obvious gap between the capable but expensive guide dog and the inexpensive but limited white cane. In the development of a marketable and more capable Robotic White Cane, the Roomba Create was the perfect vehicle for designing a quick prototype to see if the concept worked. In addition, the prizes would provide economic backing for the considerable expense of building a more capable robot. Improvement: The amount I learned building this robot was substantial and here I will attempt to lay out what I have learned as I move on to attempt to build a second generation robot: 1) Obstacle Avoidance - I have learned a lot about real time obstacle avoidance. In the process of building this robot I have gone through two completely different obstacle avoidance codes, starting with the original object force idea, then moving to the principle of finding and seeking the most open vector, and then moving back to the object force idea with the key realization that the object response should be non-linear. In the future I will correct my mistake of not doing any online research of previously used methods before embarking on my project, as I'm now learning a quick Google search would have yielded numerous great papers on the subject. 2) Design of the stick sensors - Beginning this project I thought my only option for a linear sensor was to use a slide pot and some sort of linear bearing. I now realize that a much simpler option would have been to simply attach the top of the rod to a joystick, such that pushing the stick forward would also push the joystick forwards. In addition a simple universal joint would allow the twist of the stick to be translated into the twist axis of many modern joysticks. This implementation would have been much simpler then the one I currently use. 3) Free turning wheels - Although this would have been impossible with the Roomba, it now seems obvious that a robot with free turning wheels would be ideal for this task. A robot that rolls passively would require no motors and a smaller battery and thus be lighter. In addition, this system requires no linear sensor to detect the users push, the robot would simply roll at the users speed. The robot could be turned by steering the wheels like a car, and if the user needed to be stopped brakes could be added. For the next generation eyeRobot I will certainly use this very different approach. 4) Two spaced sensors for wall following - As discussed earlier problems arose when trying to wall follow with only one side facing sensor, thus it was necessary to move the robot between readings to achieve different points of reference. Two sensors with a distance between them would simplify wall following greatly. 5) More sensors - Although this would have cost more money it was difficult trying to code this robot with so few windows on the world outside the processor. It would have made the navigation code much more powerful with a more complete sonar array (but of course sensors cost money, which I didn't have at the time).

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 9: Conclusion
Conclusion: The iRobot proved an ideal prototyping platform for experimenting with the concept of a Robotic White Cane. From the results of this prototype it is apparent that a robot of this type is indeed viable. I hope to develop a second generation robot from the lessons I have learned from using the Roomba Create. In future versions of eyeRobot I envision a device capable of doing more than just guiding a person down a hallway, rather a robot that can be put in the hands of the blind for use in everyday life. With this robot, the user would simply speak their destination and the robot would guide them there without conscious effort from the user. This robot would be light and compact enough to be easily carried up stairs, and tucked away in a closet. This robot would be able to do global navigation in addition to local, being able to guide the user from start to destination without the users prior knowledge or experience. This capability would go well beyond even the guide dog, with GPS and more advanced sensors allowing the blind to freely navigate the world, Nathaniel Barshay, (Entered by Stephen Barshay) (Special thanks to Jack Hitt for the Roomba Create)

Step 10: Construction and Code


A few extraneous words on construction: The deck of made by a piece of acrylic cut in a circle with an opening at the back to allow for electronics access, and is then screwed into the mounting holes beside the cargo bay. The prototyping board is screwed into the screw hole at the bottom the bay. The Zbasic is mounted with an L bracket's with the same screws as the deck. Each sonar is screwed into a piece of acrylic, which is in turn attached to a L bracket attached to the deck (the L brackets are bent back 10 degrees to give a better view). The track for the linear sensor is screwed right into the deck and the slide pot is mounted with L brackets beside it. A more technical description of the construction of the linear sensor and control rod can be found in step 4. Code: I have attached the full version of the robots code. Over the course of an hour I have attempted to clean it up from the three or four generations of code that were in the file, it should be easy enough to follow now. If you have the ZBasic IDE it should be easy to view, if not use notepad starting with the file main.bas and going through the other .bas files.

File Downloads

Roomba code.zip (23 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Roomba code.zip']

http://www.instructables.com/id/Hacking-Your-iRobot/

Related Instructables

Bluetooth your iRobot Roomba! by djsures

iRover: Remotely How to enter the controlled iRobot Create iRobot Create Challenge by (or Roomba) by jeffreyf techgeek75

Web-controlled Twittering Roomba by matchlighter

Control your iRobot Create with a Palm Pilot by Hungry_Myst

How to Clean the Front Wheel of a Roomba Discovery by ewilhelm

Belvedere - A Butler Robot by wolffan

Cleaning a 1st or 2nd Generation Roomba by trebuchet03

http://www.instructables.com/id/Hacking-Your-iRobot/

PosterBot: Make a Marker-Writing Robot out of an Old Inket printer and an iRobot Create
by W_world on September 3, 2007

Intro: PosterBot: Make a Marker-Writing Robot out of an Old Inket printer and an iRobot Create
I decided to make this robot because I've never had very neat handwriting, so making large letters has always been difficult. When I was on Student Council in high school, I always got marked down for posters that weren't "neat" enough. Like any nerd, I figured "If I can't do it, I'll make a robot to do it for me." This robot will draw out any small monochrome bitmap onto poster paper. It can mark out the individual pixels just as a printer might. It works best with strings of characters.

This is a moderately difficult project which requires about $50 in parts and basic electronic skills (This doesn't include an iRobot create,Command Module and old Inkjet printer) . You should be able to read a schematic and make a basic prototype or bread board. Some familiarity with C or C++ is handy too. I recommend that you read through the entire Instructable before beginning your project. It's important that you get the bigger picture because the process will vary depending on your materials. Parts List: An Old inkjet printer An iRobot Create and Command module Electronic prototype board or bread board Several rubber bands Two 9-pin serial cables with at least one male end 4 PC-Mount DPDT 5v DC relays rated at least 1A 4 2n222 transistors 4 1k 1/4 watt resistors 4 diodes some wire to make jumpers with (unbraided) ~3' of 1/8" Bass wood Poster marker Butcher paper (get at least 20') Voltage regulators (values vary) White acrylic paint (optional) Tools: Hack saw Epoxy Box Cutter or Exacto knife Drill and bit set Soldering iron/solder Hot melt glue gun Multi-meter

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 1: Get the parts from the printer


You need two parts from the printer: the carriage and the paper advancer The carriage is what the ink cartridges slide back and forth on. It's a metal rack with a motor, a belt, a plastic strip, a white ribbon cable and the actual print-carriage (usually black) where the ink cartridges sit. You can go ahead and remove the white ribbon, the ink cartridges and the clear plastic strip with the black marks. The paper advancer is a little harder to remove. It's usually deep in the printer and is attached to a lot of other things. From the advancer, the parts we want are: the motor, its gear train, its axle (with the little foam wheels) and any bearings it has. Try to keep these parts in working condition. We're going to cut the paper advancer axle with a hack saw just outside the second bearing. This will be our medium lowerer which is a not-too-fancy way of saying it the thing that is going to move the marker to and from the paper.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Metal rack 2. Actual Print-carriage 3. metal rod 4. You don't need to keep this. It'd be really hard to hack anyway 5. This holds the white ribbon on 6. The print-carriage is screwed to this thing on the belt 7. If this top piece comes off, don't remove it. It keeps the carriage from tipping away from the rack.

Image Notes 1. bearing 2. We want the gear train so that the motor will have plenty of torque going to the motor 3. This clear wheel is used so the printer can get feedback about the position of the axel... we don't need it.

Image Notes 1. bearing 2. bearing 3. I cut off all the rest of the axle that was attached here.

Step 2: Making the control board and configuring the serial cables
Here we're going to make the control board. This board will control turn both motors on and off and control their directions with signals from the command module. The ports will be as follows: PC5 (top center pin 1) - motor 1(carriage) on/off PC1 (top center pin 2) - motor 1(carriage) direction PC4 (cargo bay pin 1) - motor 2 (maker) on/off PC0 (cargo bay pin 2) - motor 2 (marker) direction Top center pin 7 - motor 1 supply Cargo bay pin 7 - motor 2 supply Top center pin 4 - +5v Cargo bay pin 5 - grnd You'll need to strip the serial cables and use the multi-meter to determine which colors go with which pins. Remember: Pin 1 is the top left pin on the female command module.. this means it will be the top right pin on the male serial cable To make the control board you will need the PC prototype board, the relays, diodes, transistors, resistors and jumpers.

http://www.instructables.com/id/Hacking-Your-iRobot/

4 PC-Mount DPST 5v DC relays rated at least 1A 4 2N222 Transistors 4 1k 1/4 watt Resistors 4 1N4003 Diodes RadioShack usually won't have everything. Look for a local electronic supply store or try DIgikey or JameCo Mount and wire the components according the schematic. I got this schematic from Robot Builders Bonanza 2nd edition I guess there is a third edition now, but I'm not familiar with it. I highly recommend the book for anyone looking to continue building robots. This next bit is going to sound like obvious advice but, remember that you want the leads of the components going through to the copper side. I made the mistake of setting up almost the entire board before realizing it was upside-down. The colored cables you see running away in the photos are the serial cables that correspond to the various pins. I used hot melt glue to attach them to the board to lessen the strain on the solder joint. I've added picture of my board so you can get an idea how to add them

Image Notes 1. DPDT Relay 5V nominal votage rated at at least 1A 2. resistor 3. Transistor 4. diode 5. grnd 6. motor 7. the switches on the relays 8. The relay's control coil

Image Notes 1. transistor 2. resistor 3. diode 4. Jumper I accidentally stripped 5. marker of the emitter on the transistor 6. jumper

Image Notes 1. Grnd 2. To Motor1 3. To Motor2

http://www.instructables.com/id/Hacking-Your-iRobot/

7. relay

Step 3: Make the marker lowerer


In order to make the marker lowerer, you'll need to remove the black print-carriage from the larger structure as seen in the picture showing the separate components. You will need to unscrew the screws that fasten it to the belt. You will also need slide out the metal rod so that the plastic piece can come out. You'll then want to attach the paper advancer to this black print-carriage piece. Keep in mind the orientation of the future marker and the need for the carriage to slide without impediment. I used epoxy to attach the bearings to the carriage. I found that Hot-melt Glue is handy to use to keep the parts in place while the epoxy cures. By attaching a piece of wood (bass), you can create a platform so that the marker can be rubber banded on and replaced easily. The small perpendicular piece allows the epoxy to have a greater surface area against the metal. After this is done, reassemble the complete carriage. I suggest that you add a foam block or some other stopping device that will stop the marker at it's vertical position. Also, a smaller rubber band to help the marker return to it's neutral position is helpful. While you're welcome to experiment with different mediums, the best one I found was the fumeless poster paint marker; it's surprisingly long lasting. You should be able to buy both the bass wood and the marker at your local craft store

Image Notes 1. Metal rack 2. Actual Print-carriage 3. metal rod 4. You don't need to keep this. It'd be really hard to hack anyway 5. This holds the white ribbon on 6. The print-carriage is screwed to this thing on the belt 7. If this top piece comes off, don't remove it. It keeps the carriage from tipping away from the rack.

Image Notes 1. wood piece 2. bearing

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Foam block to keep it from going to far

Image Notes 1. press down and paint... it's perfect

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. There's a little plastic piece on the belt under here that you need to screw the print-carriage to

Image Notes 1. I twisted the rubber bands three times

Image Notes 1. rubber band to help it reset

Step 4: Adding the carriage to the robot at large


This step, of all of them, will be the one that will vary the most from what I'll outline here. Every print carriage is different, and depending how you attached your marker lowerer, you may need to mount it in an entirely different way. So with that in mind, let me show you how I mounted my carriage. First, I cut the bass wood in a way that would let me attach it to the cargo bay. I epoxied the pieces together and added paper to help strengthen the joint. Next, I drilled holes in the wood that lined up with the holes on the cargo bay. I was able to screw down the wood pretty securely This next step gets a little fuzzy: I added balsa wood extenders and smaller pieces to take some of the stress. It just so happened that my print carriage was just high enough that I was able to raise it an 1/8th of an inch (by cutting the extender and reattaching it to the top of itself) in order to get the marker in just about the perfect marking position. You can trim this position by moving the rubber bands that hold the marker. I also painted all the wood white. It was amazing how a little paint made the robot look so much better. You'll also need to run wires out from the control board to the motors. I recommend taking the extra wires from your serial cables and using them. I used hot-melt glue to attach them at the right points to keep them from getting tangled.

Image Notes 1. box cutter, score the wood over and over until you can break it cleanly

Image Notes 1. it took a couple tries to get these holes right 2. the paper absorbs the epoxy so it works great to strengthen things

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. I epoxied the carriage onto here

Image Notes 1. cut to raise the hight of the carriage 2. strengtheners to help carry the weight of the carriage

Image Notes 1. glued wires here 2. Glued wires here (to protect the solder joint 3. glued wires here

Step 5: Calibrating your robot


Connect the serial cables (one to the top center, and the other to the cargo bay port) and reattach the wood leaving the PC board in the cargo bay. One of the first things you'll need to calibrate are the two control motors. The output from the command module is 20V, this is likely far too much for the motors. You can add voltage regulators to limit this voltage to a level that is safe for the motors. 20V is far too much for most DC motors. You'll need to test them at other voltages to figure out where they work best. I used old RC car battery chargers to supply the voltage to test the motors with. I found out that my Carriage motor worked well at 12V and that the marker motor worked at 6V. So I just bought a couple voltage regulators rated at those voltages and 1A. You want to wire these in series with the motors (that is, in the middle of one the wires running to the robot). If these regulators have a ground pin, it might be a good idea to run up an extra wire from the ground on the PC board. If you haven't already installed all of your iRobot software including Programer's Notepad and the virtual serial port do so now. Instructions are available in the documentation (which is completely available online here) Follow the instructions in the Command Module in the "your first project section". Add the Printer.c file as the main file for the code. Be sure to modify the "target =" in the makefile. it should read "TARGET = printer" Connect the serial cables (one to the top center, and the other to the cargo bay port) and reattach the wood leaving the PC board in the cargo bay. You'll also want to modify the wait values on the program "printer.c". Namely, you'll want to trim the wait times in the "car" and "mark" function. These will vary with the differing sizes and speeds of your motors. You'll want to trim them so that the marks overlap slightly and are plenty heavy. Follow the instructions in the manual to compile, download and start the program on the robot (my tip: if it's not working push the reset button). You made need to spend a fair amount of time calibrating the robot. Pictured below is one of my many test papers.

http://www.instructables.com/id/Hacking-Your-iRobot/

When everything is trimmed right, the robot should work like this:

Image Notes 1. 6v regulator, the grey cable runs to ground. I glued it here with hot melt glue. 2. 12V regulator. I drilled little holes for the pins to go through

Image Notes 1. be sure to tuck in any wandering wires

Image Notes 1. when I was testing the marker with my hand 2. trying to get a normal straight line

File Downloads

printer.c (11 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'printer.c']

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 6: Creating and adding your own Bitmaps


Finally you have a working robot; but you want it to write other things besides "Instructables.com". Well here's how you do it. First you need to create a monochrome bitmap in MSPaint. After opening paint, Click on "attributes" in the image menu. Set the measurements to pixels and set the specs to (for now) 162 wide by 70 high. Fill in the bullet point next to black and white. When you click "OK" you'll get a threatening warning telling you you're about to lose all the colors in your drawing. Click continue. Create a text box and open the "text toolbar" set your font size to 12pt and select what font you want. Go ahead and type your string out, and make the box longer if you need to. When you're finished, select the text and move it to the top left corner of the white area. Drag the corner of the white space up so it's pretty close to the text. Now go to the view menu, move the cursor over the "zoom" and select custom. Choose 800%. You can now resize the white area to 16 pixels tall. Save the bitmap as a "monochrome" bitmap. (on the dropdown menu) Next we have to convert the bitmap to a "c" array. Use the "Fntcvtr" application to convert your bitmap (directions available here) This program outputs data in a "char" array, we need this to be an Unsigned 8-bit array. To convert it open the ".out" file in Programmer's notebook. Select "replace" on the edit menu (CTRL-R). In the "find what:" box, enter '\ (apostrophe backslash) Set the replace to "0" (zero) Click replace all Run another replace sequence to replace ' (apostrophe) with nothing (empty) Replace all again. The purple characters should now be blue. We now need to redefine the array. Manually replace "Char" with "uint8_t" (it won't turn blue). Now just copy and past the entire array (including green specs) over the old one in Printer.c. Be sure to modify the constants "rows" and "col" to the new values of the bitmap. Compile, load and run. Your set.

Image Notes 1. this is where the size of the white space is shown

Image Notes 1. select black and white

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. replace '\ with 0 2. replace other ' with nothing 3. replace char with uint8_t

File Downloads

Fntcvtr.exe (91 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Fntcvtr.exe']

Step 7: Share what you draw


I'd love to see what your PosterBot can do. Email photos or video links to: wyattfelt@gmail.com I'll post them here on the Instructable. Thanks and Good luck. Here's a video of PosterBot drawing "School Starts" in 5x Speed. The funny things at the beginning and end are a schoolhouse and bell, respectively.

http://www.instructables.com/id/Hacking-Your-iRobot/

Related Instructables

Modifying an The PrintBot by iRobot Create to TeamEasyEnough Paint by technoplastique

Using the iRobot Create's Command Module with Linux by zachninme

How to enter the iRobot Create Challenge by jeffreyf

Contest Entry: iRobot Create Protoype 3Sensor Platform by Diane Blackwood

iRobot Create: WiFi Optimizer by vector023

Voice Controlled iRobot Create by phroseph

Belvedere - A Butler Robot by wolffan

http://www.instructables.com/id/Hacking-Your-iRobot/

The SOMA Project


by thesomaproject on August 22, 2007

Intro: The SOMA Project


The SOMA Project was a senior design project created by six university students who love spending all night in lab building robots. A fully-autonomous swarm was designed and built to be used as a platform for future swarm applications. Four fully autonomous robots were constructed, each capable of maintaining the relative and absolute positions of every other robot within its field of vision. In addition to tracking each others' relative positions, the robots sense and record the positions of obstacles, and share this information throughout the swarm. A dynamic map is maintained by each robot and transmitted to a passive monitoring station, where the map can be viewed in real time. This Instructable covers how the four robots built for this purpose were made. Specificallly, it details how the iRobot Create was used as a base for this project and how the rest of the system was built atop it. There have been many attempts to create a robotic swarm, however, before the SOMA Project, creating an inexpensive and scalable full-featured swarm had not yet been achieved. Each of the robots we made costs less than one thousand dollars, has space for hardware expansion, and is designed for scalability. The minimum functionality of the swarm we set out to make was to build a map of obstacles in an environment and position themselves in a map. The ability for each robot to know where it has been and know where its going allows for further study in mobile and ad-hoc networking, complex searching algorithms, and search and rescue applications. The Warning: This project is quite complicated, so it should only be attempted if you are already familiar with assembling and debugging electronics. You will need access to a full computer engineering lab with all standard assembly and test equipment as well as substantial mechanical equipment: a machine shop and a laser cutter. Since this is a difficult project, it will be assumed that the reader is experienced working with electronics and machining equipment. As much detail as possible will be covered, but the very basics, like how to solder and how to keep all your fingers when working with a laser cutter and lathe, will not be covered in this Instructable. We hope that anyone who attempts to build these robots has as much fun as we did. -The SOMA Team More information is located at http://www.thesomaproject.net

Image Notes 1. The four robots that we produced for this project. Our pride and joy! 2. Arthur C. Clarke 3. Asimov 4. Huxley 5. Marvin. He was our prototype robot. The diodes down the left side of his body hurt and he is a sad robot.

Step 1: Assembling The Team


This first step, though technically optional, is highly recommended. A project like this always goes a little easier when you've got good company and someone else to help you yell at the robots when they're misbehaving. Your players may be different and your lab may be cleaner, but you'll probably need a group like this. This is the story of the SOMA Project Team. A long time ago, in a computer engineering lab far, far away, six computer engineers banded together to tackle what we were told was the impossible: a robot swarm. In January of the year 2007, each eventual teammate surfaced from the depths of the Jack Baskin School of Engineering atop the UC Santa Cruz campus, each bringing a crucial skill to what would become the SOMA Project. John and Erik brought the crazy, but two very different kinds: John the slow and methodical crazy that results in tiny 0402 components scattered across a board that would be soldered by hand, and Erik the instant-crazy that makes circuit boards round and espresso machines tremble. Thom came next, better than the CS kids in front of a keyboard and faster than the autoset button on an oscilloscope. Sean arrived, everyone's source of neverending entertainment and the only one brave enough take on the RF communication--of whatever project we would come to choose. Andrew, the SolidWorks pro and lover of laser-cut acrylic fumes, agreed to model, remodel, and cut whatever it would take to make some robots. Finally: Rachel... the fearless leader, with more crazy than John and Erik combined, braver than Sean, and the only engineer in the entire school that would agree to be the team leader of this unruly bunch. They knew they wanted to do something with robotics, but didn't know exactly what their goal would be, or just how many robots they were going to make... After whiteboards had been filled with scribbles, sketches, and countless question marks, the team decided on making a Swarm of Mapping Automatons, and the SOMA Project was born.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Sean Eves Knudsen 2. Andrew Parra 3. Erik Pasternak 4. Thom Gerdes 5. Rachel Pasetes 6. John Burr

Step 2: Theory of Operation


All of the robots in the swarm are physically and behaviorally identical. Each robot is capable of tracking its own motion, detecting and avoiding obstacles, and communicating information about its surroundings to other robots. The relative position of each robot is determined through a combination of ultrasonic and infrared transmissions. As a group, the robots are capable of creating, joining, and handling a robot leaving a network. The robots drive while collecting and sharing map data. The robots recalculate the relative position of other robots regularly to reduce mapping error. The map that the robots build takes the form of an occupancy grid, which is built by ultrasonic ping sensor data and encoder data. Collected map data is shared with other robots and is used by each robot to determine its own path. Each robot can be seen as a system consisting of three three blocks: Map Building, Positioning, and the Control Interface. Map Building Each robot gathers obstacle data using an ultrasonic ping sensor mounted on a servo motor. The motor allows the ping sensor to gather obstacle data for 180 degrees in front of the robot. Once a reading is made, the data is stored in an occupancy grid: a data structure showing the probability of an obstacle being in space. Each cell of the grid (or pixel, in our implementation) shows the likelyhood of an obstacle being in space. As robots cover the same space, if they agree on an obstacle being in the same location the are turns darker, if they agree that the space is clear, it turns lighter. The map dynamically grows as more space is explored. The data structure is designed to be paged on and off of an SD card. Each page contains links to nearby pages and new pages are added as space is needed. The local area is stored in an external SRAM and recently unused pages are written to an SD card on each robot. Positioning The positioning system keeps track of absolute and relative position of each of the robots in the swarm. Absolute positioning uses the encoders from the iRobot Create and has board space ready to attach a digital compass and gyro for increased accuracy. Relative position is determined by measuring the time-of-flight (ToF) of ultrasounds emitted by each robot. By recording the ToF to three different points on every robot receiving the sound, each robot can triangulate the position of the robot emitting light and sound. The robot announcing its position simultaneously emits infrared light and ultrasounds; the infrared is received essentially instantaneously by every other robot and the ultrasounds travel much slower, so the distance and direction of the source can easily be determined. Control Interface The control interface oversees the operation of all the systems on each robot and is the main artificial intelligence of the robot. The control interface is also responsible for the maintenance of the swarm network and all RF communication. The artificial intelligence is responsible for creating the swarm as robots appear and maintaining the network as a map is built. The rest of the AI is devoted to obstacle avoidance and can be adapted to optimize coverage of a space. Complete information on the design and construction of the entire project can be found in our Final Report .

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Go robots, go! Our four robots exploring the lab. 2. Arthur C. Clark is leading the pack. 3. Asimov is next. 4. Huxley is following. 5. And in the back is Marvin, the prototype. He's a sad robot.

Image Notes 1. Example occupancy grid of what an explored room might look like.

Step 3: Bill of Materials - Hardware


There are four files attached. These provide the electronics bill of materials (BoM), a board house ready zip file, and all the schematics and layouts used in this project. hardwarebom is the bill of materials. layout.zip are the five files needed to send into a board house to have the circuit boards printed. Layouts.zip contains all the layout files and a few of the schematics. Schematics.zip contains the rest of the schematics used in the project. You will need both the schematics and the layouts to help with assembling the boards. Some other materials necessary for the creation of the robots include a soldering iron, solder, wire, a small knife, flux, tweezers, a microscope, a multimeter, an oscilloscope, a signal generator, a 40 ohm 1W power resistor for testing purposes, and an ISP Programmer for Atmel microcontrollers. It is possible to build these robots without some of this equipment, but much, much more difficult.

File Downloads

HardwareBillOfMaterials.xls (81 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'HardwareBillOfMaterials.xls']

http://www.instructables.com/id/Hacking-Your-iRobot/

layout.zip (271 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'layout.zip']

Schematics.zip (7 MB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Schematics.zip']

Layouts.zip (4 MB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Layouts.zip']

Step 4: Bill of Materials - Mechanical


Attached is the mechanical bill of materials. For this project, we had access to a 30W laser cutter, able to give us precise cuts through 1/4"acrylic. Most of the mechanical parts were ordered through McMaster-Carr. Attached is the mechanical parts list. Also attached is the complete SolidWorks folder with details of every part cut out using a laser cutter.

File Downloads

mechanicalbom.xls (16 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'mechanicalbom.xls']

Solidworks.zip (2 MB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Solidworks.zip']

Step 5: The Circuit Boards - Intro


The next series of steps are going to cover the functionality and assembly of the individual boards. This will include a description of the circuits and a suggested assembly order for the parts on each board, as well as methods for testing each board as you put them together. Since this is a relatively difficult project we will assume that the reader has some familiarity with soldering and testing equipment, such as multimeters, power supplies, and oscilloscopes. Since many of these boards have some small parts (many are surfacemount) you will want a good soldering iron with an un-abused tip to make things easier. We used a decent benchtop Weller for the big stuff, and a Metcal under a soldering station microscope for the small stuff. It is possible to do it all without the microscope, but it will make your life much easier if you have one, and you'll save your eyes.

Image Notes 1. The Control Board handles RF communications and map building. 2. The Infrared Board sends and receives infrared signals for localization between robots. 3. The Ultrasonic Board transmits ultrasonic signals and processes received ultrasonic signals. It's part of the localization system. 4. The Localization Board processing the data from the Infrared and Ultrasonic Boards to provide simple information for the Control Board. 5. The power board takes unregulated power and reduces it to 6V which can be supplied to other boards. This is to increase the power efficiency of the system.

Step 6: The Circuit Boards: Power


The power board does what its name implies. It takes a 12-17V input and provides regulated 6V power to the rest of the boards. The reason for having a power board is it allows us to use a switching regulator, which can achieve over 90% efficiency. A normal linear regulator can only achieve around 65% efficiency. Since switching regulators don't provide as stable a voltage, we go down to 6V on the power board and then use a linear regulator to drop it again to 5V when it reaches the other boards. The power board can not easily be tested as it is built, so you will need to stuff (solder the parts on) all at once. To test the power board, place the 40 Ohm power resistor across one of the 6V outputs of the power board to give it a load and give it 12-17V input. Most benchtop power supply should work for this, we'll discuss later how to use the iRobot Create(TM) battery to supply power to the additional boards. Use a multimeter to test the output, which should be within 0.2V of 6V. The included pictures are for reference when assembling the board. The picture of a completed board is to give you an idea of what it should look like finished. You'll notice we had to use some 3pin headers in a couple of the two pin header slots. This is because we ran out of parts and didn't have time to order more. Also note that there are two output ports which are not needed for this project but are there for expansions. The layout and schematic are what you'll need most to assemble the board. I've labeled all the parts on the layout to make it easier to figure out what goes where. Use the schematic for reference if you're uncertain about a part.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. This toroid makes the whole thing work through the wonderful world of inductance. 2. Our giant diode. This needs to survive a lot of power. 3. An extra 5V plug can be added here. 4. These three plugs provide 5V and ground. The three pin plug at the bottom is used because we ran out of parts and Digikey was out of stock. 5. These two outputs supply ground, 6V, and unregulated power. Only one is needed and goes to the IR Board, the other is for expansions. 6. Lots of little Rs and Cs. 7. LM25576. This is the switching regulator that steps the voltage down to 6V. 8. The power input. It's a 3 pin instead of a two pin because we ran out of connectors.

Image Notes 1. DF5 2pin header. 2. These are both 4.7uF capacitors 3. .47uF cap 4. 32.4k Resistor 5. 3900pF cap 6. 1k Resistor 7. 3.92k Resistor 8. 45.3k Resistor 9. 1nF Capacitor 10. LM25576 11. .022uF Cap 12. .008uF Cap 13. 10 Ohm resistor 14. 330pF cap 15. 40V diode 16. 100uH Toroid 17. 68uF cap 18. 18uF cap 19. DF5 2pin Headers 20. DF5 Header 21. DF5 3 pin headers

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. A soldering station microscope. It's amazing how fast you become dependent on these for small work. 2. One of our power boards in the middle of being assembled. 3. This is a friend of ours who had just graduated and didn't want to leave, so he assembled power boards for us. We were very grateful, especially since none of the boards he put together blew up.

Image Notes 1. We left this on the computer of the team member who was suppose to assemble the power boards.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 7: The Circuit Boards: IR


The Infrared (IR) Board is simply an emitter and a receiver for infrared signals. It receives 6V power, unregulated power, and ground to power the components. The two smaller plugs are the input and the output for the board. The input is a signal generated by the Localization Board that controls the output of the IR LEDs. The output is an active high signal that is sent to the Time-of-Flight Board when an IR signal is received. The first step in putting together the Infrared Board is to attach the power regulator, the capacitors for filtering power, and the power led and the resistor that goes with it. See the notes on the image for a reference of the location of these parts. The layout image has all the parts labeled. Once the regulator and power led are in place go ahead and hook up a 6V power supply and ground to the board (the middle pin on the DF5 connector is the 6V input). The LED should light up. Also check the board with a multimeter to ensure you're getting 5V from the regulator. Next, you'll want to connect the outer ring of IR LEDs, the 82 ohm resistors, the TIP122, the 4.7k Resistor, and the DF3 header that carries the transmission signal. Do a continuity check before you plug anything in, since these parts are going to draw a decent amount of current. Once you're sure everything is soldered on correctly hook up the 12-17V supply and ground. You'll also need a signal generator to test this, so if you don't have one wait until the localization board is working to test this part. To test, set your signal generator to create a 36.7kHz 0-5V square wave in bursts of 11, 10 times a second. Attach the signal generator outputs to the transmission signal input on the board. Use an oscilloscope to check the voltage across the 82 ohm resistors. You should see the same signal being dropped across the resistors. Now solder on the NAND gate chip, the other DF3 header, and the six IR Receivers (the PNA4601 parts). A basic test is to use the exact same setup as before and check the output signal. If it goes high on about the fourth edge of the 11 pulses and remains high until shortly after the 11 pulses end it's working. Once you have a second board assembled you can test distances by setting one board up to transmit and checking the output signal on the receiving board.

Image Notes 1. This inner ring is made up of Infrared Receivers that output 0V whenever a 36.7kHz signal is seen. 2. The active low (0V means on) signals from the inner ring run into this NAND gate which creates an active high signal when any of the receivers pick up a signal. 3. Here is our standard 5V regulator. 4. This TIP122 is a Darlington transistor that allows us to sink about 400mA of current when the IR LEDs are transmitting. 5. All the plugs go on the bottom of the board. 6. The outer ring is an array of IR LEDs. They're bright enough that the receivers can see them on the other side of a person 12 feet away. You can also see the light from IR LEDs if you look at it through your cell phone camera.

Image Notes 1. LM2937 TSSOP 5V Linear Regulator 2. DF5 3 pin header 3. .1uF cap 4. 10uF cap 5. .1uF cap 6. Blue LED 7. 1k Resistor 8. DF3 2pin header. This is the output signal. 9. DF3 2 pin header. This is where the transmission signal comes in. 10. TIP122 Darlington Transistor Array. This sinks the power for all the LEDs when transmitting a signal. 11. 82 Ohm resistor. These guys are having about 100mA run through them when the LEDs are on. 12. 82 Ohm Resistor 13. 82 Ohm Resistor 14. 82Ohm Resistor 15. 74HCT30 NAND gate. This turns a group of active low signals into a single active high signal. 16. The six parts around the innter circle are PNA4601 IR Receivers. They produce an active low signal when they see a 36.7kHz IR signal. 17. 4.7k Resistor 18. All around the outside are SFH4510 IR LEDs. These dump IR but only with a 14 degree half angle, which is why there are so many of them.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 8: The Circuit Boards: Time-of-Flight


The Time-of-Flight (ToF) Board is divided into two separate sections: an analog half and a digital half. The analog section receives very weak signals from the transducer. Each receiver's signal goes through two gain stages where the signal is amplified and centered between 0V and 5V. Next, each signal goes through another amplification stage for a total of 89dB, and rectified by the op-amp (which also smooths the signal when the transistors recover from saturation and cutoff). This much gain often results in the signal hitting the power rails--but that's OK--since it's only the arrival time, not the actual waveform that matters. The analog signal enters the digital domain when it passes through a comparator to turn the amplified and rectified signal into a clean 0-5V edge. The digital half of the board itself has two sections: the microcontrollers and the completely separate transmitting circuitry. After the signal crosses over to the digital side of the board from the comparator, it is combined with the IR-on signal from the IR board through an OR gate where it then goes to the input capture on the microcontrollers. The microcontrollers gather data and send it back to the Localization Board through an SPI bus. The transmit circuitry is very simple. The transducers must be driven at their resonant frequency of 24kHz for a short burst-this square wave is provided by the Localization Board. The signal is split once recieved by the ToF Board: one branch is buffered (by two sequential inverters) and the other is inverted; both then drive an RS-232 level shifter. By shifting one of the signals 180 degrees and level shifting them, the transducer is driven by +/-10V, so it sees a 20Vpp signal instead of just 5Vpp. The ToF Board is one of the most difficult to assemble. There are a lot of small parts and it's the only board that has a serious analog portion with almost 90dB of gain, which means it's more susceptible to poor solder joints and other problems. If you don't have a soldering microscope, tweezers, and a good soldering iron for this board you're in for a lot of pain (you're in for a lot of pain with them, too, just not as much). On this board, perhaps more than any other, frequent testing is worth the hassle and will save you a headache down the road. The half of the board with the copper pour on top is the analog half. Start assembly by soldering down the voltage regulator, associated capacitors, and the power LED and current limiting resistor. Continue assembly with the LMV358 dual op-amps and the surrounding resistors and capacitors. There are lots of tiny Rs and Cs--be careful! I found that it was easiest to solder down all the components of a specific value at a time then move to another component value. Once the first two gain stages (two stages and one channel per op-amp package) are verified to amplify and center the signal between 0V and Vcc, solder down the LMC6484 quad op-amp and surrounding Rs and Cs. Verify that this stage provides further amplification and rectifies the signal. The analog side of the board is completed by soldering down the LM339 comparator and again, all the Rs and Cs needed. Make sure to solder down all the components on the bottom side of the board and the connectors for the transducers. The other half of the board, without the copper pour on the top, is the digital half of the board. Again, start by soldering down the voltage regulator and the capacitors that go with it. Once the digital half of the board is powered, solder down the 74HC32 quad OR-gate package and the connector to the IR board, and verify that the analog signals are successfully converted to the digial logic levels. Next, solder down the 74HC04 hex inverter and the MAX232 level shifter; verify that the 0-5V input to the ToF board is successfully shifted to +/-10V to drive the ultrasonic transmitter. All that remains are the clock and the three ATTiny44 microcontrollers. Start with the clock, making sure all pads have strong electrical connections. Solder down the three ATtiny44 microcontrollers. Before you can verify that the microcontrollers are programmable, you must attach all the headers, the pull-up resistor on the reset, and the big red reset button. Once the headers are all attached, erase and set the fuses on the ATtiny44 microcontrollers.

Image Notes 1. This comparator turns the analog signal into a digital signal so that it can be processed by the digital half of the board. 2. These are dual op-amp packages that provide the first two gain stages for the received ultrasonic signals. They also center the signal between 0V and 5V. 3. These three plugs connect to the receiving transducers. 4. Each of these ATTinys is responsible for processing the output of one ultrasonic receiver. They're all on a SPI bus that is controlled by the Localization Board. 5. This half of the board is analogue.

http://www.instructables.com/id/Hacking-Your-iRobot/

6. This half of the board is digital. 7. This is the plug for the programmer connector. 8. This op-amp rectifies, smooths, and amplifies the received signals for a total gain of almost 90dB. 9. Connection to localization board. 10. Inverter shifts the signal that drives the emitting transducer 180 degrees. 11. RS-232 level shifter drives the emitting transducer at 20Vpp. 12. Connector to ultrasonic transmitter. 13. Connector to IR board. 14. OR gate combines comparator output and signal from IR board.

Image Notes 1. There are many many many many small parts on this board. Do not attempt it without the schematic design and layout files.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 9: The Circuit Boards: Control


The control board is responsible for the high level operation of the robot and for building the map. It communicates with the other robots using a Wi.232 wireless module. It communicates with the Localization Board over an SPI port. There is also a UART 10 pin connector for debugging on the PC. The board controls the ping sensor and the servo it's mounted on. Using data collected from the ping sensor and the Localization Board the Control Board builds a map and decides where it should go next. As before, start by soldering on the regulators, associated caps, and the power LED. Soldering down all three regulators at the same time is fine, but if you want to be extra careful you can test them individually. Once they're down, use a multimeter to make sure their outputs work correctly. The next step is to solder down the ATMega1281, the SRAM, and all the parts that go with those (the clock, caps, reset circuit, SRAM, etc.). Test the clock signal with an oscilloscope and then make sure the microcontroller can be programmed (see the programming section for how to do this). Finally solder on everything else. Test for shorts to make sure nothing will blow up and this board is finished until the programming and debugging phase.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. This is an RF Module, provided to us by Radiotronix. It acts as a transparent UART for our robots, allowing them to communicate with each other and with a PC. 2. Once again, here is our friend the 3pin DF5 standing in for a 2pin header. I'm still not sure where all our 2pin headers disappeared to. 3. The SD card is designed to store the majority of the map data so that the microcontroller only needs to keep the most relevant data in memory. 4. These parts provide a separate 5V regulated power to the servo motor that moves the Ping sensor. 5. This is the brain of the Control Board, an ATMega1281. It does the high level processing and the map building for the robots. 6. This chip is a level converter. SD cards run at 3.3V typically, while the rest of our system is running at 5V. 7. This is an external RAM chip to provide extra space for the microcontroller. 8. And this is an asynchronous latch. It allows the data bus to be multiplexed with half of the address bus. 9. These voltage regulators provide a 5V and 3V supply for the board. 10. An RS232 chip allows the board to talk to a PC without using the wireless card. 11. This is the SPI connector that connects to the Localization Board. 12. This is a standard 10 pin UART connection for interfacing with a PC. 13. The giant red button is the reset. My team told me to find a cheaper button, so I also found a ridiculously big button. I think I made the right choice. 14. This plug is for the programmer connector. 15. This port is the power and interface for the Ping sensor.

Image Notes 1. This is the giant, red reset button. 2. A 10uF and a 1uF cap go under the microcontroller to prevent any fluctuations on the power for the chip. 3. A second pair of 1uF and 10uF caps on the second set of input pins. 4. The ATMega1281 goes here. 5. 100 Ohm resistor 6. 1uF cap. 7. 47k Resistor 8. Radiotronix Wi.232 daughter board. You can solder these down directly, but it's advised that you put machine pin headers in these holes so that the Wi.232 can be removed easily. 9. LM2927 5V Linear Regulator. 10. CY7C109 SRAM 11. HB573 Transparent Latch 12. .1uF Cap 13. .1uF Cap 14. Blue Power LED 15. 1k Resistor 16. 2pin DF5 Header 17. 5V testing header 18. Gnd testing header 19. .1uF Cap 20. 6V testing header 21. 10uF and .1uF caps 22. .1uF Cap 23. L4931 3.3V Linear Regulator 24. 10uF and .1uF caps 25. 3.3V testing header 26. CTS16CB 16MHz External Clock 27. .1uF 28. LM2937 5V Linear Regulator 29. 10uF and .1uF Caps 30. .1uF Cap 31. .1uF Cap 32. YE08 5V to 3.3V level shifter 33. 1x3 Stake Header 34. 2x3 stake header 35. SD Card Socket 36. RS232 37. Surrounding caps are all .1uF 38. 2x5 Stake Header 39. 2x3 Stake Header 40. 1x7 Stake Header 41. 4.7k Resistor on the bottom of the board 42. .1uF Cap

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 10: The Circuit Boards: Localization Board


The Localization Board itself is relatively simple to assemble, but it handles a lot of things. The Localization Board is responsible for gathering data from many of the sensors, including sensors on the iRobot Create. The Localization Board also sends instructions to the Create using one of its USARTs. The main task of the Localization Board is to keep track of the robots' current position as well as the position of other robots. The Localization Board works by controlling the Infrared and Time-of-Flight Boards, which are used to calculate the relative position of the different robots. The Localization Board generates a 24kHz signal for the ToF Board and a 36.7kHz signal for the IR Board. The signals last for about a dozen cycles, and are only emitted by one robot at a time. The other robots receive those signals, and because light travels around six orders of magnitude faster than sound, the ToF Board is able to time the difference between an IR signal arriving and an ultrasonic signal arriving at three different points on the robot. For a more in depth discussion of this method see the formal report (which includes pretty equations for how to calculate the distance and position of transmitting robots). Another thing to note is that the Localization Board has space for a digital compass and a gyroscope. These were designed for and would have allowed more precise positioning, but due to time constraints were left off the final version. To assemble the Localization Board, start with the 5V regulator, surrounding caps, and the power LED parts. Test the output of the regulator as in previous steps by making sure the LED comes on and that the output remains steady at 5V. Once this is working go ahead and assemble the rest of the board (minus the compass and gyro). Make sure there are no shorts before turning on the power, and then test the board by attempting to program the microcontroller. You're now ready for the next step.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. A digital compass and some accompanying logic were designed to go here. However, we didn't have time to write drivers for the $75 part and it was an extra feature so we decided to leave the footprint empty in our robots. 2. Another feature we designed for but didn't have time to implement is a gyro sensor, which would have gone here. Initially, we planned to use a gyro sensor that was about 1" cubed but was very cheap for academic groups. However, it was no longer being produced so we found this very small and relatively cheap replacement on DigiKey. They're incredibly hard to solder because they have no exposed pins, they're all underneath the thing. 3. The ATMega 1281. We're using all the standard communication ports on this chip, which include two USARTS and an SPI. 4. This is the plug for the programmer connector. 5. To the Control Board. 6. To the Time of Flight Board. 7. The 5V regulator. 8. To the iRobot Create. 9. The two signals. A 24kHz signal for the Time of Flight Board and a 36.7kHz signal for the IR Board. 10. Giant Red Reset Button!

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 11: Taking Apart the iRobot Create (or... ReCreating the Create)
The iRobot Create is the base of every robot in the SOMA project. We have added a shelving system of acrylic layers on which the digital and analog hardware and sensors of a SOMA robot reside. Numerous modifications were made to the Create in order to adapt it to our needs. First, most of the plastic chassis was removed except for the bump sensor. This provided us with direct access to the power supply, as well as conveniently placed mounting holes. Second, the three attached wheels were fixed in a dropped position using acrylic to provide additional clearance to allow the robot to travel over a wider range of surfaces. The three button PCB was also mounted underneath the bottom acrylic layer in order to provide an easy way to turn the Create on. Lastly, a caster wheel was added to the rear of the robot for added stability. To begin, we had to take apart the iRobot Create. To do this, unscrew every screw on the underside of the Create. This allows for removal of the top white covering. Remove the entire chassis except for the bump sensor. Even the buttons need to be removed (which requires you to unplug them from one of the Create's boards. It will be added later on the underside of the robot. The two drive wheels of the Create needed to be forced downward. This allows the robot to traverse a variety of terrain. This is done using the two wheel support pieces. Also, the front wheel needs to be kept in a downward position, using the front wheel blocker piece. This will require the removal of the front bumper, but it can be put back on. Lastly, the power from the iRobot Create needs to be tapped, and fed into the power board. The image below shows how we did it. The battery is fed into the iRobot's main board, the one that the power and play push buttons are plugged into.

Image Notes 1. Modification to feed power and ground to our own power supply 2. Power going to our hardware system

Image Notes 1. Wheel stand-off

File Downloads

Solidworks.zip (3 MB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Solidworks.zip']

Step 12: Machining the Cones


In order to turn a directional transducer into an omni-directional transducer we added cones. The purpose of the cone is to reflect emitted sound out in all directions as well as incoming sounds down into the transducer. Four cones are needed for each robot, one for the emitter and three for the receivers. This step is a suggestion on an efficient way to make these cones, which took us a little time to figure out. The first step is to make a holder for the cones. Since they have to be flush against the layer they're attached to it would not be possible to hold them in a lathe normally to make the part. This shouldn't be difficult if you have experience with a lathe. The part we used was cut from a 2" diameter aluminum cylinder, roughly 3 inches long. The only dimensions that are really important is the size and threading of the screw piece, which should be at least 1/4" long (though significantly less than 1/2", since you can't tap the entire 1/2" of the cones hole). The size should be 3/8" with 16 threads per inch (3/8"-16 for those of you who speak screw sizes). Once you have a holder the cones will be much easier to make. The first step is to start with a piece of PVC 2" in diameter and at least 2" long. Place the piece in the lathe and face off one side (make the side flat and perpendicular to the cylinder). Then, drill a hole for a 3/8" tap. This means one size smaller than 3/8", or the tap won't work. Use a 3/8"-16 tap to, well, tap the hole (a tap adds grooves to a hole so that things can be screwed into it). Now remove the cylinder from the lathe and attach it to the cone holder. Put the cone holder into the lathe so that you can work on the PVC cylinder without worrying about running into the chuck. Finally, use the angled cutting tool on the lathe to cut a 45 degree cone. Ideally, you want the slope to be as smooth as possible and end right at the 2" diameter edge of the cone, so that it looks like the mechanical drawing. If it ends up being a little smaller than 2" that's fine, too.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Holder for the cones. The lathe grips this part. 2. This part is the full 2" and allows you to set the part into the lathe to ensure that it's straight. 3. A smaller radius here gives you some clearance for machining the cones. 4. This part is just over 1/4" long and threaded. The cones are screwed on to hold them in place during machining.

Image Notes 1. The cones are cut from 2" diameter PVC. Aluminum and bronze were also tested, but there was no noticeable difference in their effectiveness. PVC was both the cheapest and the lightest. 2. This is a half inch deep threaded hole. This is how the cones are attached to the robot. 3. The cones have a 45 degree angle, providing the best deflection between the transducers and the surrounding area.

Step 13: Cutting out the Layers


There's not a lot of explanation that can go into this. We cut all the acrylic parts we used on our robots out using a laser cutter. If you have a laser cutter then it's very simple to do, simply use the included SolidWorks files, use them to make a mechanical drawing, and then use the laser cutter to 'print' them onto some 1/4" acrylic. If you don't have a laser cutter then you'll want to make a trip to your nearest machine shop where you'll spend a very large amount of time with a mill. Whatever you do, make sure to check the units before you print anything. SolidWorks will tell you whether you're in metric or imperial units.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 14: Building the Layers - Expansion


There are 5 layers in this project, each made from 1/4" acrylic. The bottom most is the expansion layer, and ours contained nothing. It was made for future expansions. It does however act as the primary structural base for all of the other layers. The SolidWorks model shows how this based is attached. For this project, we used crazy glue to attach acrylic to plastic, and acrylic cement to attach acrylic to acrylic. All of the screws used for the bases were 6-32. We bought an assortment of sizes, as the bottom layer needed to be screwed to the iRobot Create, which required 3/4" of clearance, while others were only used for board placement, and required 1/2" clearance. Attached to the underside of the expansion layer is the PCB with the old pushbuttons. This proved to be the most accessible location for our layer design. Also, a caster wheel is added to the underside of the expansion layer for further stability. This requires 4 6-32 screws. Continue adding nuts as spacers until the addition of the caster wheel makes the robot stable. A wall is placed on the expansion layer, as it provides some support for the next layer. Support for the expansion layer comes from the two side walls. These are puzzle pieced to provide access to the Creates plastic side. An acrylic "hook" piece is made, with holes in it to screw directly into the Create. The wall in the back is also puzzle pieced, and glued into the expansion layer.

Image Notes 1. The caster wheel added to the bottom of the expansion layer. 2. The original iRobot buttons, without the housing, that are attached to the bottom of the first expansion layer.

Image Notes 1. Expansion Layer 1 2. Expansion Layer 2 3. Digital Layer 4. Servo 5. Ultrasonic Layer 6. IR Layer

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. The back wall of the first expansion layer. 2. The holes for feeding the iRobot buttons under the first expansion layer.

Image Notes 1. The puzzle piece sides of the first expansion layer.

Step 15: Building the Layers - The Rest


The 2nd layer is another expansion layer. However, some wires need to be routed from it to the 3rd layer. The spacing between layers is two inches, so the two inch standoffs are needed. Brass tubing was used for wire routing. Since the second layer is the first to have standoffs, screws are placed on the bottom of the standoffs. For every screw used in this project, we accompanied it with external tooth washers for stability. The third layer is the digital layer. Small standoffs were used to hold the three boards (power, control, and localization) used on this layer. A red switch was used for power to the power module. The third layer is also the home of the servo and mounted ping sensor. The ping sensor is mounted using a custom built bracket, and crazy glued onto the servo horn. This layer does not have wire routers however, as the wires coming from the expansion layer below it needed to be routed to it, and wires from this layer need to travel upwards. The fourth layer is home of the time of flight board and the ultrasonic transducers. The time of flight board hangs upside down for short distance wires to the localization board. The ultrasonic transducers fit snugly into their cut out portions of the acrylic, and are made that way so they align perfectly with their corresponding cones above. This layer has three standoffs to the next layer, as well as wire routers. The thickest wire is the coaxial cable to the antenna on top. If you purchase a coaxial cable too thick, a larger wire routing hole may be necessary. The fifth and final layer is the home of the cones and the IR board. The cones are bolted using thick Zinc-Plated Low-Strength Hex Head Cap Screw 3/8"-16 Thread, 1/2" Length. The IR board sits on top, with a hole going through the center of it. This is so the antenna's coax cable can fit through. All of the SolidWorks files give exact dimensions of everything cut out.

Image Notes 1. The iRobot connector feeds up from the expansion layer 2. The power routed up through the expansion layers and connected to the power board. 3. The control board, localization board, and power board sit on this layer. 4. This is the third layer of our robot.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Max Sonar EZ-1 ultrasonic ping sensor 2. Parallax Standard Servo motor 3. Custom built mounting bracket for ping sensor 4. Using 6-32 3/8" screws.

Image Notes 1. 5503PT Acrolectric switch 2. Power from the iRobot 3. Power to the power board

Image Notes 1. One of the four transducers that are placed on the fourth layer. 2. One of the four cones that were milled to make the transducers omnidirectional. They screw in underneath the fifth layer. 3. The Ultrasonic Board that sits underneath the fourth layer. 4. The IR Board the sits on the fifth layer with clearance for the SMA cable.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 16: Connectors and Wiring


There are two main connections that need to be made to the iRobot Create. The first is power, which can be extracted from the iRobot battery power. This means that the iRobot must be on before turning on our system. The other connection is to the iRobot for sending driving commands and receiving odometry data. Power is connected to a power switch and then to the power board of our system. From there, the power board delivers the correct voltage to each circuit board. The power board connects to all four of the other boards using DF5 connectors. The Time-of-Flight, Control, and Localization boards all get the regulated power from the power board and the IR Board also gets unregulated power for the IR emitters. The Control Board connects to the Localization Board, the ping sensor, the servo, and the antenna. It uses a 6-wire ribbon cable for the SPI connection to the Localization Board. It used a 7-pin CST-100 connector for the ping sensor. For the antenna we used an SMA extension cable to run the antenna to the top of the robot. For the servo we used the connector that was provided on the Parallax Standard servo. The Localization Board connects to the Create with a connector that we wired. On the Localization side we used a 4-pin DF3 connector and on the iRobot side a Mini Din connector. The Localization Board also connects to the Ultrasonic Board using a 10-pin ribbon cable connector for all the Time-of-Flight/Localization connections. This includes the SPI connection and 24kHz signal. It also connects to the IR board a 26.7kHz signal using a 2-pin DF3 connector. The Ultrasonic Board connects to the IR Board and all the transducers using the 2-pin DF3 connectors.

Image Notes 1. The Localization Board connected to the power board. 2. The DF5 2-pin connector that connects the Power and Localization Board.

Image Notes 1. The DF5 3-pin connector that connects the Power and Control Board.

Image Notes 1. The orientation of the servo motor connector on the Control Board.

Image Notes 1. The CST-100 connector that connects the ping sensor and the Control Board.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. The DF3 4-pin connector that connects the iRobot and the Localization Board.

Image Notes 1. The Mini-Din connector that connects the iRobot and the Localization Board.

Image Notes 1. Serial connector that connects the Control and Localization Board.

Image Notes 1. The UMC SMA cable that connects the RF transceiver on the Control Board through the upper layers to the antenna.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. The DF3 2-pin connectors for the receiving transducers. 2. The DF3 2-pin connector for the emitting transducer. 3. The DF3 2-pin connector that connects to the IR Board.

Step 17: Programming the Boards - Setup


There are three boards that need to be programmed. The control and localization boards are home to Atmel ATmega1281 microcontrollers. The time of flight board is home to three Atmel ATtiny44 microcontrollers. Before programming the microcontrollers, the correct fuses must be set. Be careful setting these and make sure you're powering the boards off a power supply when you do so. If the wrong fuses are set or the voltage drops while they're being set it can make the microcontroller unusable. We broke at least one microcontroller by accidentally setting the wrong fuses. All Microcontroller Lock Bits: -Mode 1: No memory lock features enabled -App Protection Mode 1 -Boot loader protection mode 1 ATmega1281 Fuses: -Brown-out detection disabled -JTAG interface enabled -Bootflash section size = 4096 words -Bootstart address = $F000 -Ext. Clock; Start-up time ... + 65 ms ATtiny44 Fuses: -Brown-out detection disabled -Ext. Clock; Start-up time ... + 65 ms When programming the control or localization board, the SPI can not be plugged in. Also, when programming the localization board, the Create must be disconnected. The ToF board must be disconnected from the IR board and the the localization board during programming. There are some other tricks to the ToF board, though; read on.

http://www.instructables.com/id/Hacking-Your-iRobot/

Since the three ToF microcontrollers communicate to each other through the SPI bus that is also used to program them, only one can be connected to the programmer at a time. The clock on the SPI bus is connected to each microcontroller through a standalone jumper. Once the ToF board is completely programmed, all three jumpers need to be in place; when one of the microcontrollers is being programmed, it should have the only clock connection on the board. When completed, all the ToF microcontrollers will be slave devices on the localization board's SPI bus. For testing and debugging purposes however, one of the microcontroller's MISO and MOSI lines are connected to the bus through jumpers, so (when disconnected from the localization board, of course) that microcontroller can be a master on the SPI bus and the other two slaves. The two configurations are shown below. Remember, on the ToF Board, a jumper's long side always runs parallel to the long side of the ToF Board.

Image Notes 1. Programmer configuration for the Control Board.

Image Notes 1. Programmer Configuration for the Ultrasonic Board. 2. Jumpers for connecting bottommost microcontroller as a slave device (just like the other microcontrollers). 3. Jumpers for connecting bottommost microcontroller as a master device. The Localization Board must be disconnected!

Image Notes 1. Programmer Configuration for the Localization Board.

Step 18: Programming the Boards - Programming


To program, simply plug in the programmer and use the AVR Studio software to compile the desired project and program the flash in the appropriate microcontroller. src.zip contains the entire source directory for this project. The Control Board uses the command.aps project which has three main features: communication, motion control and token passing. It starts by first creating or joining a network and then starts the main state machine for motion control and token passing. If the robot is declared as the leader then it will take it's turn to explore. This means that it will drive and avoid obstacles and stop and do a 180 degree sweep of the area and send it's location as well as the location of obstacles around it to a PC to create a map. It then passed leadership to another robot in the swarm and the process starts over again. The Localization board uses the localize.aps project which contains the functions that talk to the iRobot and to the Ultrasonic Board. It receives odometry readings from the iRobot and localization readings from the Ultrasonic Board. It also sends the commands to the iRobot that drive the motors. Also, the Localization Board generates the 24kHz and 36.7kHz signals that drive the IR and ToF transmissions. Each of the microcontollers on the ToF board use the tof.aps project and is functionally identical. The purpose of the ToF board is straight forward: by timing the difference in arrival time of simultaneously emitted infrared light and ultrasonic sound, you can tell how far away the emitting source is. By recording the time-of-flight at three separate points on the robot, you can triangulate the position of the source. Each microcontroller uses a dedicated input capture pin to accurately time how long the infrared is visible (as a verification that it was the intended signal) then calculates the time-of-flight of the sound. This data is ready to be transferred back to the localization board upon request.

http://www.instructables.com/id/Hacking-Your-iRobot/

In addition to all the main functions we have for each microcontroller there are various test programs that can be run on the boards. Our main test program for the robots was a WASD program that basically remote controlled the robots using the transceivers that were on the robots.

File Downloads

src.zip (127 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'src.zip']

Step 19: Setting up the Swarm


In order to gather map information from the swarm, a PC is connected to a Wi.232 development board to communicate with the swarm. Connect the Wi.232 development board to a PC and install the drivers and associated software. To verify the PC can communicate with the robots, the Wi.232 evaluation software can be used. Start the program (downloadable from the bottom of this step), and go to the "chat" tab. Turn on a robot, and packeting data from the robot should appear in the chat window on the PC. To actually visualize what this data means, use the SOMA observation station program. In order to use this program, glut32.dll is required. This is easily obtainable by searching for it on google. This program displays a map of all the data the robots have gathered in a window. Each robot displays on the screen in a different color. As the robots move around, they display white areas, indicating areas they know are open space. As the robots explore, these lines will become more and more solid with more well defined edges where obstacles such as walls, tables, and other furniture are explored. Set up each of the robots in an open space all facing the same direction and spaced about two feet apart from each other. This will allow for them to start exploring without getting in each others way too much. Once all robots are set up, turn them on one at a time. After turning on the first robot, it will show up on the PC, but not move. It initially waits for there to be at least two robots before either starts exploring. Once you turn on a second robot, it will also show up on the PC, and the first robot will start exploring. It is possible to keep turning on more robots, as they will join the network and continue exploring.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. This is an example of what two robots seeing the same wall should look like.

File Downloads

observe.zip (16 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'observe.zip']

Step 20: Conclusion


So that's it. The four robots you've seen and grown to love (or hate?) over these last 20 steps are the result of locking six engineers in a room without windows for six months. We somehow retained our sanity... or at least didn't go too much further over the edge. Thanks to everyone who helped us during the project and especially to J.J. Garcia, who funded our work, and to iRobot, who gave us three of our Creates and made our project possible. 2000 engineering hours and this is what we have to show for it... This video is the conclusion and demonstration from one of our final presentations. The robots are seen to swarm; passing leadership to one another, sweeping their ping sensors, and updating the map on the overhead display.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Oreos eaten by Rachel: 77. Hours spent in lab: 1,971. Cost of 4 robots: $3,820. A room full of engineers drinking 99 bottles of beer: priceless... well, kinda... $817. 2. Helper Willis isn't helping any more.

Related Instructables

The PrintBot by iRover: TeamEasyEnough Remotely How to enter the controlled iRobot Create iRobot Create Challenge by (or Roomba) by jeffreyf techgeek75

iRobot Create Death Machine by Weissensteinburg

Voice Controlled iRobot Create by phroseph

How to fit in at How to enter the UC Santa Cruz iRobot Create by jgriffou Scholarship mini-contest by jeffreyf

Make a Wooden Soma Cube by petercd

http://www.instructables.com/id/Hacking-Your-iRobot/

OLPC Telepresence
by damonkohler on September 9, 2007

Intro: OLPC Telepresence


Updates! This is an ongoing project. I will be updating this instructable, but my blog is updated more frequently. One Laptop per Child (OLPC) is a new, non-profit association dedicated to research to develop a $100 laptop, a technology that could revolutionize how we educate the world's children. This instructable shows how to couple an OLPC with an iRobot Create to create a telepresence robot. Using a simple web interface, users can drive the Create, monitor its sensor readings, and explore the world across the internet through the attached OLPC's webcam and microphone. Materials: OLPC iRobot Create (includes Create serial cable) USB-to-serial adapter Stick on velcro or duct tape Optional materials: 2 Female/Male Kyosho Battery Connector pairs 25 Pin Male Solder Cup DB25 Connector Solder Electrical tape or heat shrink Optional tools: Soldering iron Volt meter Wire cutters Wire strippers Hair dryer (if using heat shrink)

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. USB and power plugs. 2. Cables fed through handle.

Step 1: Connect the USB-to-serial Adapter and the Create Serial Adapter
Connect the USB-to-serial adapter to the Create's serial adapter.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 2: Optional: Power the OLPC from the Create


This step allows both the OLPC and the Create to charge together. First, prepare the DB25 connector. 1. Take a female Kyosho connector and strip about 0.25 inches of insulation from the tips of both wires. 2. Twist and tin the strands. 3. Cut two small pieces of heat shrink and slide one on to each wire. 4. Solder the red cable to pin 11 of the DB25 connector. 3. Solder the black cable to pin 25 of the DB25 connector. 4. Slide the heat shrink down to cover the pins and use the hair dryer to shrink it. Next, prepare the OLPC power connector. 1. Cut the OLPC power cable in half with wire cutters. Be sure you can remember the orientation of the two cables (positive and negative). 2. Strip about 0.25 inches of insulation from both cut ends. 3. Separate the two cables on both ends approximately 1 inch down the cable. 4. To determine which wire is the ground, use a volt meter set to check continuity or measure resistence. Place one probe on the outside of the barrel plug and place the other on one wire. If the meter indicates resistance or continuity, you have selected the ground wire. 5. Strip about 0.25 inches of insulation from a male Kyosho adapter. 6. Cut two short pieces of heat shrink and slide one over each cable of the Kyosho adapter. 7. Solder the black Kyosho adpater wire to the ground wire of the OLPC's barrel plug. 8. Solder the red Kyosho adapter wire to the positive wire of the OLPC's barrel plug. 9. Slide the heat shrink over your solder joints and use the hair dryer to shrink it. Finally, solder and heat shrink another female Kyosho adapter to the other half of the power adapter.

Image Notes 1. Male Kyosho adapter with lock. 2. Female Kyosho adapter with tab.

Image Notes 1. Solder red wire here. 2. Solder black wire here.

Image Notes 1. Pins 25 and 11 of the DB25 adapter provide power from the Create.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Barrel plug. 2. Male Kyosho adapter.

Image Notes 1. This symbol indicates which part of the barrel plug is positive. Since the + sign is on the left, the inside of the plug is positive and the outside is the ground.

Image Notes 1. The DB25 connector provides access to the Create's 1.5 amps at 14.4 volts. 2. Female Kyosho adapter.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Use the second pair of Kyosho battery adapters to attach the original power adapter.

Step 3: Attach the OLPC and Cables


The OLPC fits nicely on top of the Create. Use stick on velcro or duct tape to attach the OLPC to the Create so that it won't slide off during operation. Attach all cables to the create and neatly wrap them up in the cargo bay. Leave a little slack on the ends of the serial, power, and USB cables to feed through the handle of the OLPC. Then stick the OLPC on top of the Create. Open the OLPC lid and twist it so it's facing forward. You can now plug in the OLPC power cable and the USB-to-serial adapter USB plug.

Image Notes 1. Velcro pads.

Image Notes 1. Velcro pads.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. DB25 connector for power (optional). 2. Kyosho battery adapters for power (optional).

Image Notes 1. OLPC power cable (optional). 2. Create serial adapter. 3. USB plug for USB-to-serial adapter.

Image Notes 1. USB and power plugs. 2. Cables fed through handle.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 4: Install Telepresence Software


The first step is to download and install the required software. PyRobot is a Python library for controlling iRobot's Roomba or Create. It was developed for this instructable and includes modules for accessing the OLPC's webcam and microphone and for serving a web interface to control the Create over the internet. PySerial web.py MochiKit simplejson All of these dependencies are wrapped up with releases . To install the current PyRobot release, either SSH in to the OLPC or open the developer console.
root@olpc$ wget http://pyrobot.googlecode.com/files/pyrobot-alpha1.tgzroot@olpc$ tar zxvf pyrobot-alpha1.tgz

If you'd like to work from the development version, you will have to install the required dependencies yourself. The picture below is a screenshot of the web interface.

Image Notes 1. Commands are sent asynchronously, the UI page never reloads. 2. Users can see the world through the OLPC's webcam. The image is updated asynchronously every few seconds. 3. Users can listen to the environment through 10 seconds clips of sound captured continuously by the OLPC's microphone. 4. All available sensor data is displayed and updated asynchronously every few seconds.

Step 5: Start the Web Server


To start the webserver, either SSH in to the OLPC or open the developer console. Then run web_ui.py in the pyrobot directory.
root@olpc$ cd pyrobotroot@olpc$ python web_ui.py host:port

'host:port' should be the IP address of the OLPC and the port you would like to run the web server on. Root permissions are required to access the serial port. To view the interface and control the Create, point your web browser to http://host:port.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. TODO(damonkohler): Insert lolcat caption here.

Related Instructables

How to contribute educational content to the OLPC $100 laptop by ewilhelm

How to enter the iRobot Create Challenge by jeffreyf

How to get started with python. by octopuscabbage

How to enter the iRobot Create Scholarship mini-contest by jeffreyf

PyS60: Remote (via bluetooth) Python console to your Nokia phone (Mac OSX 10.4 Tiger) by notpeter

Steampunked XO OLPC laptop (Photos) by wendyknit

iRobot Create Death Machine by Weissensteinburg

iRover: Remotely controlled iRobot Create (or Roomba) by techgeek75

http://www.instructables.com/id/Hacking-Your-iRobot/

How to make an autonomous basketball playing robot using an iRobot Create as a base
by Matthew Oelke on August 27, 2007

Intro: How to make an autonomous basketball playing robot using an iRobot Create as a base
This is my entry for the iRobot Create challenge. The hardest part of this whole process for me was deciding what the robot was going to do. I wanted to demonstrate the cool features of the Create, while also adding in some robo flair. All of my ideas seemed to either fall in the category of boring but useful, or cool and impractical. In the end cool and impractical won out and the basketball playing robot was born. After some thought I realized that could be practical. Suppose that you use orange paper, and that all of your trash cans have green backboards...

Image Notes 1. Gameboy Advance and XBC. The brains of this operation. 2. Camera for color tracking 3. Sony rangefinder for sensing the ball

Step 1: Aquire parts


Because of the time limit of the contest, most of the parts I used were "off the shelf". "Stock" Robot Parts Used: Create (x1) -- from iRobot www.irobot.com XBC V.3.0 (x1) -- from Botball www.botball.org Create-Roomba cable (x1) -- from Botball www.botball.org Servo (x2) -- from Botball www.botball.org Sharp rangefinder (x1) -- from Botball www.botball.org Assorted LEGO bricks -- from LEGO www.lego.com 6-32 machine screws (x4) -- from McMaster www.mcmaster.com "Created" Robot Parts Used: 3/8" thick extruded PVC sheet -- this stuff is awesome, but I can't remember where I got it from, but it is just like this stuff http://www.lynxmotion.com/Category.aspx?CategoryID=62 Other parts: Orange "POOF" ball -- from WalMart Basketball goal looking trash can -- from Lowes Green "backboard" -- extra PVC painted bright green

Step 2: Create the unique part


The only part that I had to fabricate was a plate that bolted to the Create and offered LEGO spacing. The spacing of the LEGO brick holes is 8mm apart, but I did a double spacing to save time. The extruded PVC is a breeze to work with. It can be cut with a utility knife, but is rigid and strong. I often pick up the robot by this plate and I have not had a problem yet. Step 1: Cut the sheet to 3.5" x 9.5", you can cut this with a utility knife. Step 2: Drill the holes for the create screws. The create screws make a box that is 2 and 5/8" by 8 and 5/8". Step 3: Drill the LEGO brick spaced holes. Use a 3/16" drill bit and I spaced the holes 16mm apart. Tip: I laid out the sheet in a CAD program, printed it out full size and taped it to the sheet. Then I used this as a guide for cutting and drilling.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 3: Assembling the Robot


I enjoy building things as simply as possible, that way when they jump off of the table you don't have to rebuild as much! 1. Screw the newly fashioned plate to the top of the Create 2. Build an arm to grab the ball 3. Build an arm to hold the camera 4. Build a mount for the rangefinder 5. Mount the XBC and connect all of the cables

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 4: Programming the robot


I decided to use the XBC as my controller mainly because of its built in color tracking. Because I decided to with the XBC as the brains of the operation I programmed my robot in Interactive C, or as I call it IC. IC is free to use and can be downloaded at www.botball.org. IC is very similar to C++, but has several built in libraries. As it turns out, David Miller from the University of Oklahoma has written a library for the Create which can be downloaded from his page at http://i-borg.engr.ou.edu/~dmiller/create/. With those resources and the manuals for the create I was ready to program. But the next big challenge was what did I want it to do? I wanted a robot that could go and pick up orange balls and score them in a basket. My goal sounded simple, and probably could have been simple, but the more I got into what the Create could do, the more i wanted it to do. My final list looked like this: 1. Find orange ball 2. Pick up orange ball 3. Locate basket 4. Put ball in basket While 1. Avoiding objects 2. Not falling off anything(like a table) 3. Detecting the charge of the battery and docking with the home base when low Oh, and all of this is completely autonomous, meaning that it is all preprogrammed.

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 5: Code
It may be messy, but it works. #use "createlib.ic" #use "xbccamlib.ic" #define cam 0//camera servo port #define arm 3//arm servo port #define et (analog(0))//et port /*The create cable also needs to be plugged in. The power jack, the 3 pronged plug into port 8 and the one labeled U X into JP 28 (next to the USB port) with the U towards the camera*/ #define c_down 5//camera servo down #define a_down 17//arm servo down #define hold 50//servo hold ball #define caught 27//arm servo position to keep from getting caught on table #define shoot 150//servo throw ball #define track_c 25//camera servo track close position #define track_f 45//camera servo track far position #define center 120//center of camera vision #define inrange 30//track_y coordinate when ball is in claw #define ball 0//channel of orange ball #define ball_x (track_x(ball,0))//x coordinate of ball #define ball_y (track_y(ball,0))//y coordinate of ball #define slow 100//speed of slow motor #define fast 175//speed of fast motor #define clear 0.2//sleep to back away from obstacles #define time 0.5 //1.0 is a 90 degree right turn #define rest 0.05//time to sleep while tracking blobs #define speeda 175//speed of avoid turn #define back_s -200//speed to back away from bumped object #define straight 32767//drive in a straight line #define backb 2//channel of backboard main color #define square 1//channel of backboard accent color #define track_d 250//camera position for tracking goal #define track_find 70//camera position for long tracking #define reverse 2.25//sleep time for a 180 #define back_f -150//back fast speed #define back_sl -125//back slow speed #define center_x 178//true x center of cam #define center_y 146//true y center of cam int pida;//avoid process int pidb;//track process int pidc;//score process int have_ball = 0;//tells which function we are in void main(){ long ch; enable_servos();//enable servos init_camera();//start camera cconnect();//connect to create with full controll start_a();//start avoid function start_b();//start ball_tracking function while(1){ if(r_button()||gc_ldrop||gc_rdrop){//if picked up or r shoulder button kill(pida); kill(pidb); kill(pidc); disable_servos(); disconnect(); break;} create_battery_charge(); display_clear(); printf("charge = %l\n", gc_battery_charge); if(gc_battery_charge<1200l||b_button()){ kill(pida); kill(pidb); kill(pidc); throw(); have_ball=0; create_demo(1); while(b_button()); while(gc_battery_charge<2800l&&!b_button()){ create_battery_charge(); display_clear(); printf("charge = %l\n", gc_battery_charge);

http://www.instructables.com/id/Hacking-Your-iRobot/

sleep(1.0);} cconnect(); back(); sleep(2.0); start_a(); start_b();} } } void avoid(){ while(1){//repeat forever create_sensor_update();//update all sensor values //create_drive (speeda,straight); if(gc_lbump==1){//left bump avoid_right();}//turns right to avoid else if(gc_rbump==1){//right bump avoid_left();}//turns left to avoid else if(gc_lfcliff==1){//left front cliff avoid_right();} else if(gc_rfcliff==1){//right front cliff avoid_left();} else if(gc_lcliff==1){//left cliff avoid_right();} else if(gc_rcliff==1){//right cliff avoid_left();} } } void track_ball(){ kill(pidc); while(!have_ball){//repeat until get ball track_update(); far();//sets the camera ready();//sets the arm while(et<255){//until max value happens when ball is caught track_update();//update camera picture if(ball_x<=(center-5)){//if the ball is left track_update(); create_drive_direct(slow,fast);//turn left sleep(rest);} else if(ball_x>=(center+5)){//if the ball is right track_update(); create_drive_direct(fast,slow);// turn right sleep(rest);} else if(ball_x<(center+5)&&ball_x>(center-5)){// if the ball is centered track_update(); create_drive_straight(fast);//go straight sleep(rest);} } grab();//grab ball beep();//make noise stop();//stop driving have_ball=1;//make a note that I have ball } start_c();//find the basket sleep(1.0);//sleep so that I'm not doing anything when I get killed } void find_basket(){ kill(pidb);//kill ball tracking process find();//put camera up track_set_minarea(1000);//the backboard is large, so only look for large blobs while (have_ball){//while I have the ball track_update(); while(track_x(backb,0)<=(center_x-20)||track_x(backb,0)>=(center_x+20)){//while not centered track_update(); if(track_x(backb,0)>=(center_x+20)){//if the backboard is left track_update(); create_spin_CCW(100);}//turn left else if(track_x(backb,0)<=(center_x-20)){//if the backboard is right

http://www.instructables.com/id/Hacking-Your-iRobot/

track_update(); create_spin_CW(300-center_x);}// turn right slowing as the center approaches } stop(); while(track_size(backb,0)<=(6000)){//while the target is less than 6000 pixels in size track_update(); if(track_x(backb,0)<=(center_x-5)){//if the target is left track_update(); create_drive_direct(slow,fast);//turn left sleep(rest);} else if(track_x(backb,0)>=(center_x+5)){//if the target is right track_update(); create_drive_direct(fast,slow);// turn right sleep(rest);} else if(track_x(backb,0)<(center+5)&&track_x(backb,0)>(center_x-5)){// if the target is centered track_update(); create_drive_straight(fast);//go straight sleep(rest);} } stop(); //create_drive_straight(fast);// get a little bit closer //sleep(1.0); //stop(); sleep(1.0); create_spin_CW(speeda);//spin right sleep(reverse);//sleep long enough for a 180 turn stop(); down();//put camera down to track backboard sleep(1.0); track_set_minarea(200);//use a smaller min size, since we are pointed at it and going to get closer while(track_y(backb,0)>=(center_y-140)){//while the target is less than the y coordinate track_update(); if(track_x(backb,0)<=(center_x-5)){//if the target is left track_update(); back_right();//turn left sleep(rest);} else if(track_x(backb,0)>=(center_x+5)){//if the target is right track_update(); back_left();// turn right sleep(rest);} else if(track_x(backb,0)<(center+5)&&track_x(backb,0)>(center_x-5)){// if the target is centered track_update(); back();//go straight sleep(rest);} } stop(); beep(); throw();//shoot sleep(1.0); have_ball=0;//reminder I threw ball and don't have it } start_b();//back to ball tracking sleep(1.0);//don't do anything until this process dies } void cconnect(){ create_connect(); create_full();//for full controll of ledge sensors create_power_led(0,255);}//green power led void disconnect(){ stop();//stop moving create_disconnect();} void back_away(){ back(); sleep(clear); stop();} void rotate_l(){ create_spin_CCW(speeda); sleep(time); stop();} void rotate_r(){ create_spin_CW(speeda); sleep(time); stop();}

http://www.instructables.com/id/Hacking-Your-iRobot/

void stop(){ create_drive(0,straight);} void back(){ create_drive(back_s,straight);} void ready(){ set_servo_position(arm, a_down);} void check(){ set_servo_position(cam, track_c);} void far(){ set_servo_position(cam, track_f);} void ledge(){ set_servo_position(arm, caught);} void throw(){ int a; for(a=50; a>=30; a-=1){//get ready set_servo_position(arm, a);} set_servo_position(arm, shoot);} void grab(){ int a; for(a=0; a<=hold; a+=1){//raise the arm smoothly set_servo_position(arm, a);}} void down(){ set_servo_position(cam, track_d);} void find(){ set_servo_position(cam, track_find);} void start_a(){ pida = start_process(avoid());} void start_b(){ pidb = start_process(track_ball());} void start_c(){ pidc = start_process(find_basket());} void kill(int pid){ CREATE_BUSY;//wait for current create process to finish, and take priority kill_process(pid); CREATE_FREE;//i'm done stop();} void avoid_left(){ kill(pidb);//stop everything else kill(pidc); ledge();//pick up claw so it does not get caught on the table back_away();//back away rotate_l();//rotate away from obstacle ready();//put claw back down if(have_ball){//if i have the ball start_c();}//start goal tracking else if(!have_ball){//if i don't have the ball start_b();}//start ball tracking } void avoid_right(){ kill(pidb); kill(pidc); ledge(); back_away(); rotate_r(); ready(); if(have_ball){ start_c();} else if(!have_ball){ start_b();} } void back_left(){ create_drive_direct(back_f,back_sl);} void back_right(){ create_drive_direct(back_sl,back_f);}

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 6: Was it worth it?


The costs were: Create + battery+ doc = $260 XBC starter kit (xbc, cam, LEGO bricks, sensors) = $579 PVC + paint + screws = about $20 Total cost = $859 I already had the XBC starter kit from Botball, so the cost to me was the cost of the Create. I think that it was worth it, and the best part is that all of the parts I used are reusable, if I could bring myself to part out this bot. This video shows the avoid sub routine, on a table top.

This video shows the robot scoring 5 orange balls in a goal. I only assisted to speed the process along, it would have found ball 5 eventually on it's own.

Step 7: Conclusion
The final result is a robot that can pick up and score orange balls in a goal all on its own. I loved working on this project. The more I worked on this robot the more attached I became to it. I now talk to it as if it were a pet. I hope that this has helped you on your next project. There are lots of people that I need to thank, but there are too many. Like Bernard of Chartres so elegantly stated: "we are like dwarfs on the shoulders of giants, so that we can see more than they, and things at a greater distance, not by virtue of any sharpness on sight on our part, or any physical distinction, but because we are carried high and raised up by their giant size."

Related Instructables

A simple robot mechanism (video) by tilmen

Self-Learning Rock - Paper Scissors Robot from Lego Mindstorms NXT! by prrgg14935

A robot i built for 2008 World Robot Olympiad open category (Photos) by michaelgohjs

Robowars, KMB Combat Robot (Photos) by howtowithmanish

Make a scary scarab robot by How to enter the djsures iRobot Create Challenge by jeffreyf

ROBOTIC ARM with USB PC Interface (plus how to assemble) (video) by theseventhsage

Robot parts on the cheap (video) by mrmusty

http://www.instructables.com/id/Hacking-Your-iRobot/

iRobot Virtual Wall Top Button


by jkster107 on June 8, 2008

Intro: IRobot Virtual Wall Top Button


So I'm annoyed that the big button looking thing on the top of the iRobot Virtual Wall is not the power button. It looks like it should be, but it's just not. So I've got to go in and add a switch to the top of the virtual wall.

Image Notes 1. Power Button 2. Not a power button

Step 1: Remove the top half


Get the gray lid off, and take all four of the screws out from the top. Once the screws are out (keep them organized: they are different sizes), the white shell will slide off the battery casing and electronics. Watch that you don't catch the power cables which inexplicably cross the circuit board. Already at this point, I've found a number of unusual design decisions that I'm really hoping won't show up in the Roomba itself.

Image Notes 1. Stupid not power button

http://www.instructables.com/id/Hacking-Your-iRobot/

Step 2: Exploring Time!


The circuit board can pull off the bosses, but be careful, because those stupid power cables cross over the board trying to lock it in place. As you can see in the second picture, you could also pull off the power button and range switch sub-board. I do like that they went ahead and put the mini-plug between the sub- and main- board. It makes playing with the board and measuring the component values much easier. I'm hoping to later take the component values and find out how to make one of these for myself.

Image Notes 1. Power switch and power level sub-board 2. Clever mini plug

Image Notes 1. Surely this has many more components than are necessary to get one of these to work

Image Notes 1. uhh... this looks like the whim of a rouge engineer

Step 3: Serious Business Time


Alright. Enough exploring. I tried to find one of the cool little foil momentary switches that the virtual wall uses as a power button, but failed. I did find these at Radio Shack, even though it's monstrous and ugly. Second picture shows the stuff I gathered: -Mini SPST Momentary push switch -heat shrink tubing -electrical tape -light gauge braided wiring -wire strippers -needle nose -sharp knife

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. Make sure that it's push to connect the terminals, not push to disconnect

Image Notes 1. I need a real hobby bench... the dining room table just doesn't cut it.

Step 4: Dremel
Cut out the top cap and the virtual wall cover itself to the size of the switch. I found that my switch was too long to fasten between the virtual wall cover and the circuit boards, so if I want to fasten the nut onto anything, it will have to be the top cap. I love this bit for my Dremel. It cuts really clean holes in the plastic items that I've messed with before. Just don't poke it into your hand, because that really hurts.

Image Notes 1. What a great dremel bit

Image Notes 1. test fit 2. Tab of wife's lipstick or even chapstick on the top of the switch gives a good mark to show where to drill on the cap piece.

Step 5: Wiring
So I guess that you're really supposed to use some solder to ensure a good connection, especially for the momentary switch, but I'm not nearly that fancy. Maybe later. Cut into the power button's lines (white/black) and tap your new button in parallel with the first. Make sure your new lines are long enough to get the cover back over top of the wall, but not so long as to bunch up or pinch when the cover is in place. I used a spot of packing tape to keep those previously mentioned board crossing lines out of the way of catching on the switch terminals.

http://www.instructables.com/id/Hacking-Your-iRobot/

Image Notes 1. That's as professional as this guy gets.

Image Notes 1. What I said on the first picture on this step 2. Terminals of the switch are bent sideways to provide for adequate clearance against the circuit board

Step 6: Sweet, it worked.


Yeah, so it's nothing special for anyone who's got even minor instructable experience, but even the simplest of modifications can make an item much better. I went ahead and put the fastening nut on top of the cap as it made everything much more stable and even added a not-too-bad trim look. Now I can turn the wall on and off with the toe of my shoe, a long stick, or whatever comes to hand. The switch seems to have a good level of responsiveness and I haven't noticed any problems with the function of the wall.

Image Notes 1. Yes, the light is on.

Image Notes 1. Nut secures the switch to the cap and prevents undesirable wobbling, conceals unsightly drilling mistake, and provides that "I did that myself" look to the project 2. I broke a couple of these trying to trim down the total height... it does not work, don't waste your time.

Related Instructables

eyeRobot - The Robotic White Cane by shrimpy

Bluetooth your iRobot Roomba! by djsures

Control your iRobot Create with a Palm Pilot by Hungry_Myst

Roomba avoids black color pattern on rugs by doityurownself

Web-controlled Twittering How to enter the Roomba by matchlighter iRobot Create Challenge by jeffreyf

How to Clean the Front Wheel of a Roomba Discovery by ewilhelm

Belvedere - A Butler Robot by wolffan

http://www.instructables.com/id/Hacking-Your-iRobot/

http://www.instructables.com/id/Hacking-Your-iRobot/

You might also like