Irobot Roomba Movement Panel

Control the iRobot Roomba and read sensor data

+ How To Add This Control To Your Project (Click to Expand)
  1. Make sure you have the latest version of ARC installed.
  2. Select the Get button in this page to download the archive file.
  3. Double click the downloaded archive file to execute installer.
  4. The installer will add this control to ARC.
  5. Load ARC and press the Project -> Add Control button from the menu.
  6. Choose the Movement Panels category tab.
  7. Press the Irobot Roomba Movement Panel icon to add the control to your project.


Control the iRobot Roomba and read sensor data. This skill currently works with the 500 series robots and iRobot create. The baud rate and connection type will need to be configured in the settings menu. 

Baud Rates
Different models (i.e. create vs Roomba) use different baudrates. Find your Roomba's version and check it's SCI (Serial Command Interface) or OI (Open Interface) manual to see what baudrate it uses. We believe the Roomba uses baudrate 115200, and the create uses 57600. But, don't hold us to that :). We do notice that older Roomba's use 57600 baud - ensure you have selected the correct baud rate in the config settings. 500+ series Roombas use 115,200 baud. If you are unsure, try each baud rate.

Demo Video
Here's a video of the nice proportional steering that this control provides the iRobot Roomba. This video has the Roomba set to follow Kate's orange socks.

Like all movement panels, only one can exist. In this case, this Movement Panel will connect to a Roomba by its SCI interface. This control allows for a variety of speeds also, so you can use the analog joystick to control speeds. Or use the speed control in the camera to track objects with nice smooth trajectories.

ARC allows multiple physical robot controllers to be connected at once. The Movement Controls only operate on the first board (Board 0) or PC serial port.

Reading Sensor Data
You can read sensor data, if the PC COM or HW UART ports are used for the connection. This also requires the TX and RX wires to be connected to the Roomba's SCI port. The data from the sensors and internal values are set as global variables. You can access everything from battery voltage to wheel encoder counts.

SCI Connection Types
The connection types that can be used to connect the Roomba to ARC are:

1. Software Serial (read only)
2. HW UART (read/write)
3. USB COM TTL (read/write)

Roomba SCI Cable 
The cable can have either TX & RX or just RX connected from the Roomba. If only RX pin is connected, the sensor data will not be read. 

Roomba <-> USB <-> PC
iRobot has a low cost USB cable that can connect directly to a PC. This is useful if the PC is located within the robot. You can get it from here:

Roomba <-> EZB <-> PC
This method will require you to make a connector cable. This requires a 7 pin Male Mini Din to connect to an EZB I/O Controller. Watch DJ's iRobot Roomba Live Hack to see how to make a cable.

This is a 7 Pin Male Mini-Din connector.
User-inserted image

The image below demonstrates how to make a cable with RX only. Meaning, the sensor data will not be read by ARC. If you wish to have the sensor data transmitted from the iRobot Roomba to ARC, the pin #4 (TXD) will need a connection. View DJ's iRobot Roomba Live Hack video below for step-by-step instructions to make the cable with TX and RX.
User-inserted image

Great Platform Base
How about using an iRobot Roomba for your robot wheel base? You can attach a camera and the EZ-B to a Roomba and turn it into a lean mean cleaning security machine! Combine a USB Joystick and the HTTP Remote Server Control... Voila! A remote control security cleaning robot. That's easy!

You can use an iRobot Roomba motherboard as an H-Bridge to drive your custom motors. This gives your robot the ability to self charge. By positioning the IR sensors on you robot in the same fashion as the Roomba, your robot can easily dock with the Roomba's self charging base.

*Note before connecting to a robot controller, check the signal wire (white wire) with a volt meter and ensure you have between zero and five volts from the Roomba. If you see higher voltage, you're connected to the wrong port. If you apply too much voltage to the the controller from the Roomba, you will damage the port.


Yes - the manual on this page explains that sensor data can be read if an RX is connected on the ezb. The ezb must support hardware rx
#4   — Edited
Hello, the data readings are included as variables a few updates ago (months ago from your question). Please read the description for this robot skill at the top of this page. I also had already answered the same question you had asked right above this latest question.
Thanks DJ, will try it as soon as i finish my mini pc build on top of the roomba.
If you’re using a mini pc - then you can actually connect the mini pc directly to the roomba without needing an ezb. 

This roomba robot skill has an option to use the PC COM port. Look in the configuration screen to see the settings available
Yes, that is what im going to do, and i am using an "EZDuino" for other IOs.
@DJ, following your advice in another thread, I am taking a look to the Roomba Movement Panel to read the data.
I can indeed see a lot of Roomba-related variables when I am connected, however I don't know how to "interpret" them or use them in an "informative" way.

For example, for charging status, i can see in the Variable Watcher:


$RoombaChargingState  Number  253 (and the value is changing constantly)

How can I use the variable to obtain the charging state (Not Charging, Full Charging, Charging Fault, etc.)?

I have the same difficulty with a lot of other variables and I cannot make the link with info available in the Roomba OI manual...

Sorry if the info is somewhere on the website.
#9   — Edited
Hi fredebec, strange number indeed. In the roomba manual we should have this values for the charging state:
User-inserted image

Does the value change when for example you charge the robot or not?
The variables for the roomba have been fixed in this latest update:)
Thank you DJ for taking the time!
Thanks @DJ !
I have tested some of them in my different scripts and everything works smoothly.
So many variables to play with, now...:D
I know, right?! It's crazy! I was having a ton of fun today and last night with it. The new plugin works really well!
#14   — Edited
Hey DJ, I returned from my trip to my cabin to find the hack night video AND coincidentally my next door neighbor brought over his dead (battery) Roomba 655 vacuum for me to keep. Question is will this work on any model Roomba...or specifically this one? 

User-inserted image
Hi @fxrtst, how lucky you are to have such a nice neighbor:D

DJ will know better, but to my knowledge, 500 and 600 series are quite the same. At least the Open Interface (OI) Specifications are the same, so I think the hack and the Roomba Movement Panel should work just fine.
I know! He didnt know how to change the battery so he just gave it to me and got a new one?! Ok I'll try this out a little later in the week. I did pop the top and it has the same connector.
#17   — Edited
Deleted wrong product.

Scroll up in this page and look in the description of the plugin. There is a section about CABLES and there's info
Jinx..I think we posted at the same time!
I just got the IRobot usb To roomba cable.  I want to read and write to the roomba and use a PC on board the robot to control it.   I’m reading this thread.  When I go to the link for the roomba manual it does not link to the manual.   Am I missing something?
Hi @mstephens_42

All references to the word manual on the Synthiam website get linked back to the Docs section of the website. 
@DJ was referring to looking at the manual specific to the Roomba you own. For the 400 models you'll need the Roomba SCI (Serial Command Interface) manual, for the 500 Series you'll need the Roomba OI (Open Interface) manual, for the 600 series/Create 2 series the OI manual is available and looks very similar to the 500 Series. From what I've read the 700 & 800 series of Roombas have SCI ports as well and use the same Open Interface as the 500 series.