A Few New Assumptions About Swerve

One of the big debates @nuclearnerd and I have had is he isn’t sure swerve forks that are printed (especially on consumer grade printers without fiber) are stiff enough for FRC use. That prompted me to start looking at what other assumptions we’ve always just made about swerve in FRC. Why do we need azimuth bearings, can a delrin bushing work? And you know what? Combat robots use bushings in their drives, could we? With those and a few other questions that I’m too dumb to know not to ask I set out on a design (mostly fueled by insomnia). My constraints - 2.5D single operation pieces only, simple lathe operations, and printed parts in NylonX. I’ve also removed the requirement of having an absolute sensor on the azimuth because for my purposes of software development I can zero the modules manually. Though there is space for a printed pulley to get a 1:1, just didn’t spend much development time on it because it’s not pertinent to my needs.

Delrin bushing for azimuth, printed forks tied together with a dead axle shaft, and TTB wheels opened up to allow for a 5/8" OD bushing. As pictured it’s geared to ~15fps free speed though the spacing allows for a range down to 8fps in ~1fps steps. (This will vary depending on what you use as your drive motors). Main drive shaft is the only complex lathe operation requiring a 3/8" hex being turned down to 10.75mm (thunderhex), down to .25", and then drilled and tapped for retaining screw. The odd colored panels are a feature I’m playing with to identify modules more easily independent of the frame of reference.

Per cost module comes in around $235 without ESCs or fasteners, but that price can go down easily by using the hdhex motors that come with the UP gearboxes. Estimated print time for the printed parts on my Mk3S in CF Nylon come out to just over 8 hours, plus some spacers (probably another hour of print time, the spacers are all very thin pieces).

And then because why not, here they are mounted on a 16x16 chassis…

Maybe all of this is stupid and bad ideas, I’d love to hear from folks who have tried similar stuff. Mostly shared because a) posting swerves seems to be the hip thing to do these days b) spark a discussion of why some of these things are bad ideas c) inspire folks to start discussing other potentially stupid ideas.

Now if I can get ROS2 controlling my motor controllers that I bought on firesale from Diligent I’ll have an excuse to try it.


Could we get views with overall dimensions of some of the basic sizes, ground clearance, etc? Overall this is definitely one of the better designs out there I would say.

Can you get away with printed forks? Definitely. A decent amount of teams have already proven this, and being dead axle certainly helps a lot. Obviously game specifics can potentially matter, making sure the wheel hits any kind of obstacle before the fork does would be a good idea, unless you’re purposefully designing a skid function into the fork or as an add-on.

I definitely don’t see an issue with bushings for the azimuth. The reason i have never bothered is because frankly the large bearings commercially are pretty cheap now and takes care of the problem easily.

Related to the large bearing, on 33’s off-season chassis we built in 2019 the shaft with the pulley before the main turret is actually just spinning in a machined hole in the nylon plate. So the nylon plate acts as a bushing and that has worked just fine (the part spinning in it is a printed part made of onyx).

On all of this for a design exercise to get cost down to the lowest possible amount doing all of this makes sense. But in reality using a 3in ID 3.5in OD bearing, or an 8mm bearing for the previous shafts really don’t add much cost and guarantee things will work without having to be as precise on the finish of parts or tolerance.

1 Like

I can make those measurements happen.

Ground clearance will depend on how exactly you mount it. I’d planned on mounting it on top of 2x1 tubing, giving about an inch and a quarter of ground clearance.

Honestly, the big driver for the bushings in the drive was that I didn’t want to have to design/source a wheel and the TTB wheel can’t fit most bearings. The rest of it was all about reducing part count (and thus cost) and starting to poke at “why”.

1 Like

Did you do any back of the envelope math against the bushing ratings or is this just CAD?

I’d be interested in how much the moment created off the bevel gear reaction adds to the overall friction in the bushing assembly - whether that’s comparable to friction due to robot weight…

I didn’t, working on gut feeling more than anything. It would be interesting to see the impact the extra thrust loading impacts the bearing.

But if the friction between the wheel and the bushing exceeds the friction between the bushing and the shaft I’d assume it would just slip on the shaft instead. And since they are flanged bushings I’d expect that to handle all of the load from the bevel (well, specifically I’d expect the one opposite the bevel to handle that load) which should react via the flange on the wheel.

Worst case, that experiment ends up being super bad and I open up the TTB wheels a bit more to fit a 16mm OD bearing and go to an 8mm steel axle through there, though that’s getting a bit smaller than I like (it’s slightly smaller than 3/8).

1 Like

If I’m looking at the pictures correctly, my gut says your dead axle wont stay dead. The bad load on the wheel bushing will come from hard cornering or being pushed sideways which will try to “cock” the wheel. Similar to the bevel gear force but more of it. This will cause the bushing to grab the axle and try to spin it. Gut says there isn’t enough contact area keeping the axle from turning. You are counting on the tightness of the axle screws from keeping this phenomena from happening which means the ability of the screws to stay tight will be important. Over time the plastic under the screwhead (and at the axle ends) will cold flow/deform. At this point you also loose the strength advantages of the dead axle and the axle will become “live” and the “bushing” will be screw threads on plastic (bad JuJu).

The weight of the robot (and cornering forces) is putting the axle screws in shear. The area of the axle that is pretty important has the cross sectional area of a 10-32 screw.

Maybe think about increasing the axle length, modify the plastic to accommodate it. This will give you a bunch more area interfacing with the axle.


I think I agree with everything Mark said. I didn’t realize you had bushings on the wheel shaft, I guess I didn’t look close enough. I definitely don’t think this trade-off is worth it. Obviously you were purposefully pushing the limits on some of the default swerve assumptions. I think this particular spot would be the first thing I would switch back to bearings because of the reason Mark stated above.

Yeah I’m probably going to add the 8mm steel tube to my McMaster order and double up the order of 8mm flanged bearings from ttb. Cheaper than paying shipping multiple times.

Change in module bom cost? $1.60 (the bushings are about 80 cents cheaper)

Now to wish McMaster had shipping options other than fast for the screw to expand sleeves. Oh well I’ll keep poking around for a supplier for those other than them. I love McMaster but I have no reason to have those parts over nighted. Sure I could use heat set ones but I really dislike the smell nylon gives off when doing that.

If you put a shoulder in the wheel bearing bores you could use bearings without a flange. That will reduce the cost even more. Even in low quantities you can find R8ZZ or R6ZZ bearings in 10 packs on amazon for less than $1 per bearing.


You could also do what I did in one of my design attempts: epoxy-glue in sleeves or bushings into the plastic forks so you can spread the nut and bolt head load over a large shear area.

1 Like

Could probably swap to the unflanged on the motor too then.

For reference this is what I’m trying to improve on from the last module I experimented with. I despise mixing 3/8 round and 3/8 thunder hex in a design because it’s confusing and makes keeping spares more difficult.

Reducing unique part counts and all that.


Some of our early attempts at our in-house swerve design in the summer of 2016 used bushings for the azimuth rotation. We had taken our inspiration from the 221 swerve modules that we used in 2015 and 2016 which used a bushing. The AM module also used a bushing.

Despite these designs to learn from, we were never able to get something that worked well enough. At iteration 4.0 we added the azimuth bearing to our design. We don’t buy a separate bearing instead, we lathe bearing grooves into our main plate and top and bottom azimuth plates and then use delrin bearing balls in those races.

Switching to the bearing made all the difference and we have used this design for all our competition iterations since (2017 - 2021).

I know some other teams have been successful with bushings, so I am not saying it can’t be done. I’m just passing along our team’s experience in the azimuth bushing vs. bearing department.

So, my question to you is, how are you intending to determine whether your challenges to the various swerve design assumptions that you have questioned with this design are successful or not? I mean, as a thought experiment, I get what you are doing. But at some point, we need to determine whether these changes are viable or whether they won’t work. Are you planning to build / test your design?

1 Like

Yeah, I’ve got a set of modules that do similar (instead of turning into the top and bottom plates it involved a machined groove in the side of two plates and drilling a fill hole for the ball bearings it was involved) and we did a turned vertical bearing on 323 too. John has also used bushings in the past.

Personally, I think those things work but it is more finicky than a COTS bearing. I have a strong hunch that a bushing approach runs into the same problem. Though I’m curious the impact increased steering power has on this (given that I’ve driven with window motors and neverrest motors in the past).

Im also curious about the impact on drive styles and code has on this decision. 16/323 has traditionally used a different style of steering than most swerve teams and thus gotten away with way less steering power than most. This largely seemed based on discouraging rapid module direction changes preferring to curve more than translate. Though I will say in more recent 323 swerves this is less pronounced (though the steering has still been slower than the 1323 is)

As for evaluating - it’s a mixture. See I have this lovely benefit of having been around almost forever. I have zero qualms about someone thinking I’m stupid. So, I have far less aversion to posting something and being told by folks “that doesn’t work how you think it does”. I can ask stupid questions that some people might be afraid to do.

The other half, yes, it’s in process but I’m trying to nail down control system (I don’t own a rio…)

Left - Jetson Nano, teensy 4.1, and i2c servo driver (for testing a lower cost option of motor control using just open loop)
Right - OakD for testing object detection and dynamic pathing

1 Like

One thing I have learned about 3D printed parts is to limit their use to only compression loads. That said I used a lot of printed parts for the swerve modules (and everything else) in the Curivator project. Now, while the overall goal of that project was not subjected to the rigorous quick-paced stresses in an FRC match, it did have to drive on rough terrain and these held up just fine for compression loads.

*Limit to compression loads that do not have a hidden shear stress that strip layer adhesions.
*Even tensile stresses not on layers fail much more than compression.
*All testing done mostly on ABS, and the dark blue was pet-g later on.


Taking into account some of the discussion here went back and did a revision 2.

Major changes:

Custom printed wheel to allow for room for thunderhex bearings in the wheel. Cost doesn’t really change all that much so it’s just not worth it.

Lamprey encoder added for zeroing modules

Hex insets in forks to make removing wheel easier.

Reduced unique fastener count - sadly this meant I used mostly button heads which are problematic for FRC teams due to overenthusiastic students. But in a few instances the clearance for a socket head just isn’t there so it was either add more unique fasteners or use button heads everywhere.

And because my brother claims the Lamprey is a pain to calibrate I took a quick pass at designing a jig to aid in calibration. It relies on the 3 flats on the top plate for the modules and provides some detents to align the module at certain angles against a shoulder bolt.

Unsure if it’ll work but should be quick to print and try.

1 Like

Could cut another few dollars going vbeltguys for the belt to get closer to that <$200/module range :slight_smile: : 325-5M-09 Synchronous Timing Belt

(not that I don’t like Swyft)

On the flip side, your CAD has a N550 but that isn’t listed on the BOM.

Yeah. I have a setting to flip the whole thing from brushless to brushed not one for mixing :confused: they should function the same just add $25 to the bom.

1 Like

You can plug the SparkMax driving the NEO550 steering motor directly into a laptop and then write a quick command that drives the NEO550 to the exact number of encoder clicks to produce 45 degrees of rotation. Once the lamprey accepts that calibration, run the command again for the next 45 degrees and so on until you are done.

See that’s what I said!

Might still give this a shot because I’m curious. Tools in the belt right?

Can we get LxWxH and weight of this update? :slight_smile:

This design is really good. The only thing I have really moved away from is having the power transfer from the steering motor and module be under the main mount plate. This wasn’t a problem in 2018 when ours was exposed underneath but it did get gross with a lot of carpet residue and dirt, and we also used gears. A belt exposed under there worries me. It’s probably fine but I prefer to get that above the plate.