Hacking Roomba

Updates / Errata

With the inexorable march of technology, all dead-tree books describing technology will eventually become out-of-date. This page catalogs the changes between the printed book and what’s the current start of the Roomba art.

Additionally, whenever new tools and techniques are discovered that improve upon those discussed in the book, they will be mentioned here.

Text Changes

  • A copy editing mistake crept in at the last moment that removed most of the articles (“a”, “the”) before the word “Roomba”. Thus phrases like “underneath the Roomba” & “inside a Roomba” became “underneath Roomba” & “inside Roomba”. Just pretend I’m Russian, I guess.–24 Nov 2006
  • I incorrectly credited Kevin Gabbert for writing RoombaFX. It was actually created by some folks at Microsoft in their spare time. Kevin was correctly attributed as the author of Roomba-Term, which uses his C# Roomba library.

Software Changes

  • Minor updates in Arduino have necessitated changes in the Arduino example code. More to come. –24 Nov 2006

Circuit Changes

  • The circuit schematic for the serial tether neglects to show the connection from the DB-9 pin 5 to GND. Thanks to Erik Vermeulen and Filipe Augusto for catching this.

14 Comments so far

  1. Vic Wintriss December 8th, 2006 3:47 pm

    When was hacking Roomba published?

  2. todbot December 8th, 2006 4:21 pm

    Hi Vic, the book just came out. Officially released on 20 November 2006. Of course it was finished in August and three months in the ever-changing world of technology means some tools used in the book will be improved. The techniques presented and the Roomba protocol will be valid for several years however.

  3. Hans-Jürgen Sasse January 27th, 2007 11:19 am

    Hy, a great book, thank you
    I have found a minor error

    on first page of chapter 16, your webadress is wrong
    wrong http://roombahacking.com
    correct http://PLACEHOLDER.wpsho

  4. todbot January 27th, 2007 11:38 am

    Hi thanks for getting the book!
    Both domains work. All the links to downloadable code point to roombahacking.com, while this site is at hackingroomba.com. I did this in case Wiley (the publisher) wanted to do something with the “Hacking Roomba” domain, since they own the title. It’s a little confusing I know, but hopefully not too much.

  5. Argyrios March 12th, 2007 6:41 pm


    I am working on a project that involves Roomba, so besides interesting, this book is a life-saver for me. Good work.

    I will note any typos that I find along the way and send them. One I just found, is at page 39, where the code implements a 45 degree right turn, while the text talks about a 90 degree turn.

    best regards,

  6. Argyrios August 22nd, 2007 7:02 am


    I am reading page 95, where it says that the velocity of the left wheel if

    Vleft = r * theta

    r = radius and theta = angle

    I think what was meant here is ‘arc length’ instead of velocity


  7. todbot August 22nd, 2007 10:24 am

    Hi Argyrios,
    I do actually mean velocity. In this context, theta is essentially rotational velocity (aka frequency, units 1/sec) and when multiplied by a radius, gives a radial motion velocity (units distance/second) around a circle of that radius.
    I didn’t go into that detail in the book because the editor already thought it was a little math-heavy. :)

  8. Argyrios August 24th, 2007 10:20 am

    Hi again,

    Just a little misprint:
    on page 30, line 6, it says that “When going forward, a positive radius turns Roomba to the right, and a vegative radius turns Roomba to the left”.
    Actually, it is the other way around:
    “positive velocity and a positive radius will make
    Roomba drive forward while turning toward the left”

    PS. The book is simply great and, without it, it would take me years to start programming Roomba!

  9. Matt December 4th, 2007 7:38 am

    Is the software for hacking roomba compatible with Vista?

  10. todbot December 4th, 2007 11:49 am

    Short answer: Yes, it’s compatible with Vista.
    Longer answer: The software is all written in Java, so as long as there’s a Java VM available for whichever OS you’re on, the code should work. Some OSs come with Java, if yours doesn’t, you can download it from Sun:

  11. file.circular February 9th, 2009 10:47 am


    On page 95 in Hacking Roomba

    The “r” term in the equations

    r = b(Vleft+Vright)/(2(Vright-Vleft))

    Vleft = V(1-b/2r)

    Vright = V(1+b/2r)

    is the distance from the origin to the center of the wheelbase.

    This “r” term is not the same as the one in the preceding diagram which is the distance from the origin to the center point of the left wheel.

    It may be helpful to redraw the diagram such that “r” is the distance from the origin to the center of the wheelbase.

    This will yield the following equations for Vleft and Vright:

    Vleft = (r-b/2)Ó¨

    Vright = (r+b/2)Ó¨

  12. RBB April 13th, 2010 6:12 pm

    Hello, I’d like to start exploring all the possibilities a Roomba capable of ROI can afford as found in your book. =)

    I want to pick up my first Roomba on eBay, but if I get an older 3rd generation Roomba (Pre-2.1) I’d need to update the firmware with an OSMO//hacker to have access to the ROI, correct?

    Is the OSMO//hacker still available from iRobot or elsewhere for older 3rd generation Roombas (ie – Roomba Red or Discovery)?

    I am unable to find any additional information on where to obtain an OSMO//hacker on-line. I apologize if this answer is found elsewhere.

    Thank you!

  13. todbot April 22nd, 2010 10:24 pm

    Hi RBB,
    I believe that’s correct about needing an OSMO//hacker. It’s been a while since I played with older Roombas though. And iRobot never documented them very well. All the info I had I put in the book.

    I don’t know where to get them nowadays though. Your best bet might be to ask on the RobotReview.com forums, since there’s lots of Roomba people on there and someone might have an old OSMO//hacker they could sell you for cheap.

  14. AYL November 30th, 2011 12:03 am

    Thanks for a fantastic book! I am working my way through and was wondering if you could help explain some of the math in listing 9-2 (RoombaSpiro). Given the incremental vector (dx,dy), the draw() method is calculating two Roomba drive radii (rx and ry). Can you explain how you arrived at the expressions for rx and ry? Thanks!

Leave a reply

You must be logged in to post a comment.