iRobot Create 2

This page discusses iRobot's "Create 2" (aka C2; the initial platform for the RX Rover).


The "Create 2" (C2) is a convenient platform for experimentation and development in robotics. As a reworked iRobot product (e.g., Roomba), it supports the Roomba Open Interface (ROI). This allows it to accept motion-related commands and report its status (e.g., battery charge, distance traveled).

Each C2 has been augmented with an interface cable, marks for mounting holes, etc. The ROI supplies power (nominal 16 VDC) as well as signals, so it's already nicely set up for hacking! In addition, iRobot has a STEM support office and a substantial community of Roomba hackers.

On typical indoor flooring, the C2 can move around at a maximum speed of 0.5 m/s (about 1 mph). This is fine for a prototype, but I suspect that I'll want any "production" Rover to be faster and comfortable with outdoor surfaces (e.g., asphalt, concrete). If so, I can swap in a different mobility platform (e.g., based on a model truck).


I was delighted to find "Hacking Roomba", an extremely approachable (if dated) guide to the subject. It provides a nice overview of iRobot's motivations and approach, plus a variety of example interfacing projects. If you're just getting started with the Roomba, be sure to get a copy of this book!

In order to learn about the C2's capabilities and limitations, I needed to find a place to play with it. This had to be a fairly substantial and largely unoccupied space. Fortunately, my area has a number of public spaces. If I could get permission to use some corridors in a school or mall, I should be able to do some quiet experimentation.


The ROI uses byte-oriented serial data communication, based on the RS-232 standard. Partial or multiple bytes are used as needed to accommodate various data requirements. Because of its Erlang heritage, Elixir handles this sort of low-level programming with aplomb.

RoombaComm is a Java-based library that abstracts this interface nicely, using a LOGO-inspired paradigm. I plan to convert at least some of RoombaComm into Elixir, both for convenience and as protection from API lock-in.


Although there is an Open Interface (OI) Specification document, there is no official information on how to open up the C2 (e.g., to drill holes).

The C2 has a nice USB adaptor cable, but it doesn't provide access to raw power. So, I'll have to add another socket (or whatever) for this purpose.

The C2 can only move at about 1 mph, which is fine for experimentation, but a bit slow for production mapping. So, I expect to get a faster platform at some point.

The C2 wasn't designed for outdoor use (e.g., on paved surfaces). I suspect that this would wear out the machinery rather quickly.


This wiki page is maintained by Rich Morin, an independent consultant specializing in software design, development, and documentation. Please feel free to email comments, inquiries, suggestions, etc!

Topic revision: r4 - 08 Jan 2016, RichMorin
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email