irobot

iRobot Create The iRobot Create is a Roomba designed for hacking. Though lacking a vacuum, serial ports and a cargo bay instead allow for easy modification and control from a computer. Simple opcode instructions are translated into commands for movement, playing audio, or returning sensor data.

Contents
Getting Started Common Pitfalls Documentation Inspiration Simple Sample

Getting Started
To control the Create, you'll need to establish a serial connection with an opcode controller. This can be a computer, a bluetooth device, or a microcontroller platform like the [|Arduino]. You'll then be able to programmatically send it opcodes, which are detailed in the iRobot Open Interface. A good place to start may be with the sample code in the "Simple Sample" section below.

While you can connect via the included serial tether, the Create is then limited in mobility to the length of the wire. The better solution is to use the Bluetooth Access Module, which plugs into the Create's cargo bay port and creates a virtual serial connection over Bluetooth. You can then open a serial connection with the programming language or application of your choice and send commands to the Create. **[|pyrobot]** may be the easiest available library for this (as of 2011). It exposes the "manual" serial interface as well, so it is not too hard to hack in additional features (such as the music playing in the Simple Sample below).
 * Connecting to a Computer**

We recommend that you take a look at the Roomba Kart sample project, which implements the basics of Create control through Python, and the more advanced telepresence Roomba.

To connect the [|Arduino] to the Create, you will need to either use the standard Arduino serial or the [|SoftwareSerial]/[|NewSoftSerial] libraries to create the serial connection. More details on this can be found in the documentation of the **[|arduino-roomba]** library for interfacing the Rooma and Arduino.
 * Connecting to the Arduino**

Common Pitfalls
The Create's cliff sensors will go off on potholes or small holes in the floor that would otherwise not impair the robot's motion. This can be avoided by setting the Create to Full Mode. When using the BAM, unplug it while the Create is charging or when it is not in use. The BAM draws power regardless of whether the Create is on or off, and will slow down charging or deplete the battery. When the Create is in full or safe mode, it turns off all of its LEDs, looks exactly as though it was off. Make sure to turn off the Create when not in use instead of leaving it in full or safe mode, as it will draw power and deplete the battery.

Documentation
[|iRobot Create »] | [|Bluetooth Access Module »] | [|Open Interface »]
 * Manuals**

The open-sourced code behind an instructable using a "One Laptop Per Child" to remotely control a Create. Includes drop-in [|Python] library. Requires [|pySerial]. [|Relevant file »]
 * [|pyrobot]**

[|arduino-roomba] C++ library for controlling the Create through the Arduino.

Simple Sample
An overall Demo of the iRobot platform is described in detail here. This demo (tested on Ubuntu but should work with any Linux running with Bluetooth support and root access) demonstrates the basic functionality of the iRobot, particularly its movement. Basically, this makes the iRobot into a remote control car you can control with your keyboard. The zip below contains a readme that explains how to use the demo, but it is a pretty simple process (establish connection via bluetooth to the iRobot, run python driver script). This demo requires the Bluetooth dongle for the iRobot, Bluetooth capable Linux machine (with root access), python, and Tkinter library for python.


 * Download**: [|roombot-fixed.zip]

Once the demo is running:
 * space: immediate stop.
 * arrow keys or wsad: drives the robot (note that up and down don't move it up and down, they increase/decrease the speed it is going). if you use wsad, the robot will make wide turns, while the arrow keys make tight turns.
 * q: plays a song
 * e: prints out the current sensor data

Inspiration

 * [|Add Vision to iRobot Create]
 * [|Controlling a Roomba with an Arduino]
 * [|Instructables Gallery]
 * [|iRobot Create Review and Gallery]
 * [|Kinect Sensor Bolted to an iRobot Create]
 * [|MATLAB Simulator]
 * [|PosterBot]
 * [|ServerBot]