3D printed hub, filament tires, Mecanum motion.

Similar projects worth following
Two 3D printed hubs were modeled with holes that traced the circumference of an ellipse angled 45 degrees off-axis. The holes were then filled with circular loops of nylon trimmer line. This formed a 45 degree offset tread pattern at the point where the loops of filament impact the ground.

The filament loops slide along the ground when pushed along the long axis, but grab when pushed the other way. That is basically how Mecanum wheels work!

This will probably work where the regular roller based Mecanum wheels don't fare so well, like on grass, dirt, sand, carpet, etc. Conversely, this will probably fail if used on a hard floor. :)

Let's collaborate!
N0VA as volunteered to give this a shot, and we are independently working on two demonstrator platforms. He's using zip-ties for the tires. Awesome...

Mecanum wheels are one way to allow a robot to move in any direction.  The general premise is that rotation always produces a force which is at a 45 degree angle to the axis of the wheel.  By varying the direction of rotation of the wheels, you can move in any direction including sideways.

The downside here is that Mecanum wheels are relatively expensive, to the point that I've never used them.

Rather than using rollers for this project, I'm going to try using smooth or ribbed filament strands (such as nylon string trimmer line).  The strands should readily slide in one direction, but will grab in the other direction.  

This will probably fail on a purely hard surface, but could actually work better than regular Mecanum wheels on soft surfaces.

The strands can flex as well, which will actually make for a pretty decent Mars rover style tire.  That was actually the initial thought here, but then I realized the Mecanum potential living within the angled strands.

This should work, but I'll need someone to try it out for me...


Latest, parametric, no transmission

x-openscad - 2.05 kB - 05/10/2019 at 09:50



Parametric, no transmission.

x-openscad - 1.79 kB - 05/09/2019 at 18:20


sla - 1.05 MB - 05/09/2019 at 18:10



With transmission, but not parametric

x-openscad - 8.23 kB - 05/09/2019 at 17:17



Include file for gear calculations.

x-openscad - 18.13 kB - 05/05/2019 at 21:44


View all 6 files

  • It's a revolution... really...

    Emil Novak14 hours ago 1 comment

    So I was experimenting with the FilaMecanum's design in the past few days. I’m Emil by the way. Let me show you my journey so far. 

    To give some context my goal is to build a small scale rover. (max. 30x30x30 cm) I have some specific constraints and objectives in mind which I won't bore you with for now.

    I started with Daren’s design, printed it and had some pla filament as tire. It was stiff, way too stiff so there was two ways to go forward. Either find (potentially buy) some flexible filament or use a different source, like zip ties. I have a 3D printer with a bowden extruder so wouldn’t have much use for flexible filament and as the pictures show, I went with the second option.

    Quickly realizing my inabilities with openscad I started operations with fusion.

    (Excuse the filth on my old caliper.)

    The first version was press fit to the shaft and had some printing issues. After this I reconsidered the shaft locking mechanism and moved the aforementioned part to the other side.

    Here I present to you the moving construction.

    No fancy inner transmission (yet) only a 5V 28BYJ stepper with bipolar mod driven by an A4988 driver module. The datasheet says the driver is operational from 8V, but seemingly 6.5V works fine too.

    I would like to see the mecanum effect working soon so the next step is to order some more steppers and make a skeletal version of a test rover.


    You can find the f3d cad on github; and these are my parameters:

  • The tedious stuff.

    Daren Schwenkea day ago 0 comments

    Soldiering along printing all the various parts for four wheels. Four rims done, four output ring gear hubs done, three housing ring gears spec'd to fit my motors here, done.

    I ran out of Aquanet and tried to substitute Suave with terrible results. Off to the store to buy the cheapest hairspray known to man, which also happens to be the best at bed adhesion.

    <EDIT>  Done with all 8 ring gears (4 housing gears, and 4 rim gears).  All are acceptable quality with decently accurate gear profiles, and I did it using a 0.4mm nozzle size.  I'm glad this part turned out actually.  I originally designed this for a 60 tooth ring gear, and mistakenly left this at a 72 tooth ring gear for the final version.  That is a little too small of a tooth profile for a 0.4 nozzle.

    Moved on to the sun gears.  Suddenly, this got a lot harder.  First I moved to a slower speed, then a lower layer height, then more/less cooling... then...

    I switched the nozzle out for a 0.2mm one.  That should make most everything easier.  It did, but I'm still getting some artifacts in the prints.

    I think I'm now over-extruding just a little, and perhaps I'm getting a little too hot for the reduced diameter.  Given the speed this gear will be working at, it really needs to be basically perfect.

    Working on it. 

    Little cooler, slower, and with less cooling print of the sun gear in progress.


  • Bad extrusion = bad gears or.. Shifting see?

    Daren Schwenke2 days ago 0 comments

    Had a bit of a hangup.  My nice gears suddenly started to turn out like this.  

    Look close, and you can see the gear profile is screwy with bits sticking out, like the entire thing shifted (like an axis was selectively losing steps).  However, that wasn't it...

    I eventually traced this down to one of the heatsinks on an extruder stepstick not being 'on' the chip.  I run them at basically full current so... that matters.  So what I think was happening is that one would overheat and then extrude *more* for some reason.  Strange.

    But, I didn't figure that part out before I replaced my existing DRV8825 water cooled axis stepsticks.  

    I replaced that bit of 'engineering' with some, now air cooled, AMIS-30543 modules and an Arduino to handle setup/enable/disable via SPI.  The DRV8825's have worked well here actually, running at their maximum current with essentially unlimited cooling, for the last 2 years or so

    But, I had been meaning to try out the AMIS drivers for a while, so this was as good excuse as any I guess.  This actually pretty much sums up 'observer bias'.  Also, this is why you probably shouldn't tell the auto repair guy what you think is wrong with your car, even if you think you know.  :)

    In trying to implement the AMIS interface, I actually ran out of pins on my Beaglebone Black to be able to do more than a single channel of SPI.  Kind of impressive, if I do say so myself... :)

    The new drivers have a little bit higher current capability but I'm not using that yet. In any case I'm back up and running and printing.

    <EDIT> Print finished, and the printer is back to being glorious.  Printing PLA with zero retraction (because I can do 480mm/sec rapids, and that works just as well and is much faster), and printing at 90mm/sec (minus outer walls), and the prints were perfect again.  Pictures, in a more on-topic log entry.</EDIT>

  • I'm impatient.

    Daren Schwenke4 days ago 0 comments

    I didn't like how convoluted getting #MPRT - Modified planetary robotics transmission adding into this was becoming.  Making that into something that I could include here without a master module or something was turning into a mess.  I blew away my mess and here we are.

    So, I just stuck a copy in the repo and modified it to produce what I wanted.

    Good news is you could use it now.  Bad news is, everything will probably change.

    Any OpenSCAD masters out there with an idea of how to do this better, minus passing all the needed parameters into every child module, feel free to chime in.  :)

    Source is updated on Github.

  • Hub and transmission.

    Daren Schwenke5 days ago 0 comments

    Finished my hub/transmission modeling.  Everything is properly clearanced.

    I cheated on my transmission to get the gear ratio I wanted.  I specified 6 planets, but I'm going to use 3.  The calculations for the additional planets changes the output ring tooth count and cuts my gear reduction down to 39:1.

    39:1 reduction will give me 77 rpm at my output when my DC motor is running at its rated speed of 3000 rpm.

    77 rpm with my 150mm diameter wheels gives me a ground speed of 36 m/min.

    36 m/min translates to about 1.35 mph.  

    That is a little slower than I was aiming for, but I was also going to use larger filament loops before.  It will work.

  • Failure is always an option.

    Daren Schwenke5 days ago 0 comments

    I got a little rough with one of the rims, trying to bounce it off the floor and hit the ceiling.  :)

    It split where the filaments are pressed in.

    I've increased the material thickness for this area in the model, but that won't get posted until I'm done adding back in some rim code.  The #MPRT - Modified planetary robotics transmission version is nearly ready.

  • Please welcome N0VA to the project.

    Daren Schwenke05/12/2019 at 05:50 1 comment

    Cool hande, I gotta say. 

    I know it is probably related directly to your last name here @Emil Novak , but I for one grew up watching the PBS TV show Nova, and so a variation on that will inevitably trigger those fond memories.

    In any case, welcome to the project sir.

    As such, I've created a github for proper collaboration here: and added it to the project.

  • Print settings, and this project "In the wild!"

    Daren Schwenke05/11/2019 at 18:35 0 comments

    Two of the latest version of the rims printed, two to go.  

    I'm printing them with my 'normal' formula for stronger PLA parts.  Some of this applies to most filament types, but not all.

    • All walls, just because 100% infill was acting strange with a lot of rapids, and was adding like an hour to the print.
    • 5-10% over temperature.  Must be combined with going faster generally and your hotend needs to handle it...
    • 5% over extruded.  Surface quality suffers a bit, but most of the internal gaps get filled in for a stronger part.
    • As fast as I can with as little cooling as I can and still not deform for my overhangs.  That turned out for me to be 60mm/sec for all except outer walls (which are at 45mm/sec) and 80% for cooling. I use an air pump for cooling though so it's very precise and localised with the superpower of cooling right at the extrusion point without cooling the entire part.  YMMV.
    • 45C bed temp, and a small brim for bed adhesion.  Cleans up easily and stays put.

    In other news, @Emil Novak has since printed a version of this for a local contest he's interested in, and tried it out.  

    I'm not sure about his choice of tire aspect ratio as that caused issues for me, but it's certainly a start.  :)

    He also has plans for trying out zip-ties as the tire material which he will probably get to faster than I can.

    Waiting to see how that turns out, and as promised (if he's old enough), has been invited to the project.

  • Success, and possibilities..

    Daren Schwenke05/10/2019 at 19:49 0 comments

    The narrower aspect ratio worked, and I got the hole size for press fitting the filaments just about perfect.

    The filaments definitely had a left or right twist to them depending on which end I inserted first.  I tried to balance that out later on, but the first 20 or so were just randomly oriented.

    <EDIT> My son and I played catch with these by bouncing them off the ground and they survived with no consequences.  They are pretty bouncy!  I believe this means I have sufficient depth at the insertion point of the filaments to keep them there with just the press-fit.</EDIT>

    Now to model the transmission for it again.

    However, I just thought of an alternative to string trimmer filament which might actually work better..


    Bend them into a loop and they don't deflect very much from the cylinder shape side to side, but they still flex nicely along the circumference of the cylinder for better performance as a tire as well.

    They won't have quite as much grip as the triangular trimmer line, but I honestly think the flexing off axis is going to be more of an issue.  I already had to make one design compromise based on that.

    The flat shape also lends itself much better to being woven into a cross hatch pattern for a Mars rover style tire, which was the original intention of this project before the Mecanum prospect took over.

    I'm going to have to try them later.

  • Printing parametric polygon perfection project (log)

    Daren Schwenke05/09/2019 at 17:22 0 comments

    I'm done with the new parametric simplified model of the rim.

    Printing it.

    New code is up.

    <EDIT> Ooof, that was going to take a long time to print.  8 hours per rim.  

    I scaled back some of my excessive thickness and such, and got it down to 4 hours.


    Looking at this in real life as it prints, this is a pretty big wheel now!  

    It should pose a suitable challenge for the #MPRT - Modified planetary robotics transmission to spin, and is probably large enough for a good test in grass and such.  

    I hope I didn't make it too thin, and that my guess for the press fit dimensions for the new trimmer line is right.  This one has a 1.6mm wall thickness.

    Uploaded the new code again.



    The filament holes were too small.  Drilled them all out to size though and corrected the model.

    Then I put a few filaments in. 

    They flexed far too much.  The rim and the tire aspect ratio are going to have to be narrower.


View all 25 project logs

Enjoy this project?



Kevin Harrington wrote 4 days ago point

I see you do a lot of OpenSCAD work. I wrote a new Cad IDE called BowlerStudio. The man improvement is that BowlerStudio is ~ 100x to 1000x faster for CSG operation execution. The syntax is lighter weight and the language is Groovy, a fully OO programming language. Besides the improvements, it is feature-for-feature as capable as OpenSCAD. 

You might make particular use of the library and factory system as a deployment system for your work. You have a lot of neat components and pieces of larger systems. BowlerStudio is designed around Git as a file system, meaning posting a script to git, makes it "callable" in another script using the git URL as its "file location".

I am always looking for talented developers to make cool stuff in BowlerStudio, increasing the ecosystem  of design availability! 

Downloads from here:

  Are you sure? yes | no

Daren Schwenke wrote 4 days ago point

I believe I inadvertently looked at this before actually.  It just so happens I used your version of WiiChuck in a currently undocumented project, and I believe I poked around your commits and repositories at that time.  I know I know  from somewhere and that's the one that pops out to me.

At first glance I was not a fan of the 'one tool for all' paradigm and then it being Java based basically killed it for me.  I have known a fair number of Java developers and speed/efficiency was seldom high on the list of their reasons for using it.  :) <EDIT> I'm sure I'm more than a little biased here.  I've been doing some form of IT related work basically since Java was first created.  It was a resource hog and being another layer removed from the hardware was seldom a good thing.  These days, and with the user of proper hardware interfacing libraries, it is probably a different animal, I hope.</EDIT>

That being said, I could definitely use some kind of OO version of OpenSCAD.  The compile time restrictions on variables for simple things like incrementing outside a for loop or doing recursion are not fun.  Faster would be nice too.

I will take another look at BowlerStudio.  Thank you.

  Are you sure? yes | no

Xasin wrote 4 days ago point

Keep us posted! I'm quite curious about this now, as a faster system than OpenSCAD might make me go back to this for a few designs, instead of Fusion360. However, the speed improvements mentioned definitely fall into the too good to be true category for me.

However, for the time being, I might have a library lingering around somewhere that could help simplify the integration of your gears into FilaMechanum. 

It essentially tags subcomponents with a name, and then later on the user can say "subtract tag x from y". That way, systems like your gearing can include tolerance areas with that tag, which will later be subtracted away. As a word of caution I think it does use a lot of recursion to achieve this, so it might not be the fastest thing in the world, but it mostly works ^^

  Are you sure? yes | no

Xasin wrote 05/03/2019 at 16:03 point

Hm ... I once built a robot with regular Omniwheels rather than mechanum wheels, but this setup is kinda tempting ...
I sadly don't have that robot fully assembled any more, but I know of a friend who does. Also, if you want to test them out, why don't you get a single stepper motor plus driver, attach the wheel to it and just see how well it can produce forwards or sideways motion while slipping in the other wanted direction?

I AM quite curious to see how well these work! And this almost tempts me to try a similar design but using large inner diameter bearings and a more grippy outside. That look is just super cool!

  Are you sure? yes | no

Daren Schwenke wrote 05/03/2019 at 16:52 point

Change the angle to 90 instead of 45, and you got your omniwheels.  :)

A single stepper won't tell me enough.  It's the interaction of all 4 wheels which gives you your sideways motion, which would kinda be the best test.  

I can tell you just running it on the carpet that it definitely slides in one direction, and grips in the other.

  Are you sure? yes | no

helge wrote 05/03/2019 at 09:31 point

I might be tempted to experiment a bit with annealing the filament by putting the assembly in an oven and bringing it above the glass transition temperature.

  Are you sure? yes | no

Daren Schwenke wrote 05/03/2019 at 10:03 point

I'm not even sure the trimmer line is actually nylon to tell the truth.  I haven't burned any yet..  :)  I just liked that it was octagonal in shape, and so had some edges to it.  This makes it more likely to grip when it needs to instead of just sliding in both directions.

Besides, what I printed here was in PLA and would turn into molten pile of goo well before the trimmer line even got soft.  If the whole thing was done in nylon, now that's another story and could yield some interesting results.

It's also actually a little too stiff right now to work very well as a tire, but not quite stiff enough to not deflect under load.  I'm thinking a larger rim, more filaments, and a more flattened ellipse may help with this.  A larger rim will start to push the overhang limit though, so this may need to be split into 3 parts then.

Someone needs to build it and put it on a bot, and let me know.  I'm looking for contributors.... 

  Are you sure? yes | no

Dan Maloney wrote 05/02/2019 at 15:45 point

Interesting - I'm getting a Mars rover tire sort of vibe from this. 

  Are you sure? yes | no

Daren Schwenke wrote 05/02/2019 at 15:53 point

You got it.  If I added a second row or just every other one going the opposite way, and the filaments were wolven together, that is what you would get.  Along the way I just realized having only one row might do something special...

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates