Hacking Your Irobot
Hacking Your Irobot
"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/
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
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.
http://www.instructables.com/id/Hacking-Your-iRobot/
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.
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.
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.
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
iRobot Create iRobot Create: Death Machine WiFi Optimizer by by vector023 Weissensteinburg
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
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
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
http://www.instructables.com/id/Hacking-Your-iRobot/
Image Notes 1. serial cable to serial port 2. servo cable 3. Sharp IR cable
http://www.instructables.com/id/Hacking-Your-iRobot/
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/
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/
http://www.instructables.com/id/Hacking-Your-iRobot/
Image Notes 1. A printed out map, showing locations of obstacles, the goal, the robot, and the planned out path.
Related Instructables
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
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?
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. 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
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
http://www.instructables.com/id/Hacking-Your-iRobot/
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. :)
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/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
Related Instructables
DIY Mod an Omnibot 80's Robot with Voice, Camera, Servos, Bluetooth by djsures
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).
http://www.instructables.com/id/Hacking-Your-iRobot/
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/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
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.
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']
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/
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
http://www.instructables.com/id/Hacking-Your-iRobot/
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.
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
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
Related Instructables
Web-controlled Twittering Roomba by How to enter the matchlighter iRobot Create Challenge by jeffreyf
http://www.instructables.com/id/Hacking-Your-iRobot/
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/
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
Sparky Jr. - DIY Telepresence Robot by sparkyrust Belvedere - A Butler Robot by wolffan
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
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/
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
http://www.instructables.com/id/Hacking-Your-iRobot/
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)
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
iRover: Remotely How to enter the controlled iRobot Create iRobot Create Challenge by (or Roomba) by jeffreyf techgeek75
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/
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
http://www.instructables.com/id/Hacking-Your-iRobot/
7. relay
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.
http://www.instructables.com/id/Hacking-Your-iRobot/
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. 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. 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
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. 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/
Image Notes 1. this is where the size of the white space is shown
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']
http://www.instructables.com/id/Hacking-Your-iRobot/
Related Instructables
http://www.instructables.com/id/Hacking-Your-iRobot/
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.
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
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.
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']
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']
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.
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/
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/
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/
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/
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
File Downloads
Solidworks.zip (3 MB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Solidworks.zip']
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.
http://www.instructables.com/id/Hacking-Your-iRobot/
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.
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/
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.
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 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!
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']
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']
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
How to fit in at How to enter the UC Santa Cruz iRobot Create by jgriffou Scholarship mini-contest by jeffreyf
http://www.instructables.com/id/Hacking-Your-iRobot/
OLPC Telepresence
by damonkohler on September 9, 2007
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/
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. 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.
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/
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.
'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/
Related Instructables
PyS60: Remote (via bluetooth) Python console to your Nokia phone (Mac OSX 10.4 Tiger) by notpeter
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
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
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/
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
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
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
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/
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
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. 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. 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
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
Web-controlled Twittering How to enter the Roomba by matchlighter iRobot Create Challenge by jeffreyf
http://www.instructables.com/id/Hacking-Your-iRobot/
http://www.instructables.com/id/Hacking-Your-iRobot/