How OOMWOO’s 3D design gets made

OOMWOO’s mechanical design is not drawn from a blank sheet. It starts by researching ready-made parts that can’t be 3D printed (motors/sensors), capturing their dimensions, tearing down and reverse-engineering consumer vacuums to learn the state-of-the-art – and remaking that into a novel, 3D printing friendly design. Here is how that pipeline works.

Start from parts you can buy

The starting constraint is availability. Motors, wheels, blower fans, electronics and sensors cannot be 3D printed – and must be purchased. I search these usually on AliExpress and pick for being cheap and abundant, not for being ideal. A part that exists, but nobody can order is of no use. The sourcing choices, with part numbers, are written up in how to source the BOM.

Scan them

Once a part arrives it gets 3D scanned. Some of that happens on my desk with a Creality Raptor – here it is capturing a vacuum suction fan assembly.

Creality Raptor 3D scanner capturing a robot vacuum suction fan assembly on a desk
3D scanning a suction fan assembly with a Creality Raptor.

Everything OOMWOO buys off the shelf gets scanned this way – HEPA filters, fans, motor assemblies, brushes, mops. It is nowhere near as quick as taking a photo: about an hour per part.

YouTube player
3D scanning a HEPA filter, from point cloud to STL mesh.

Setup. The part sits on a 12″ turntable covered with a black silicone non-slip mat. The mat is dotted with marker stickers, which the scanner uses to track its own position in 3D. The more markers, the better.

Scanning. The scanner only works within a certain range of distance and angle. Too close, too far, or too few markers in view are the usual problems. It also struggles with small concave features and with black or transparent materials. The HEPA filter in the video has all three: a clear plastic housing the laser shines straight through, thin black gaskets that absorb it, and deep, narrow pleats. So most parts get scanned several times – on their side, upside down – and each position is a separate scan. For those scans to line up later, I stick markers on the part itself too. Alignment needs at least three shared markers; I use more.

From scans to a mesh. In the scanner software, each scan gets cleaned up first by cutting away the mat, which nearly always ends up in the data. Fusion then merges the many raw points into one cohesive point cloud, and the scans of the same part are aligned into a single merged cloud. That cloud gets meshed, stray bits of mesh are deleted, and the result is saved as an STL file.

From mesh to CAD. A mesh is not CAD yet. It is cleaned up further in Adobe Substance and Blender, converted into a solid body in Fusion 360 and exported as STEP. For some parts it is simpler to design the component from scratch in CAD and use the mesh only as a reference for measurements.

A tiny team doing the heavy lifting

Turning a mesh into clean, editable CAD takes even longer than scanning, so that work goes to freelancers on Upwork, who convert the scans to STEP and Fusion 360 models. One freelancer also bought a Roborock Qrevo 5AE outright, took it apart, scanned it and converted the whole thing – which is a fast way to get a complete, working reference for how a modern vacuum is actually packaged.

A Main Brush Gearbox Assembly Created from 3D Scans
A Main Brush Gearbox Assembly Created from 3D Scans
A Vacuum Assembly Model Created from 3D Scans
A Vacuum Assembly Model Created from 3D Scans
A Side Brush Assembly Created from 3D Scans
A Side Brush Assembly Created from 3D Scans

These are working models, not just shells. The Roborock FlexiArm side brush gearbox was taken apart, 3D scanned and rebuilt in CAD with every gear in place, so it can be animated to check that everything meshes. It also shows how many gears a single module in a consumer vacuum packs.

YouTube player
The FlexiArm side brush gearbox, reconstructed from 3D scans and animated. The housing is see-through.
YouTube player
A close-up of the same gearbox’s gear train.

Why the Roborock mops were dropped

OOMWOO One was meant to mop as well as vacuum. Roborock’s mop assemblies are sold as spares, but they are expensive, so the plan was to have them reverse-engineered, adapt the CAD for 3D printing and be done.

The reverse engineering worked. The surprise was inside: the assemblies hold far more gears than I expected. I can print gears on my resin printer, but a build like that asks too much of a typical 3D printing enthusiast – many small, precise parts to print, clean up and assemble, and many ways to get one wrong.

So two things changed. The first came from the community:

  • GT2 timing belts and pulleys instead of gear trains. Belts are cheap, standard and forgiving, and pulleys print easily.
  • Motors with a metal gearbox, instead of Roborock-style motors that leave the speed reduction to plastic gears in the assembly. The reduction comes built into the motor, so there is little left to gear down.

The cost was most of the Roborock work, which is also why 3D design progress went backwards this month. It was still the right trade: a design that is faithful to the original but hard to build is not much use to someone building their own robot.

Brushes, from parts you can buy

Side brush: an angled brush on a geared motor

The plan was to reuse a cheap off-the-shelf side brush assembly – motor, gearbox and brush mount in one. There were two candidates, both cheap and easy to buy. The catch: both mate the older style of side brush, not the newer angled brushes that resist tangling. Tangle resistance is a must, because “clean well” is OOMWOO’s first goal.

Copying one of those assemblies would mean 3D printing its enclosed gearbox – too advanced for most makers, the same lesson as the mops. So the brush is now driven directly: a JGA25-310 geared DC motor (12 V, about 150 RPM, metal gearbox) stands vertically and turns the brush through a custom shaft coupler. It fits the enclosure, just, and sits far enough out that the bristles cannot get under the wheel. The brush is Dreame’s common 3-arm angled one; Roborock’s common 2-arm curved brush works as an alternative.

Two other motors did not make it. The JGA25-370 is too tall to fit. The N20 has enough torque – a side brush does not need much – but its gearbox looks flimsy, and its life is around 500 hours of gentle use. Robot vacuums aim for about 1,000 hours: roughly three years at an hour a day.

Main brush: a bearing and a threaded rod

Dreame’s main brushes are tapered, so each is held at one end only, by a bearing and a long steel rod running through the brush core. A notch on the rod clicks into a clip inside the core, and the hex-shaped base of the rod drives the brush. To replace a brush, you slide it off the rod. Dreame uses an S625 RS bearing: 16 mm across, 5 mm wide, 5 mm bore.

OOMWOO replaces the steel rod with an M3 threaded rod and a custom M3 coupler. The coupler fits tightly into the bearing and is hex-shaped to drive the brush, and a custom screw-on tip at the end latches into the clip inside the brush. The coupler’s other end will match whatever drives it – a pulley or a gear.

The bearing is tentatively a 608 2RS: cheap, easy to buy, and a little bigger than Dreame’s, as insurance for 3D-printed parts holding looser tolerances than injection-molded ones. A poorly seated bearing would tilt the long brush.

Main brush drive: printed gears, no belt

The two tapered brushes sit 33.5 mm apart, centre to centre – the spacing Dreame uses in my L60 Ultra PE – and they turn towards each other, so one has to run the opposite way to the other. A pair of identical spur gears does exactly that.

The first plan was a GT2 timing belt from the motor (a DC gear motor about 25 mm across, with a 4 mm shaft) to one brush, then the gear pair. Once modelled, the belt pulley added about 16 mm to the width of the assembly – on top of everything else that makes a printed design wider than a molded one: thicker cavity walls, thicker gears, and a wider bearing seat, because a brush held from one end only needs a snug bearing to stay straight. So the belt is gone. A third printed gear, a pinion on the motor shaft, drives the pair directly. That drops three purchased parts – two pulleys and the belt – and the pinion gets its grub screw built in.

Which gears. Off-the-shelf POM (Delrin) gears would be ideal: tough, slippery, cheap. The catch is size. Module 0.5 gears are cheap and plentiful, but 33.5 mm needs 67 teeth, and they are only about 2 mm thick with a 2-3 mm bore. A 34-tooth module 1 POM gear exists but is rare (around $4 plus $6.50 shipping on AliExpress, $16 on Amazon), and the other modules that would fit are not sold retail at all. A LEGO gear comes close, but at 36 mm it is the wrong size, it has no centre hole, and it is ABS.

So the gears are 3D printed for the prototype. Printed gears will wear out well before the 1,000 hours a robot vacuum is expected to last (about an hour a day for three years), so the next step is cutting them from 1/4″ Delrin sheet on a desktop router. A $15 6″ by 12″ sheet makes about 20 gears, and cutting gives the hex hole for free. Makers can print their own – Delrin filament exists, though it warps and is hard to stick to the bed, which small gears make bearable – or get cut gears in the kit.

Gear settings, from the Fusion 360 spur gear script: metric, 20° pressure angle, 17 teeth, module 1.97 (33.5 mm / 17), 0.15 mm backlash for FDM printing, a 0.8 mm root fillet for strength and printability, and 1/4″ thick to match the Delrin sheet.

First prototype. The cavity is printed and assembled. It is very basic: the two tapered brushes, each on its bearing and spur gear, and the motor pinion driving one of the brush gears.

YouTube player
The main brush cavity prototype, printed and assembled: two tapered brushes, each on a bearing and a spur gear, driven by a pinion on the DC motor.

Width was one reason to drop the belt; direction is the other. A timing belt turns both pulleys the same way, so it cannot reverse the second brush on its own – only a two-sided belt can, and two-sided GT2 belts are rare and expensive. Gears do it for free.

Consumer vacuums mould their gears from Delrin (POM), which is durable and self-lubricating. Delrin is tricky to print – it sticks poorly to the bed and shrinks – but it works: I now print the gears in POM on a base of two PETG layers. Here is how I 3D print gears using POM (Delrin). The router stays as a backup.

What comes next

None of these assemblies can be used as-is. They are accurate copies of somebody else’s parts, so the next pass is to test them, tweak or completely remake them and ultimately make them 3D printable: splitting pieces to fit a printer’s build volume, reshaping to cut supports, and adding the tolerances a printed part needs but a molded one does not.

That work has started. Every part is being designed to print: the base, the enclosure top and the bumper top each have a flat side to lie on the print bed, and the bumper skirt is a separate flat part that screws onto the bumper. Bought parts fill in the rest – Roborock wheels and battery, a Dreame HEPA filter and suction fan, and iRobot cliff and bumper sensors.

YouTube player
3D design progress: the printable base, enclosure and bumper, with the off-the-shelf parts in place.

Three days later, the design had moved on:

  • A place for a phone. An old Android smartphone with USB-C now has a spot in the robot, where it can stand in for the Raspberry Pi CM4/CM5 as the screen and compute.
  • Brushes. The fixed side brush and Dreame’s tapered dual main brushes are in – more on both above. Practically no tangling.
  • A camera that looks at the floor. One RGB camera instead of a stereo NIR pair, pitched down so OOMWOO can check whether the floor is actually clean, and keep going until it is. Why that matters.
YouTube player
3D design update: smartphone placement, the fixed side brush, Dreame’s tapered dual main brushes and a floor-facing camera.

The plan for materials is split. The few gears that remain go to SLA, which holds tooth detail well enough to mesh. Enclosures and brackets go to FDM, which is cheaper and tougher for large parts. The first printed assemblies are landing now, and the results will show up in the build instructions.

Related: hardware bring-up covers what happens once these parts are on the bench – pinouts, connectors and measured currents.

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *