The power of vacuum

I know, I still owe you the public repository with the open source part of Pleasant3D. Sorry for the delay, I’ll release it soon (yes, yes, I said that before…). One reason for the delay is, that I was (am) very busy lately, working on other projects.

In addition to that, I’d like to publish the Pleasant3D sources with it’s Core-Framework API as stable as possible. Since I started to fill some of the existing stub code with real functionality (mostly in the area of the Printing Driver  plugins), it turned out that a lot of APIs in the current Core-Framework needed to be changed and/or redesigned in order to work as intended. As soon as I’m finished with these changes (and that’s really, really soon, I promise), I’ll publish the open source repository.

Last but not least, I try to keep the good and relaxed mood with Pleasant3D. So far, I have the impression that developing on this one without pressure and stress (something I sometimes cannot avoid with my other projects), is good for me and Pleasant3D :)

So thank you for the patience. Stay tuned, there’s a lot of great stuff coming…

But now to something completely different:

A nephew of mine, living in the land of prosperity and fun gadgets (California), showed me his newest gizmo lately: a vacuum cleaning robot.

It looked like a fun and useful toy. I admit: I’m envious. So I surfed the web for a couple of hours and searched for available vacuum cleaning robots.

I was a little bit disappointed of  what I found so far. The affordable models don’t seem too powerful when it comes to cleaning stuff and the more powerful machines are way too expensive. Also, as far as I can tell, these robots aren’t very intelligent when it comes to figuring out  how to optimize the “tool path” when cleaning an apartment. Most of the current cleaning robots seem to do some kind of trial and error, hoping to eventually crossing each spot on the floor alone by driving around long enough in a more or less random pattern. Only one  robot claims to actually navigate in a somehow intelligent way when cleaning.

Another thing I don’t like with almost all available cleaning robots,  is that they only have a relatively small container for the dirt, which means that one need to empty the robot’s dirt container very frequently. Only one model does this automatically when docking to its base station. But this robot is also the most expensive I found. And as far as I can tell, it is cleaning with the “random trial and error” pattern and it seems that there wasn’t any development on this machine since its release several years ago.

So I had the idea to try to develop my very own, open source, printable cleaning robot. I guess it’s much more fun developing, building and testing a robot than buying an existing one anyway. And burning my free time with building a robot sounds much better to me than cleaning the floor manually.

As far as I can tell, there are 3 major tasks in this project:

  1. Developing and building some kind of drive system
  2. Developing and building some kind of vacuum/cleaning section
  3. Developing a kick ass cleaning robot firmware

Of course, I start with number 1. It looks like the easiest part to me and in case the whole project fails (to be honest, I have no idea how to solve number 2 and I probably don’t have enough time for number 3… ), this part seems to be most likely also usable for future fun projects of mine…

I decided to try some kind of omniwheel solution and the most interesting design seems to be the Mecanum Wheel.

[UPDATE: I accidentally used 80034 ball bearings for the following design, not 624 ball bearings. I’m already preparing an updated design, using “real” 624 ball bearings. See the “The power of reading” post for more details]

Since there wasn’t any printable design for this in Thingiverse when I looked first, I designed it by myself (well, RustySpoon1121 beat me on this one and published his design yesterday, but since my design is different and it was already finished, I published it anyway):


In order to be printable on a MakerBot, I designed the center wheel and the eight holder parts for the rollers as separate parts.

The roller holders need some cleaning after printing to fit snugly into the slots of the center wheel. When pressing the 624 80034 ball bearings into the holder, it’s  important to use a solid underground. Otherwise the relatively thin printed loop around the ball bearing might disintegrate during the process…

Then, the holder parts are glued into the slots of the center wheel. Be sure to adjust the holder parts at a right angle to the center wheel.  I used hot glue for this, since it’s very easy to adjust the parts for a little while after inserting.

I only had two 624 ball bearings left, so I only assembled two holders (and rollers) right now. I’m currently waiting for the delivery of more 624 ball bearings, which hopefully arrive in the next few days.

On the photo above, you can also see the M3 nut in the center hole of the wheel. It’s holding a M3 set screw (a normal M3x15mm bold might work as well), to fix the motor shaft in the hole. The center hole has a 5mm diameter, suitable for holding the 5mm spindle of a NEMA17 stepper motor (with one side of the spindle filed flat).

The rollers are assembled as a sandwich of several parts:

Put the following sequence on a threaded rod (M4 x 60mm) or a M4x60 bolt:

  • M4 nut (skip that, if you’re using a M4x60mm bolt)
  • M4 washer
  • printed half roller
  • M4 washer
  • 624 80034 ball bearing (mounted in a printed holder part)
  • M4 washer
  • printed half roller
  • M4 washer
  • M4 nut

Here’s the Mecanum wheel with two assembled rollers:

More to come (as soon as I receive the 624 ball bearing delivery…)

The whole design is published at

Please note, that there are a left and a right version of the center wheel. In order to build a fully omni-directional navigating robot, you need a total of 4 Mecanum wheels, two “left” and two “right” (for more information, click here).


  1. Zaggo, you never cease to amaze.
    I print your whistle when I demo my bot and am in the process of building a Printruder II. Now this – wow! I’ll be printing this too!



  2. Thank you all.
    Please note, that I accidentally used 80034 instead 624 ball bearing when designing the Mecanum wheel. But I’m currently updating the design for “real” 624 ball bearings (also solving several other problems I ran into with the first design). See my yesterday’s post “The power of reading” for more details.

Leave a Reply