Team 2383 Differential Swerve Module (Star Drive)

Hi FRC community! This year has been an amazing season for team 2383, but now it’s time for the off-season! As our first project, we would love to present to you the Star Drive, our take on differential swerve! (We rendered pretty much all of these without the top plate on the module so you can see the inside)

Module Summary:
Dimensions: 7.3" x 7.3" x 5.7" (LxWxH)
Drive Ratio: 6.4:1
Point Ratio: 28.0:1
Powerplant: x2 Falcon 500
Wheel Size: 4"
Total Machined Aluminum Parts: (x3 1/8 sheet) + (x2 1/2 sheet) + (x2 84 -70 tooth gears) = 7 parts
Total 3d printed parts: x5 3/8 Thunderhex spacers
Weight: 5.5 lbs
Cost: $340 (excluding motors)

Drivetrain Summary
*Free Speed: 17.4 ft/s
Simulated Top Speed: 15.0 ft/s
Acceleration Sprint: 15.3 ft
Weight: 20lbs
Cost: $1020

To start off for those who don’t know what or how a differential swerve module works, I offer a simple explanation. “Traditional” Coaxial swerve modules and differential swerve modules both have two motors. The difference is that coaxial uses a motor to spin the wheel, and another to point the wheel, while differential uses the difference between the two motor speeds to drive the wheel, and the average of the two motor speeds to point the wheel. The result of differential: a swerve module that uses the same amount of motors as coaxial with the ability to deliver twice as much driving or pointing force at a given time. This means improved power density from your modules at the cost of added complexity. Thank you for attending my TED talk.

Before we go into any further details, let me start with this; this design is not finished. We are continually iterating on the design, but as the 8th iteration, this is quite manufacturable.

Keeping our limited manufacturing capacity in mind, we developed a design that uses existing gears sold by VEXPro and AndyMark. This design weighs about a total of 5.5 lbsish according to Fusion 360 including all components.
It has a turning ratio of 28:1 and a drive ratio of 6.4:1 with two Falcon 500 motors as the power plant. This leaves our modules lighter than MK4i modules @ 6:3 lbs but heavier than WCP modules @ 5.2 lbs.

Credit to JNV Design Calculator

The current module plate is designed to be mounted in a triangle configuration with three modules. Fusion 360 estimates the drivetrain will weigh about 20 lbs with a non-pocketed belly pan. This drivetrain gives us the ability to accelerate to a top speed of 15 ft/s @ 15.3 ft. (Free speed @ 17.4 ft/s but simulation top speed @ 15.0 ft/s)

Credit to ILite Drivetrain Simulator

The module is equipt with 4-inch Vex Traction wheels, giving us superior ground clearance over 3-inch wheels.

In terms of cost, we are looking at currently $340 per module and $1020 per drivetrain (excluding motor costs and shipping). This is comparable to MK4i @ $365 per module and WCP @ $345.

*Non-integer quantities signify part of a package deal or length of axle

This module requires very little advanced machining. Currently, the only part that will require special attention will be the modified 84 tooth VEXPro gear that needs a 70 tooth internal gear profile milled out of the center, as well as a bearing track on either side.

One of our tricks to reduce the complexity of the module is our completely different differential setup. A common approach is machined bevel gears, but that increases machining complexity. We went with spur gears. That’s not special. What is special is the internal gears.

*Two 14 tooth steel gears from VEXPro engaging both with themselves and the ring gears

The differential is formed with two 14 tooth steel gears from , which is engaged with the two 84 -70 tooth gears. This makes our entire differential powered by two stock spur gears and two modified ring gears.

*18 toothVEXPro gear connected to the wheel

The wheel is driven separately from the mechanism by an 18 tooth steel gear. This allows the entire system to run on only three internal gears in total.

The second trick we use to decrease weight while using only two modified gears can be attributed to integrating X-Contact bearings into each contact component.

*X-contact bearings can be found between the gears and plates

An X-contact bearing is different than a regular radial bearing. As cutting a simple circular profile into our parts would not be able to resist radial load, there is a possibility for gears to disengage and skip.

*Radial bearing issues
Credit to Principle Engineering

*X-Contact bearing is on the right
Credit to Kaydon Bearings Visit their website to see more!

We will mill out a v-shaped groove onto the gears and plates using a 90 deg chamfer endmill that will allow 190 1/16" steel bearing balls to run between components.

*The raceway contacts the balls at a 45 deg angle

The X-contact pattern will allow the bearings to take axial and radial load. (We are also looking into ceramic bearings, but they cost 40x)

*Modified 84 tooth gear VEXPro

*Mounting plate for the module

This also has the effect of simplifying the number of plates we need to machine. In terms of CNC milling, we will need to machine four plates of 1/8 aluminum, two plates of 1/2 aluminum, and two 84t gears. The rest of the manufacturing will include cutting down axles and tube stock to length.

Personally, I have never worked on a project of this magnitude before, but I feel privileged to partake in this process. I also feel like the pressure is a bit lessened by Team 4143’s success with their custom differential swerve at worlds.

If any of you have any questions, concerns, or suggestions, please feel free to leave a comment below or dm me or my team members.
I’ll leave you with our CAD on Grabcad; let us know what you think!


Seems like reasonable design choices. I think you should post your cad, or at least more cross sections though, since it took me a few squints to figure out your gear-path.

How do you plan to machine the internal teeth of the ring gears? Do you think the (soft) aluminum races will be OK for your x-contact setup? I’m sure the answers will come in the making so good luck!


I know 2471 (?) in the past has done a combo of delrin and steel balls in the raceways of their custom swerve bearings. Maybe @Bryce2471 would know?

I am very interested in how the center ring gears will be manufactured. That’s the hardest thing about differential swerves of this type. Maybe it would be possible to use 8DP or 10DP printed nylon gears?

1 Like

Thanks for your response! We plan on acquiring a sponsor for help on the matter. Our approach currently is to CNC mill the profile out with a 1/32" endmill at extremely slow feed speeds. For the aluminum races, we were also hoping for a sponsor that would help, however, we should be able to anodize the surface on our own.


Man 2019 feels like ages ago…
If I remember correctly, we used all plastic ball bearings. Even our races we printed on a markforged, so I don’t think I can offer much insight on how the aluminum will hold up.

I’m pretty sure 696 used a mix of plastic and steel balls on aluminum raceways though, so they might be able to offer more guidance.

On the general design, I agree that some of the workings are hard to see, but I like the packaging and gear ratios. It should make for a great offseason project that will stretch your capabilities.
However, I think having a bunch of custom v groove thrust bearings holding everything together will make for a very painful assembly experience. We only had one bearing like this per module in 2019, and it was pretty inconvenient to put together, so we switched to COTS thin section bearings the next year.


We also plan on 3d printing bearing cages. Do you think that would ease the assembly of the modules?

1 Like

I’m sure it will help, to what extent I’m not sure. I would also look at increasing the ball diameter. We used 1/4" ones and they were somewhat small to manipulate and keep track of. 1/16" balls will likely get lost a lot. They also won’t leave much room for cages.

If you want to take a look at the design I’ve been referencing, here’s a link.

Seeing that you posted a cross section view. I can comment a bit more on the bearing arrangement.

First off, I would recommend thickening the bottom two plates in the stack (red and green in the cross section). They bear the drive loads of the robot, and seem rather thin for the job.

Also, you may find that this bearing arrangement causes some weirdness on the controls side. Because the bottom ring gear is sandwiched by the robot weight, and the top ring gear is not, when driving straight, one motor will likely require more power than the other.

1 Like

This is a cool design! One thing I’m worried about here is that your big home made bearings need to go fast.

You should run the contact stresses calculation for your chosen balls. You may find that it’s soo low that plastic balls are a better choice… also, low elastic modulus balls will cut the contact stresses in the races a LOT.

Cages to ease assembly or plenty of grease would be smart. Maybe a fixture where you can squash the bearings into grease, bring the top in, and then pull out the alignment bits. Or, just add a thin plastic ring just outside the ball circle for retention during assembly.

You might want to consider (or at least take a look at) a loading plug bearing design, perhaps just for the final race filling. It adds a non load bearing flaw in the race, but means you just keep pushing balls in until it’s filled…

You should think some on how you preload your stack. The V bit technique is good schneaky… but you also need to think about how to gauge it so get the depth right! A test cut and a measurement over one or two balls would get at the right dimension directly. Some way to elasticated preload your stack would be the sneakiest. You want it so that robot weight does NOT go through the preload part. This might just be dimensioning how your bottom plate clamps the stack.

I would make sure there are some bits in there whose function is to keep the module concentric and semi functional if you loose the balls! This could just be custom shaped 3DP spacers that just clear the gear teeth!

You might also look at a temporary assembly where you load it up near the limit and spin it for a while to squash the asperities. Wash, get fresh balls, and reassemble. A lap or polish step is also worth considering, depending on what you can get in surface finish.

I really like the non-bevel gear aspect here!

Apologies if this all sounds a bit negative… I am fascinated by what you are doing and just want to help improve your design!! And I’ve done professional stuff with Gothic arch bearings used in weird ways :sweat_smile: US7600564B2

If you really want to go this route, I’ve had good experiences with the SiN bearing balls from this aliexpress store. The extra hardness might grind away at your races in the soft aluminum gears though.

Another option for your custom ring gear bearings would be “cross roller bearings”. They have less contact forces than ball bearings, and it’s pretty easy to get precision ground dowels.

Either way I recommend you redesign the module to use a COTS x-contact bearing for the wheel forks. I wouldn’t trust a custom design against an impact with the field cable protector.


We have used 1/4" Delrin bearings riding in an aluminum groove race in our home made bearing for our swerve module design since for the past 6 seasons. We really have had no issues with this design. The balls turn medium to dark grey over the course of a typical season as they pick up aluminum oxide from the race. But other than that we have only rarely seen any issues of deterioration and that was traced back to improper assembly.

But, as you noted, these designs are going to be rotating faster and more of the time. I still think Delrin is a good choice. The loads are not very high for the bearing diameter and most of the loads are vertical (weight of the robot) rather than side loads. I’m familiar with commercial designs that use delrin balls riding on anodized aluminum races in highly loaded applications in racing yacht pulleys (blocks) at relatively high speed for years without issues. Anaodizing the race groove would definitely help (as it would create a harder race surface), but I suspect that you will be fine without that.

I’m also not that worried about stainless steel balls riding in an aluminum race at these sorts of loads.

About the only aspect of this bearing design that I am a little worried about is the small (1/16") balls. We have found that there is some amount of tolernace in the plates that we typically use such that there is always just a bit of endplay in the bearing stack when we are done. I would be worried with so many plates involved that the tolerance might be enough to allow gapping between the plates that could allow those small 1/16" balls to squeeze out. I think I would feel better with larger balls (either 1/8" or even 1/4"). We offset our bearing race grooves (two different diameter grooves on the top and bottom of the plate) so that we can have 2 grooves without the material getting too thin.

As far as assembly, the one pro tip I can give you there is that you want to assembly the bearing stack over a tray with edges so that if the balls do fall out, they won’t roll all over the floor. This will also allow you to drop in a bunch of balls and allow them to find and fill the groove. If a few miss, they will just collect in the tray. I might start with the upper plate and assemble the bearing stack upside down as it looks like the upper plate would be fairly stable resting on a flat surface. You want to have the hex spacers pre-installed on the upper plate. You can then add the balls for the top bearing into the groove. Once the groove is full, you just place the next plate in the stack and repeat until all the grooves are full, ending with the bottom plate. A clamp, or a rubber band or even masking tape to hold the stack together while you tighten the bolts is a good idea.

1 Like

Back in WW2, the US had belly machine gun blisters that swiveled using Delrin balls Magnesium races :wink:
+1 on larger balls… less sensitive to tolerance stackup.

If you happen to be able to find a sponsor that can do wire EDM, this would be great for making these gears.

1 Like

Thanks for the advice! What is your opinion on using BBs for the balls instead of delrin? ABS has extremely high impact strength compared to nylon and POM, and as an added bonus 6mm balls are really cheap.

Assuming the diameters match within a few thousandths I think they’d be a great choice!
Not based on any testing, of course! And assuming that they are very round and don’t have flash lines…

Except ABS is also very soft, and the one thing bearing balls (and races) need is hardness to withstand the point loads. Try it though, why not.

1 Like

I really don’t know whether BBs are manufactured to an adequate tolerance to be used as ball bearings. I would stick with something that has a stated tolerance.

You can buy 6mm Delrin Bearing Balls on Amazon for $12.50 per 100, 5mm Delrin Bearing Balls on McMaster for $7.28 per 100 and 1/4" Delrin Bearing Balls on McMaster for $8.75 per 100.

1 Like

this has to be the cleanest looking swerve I have ever seen, Just so compact and so well done. sorry that i don’t have any technical insight but, dang it’s good.

Correct me if I am wrong, but doesn’t low elastic modulus mean soft? If that is the case, and we are able to redesign so the homemade bearings aren’t load-bearing the robot weight, shouldn’t we go with a softer material?

Yes, but I don’t know if I fully agree with @Weldingrod1 's advice. Softer balls (lower modulus) will definitely have lower contact stresses because they will deflect more to create a bigger contract patch to spread the load. BUT that also means they are deflecting more out of round, and as a result will be harder to roll and tend to bind more. Adding more balls will help reduce the stresses and deflections per ball, so you might get away with it on such a large ring. Larger balls help too, confusingly. The math is complex though, so I would pick a ball (or dowel) diameter that you can get in different materials and try them. My instinct (and @wgorgen 's OpEx) is that 1/4" Delrin balls will work nicely.

On the subject of a cage, I highly recommend one! Not only will it make assembly easier (especially if you can get the balls/dowels to snap into your 3D print ) but it will keep them from bunching together and rubbing on each other. That will cause a thrust bearing to seize up really quick. The other option is to have every second ball be slightly (like 0.005") smaller so it separates the load bearing balls, but doesn’t contract the races. But that’s harder with than a 3D printed cage.

I hope you’ll post any progress you make with testing here!