Project

Robot Pet Roomba

A Roomba 960 converted into a Python controlled pet companion.

Project Status: TBD


Overview

A Roomba 960 converted into a Python controlled companion. It wanders the house, reacts to simple triggers, and behaves more like a playful home robot than a vacuum. The system stays local and avoids cloud dependencies.

The goal was to build something more physical and more playful than software on a screen. Instead of layering on AI services, the project focuses on reliable robot behavior, clear state transitions, and straightforward Python control over movement, audio, and simple interaction.


Data Flow

input or schedule
python state machine
behavior rules
audio or leds
robot moves

The design goal is simple. Keep the interaction responsive and expressive enough to feel alive, while making the system dependable and easy to reason about. Python handles the orchestration, and explicit rules determine how the robot reacts.


What Stays Local

Data or FunctionWhere it runs
Input handlingLocal
Webcam video and imagesLocal
Audio playbackLocal
Motion controlLocal
Robot movement commandsLocal
State and behavior rulesLocal
Event loggingLocal

Hardware

Hardware
Base robot
Roomba 960
vSLAM, Open Interface serial port, WiFi
Main computer
Raspberry Pi 5
8GB RAM
Storage
M.2 NVMe SSD
256GB+ with PCIe HAT
Serial adapter
3.3V FTDI adapter
5V can damage the OI board
Camera
1080p USB webcam
Optional for monitoring and scripted reactions
Audio
USB speakerphone
For local sounds, cues, or simple prerecorded speech
Power
USB C power bank
25W PD output
Safety
Emergency stop button
GPIO pin 17

The 3.3V serial adapter is critical. A 5V adapter can damage the Roomba OI board.


Software Stack

Software stack
Control
Python main control loop and orchestration
local
Motion
pyserial Roomba OI at 115200 baud
local
Audio
pygame or WAV playback local sounds and cues
local
Vision
OpenCV optional camera triggers
local
State
Python state machine idle, roam, dock, react
local
Memory
SQLite event logs and schedules
local
Startup
systemd service boot and supervision
local

Build Phases

PhaseDescription
01Verify the Roomba with a full stock cleaning cycle and confirm navigation works normally
02Set up the Pi 5 with NVMe boot, SSH, and the serial connection to the Roomba
03Build the Python control loop for motion, timing, and event handling
04Add local audio cues and simple scripted reactions
05Add optional camera triggers for dock, obstacle, or room monitoring
06Store events and schedules in SQLite so behavior persists across sessions
07Mount the hardware on the Roomba and run the system untethered
08Tune the behavior rules, sounds, and interaction style