I recently put some time into designing and building a new swerve module, mostly for fun, but also as a learning exercise for myself. I’m pretty happy with the results.
This post may get a bit long-winded in its discussion of the process, folks are welcome to skip to the end if they’d like.
The main idea was to build a module that I could fund a drivebase for out of pocket, and that my team could use as a demo tool at outreach and recruiting events. The core of the experiment is a cheap module that can be run from an FTC ecosystem (REV expansion or control hub), and would be thus limited to 4 motors per drivebase. Using mostly 3dp parts, a custom thrust bearing, and the same m3 bolt for the majority of the hardware needs nets a quite affordable BoM, roughly 20 bucks per module without actuators (including filament needed). The with-actuator cost jumps up to around $113 when the motor, servo, and encoder are factored into the purchase.
Drive is transmitted through a dual stage reduction, including a printed spur gear pair and a printed bevel gear pair. I haven’t had issues with the durability of these gears, mostly because the TPU tread and light drivebase don’t really make enough traction to cause the torque and shear load you’d need to break something. I would definitely switch to COTS gear options if this needed to be used on an actual robot, or any system that weighs much more than 30lbs, but a use case like that defies to the original intent anyway.
Steering is done by a continuous rotation servo, and monitored by a REV thru-bore encoder. A cam-actuated limit switch is included optionally for an absolute home.
I wanted to experiment with new construction techniques, specifically with TPU belts for steering. The prototype module I built used this, but I’m not sure TPU belts are the solution: they tend to suffer from skipping and impractically high tension requirements. However, they do well as a cheap prototyping option. This module should also be able to accept a COTS 70t HTD belt, as a recourse.
This module also experiments with a custom dual thrust bearing (as shown in the cross-section above), using 6mm airsoft BBs. This is integrated into the upper and lower portions of the module, and is sandwiched together using m3 bolts. I’ve yet to build a module using the BBs; the prototype I built initially used 1/4" Delrin balls from McMaster. The overall bearing concept seems quite solid though, and displayed pretty good lubricity even under high loads (from several directions). It’s definitely not as size efficient as an x-contact bearing or delrin bushing, but that’s to be expected.
This module has gone through 3 main iterations since it was first conceived, each focusing on making it cheaper and smaller. The final product could be made smaller still, but likely at the cost of cost; there’s a tradeoff.
Notable iterations during the process include:
- Adapting to the servo output within the space constraints
- Adjusting belt size and belt tension
- Adjusting frame-mounting style
- Adjusting tread style, moved to a split wheel design to make tread installation + printing easier
Below are some pictures and videos from prototype module construction this summer.
V1 Design featured a single-peice wheel as well as a different frame mounting solution
Ball bearing assembly shown
Move to 2-peice wheel and dovetail tread connections
Servo horn interface prototyping: featured cut down m3 bolts and a printed mating profile
I’m quite happy with how this design project went. I learned quite a bit, and plan to assemble a full drivebase with V3 modules for some software development… if I get a little free time this year.
I’ve got a couple ideas for module improvements in the future:
- Change steering style to an internal ring gear, will help with module size and steering accuracy
- Change integrated bearing style to reduce module size (low priority, size isn’t a huge concern for me)
- Possibly replace captive nuts with heat-set inserts for greater strength and easier assembly/teardown
As a disclaimer, this module is not intended to be competition ready! This was purely an activity for me to get my feet wet actually building a swerve module design, and building some intuition for the challenges associated. I made this post to share the design and spark some discussion. If anyone wants to build this, they’re welcome to. It should be pretty accessible overall, especially if you already have some motors and encoders handy.
Oh, by the way, this module is yet un-christened: name suggestions are also welcome.