Lucy Milstein
Lucy Milstein
Projects

Robot Vacuum

I'm building a robot vacuum

~Lucy why don't you just buy a roomba, or better yet a Dreame X50 Ultra?~

Great question!

  1. I want it to be cute
  2. I want it to be small and get into the spaces these robots don't reach
  3. I've never built a robot and I think it'll be fun and I'm curious to see if Claude + hugging face will be able to guide me through the process effectively
Robot vacuum prototype with wheels, motors, and electronics on a cardboard chassis

Project Plan

Robot Vacuum Project (v3)

Concept

Compact robot vacuum (8" x 8", ~4.5" tall target, up to 6" max) that cleans annoying areas to vacuum (under furniture, behind the sofa, etc). Not a full Roomba replacement, a complement to manual vacuuming.

Key features: Apartment mapping (LiDAR SLAM), edge/wall-following mode, corner cleaning with dual suction inlets, small enough to fit under low furniture.

Design Decisions

Chassis & Dimensions

  • 8" x 8" square chassis (revised up from original 6" x 6"). Slightly rounded corners (~1/4" radius) to reduce snagging.
  • Target height: ~4.5" including semi-recessed LiDAR on top. Max 6" if needed.
  • Fully enclosed — all wiring, boards, and components hidden inside.
  • No 3D printer — laser-cut acrylic chassis (SendCutSend).

Aesthetic & Color

  • Black and white color scheme — white acrylic top/bottom plates, black acrylic face band.
  • Two round dot LED eyes on the black face band with GPIO-controlled RGB states.
Solid blue = mapping / exploring
Solid green = cleaning
Yellow = heading back to start
Red = stuck / needs help
Pulsing blue = thinking / planning path
Blinking red = bin full
Alternating red/yellow = error / not working
Dim/off = sleeping / idle

LiDAR Mounting

  • Semi-recessed through the top plate — LiDAR drops partway through a ~3" cutout in the white top plate. Only ~0.75" protrudes above the surface, with a clean collar ring.

Vacuum System

  • Dual front corner suction inlets paired with side brushes.
  • Split airflow (passive Y-duct) — single vacuum motor in the center, ducting splits to both corners.
  • Vacuum motor: Neato BCB1012UH-A (12V, 3.45A, ~35.3 CFM, ~1 kPa). Flat and proven.
  • Upgrade path: WS7040 12V centrifugal blower (~5.5 kPa) if needed.
  • Side brushes on both front corners.

Dust Bin

  • Rear slide-out tray (~3" x 2" x 1.5", ~150mL).
  • Airflow path: floor → two inlets → Y-duct → dust bin → fan → exhaust.

Drive System

  • Differential drive — 2 powered wheels + 1 passive caster ball.

Training Approach

  • Hybrid architecture: classical + learned. SLAM and path planning handle "where to go." A learned policy trained via behavioral cloning handles "how to move smoothly" — wall-following, corner turns, tight spaces, stuck recovery.
  • Data collection via teleoperation. I'll drive the robot manually with an Xbox controller, recording sensor observations and motor commands into Hugging Face's LeRobotDataset format.
  • Action chunking over single-step prediction. The model outputs a smooth sequence of future actions (~200-300ms) rather than one action at a time, which is critical for fluid wall-following and corner turns.
  • Train on laptop, deploy to the Pi. The model trains on my laptop using LeRobot's training framework, then a lightweight version runs inference locally on the Raspberry Pi Zero 2 W.
  • Small, focused training data. ~40 demonstrations across 5 skills (wall-following, corner turns, tight space navigation, edge approach, stuck recovery). Minutes of data, not hours.