Hey! This thing is still a Work in Progress. Files, instructions, and other stuff might change!

Parametric Lego Mindstorms Omniwheel

by projunk Dec 26, 2014
Download All Files

Thing Apps Enabled

Please Login to Comment

This is great part, we need it! :)
I have tried to print the printable version first, but it is too loose, so I've printed the exact size version. It fits the pins and axle, but it is too tight I think. Could you please help me how to modify the scad file to make both pins and axle 0.1mm looser?
I have also another issue in scad file - it does not render the space for barrels, do you know what can cause it? See the att.

First of all: the printable version is the version I used myself to get the dimensions correct on my printer. It is unlikely that the printable version will work for you as well.

I suggest to always start to print the version with exact dimensions. Since printed holes are always smaller than the wanted dimensions, there are two ways to fix this:
1) drill the holes to the correct dimensions and for the axle holes use a Dremel like tool.
2) use indeed the "printable" trick. You can do that by setting the variable PRINTABLE = 1; Of course you should NOT use my default corrections (they match my own printer). What you should do, is to measure the dimensions of your exactly printed version of the omniwheel and change the correction values so that they match your printer.

Example: You measure the pinhole and find 4.6 mm diameter (radius 2.3 mm). The wanted diameter is 4.8 mm (radius 2.4 mm). To get the next print spot on, you would have to use a correction value of:
correction_pinhole_r2 = 0.1. (2.4-2.3). Repeat this procedure for the other dimensions.

The object indeed does NOT render correctly with the OpenSCAD version I am currently using (2016.05.12). However rendering with version 2014.03 works just fine. So I suggest to use that older version to render the omniwheel with your corrections. As soon as I have some time available, I will try to fix the broken model.

Thank you very much for your answer.
I have downloaded the old OpenScad and I'm able to render the wheel now, great.

But I do not see the PRINTABLE and correction_pinhole_r2 variables in your scad file.
Is the PRINTABLE variable some OpenScad system variable?

So I suppose I have to modify the scad, but I'm not sure which dimension means what. :)
You have explained that r2 is for pinhole diameter, and I can just add some small value to it, so I'll try to add 0.05mm and I will change the line:
r2 = 4.8/2 + 0.05;
The pinhole should be ok now, right?

And which variable is used for axle width? Is it enough to modify this line:
axelHoleWidth = 2.3 + 0.05;

I did not realize the OpenSCAD file on thingiverse was not the latest version. I uploaded the latest version. The variable "PRINTABLE" should now be available.

The variables I mentioned should now make more sense.

There are 3 variables that control the shape of the axle hole:
correction_axleHoleRadius = PRINTABLE ? 0.15 : 0.0;
correction_axleHoleWidth = PRINTABLE ? 0.3 : 0.0;
correction_axleInnerRadius = PRINTABLE ? 0.4 : 0.0;

Depending on which part need to be made bigger, you need to modify the appropriate variable I suggest to change all to 0.1 and see how that works out. (or better of course measure all those dimensions on your printed parts)

Cool, thank you! Warming up the printer. :D

fyi:Rendering issue with the newer OpenSCAD versions has been fixed.

I did it finally using PLA + eco3D Flex. :)

For the flex barrels I've used these values:
correction_pinhole_r2 = PRINTABLE ? 0.01 : 0;
correction_pinhole_r3 = PRINTABLE ? 0.1 : 0;
correction_axleHoleRadius = PRINTABLE ? 0.015 : 0;
correction_axleHoleWidth = PRINTABLE ? 0.06 : 0;
correction_axleInnerRadius = PRINTABLE ? 0.08 : 0;
correction_rollerlength = PRINTABLE ? 0 : 0;

and for the wheels
correction_pinhole_r2 = PRINTABLE ? 0.01 : 0;
correction_pinhole_r3 = PRINTABLE ? 0.1 : 0;
correction_axleHoleRadius = PRINTABLE ? 0.03 : 0;
correction_axleHoleWidth = PRINTABLE ? 0.15 : 0;
correction_axleInnerRadius = PRINTABLE ? 0.2 : 0;
correction_rollerlength = PRINTABLE ? 0 : 0;

Your wheels look great, well done!

You might want to have a look at the Mecanum wheel designs once your finished with this robot.Sideways driving is an amazing experience.

see e.g.:

Parametric Lego Mindstorms Mecanum Wheel 82 mm (iteration 2)
by projunk

Thanks, that's the one is next to print. :) Shall I use the same corrections?

yes, those should work fine.

Comments deleted.

@projunk is it possible for you to send me the code for that lego ev3 robot?

The java sources have now been added (look for OmniBot4_EV3.zip)

I was expecting it to go sideways. Thanks for the pictures of the robot. I have lots of sets of nxt robots and I have one EV3 so I will have to mess around with it a little more.

A short youtube movie of the (old) wheels in action in a 4 wheel robot (2 NXT bricks in master/slave over RS485).


I think you refer to my robot (not yours) that you expected to go more or less sideways; that only partly happens because the wheels are slipping too much; it might be interesting to try Ninjaflex as material for the rollers to avoid the slipping.

With a robot based on 4 omniwheels this problem should not occur; I expect that sideways moving and even drifting should be possible. I plan to try this using the EV3 (or 2 NXT's in master/slave). It would be nice if you would publish your 4 wheel/EV3 robot on youtube once finished.

Seems to work just great, congratulations!!!

I plan to use 4 of those new wheels in a EV3 robot (the EV3 can control 4 motors)

I just published a youtube of the old version of these wheels (NXT 3 motors/wheels)

printed out on a Rep 2 standard settings no raft or supports. object came out too big or at least the centers of the rollers were too big to hold axle in place. The holes in the hub for the roller axles were the correct size. I am now going to scale to 85%. Also a better design would be to have the rollers with holes and the hub to have x's for the axles.

The files without the name "_printable" are exact measurements. To get the omniwheel better out of my printer (Prusa i3) I had to make some changes: compare files "OmniwheelSolid2.scad" and "OmniwheelSolid2_printable.scad". But these are just minor changes. This omniwheel can be easily printed on a Prusa i3 printer as can be seen from the images. The only special printer setting is the use of a brim, no supports/ no rafts. The first layer I print with object cooling system disabled; all other layers are printed with the object cooling system running at maximum. (http://www.thingiverse.com/thing:357833)

I do not expect that the rollers with holes and the hub to have x's would be a better design. I expect it will be much harder to have the x's printed in the hub and have it the correct dimensions. It is now quite simple to drill the hub holes to 5 mm and drill out the x's in the barrel (if any correction is needed at all).

But please go ahead and make these changes to the .scad files; I am certainly interested to know if that would have been a better design.

Parametric Prusa i3 combined J-Head/object cooling system
by projunk

I am assuming that you are printing with ABS. I am printing with PLA. My finished rollers are 14.93mm dia. and 14.24mm tall. What size are yours? A lego axle is 4.71mm wide. The hole in the roller is 5.67mm. I printed a 85% roller and it is a friction fit. I am almost done with 2 full sets of wheels and I will let you know if it works.

Yes, I am printing both chassis and rollers in ABS. The friction fit with the axle in the roller is quite easy to achieve in ABS. My finished roller dimensions (14,4 mm tall, 15.4 mm diameter). I did print all parts with 100% infill. I used the "_printable" files, which are of course suited for my own Prusa i3. Intentionally I made the axle holes in the "_printable" smaller so that i can make them fit using a 5 mm drill. When I was printing the first test print using "bigger" axle holes, the bearings did crack due to cooling down of the ABS; printing smaller holes fixed that issue. Since you are using PLA, that should not be an issue at all.

I see from your pictures (which look great) you have used both the Lego axles and steel rod as axles. Is there any difference noticeable concerning friction?

The axles are alum. and they both free spin but the metal axles do spin a little better. I am going to try and test the wheels today and maybe make another set.
I used 2 shells and 10% infill on my prints and it worked fine. Took about 4 hours to print.
I will post videos to Youtube so you can see.