Mucho Cheapo Swerve - $20 Test Module

100% this.

I use them at work. They’re dirt simple to use. Although my favorite tool for setting 'em is actually a HAMMER (carefully applied, of course) or sometimes a bench vise or C-clamp or F-clamp depending on geometry. Usually setting into ABS. 10-32, 10-24 on occasion (I try to avoid this), 1/4-20, 8-32, 6-32, and a couple of metric sizes on occasion.

Flanged are good, non-flanged work, but a through-hole flanged type (has the flange on the split side vs on the screw side) is really really awesome for certain jobs.

My usual install process: Remove supports from the part. Locate inserts and 1x screw (or more). Expand pre-printed holes with drill bit to make sure they’re the right size. Hammer insert into plastic*. If necessary, put the screw a couple threads in and use that to help hammer in. Screw in, ignoring any shrieking the screw/insert does. Back the screw out and on to the next one.

We used to use a type that had a separate spreader piece inside. Those were a royal pain as you had to use a punch to set the knurls. Avoid that type.

*Check your layer direction relative to the split direction FIRST. You don’t want to set it so it’s pushing layers apart. The quick-build clamping blocks are the best-case where the hole goes through the layers and it doesn’t matter, but if it were crosswise you’d have to pay a lot more attention.


Channel-Lock type pliers will open up wider than the usual types of pliers. They will also apply the insertion force with two surfaces that remain more parallel to each other than with other types of pliers. Lastly, they tend to have long handles giving more leverage that is helpful for people with lower grip strength.


Plierswrench go brrrrrrrr

Absolute life and finger saver all over the shop


WOW! That’s really awesome I wouldn’t be able to do half of that. However, i do have one question. Have you found any negative sides to the prototype or anything that you think you can better improve? Also, do you think that moving forward you will be able to use it in a competition?

1 Like

Super cool!

A sneaky steering mod would be to print a gear on the OD of your bearing flange and drive it from the servo!

1 Like

Oh boy, long winded process discussion coming up…

The prototype was mostly built as a way to establish confidence in the design, and to identify things that could be developed further or improved. I discussed a few of the changes I made towards the bottom of my post, but your question will give me a bit of an opportunity to talk about a few more. :slight_smile:

  • A big question mark for me was the custom dual thrust bearing, I wanted to know if I needed a tolerance in the ball groove (basically gap between the balls and their groove, to compensate for the 3d-printed parts being too large or too small in real life). When I put it together the resistance was quite high in rotating the forks. After a bit of testing I realized this was due to the alignment of the “seam” on the 3d-print, basically where the material line of each layer starts and ends.
    Randomizing the seam placement in the slicer software, as well as adding a very fine gap solved this problem. Adding a little bit of lubricant helped here, too.

  • I made a stupid when I was doing the initial design, and didn’t leave clearance for the m3 bolt-heads holding the 1st drive gear onto the drive motor’s ultraplanetary gearbox (against the mating bevel gear).
    This was a pretty easy fix in CAD, I adjusted the profile underneath the spur gear section of the drive bevel gear (the middle dual gear piece that drives the wheel).

  • Lastly, I struggled quite a bit with cantilever on the steering pulley (the one attached to the servo). Basically, if a shaft is not supported in two or more places it will bend or deflect as tension is applied by a belt/chain. Even if a shaft is supported in two or more places, it will deflect. The shaft here is supported by the servo at one end, and the thru-bore encoder in the middle. In this case, that can cause the steering belt to skip teeth as it encounters resistance. I always think shafts are supported enough, they rarely are. This isn’t helped by the TPU belt I made needing quite a bit more tension than a regular belt.
    I solved this problem by increasing the solidity of the thru-bore encoder mounting, and adding a wall just behind it, all to prevent it from moving slightly and allowing for deflection in the pulley.

I think there’s still a bit of optimization work to be done making all of these things work and harmonize nicely, but I’m happy with the design for now. I haven’t really touched this project since the summer, but I may pick it up again if I find the time.
Apologies for not sending any photos of my iterations with these items. If I had photos of everything I did… my phone would explode.

No, probably not. The design of this module hinges on the use of a lot of cheap or 3d printed parts, which don’t really scale to the abuses of an FRC competition event. I could see this being used on an FTC robot, however. The purpose of this module is mostly to explore making a really cheap swerve module, as well as writing software to control it.


This is a great idea, and might make addressing cantilever issues somewhat easier. My idea to switch to a gear was to integrate a female ring gear into the forks, reducing the module length by about 2" (at the cost of ~1/4" of vertical space). I like your idea quite a bit as well, it wouldn’t be as space effective, but would be quite a bit easier to design for and maintain.

The main reason I didn’t move to a geared design while working on this project was for ease of maintenance, that way the forks could be dropped without having to detach the encoder and servo. I wanted to try TPU belts, as well, and I’m happy with how that experiment went. If I pick this project up again in the future I’ll likely flirt with the idea of a geared steering variant. We’ll see. :smiley:

1 Like

One thought on the bearing races; you can get better performance from a gothic arch type contact, rather than a simple round groove; these are used on full size four point of contact bearings.
Another improvement would be to add a clearance groove directly above and below the bearing balls; this keeps the bearings from having to touch the part that suffers the most from stair-stepping!
Another possible simplification for the OD gear steering would be to have a dedicated shaft for the feedback encoder.

1 Like

These are awesome ideas. I’m hesitant to integrate a gothic arch style bearing groove, simply because this seems more prone to wear over time on a 3dp structure like this.
I do really like your idea for a clearance groove top and bottom, however. It’d allow for a good balance between contact surface area (for durability) and clearance (for lubricity).

Hi there, I was wondering what gear ratio you used for your drive motor

1 Like

So the V2 module I have built uses a 5:1 drive motor and 12:1 steering motors, but this is for a balancing robot use case, not a robot drivebase.

That said, the steering ratio feels about right, it’s snappy without sacrificing torque. The drive ratio lacks the torque and low speed controllability needed for a drivebase, so I’d go up to a 9:1.

V2 CAD can be found here, and here’s a screenshot of the module, for context:


It’s been a while since I’ve updated this thread; I’m planning to start a new one soon.


Man, I’m still attempting to build V1s and experimenting to get them working with an FRC setup for a mini swerve bot for new drive team members to use to get a feel for swerve.

1 Like

Well if you haven’t gotten too far, definitely switch to the V2. I was never quite happy with the servo-based steering setup on V1, and CheapoSwerve V2 made a big improvement there. The encoder integration has improved a lot as well.

Sadly I’ve printed and gathered a lot of the parts already so I’m already committed to the V1s, but I do like your new redesign.

1 Like