"CMS" Swerve Module


Now that my classes have been moved online, I have had some spare time, so I started designing a new swerve module. My goals of this design were to make it as light and small as possible, while still being manufacturable within my team’s means. This design is not completely original; I based my azimuth off 2471’s “Hermes” module. The main differences between the azimuth of my design and 2471’s is the integrated Lamprey encoder, larger drive motor reduction, and minor hardware changes. These design changes resulted in an entirely different upper design while the lower (legs & wheel) remained the same.

Module Specs:

  • Drive speed: 13.9 ft/s (free speed)
  • Drive Reduction: 6 .00: 1
  • Steering Reduction: 29.94: 1
  • Estimated Weight: 3.35 lbs. (That’s over 1 lb lighter than my last design!)
  • 3” ID x 3.5” OD Bearing
  • Size: 5.16” x 5.16” (4.5"x4.5" excluding the 44T gear) wide x 7.7” tall

Chassis Integration:

This module bolts into the chassis from below similar to 2910’s MK2 module. To make the module relatively smaller I could have made the module part of the chassis, like 2471’s original design. I decided not to do this because I presume that removing the module from the chassis is easier and it won’t decrease the chassis stiffness. However, this is something I am considering changing in the future.

Future Changes:

As stated above I am consider changing how the module integrates into the chassis. I have no idea how 2471’s 3D printed wheel design holds up, so I am considering redesigning it with tread that threads onto the wheel instead (my team had success with this on our previous swerve design). Additionally, I want to try to integrating REV’s Ultraplanetary into the design for steering. This would remove the 44T gear that sticks out of the module and would make the design symmetric, however, I’m not sure if it’s worth the additional weight. Also, there are some minor changes to the design that could reduce the weight even more.

Overall, I am very happy with this design. It has a very small footprint, the motors don’t stick up very high so a motor guard might not be necessary, the projected weight is relatively low, and it’s simple to manufacture.

CAD: Within a few days I’ll finalize the CAD post the link to the model.


This is… excellent. And it seems like it would be really simple to make a flipped motor version that’s shorter (at the expense of width) just by making a different top plate and adding a belt. Awesome job!


Gorgeous! And animated! You have set a high bar for design releases.

Just as an observation, it looks like the Lamprey encoder cable port is going to be hard to access when installed on the frame. It looks like it is right up against the frame rail. You may want to find a more accessible orientation for that. I can see that you worked pretty hard to make the encoder fit and there may not be an opportunity to rotate it to a more accessible orientation. In case it helps, the button on the Lamprey is only needed during calibration and you actually want it protected the rest of the time so that it does not get bumped during a match, so that can be fairly buried when installed to the frame.

We have not had the greatest time integrating the Lamprey with the Spark Max (some issues on both sides that we are still working out - or will be once we get back to meeting), so you may want to have a provision in your top plate to add an MA3 encoder to replace the Lamprey just in case you run into the same issues and can’t get them resolved. Obviously, you would want to have a gear on the top housing of the module instead of the ring magnet if you switch to the MA3 encoder. You might be able to print a separate gear that snaps in place where the Lamprey magnet is located so that you would not need to replace that entire upper housing; just pop the magnet off and pop on the gear in its place. You could add a notch into the design of the upper housing and a matching tab in the gear so that there would be a locking feature already there if you did need to switch.

With a 6:1 reduction, I’m surprised your fee speed is not higher. Is that a 4" wheel or something smaller? I could run the math to figure it out, but it is lunchtime and I am lazy today.

I’ve never worked with a Lamprey encoder before. Thanks for letting me know about he issues you guys have been having with the lamprey encoder! Having a backup design is differently a good idea.

The wheel is 3" in diameter. I did the speeds calcs using JVN’s spreadsheet: with a Falcon 500, 6.00:1 reduction, and 3" wheel the resulting free speed is 13.92 ft/s and the adjusted speed is 11.27 ft/s

I’m hopeful we will be able to get the issues worked out with the Lamprey. It will be really slick for this application (swerve) if we can work the bugs out. We really have not had the development time to get it solid yet, but overall there is a lot of promise. Part of the problem with the integration is with the way the Spark Max handles these absolute encoders as well. There were some issues with the wrap-around math. But this is something that I think REV is planning to address in some upcoming software releases.

Relative to the 3" wheel, that seems a bit marginal for this year’s game given the rendezvous zone perimeter rails. How hard would it be to adapt this to a 4" wheel if the game called for it? It looks like it might be relatively easy.

1 Like

Looks great! I’m working on a module that is very similar but I’m concerned about the neo 550 only having one stage of reduction before the steering pulley. Are you sure it won’t be too fast or not enough torque?

We are running 33.3:1 steering ratio with the NEO 550s on our swerve this year and it is working great. There is plenty of torque. The speed is very fast, but if you are running your steering control loop in the motor controller rather than in RIO, the control loop is fast enough to make it stable.

I think the ~30:1 of this design is probably fine.


Very pretty. Can we see a cross section through the wheel axle? I’m curious how you did your bevel gear shaft and bearings, and how the 3D printed parts assemble together.

I still prefer a 4" wheel for the reasons wgorgen cites. But I think a 3" wheel is maybe better for 3D printed forks because it lets you bring the axle right close to the azimuth bearing.

The entire lower half of the Azimuth would have to be redesigned (which isn’t too much work) to incorporate a 4". I believe 2471 was using their module (which has 3" wheels) this season. I wonder how well the wheels worked out for them so far.


Thanks! What’s keeping the vertical drive shaft from sliding upwards?

That something I still have to fix. I’m considering welding the pinion gear to the shaft (what 2767 does) or pinning it, then added spacers between the pinion and the bearing above it.

1 Like

You could add a snap ring below the bearing (similar to what you have to hold the gear on).

The SDS modules use the step from full hex to thunder hex to capture the shaft. The shaft is full hex where the small bevel gear is and then changes to thunder hex where it goes through the upper bearing (which is a thunder hex bearing). It looks like you could easily use the same trick.

Awesome module by the way!


Looks good!
I’m assuming that you’re using GT2 on the last steering stage to get the reduction that you currently have. Is this correct? If so, how confident are you in its ability to hold up throughout the season? I’m not completely sure how GT2 compares to HTD and if GT2 is fine in this type of application - so please, enlighten me!

1 Like

This is definitely making the “AMSwerveDrive4U” look closer on the horizon… imagine those housings made from injection molded, glass-filled PC or nylon…


I’m using an HTD belt for the final reduction. As for wear, I can’t give you a solid answer. My team built my previous swerve design last summer which also used an HTD belt and we didn’t see much wear on them.


Brings a tear to my eye… It’s… (sniffle, sniffle)… beautiful.

Spacers behind the pinion.
Can’t see how to move the ring side to side. That would be nice.
since there’s a nose bearing, you probably can’t weld it on the traditional way however if you drill a hole in the side of the pinion as though you’re going to pin it, then “belly button weld” through the hole to the shaft (2 places). Guaranteed not to rust, bust or break.

1 Like

looks awesome… sooo simple and so light (that is amazing). Although I would prefer a 4 inch wheel for most games. I have a couple of questions:

  • Would the central part be 3d printed?
  • markforged onyx?
  • Do the legs screw into the central part?
  • Where is the lamprey encoder?
  • How did you get that rotating animation? That is very very cool.

If my team goes swerve something similar to this is probably what we would do.

  1. Yes
  2. My team doesn’t have a MF so we’re considering NylonX, PETG, PLA, or Alloy 910
  3. Yes the top of the Azimuth has threaded inserts allowing the Legs to be bolted into the top
  4. The lamprey encoder is at the top of azimuth (the magnet is the shiny ring that you can kind of seen in the animation and above that is the encoder itself)
  5. Keyshot 9. It’s pretty easy to use to do basic renderings like the ones above. I’ve only touched the surface of what it’s capable of.
1 Like