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
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 Function | Where it runs |
|---|---|
| Input handling | Local |
| Webcam video and images | Local |
| Audio playback | Local |
| Motion control | Local |
| Robot movement commands | Local |
| State and behavior rules | Local |
| Event logging | Local |
Hardware
The 3.3V serial adapter is critical. A 5V adapter can damage the Roomba OI board.
Software Stack
Build Phases
| Phase | Description |
|---|---|
| 01 | Verify the Roomba with a full stock cleaning cycle and confirm navigation works normally |
| 02 | Set up the Pi 5 with NVMe boot, SSH, and the serial connection to the Roomba |
| 03 | Build the Python control loop for motion, timing, and event handling |
| 04 | Add local audio cues and simple scripted reactions |
| 05 | Add optional camera triggers for dock, obstacle, or room monitoring |
| 06 | Store events and schedules in SQLite so behavior persists across sessions |
| 07 | Mount the hardware on the Roomba and run the system untethered |
| 08 | Tune the behavior rules, sounds, and interaction style |