Snake Bite Swerve R2

Our initial design release was a bit unconventional, for this iteration we worked to turn community feedback into improvements to make the module lighter, cheaper, simpler, and smaller.

CAD model

Bill of Materials


Weight: 2.791 lb (0.597 lb lighter than R1, now lighter than a CIM motor!)

Length: 4.409” (0.983” less than R1)

Width: 4.121” (0.25” less than R1)

Height: 6.806” (0.11” less than R1)


  • $411.30 hardware cost per module ($33.88 less than R1)
  • $196.30 per module without SPARK MAX / NEO / NEO 550
  • $1745.41 total purchase for four modules ($138.13 less than R1)
  • $1512.67 BOM cost ($14.20 less than R1)

Steering: 437 RPM free speed (5.23:1 UltraPlanetary, 16:77 3mm GT2 belt)

Drive gearing:

  • 14.25 ft/sec free speed (10:18 spur gear, 15:45 bevel gear)
  • 15.68 ft/sec free speed (11:18 spur gear, 15:45 bevel gear)
  • 17.10 ft/sec free speed (12:18 spur gear, 15:45 bevel gear)
  • 20.85 ft/sec free speed (13:16 spur gear, 15:45 bevel gear)
  • Even faster options up to 29.32 ft/sec that you shouldn’t use

Changes from previous version:

  • Dead axle - Switching from a live axle to dead axle in this release allowed us to switch the wheel axle from a machined part to a COTS shoulder bolt, eliminate two 3D printed fork caps, and significantly reduce the overall size of the forks.

  • X-Contact bearing - The first release used two needle roller bearings and eight radial bearings to constrain the module. Switching to a 3” OD x 2.5” ID x-contact bearing allows the module footprint to be decreased slightly and bypasses concerns with radial bearings contacting the edge of the printed steering pulley. X-contact bearings currently available from FRC vendors (3.5” OD and 4” OD) would increase the size of the module compared to R1, so the bearing used for this release is sourced from AliExpress; this means lead time won’t be great and part quality would need to be verified but pricing is good and we can get the exact bearing we want.

  • 3D printed wheel - Based on the ThriftyBot wheel used in the initial version but with adjusted inset for the bevel gear and pockets for bearings added. If the printed wheel proves too weak for use the ThriftyBot wheels could easily be modified for use instead.

  • Module heading - A Lamprey encoder (for now) replaces the hall effect sensor used in the first revision to seed the Neo 550’s relative encoder. We’re still in the process testing an i2c color sensor encoder option.

  • Fasteners - Down from six types of screws to four. Torx screws are used wherever possible, and screws are reused throughout the design.

  • Rail mounting options - Switching to an x-contact bearing led to the bottom plate being switched to ¼” plate. Because of this the module now mounts via the bottom plate with several possible configurations allowing a range of ground clearance and chassis tube sizes.

New Analyses:

  • Belt Torque Calculator - Using some data provided by Gates, we interpolate the allowable torque for arbitrary pulley sizes and speeds. This is being used to guide decisions about belt and pulley sizes.
  • Bearing Life Calculator - We implemented a calculator to estimate bearing life utilizing the Weibull Distribution. This was used to validate the R188ZZ bearings used in the wheels for the loads expected in FRC. A high application factor was used to account for shock loading and other unknowns. The calculator uses worst case assumptions of the bearing running at maximum RPM for the entire life to make up for factors that aren’t represented.

Planned Future Improvements:

  • Color sensor encoder option
  • Generative design for 3DP wheel
  • Improve printability for forks and pulley
More Pictures

Full Res Pictures


Looks awesome! This is a pretty much exactly how I would do a mostly-3D printed swerve design. In terms of size, It’s hard to beat 4" x 4.5" x 7" tall and < 3 lb. Thanks for doing all of the cost optimization and analysis too. Do you plan to build any prototypes?

I’m interested in how few fasteners you have given to hold down the x-contact bearing. I think the WCP module has twice as many? Yours may be just fine, but I’d love to learn what the limits are.

1 Like

Overall it looks very nice!

One thing is the pocketing on the main plate is a bit excessive IMO. Think that each module is supporting 1/4 of the robot’s weight. I’d much rather add an extra 0.5 lbs to each module if it means a much lower risk of the plate bending/snapping if the robot falls while climbing or accidentally gets dropped. An extra 2 lbs down low on the robot won’t break the bank, will help lower the CoM, and could make sure you don’t have to frantically switch modules between finals 2 and 3.


If this is a bearing anyone else would want… let me know. I’ll consider adding it to Thriftybot :slight_smile:


Counterpoint - with a 3" ID bearing, you could shorten the forks right down close to the axle, making it even stronger.

Really like it. The single piece forks still give me pause due to the layer orientation being suboptimal and the requirement for supports but I’m not sure a clean way around that yet.

Overall though. Neat.

Absolutely. After our last post, we talked about printing parts, but quickly made some big improvements to the design, and decided to wait until we had a stable design before wasting filament.

I did some calculations on the maximum force that the bolts could take with the area at the minor diameter and their tensile strength from mcmaster, and the results looked pretty favorable to 6 fasteners per direction being sufficient, but it’s possible that the true failure mode isn’t captured by that analysis.

It might be just a little overkill, but we were really pushing to break the super arbitrary sub-CIM motor barrier. A completely unpocketed version of that plate would weigh under 0.25lb, so it’s definitely still doable to tone it down a bit. Luckily in onshape it’s super easy to edit the lighten feature to get what you’re after.

I know I’d be quite pleased to have it stocked in the states, also keeps the vendor list to a minimum if you’re the one to do it :stuck_out_tongue:

Thanks Andrew! I know the print orientation isn’t the absolute best, but the thought was parallel to the floor is the best orientation if you’re printing it in one piece. This is part of the reason for the 4 bolts that go through the forks to be shoulder bolts. I know they won’t take all the load along the layer lines from impacts, but they should help significantly since they come in contact with the bearing and come quite close to the axle.

As for the supports, I haven’t quite yet come up with a clever way to get around them yet myself, please let me/pchild know if you do.


On my to try list sometime, using crush ribs to align these parts. The blue would be printed with the cavity down so may need some tweaking to make that printable with nylon (which hates bridging)

That would be my first instinct… but no idea if it’ll work and I don’t have the stuff here to really measure this at all. (And solid chance we’re about to get snowed in)

1 Like

I would highly suggest not pocketing the bottom plate at all. We pocketed the plate of our swerve in the offseason in 2019 (more or less the same amount of pocketing you have), and it worked fine, but as soon as the swerve started bouncing over the steel bars on the 2020 field, the plates started to bend, very, very quickly.

1 Like

Just for kicks and giggles, I ran a pretty naive static simulation in Solidworks with the mounting holes fixed and a 120lbf load distributed around the bearing hole to attempt to simulate a shock loading. This doesn’t accurately represent a shock loading because I’m not simulating the whole module which would add some stiffness, nor is it entirely likely that my assumed load is accurate to what a real shock load would be. These results are meant to be taken with a grain of salt, they do point in the right direction however. The fully pocketed plate came out with a max displacement of about 0.9mm, and a plate with no pocketing had about 0.3mm displacement max. For a game like 2020, less pocketing is definitely preferable, but for a game like 2011 or 2015? I’ll take my ounces to make pounds.



Seriously though FEA is great in when you have a full understanding of the forces at work and can properly model them. Otherwise it’s just confirmation bias.


Fully agreed, this is definitely something I’d want to make and see what happens, but this is more of just something to point a finger in the general direction of what to expect. Maybe I’m completely wrong, but if that’s the case, I’m (probably) only out the cost of a laser cut plate.

Another note, markforged wheels slamming into the steel bars is pretty much a no go, we went as far as testing completely solid infill wheels with no pockets, and they dented instantly and started deforming with only a couple runs over the bars.

1 Like

while your conclusion is true, your FEA is understimating the loads at work here IMO. 3x as much deflection implies ~3x as much stress, and that is a LOT.

1 Like

That’s pretty interesting, this is one of the situations I’d expect FDM nylon to be a fine material choice. I’ll have to think about that when we test wheels.

Yeah, I don’t really have a good feel for what loading I’d expect under shock conditions, it was kinda a shot in the dark. IIRC, the von Mises was pretty close to the yield stress for the pocketed version, but not over. I think I feel alright with the maximum pocketing on a flat field, but definitely need some more material on it to survive a rougher game. Luckily, that’s an easy enough fix

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.