makerspet/oomwoo

Open-source vacuum robot cleaner

10,605

stars

267

commits

Python

primary language

Sep 8, 2026

updated

oomwoo.com
3d-printing
arduino
diy-electronics
diy-project
esp32
esp32-arduino
home-assistant
lidar
lidar-slam
raspberry-pi
ros2
slam
vacuum-cleaner
vacuum-robot
Browse cluster: Embedded Systems & Microcontroller Firmware

README

OOMWOO

Open-source robot vacuum you build yourself

Clean well · Hackable · Raspberry Pi · 3D printed · Local / No cloud required · Home Assistant · Arduino · ROS2 · ESP32

License Status

OOMWOO is an open-source home robot vacuum you can build yourself, built using Raspberry Pi, 3D-printing, Home Assistant, Arduino and ROS2. It uses an affordable 2D LiDAR to map your home and navigate on its own. Local, no cloud required for regular functionality, no vendor lock-in. Follow us building in public Discord | X | Instagram | Facebook | Reddit | newsletter | YouTube | oomwoo.com | Tutorials

Early build instructions will be available in Fall 2026.

Reference design images - this is approximately how the finished design will look:

Reference robot vacuum cleaner top Reference robot vacuum cleaner bottom Reference robot vacuum cleaner - top cover removed

Goals

  • Affordable, fully open hardware, software and firmware
  • Home appliance product quality - not a throwaway build
  • Easy to build, with step-by-step zero-to-hero instructions
  • 2D LiDAR mapping and autonomous navigation (ROS2 / Nav2)
  • Native Home Assistant integration for local control
  • 3D-printable, documented, and hackable chassis
  • Buildable from parts you source yourself
  • Local, no cloud required for regular functionality
  • Optional extra functionality when connected cloud
  • Apps on top of ROS2 to customize vacuum operation
  • Stretch goal: App store
  • Stretch goal: LeRobot integration, OpenClaw

v0 target: bare-bones build:

  • 3D-printed chassis (browse)
  • ROS2 Gazebo sim (install)
  • Basic cleaning, mapping
  • Raspberry Pi CM4/CM5 running ROS2 (install)

Open Source Deliverables:

Contributing

Would you like to contribute? See CONTRIBUTING for the full guide.

OOMWOO is organized to built by the community, massively in parallel. The vacuum and its software are subdivided into modules, see list below.

A volunteer picks whatever module she wants and works on it whenever she wants. For code and simulation modules she builds her package in her own repo and sends a short PR linking it from the module; for docs and specs she contributes files in-tree under contributions/module-name/<her-github-username>. See CONTRIBUTING for how this works.

Multiple developers are welcome to work on the same module. The best solution for each module surfaces over time, with the project master having the last call.

  1. Pick a contribution from the list below.
  2. Let us know you're working on it and your progress.
  3. Check ARCHITECTURE.md and SOFTWARE_INTERFACES.md for the system design and ROS2 interfaces.

Requests for Contributions

Every module below is actionable now — build it against the Gazebo simulation (oomwoo-one) or a real placeholder robot (a Proscenic M6 Pro connected to ROS2), until OOMWOO hardware is ready. Pick one, tell us in Discussions, build it in your own repo (docs and specs go in-tree), and send a short PR linking it from the module.

ModuleIDStatusNotes
ROS2 URDF + Gazebo simurdf-gazebo-simMostly completePlaceholder URDF + Gazebo sim (reference: oomwoo-one; @alvarosamudio featured), refined when hardware lands
First clean: coverage + mapping + explorationclean-and-mapIn progressCoverage cleaning while SLAM-mapping and exploring
Auto cleaningIn progressClean the entire room using an existing map (using coverage path planning)
Regression testsIn progressSet up simulatior regression test framework (auto cleaning in Gazebo)
Localization & navigation on a known mapnav-localizeIn progressNav2 nav, AMCL localization, relocalize when lost, resume map
Dock cycle: undock, dock, rechargedock-cycleReady to start workUndock, return-to-dock, precise docking, station services, find dock when lost
Recovery behaviors & safetyrecovery-safetyReady to start workRecovery ladder, escalation, pause-and-alert, safety sensors, status reporting
Stack health monitor & software watchdoghealth-monitorIn progressPer-component alive-and-well heartbeats + a roster-aware aggregator that feeds the MCU deadman; stops the robot when any critical node crashes / hangs / is missing — the soft-fault layer above the MCU's hard reflexes
Near-field obstacle avoidance (camera + ToF)obstacle-avoidanceIn progressv2 "never gets stuck": front stereo camera + 2x VL53L7CX ToF detect below-LiDAR obstacles (cables, socks); detect-then-classify
Compute benchmark & memory reductioncompute-benchmarkIn progressMeasure ROS2/Nav2/SLAM memory, compare composable nodes, and track the 4 GB -> 2 GB target
Floor-surface handling & edge cleaningfloor-careIn progressWall/edge following, carpet vs hardwood, mop lift/lower
Cleaning modes, zones & job orchestrationcleaning-jobsReady to start workModes (regular/spot), virtual walls, room segmentation, job splitting + resume
Control app & UX (design-first)control-appReady to start workLocal-first control app/UI — a client of the ROS2 stack + Home Assistant; design-led (welcomes designers): prioritize features, concept the MVP surface (start/stop, live map, status, zones)
Live robot bring-up & validationlive-robot-bringupReady to start workConnect the placeholder Proscenic M6 Pro to ROS2, re-run sim tests on hardware
Source 3D models (STEP) for BOM partssource-3d-modelsMostly completeObtain / measure / model STEP files of off-the-shelf parts (wheels, fans, caster…) so mounts fit
Procure part specs & datasheetspart-specsIn progressFind/measure/reverse-engineer specs (pinouts, encoder PPR, torque, how to drive fans…) for sourced parts
I/O + motor-driver PCBio-pcbIn progressI/O board with CM4/CM5 socket, STM32 MCU - motors, sensors, 4S2P charging, safety, FreeRTOS, custom serial to CM4/CM5, 2D LiDAR header, IMU, audio serial/amp/speaker, MIPI camera(s) i/f; KiCad, JLCPCB
I/O board software interfaceio-board-interfaceReady to start workCPU/MCU serial contract, ROS2 bridge mapping, safety watchdog behavior, hardware signal ownership, and bringup validation
MCU I/O board firmwaremcu-io-firmwareIn progressSTM32G473 firmware: Arduino (STM32duino) API + FreeRTOS + a HAL/ISR real-time safety core; motors, sensors, charging, custom serial to the CPU; repo
Fit software into 2GB RAMcompute-benchmark2GB achievedROS2 node composition, Rust; remove Gazebo, desktop UI

Planned and on-hold modules (mechanical design, later-phase software) live in the RFC backlog.

Source code reference

User requirements & Design research

Anecdotal prospective user requirements - collected mostly in r/RobotVacuums, r/ROS and as announcement post comments:

  • open-source
  • 3D printed first
  • cleans well, a first-class appliance, not a throwaway build
    • never gets stuck
    • hair tangle-free
    • modern capabilities - no legacy drag mop; dual-spinning rotary mop or better/roller
    • bagless
  • hackable, DIY fixable, upgrade-able
    • examples: vacuum-only version, mop-only version
    • Raspberry Pi
    • Home Assistant integration
  • operates without cloud
  • later: ability to retrofit existing legacy vacuum cleaner robots

About

The project name "OOMWOO" is a rotational ambigram - it reads the same flipped 180°, like the robot itself, roaming your floor in every direction.

The project is sponsored by makerspet.com and remake.ai. We are reusing their open-source solutions.

  • If you'd rather skip the parts hunt, a kit (motors, PCB, brushes, gaskets, LiDAR) will be available at makerspet.com, from the same maker behind this project. The kit is a convenience, never a requirement. Everything here stays open.
  • When we get to apps, remake.ai will be providing its robot apps platform and app store. Using the app store will be entirely optional. The vacuum will always support cloud-free, local operation for regular functionality out-of-the-box.

License

Code is released under the Apache License 2.0.

Hardware design files, once added, to be released under an open hardware license (TBD).

OOMWOO star history

Contributors

makers-pet

159 commits

kaiaai

54 commits

alvarosamudio

20 commits

xbattlax

14 commits

makerspet/oomwoo

Open-source vacuum robot cleaner

10,605

stars

267

commits

Python

primary language

Sep 8, 2026

updated

oomwoo.com
3d-printing
arduino
diy-electronics
diy-project
esp32
esp32-arduino
home-assistant
lidar
lidar-slam
raspberry-pi
ros2
slam
vacuum-cleaner
vacuum-robot
Browse cluster: Embedded Systems & Microcontroller Firmware

README

OOMWOO

Open-source robot vacuum you build yourself

Clean well · Hackable · Raspberry Pi · 3D printed · Local / No cloud required · Home Assistant · Arduino · ROS2 · ESP32

License Status

OOMWOO is an open-source home robot vacuum you can build yourself, built using Raspberry Pi, 3D-printing, Home Assistant, Arduino and ROS2. It uses an affordable 2D LiDAR to map your home and navigate on its own. Local, no cloud required for regular functionality, no vendor lock-in. Follow us building in public Discord | X | Instagram | Facebook | Reddit | newsletter | YouTube | oomwoo.com | Tutorials

Early build instructions will be available in Fall 2026.

Reference design images - this is approximately how the finished design will look:

Reference robot vacuum cleaner top Reference robot vacuum cleaner bottom Reference robot vacuum cleaner - top cover removed

Goals

  • Affordable, fully open hardware, software and firmware
  • Home appliance product quality - not a throwaway build
  • Easy to build, with step-by-step zero-to-hero instructions
  • 2D LiDAR mapping and autonomous navigation (ROS2 / Nav2)
  • Native Home Assistant integration for local control
  • 3D-printable, documented, and hackable chassis
  • Buildable from parts you source yourself
  • Local, no cloud required for regular functionality
  • Optional extra functionality when connected cloud
  • Apps on top of ROS2 to customize vacuum operation
  • Stretch goal: App store
  • Stretch goal: LeRobot integration, OpenClaw

v0 target: bare-bones build:

  • 3D-printed chassis (browse)
  • ROS2 Gazebo sim (install)
  • Basic cleaning, mapping
  • Raspberry Pi CM4/CM5 running ROS2 (install)

Open Source Deliverables:

Contributing

Would you like to contribute? See CONTRIBUTING for the full guide.

OOMWOO is organized to built by the community, massively in parallel. The vacuum and its software are subdivided into modules, see list below.

A volunteer picks whatever module she wants and works on it whenever she wants. For code and simulation modules she builds her package in her own repo and sends a short PR linking it from the module; for docs and specs she contributes files in-tree under contributions/module-name/<her-github-username>. See CONTRIBUTING for how this works.

Multiple developers are welcome to work on the same module. The best solution for each module surfaces over time, with the project master having the last call.

  1. Pick a contribution from the list below.
  2. Let us know you're working on it and your progress.
  3. Check ARCHITECTURE.md and SOFTWARE_INTERFACES.md for the system design and ROS2 interfaces.

Requests for Contributions

Every module below is actionable now — build it against the Gazebo simulation (oomwoo-one) or a real placeholder robot (a Proscenic M6 Pro connected to ROS2), until OOMWOO hardware is ready. Pick one, tell us in Discussions, build it in your own repo (docs and specs go in-tree), and send a short PR linking it from the module.

ModuleIDStatusNotes
ROS2 URDF + Gazebo simurdf-gazebo-simMostly completePlaceholder URDF + Gazebo sim (reference: oomwoo-one; @alvarosamudio featured), refined when hardware lands
First clean: coverage + mapping + explorationclean-and-mapIn progressCoverage cleaning while SLAM-mapping and exploring
Auto cleaningIn progressClean the entire room using an existing map (using coverage path planning)
Regression testsIn progressSet up simulatior regression test framework (auto cleaning in Gazebo)
Localization & navigation on a known mapnav-localizeIn progressNav2 nav, AMCL localization, relocalize when lost, resume map
Dock cycle: undock, dock, rechargedock-cycleReady to start workUndock, return-to-dock, precise docking, station services, find dock when lost
Recovery behaviors & safetyrecovery-safetyReady to start workRecovery ladder, escalation, pause-and-alert, safety sensors, status reporting
Stack health monitor & software watchdoghealth-monitorIn progressPer-component alive-and-well heartbeats + a roster-aware aggregator that feeds the MCU deadman; stops the robot when any critical node crashes / hangs / is missing — the soft-fault layer above the MCU's hard reflexes
Near-field obstacle avoidance (camera + ToF)obstacle-avoidanceIn progressv2 "never gets stuck": front stereo camera + 2x VL53L7CX ToF detect below-LiDAR obstacles (cables, socks); detect-then-classify
Compute benchmark & memory reductioncompute-benchmarkIn progressMeasure ROS2/Nav2/SLAM memory, compare composable nodes, and track the 4 GB -> 2 GB target
Floor-surface handling & edge cleaningfloor-careIn progressWall/edge following, carpet vs hardwood, mop lift/lower
Cleaning modes, zones & job orchestrationcleaning-jobsReady to start workModes (regular/spot), virtual walls, room segmentation, job splitting + resume
Control app & UX (design-first)control-appReady to start workLocal-first control app/UI — a client of the ROS2 stack + Home Assistant; design-led (welcomes designers): prioritize features, concept the MVP surface (start/stop, live map, status, zones)
Live robot bring-up & validationlive-robot-bringupReady to start workConnect the placeholder Proscenic M6 Pro to ROS2, re-run sim tests on hardware
Source 3D models (STEP) for BOM partssource-3d-modelsMostly completeObtain / measure / model STEP files of off-the-shelf parts (wheels, fans, caster…) so mounts fit
Procure part specs & datasheetspart-specsIn progressFind/measure/reverse-engineer specs (pinouts, encoder PPR, torque, how to drive fans…) for sourced parts
I/O + motor-driver PCBio-pcbIn progressI/O board with CM4/CM5 socket, STM32 MCU - motors, sensors, 4S2P charging, safety, FreeRTOS, custom serial to CM4/CM5, 2D LiDAR header, IMU, audio serial/amp/speaker, MIPI camera(s) i/f; KiCad, JLCPCB
I/O board software interfaceio-board-interfaceReady to start workCPU/MCU serial contract, ROS2 bridge mapping, safety watchdog behavior, hardware signal ownership, and bringup validation
MCU I/O board firmwaremcu-io-firmwareIn progressSTM32G473 firmware: Arduino (STM32duino) API + FreeRTOS + a HAL/ISR real-time safety core; motors, sensors, charging, custom serial to the CPU; repo
Fit software into 2GB RAMcompute-benchmark2GB achievedROS2 node composition, Rust; remove Gazebo, desktop UI

Planned and on-hold modules (mechanical design, later-phase software) live in the RFC backlog.

Source code reference

User requirements & Design research

Anecdotal prospective user requirements - collected mostly in r/RobotVacuums, r/ROS and as announcement post comments:

  • open-source
  • 3D printed first
  • cleans well, a first-class appliance, not a throwaway build
    • never gets stuck
    • hair tangle-free
    • modern capabilities - no legacy drag mop; dual-spinning rotary mop or better/roller
    • bagless
  • hackable, DIY fixable, upgrade-able
    • examples: vacuum-only version, mop-only version
    • Raspberry Pi
    • Home Assistant integration
  • operates without cloud
  • later: ability to retrofit existing legacy vacuum cleaner robots

About

The project name "OOMWOO" is a rotational ambigram - it reads the same flipped 180°, like the robot itself, roaming your floor in every direction.

The project is sponsored by makerspet.com and remake.ai. We are reusing their open-source solutions.

  • If you'd rather skip the parts hunt, a kit (motors, PCB, brushes, gaskets, LiDAR) will be available at makerspet.com, from the same maker behind this project. The kit is a convenience, never a requirement. Everything here stays open.
  • When we get to apps, remake.ai will be providing its robot apps platform and app store. Using the app store will be entirely optional. The vacuum will always support cloud-free, local operation for regular functionality out-of-the-box.

License

Code is released under the Apache License 2.0.

Hardware design files, once added, to be released under an open hardware license (TBD).

OOMWOO star history

See what people are saying

Contributors

makers-pet

159 commits

kaiaai

54 commits

alvarosamudio

20 commits

xbattlax

14 commits

Languages

Python

91.7%

Shell

8.3%