06-2018
Hacking a Roomba — How to Hack a Roomba Vacuum Cleaner
with Arduino and Processing

In my master’s thesis, „The Robotic Perspective in Human-Robot Interaction,“ I explored how the technical characteristics of robotic systems might inform the design of human-robot interaction, using domestic vacuum cleaners as an example. To simulate and evaluate different robot personalities and interaction scenarios, I modified a Roomba vacuum cleaner through a combination of hardware and software prototyping.
The project employed a Wizard of Oz prototyping approach [1], enabling the simulation of intelligent robotic behavior without requiring a fully autonomous system. To support this, I hacked a Roomba vacuum cleaner and developed a custom Android application that allows remote control of the robot and playback of pre-defined motion sequences. This setup facilitated the creation and demonstration of various behavior patterns within speculative interaction scenarios. The source code and hardware documentation are openly available on GitHub, encouraging others to replicate or build upon the project.
Roomba models by iRobot [2] have become a popular platform among DIY developers and researchers due to their accessible Open Interface (OI) Specification [5], which provides detailed documentation for sensor access and motor control. A dedicated STEM version—iRobot Create [4]—is available in the U.S., designed for educational and prototyping purposes. My work was based on the Roomba 650 model from the 600 series, using openly available resources [6–8] to gain control over its behavior.
The hardware setup involved embedding an Arduino Pro Mini and a Bluetooth module into the robot’s chassis, along with supporting components such as voltage regulators, a level shifter, and a transistor. These components were configured to communicate with the Roomba through its serial interface and wirelessly with a smartphone via Bluetooth. After initial prototyping with larger components, the circuit was miniaturized and integrated into the robot’s recessed handle, ultimately hidden beneath the outer shell.

The accompanying Android app, built using Processing for Android [9], functions as a remote control, enabling direct manipulation of the robot’s movement and behaviors. Users can adjust direction and speed, rotate the robot, and toggle the vacuum and brush mechanisms. Custom behaviors can be recorded under preset buttons to simulate interaction scenarios, such as a precise turning sequence followed by linear motion. A toggle feature allows users to switch between simulation and standard cleaning mode.

References
[1] Bernsen, N. O., Dybkjær, H., & Dybkjær, L. (1994). Wizard of oz prototyping: How and when. Proc. CCI Working Papers Cognit. Sci./HCI, Roskilde, Denmark.
[2] https://www.irobot.de/ [Last access: 18.02.2018]
[3] Kurt, T. E. (2006). Hacking roomba: extremetech (Vol. 48). John Wiley & Sons.
[4] http://www.irobot.com/About-iRobot/STEM/Create-2.aspx [Last access: 18.02.2018]
[5] http://www.irobotweb.com/~/media/MainSite/PDFs/About/STEM/Create/iRobot_Roomba_600_Open_Interface_Spec.pdf [Zugriff: 18.02.2018]
[6] Arduino Tutorial. URL: http://www.irobotweb.com/-/media/MainSite/PDFs/About/STEM/Create/Arduino_Tutorial.pdf?la=en [Last access: 18.02.2018]
[7] Create 2 to 5V Logic. URL: http://www.irobotweb.com/-/media/MainSite/PDFs/About/STEM/Create/Create_2_to_5V_Logic.pdf?la=en [Last access: 18.02.2018]
[8] Controlling a Roomba Robot With Arduino and Android. URL: http://www.instructables.com/id/Controlling-a-Roomba-Robot-With-Arduino-and-Androi/ [Last access: 18.02.2018]
[9] http://android.processing.org/ [Last access: 18.02.2018]



