Reasonable(?) Differential Swerve by Team 7561

(Skip the first 3 paragraphs of preamble if you know what Diff swerve is or don’t care for my overthinking)

A farly sensible observation from the 2022 season so far is that coaxial swerve drive has become an effectively surmounted challenge. It is now, for better or worse, very available to a team that desires it whether they want to buy one of many very functional COTS solutions or manufacture their own custom modules. Unlike before 2021, swerve drive is quite common and thus it is more difficult to create a divide in drivetrain performance as coaxial swerve represents a drivetrain technology close to the limits of what is reasonable attainable within the current ruleset and technologies of FRC. In order to outperform an opponent from a robot design standpoint one can either drive faster, have more pushing power, be more agile or have superior control systems. Agility is effectively solved with the true omnidirectional movement of swerve. Fancy control systems is not something our team thinks attainable to the level required to give a good performance divide, so speed and power is our new name of the game.

Utilising more than eight motor slots is not very practical for a competitive robot design. Alongside this limitation, the NEO or Falcon represents the most power output in one slot permissable by the rules (aside from complex pneumatic engines that are heavy and cumbersome). Traditional coaxial swerve uses four slots for drive, four for steering. Thus only half the available power is put to carpet. So, if all eight motor slots could be fully utilised there could be a performance gain to be had that current COTS and custom swerve solutions couldn’t practically meet. Of course, then a solution is needed to regulate when some of this motor power is diverted from wheel turning to module turning. Ideally this would be done with a mechanical solution to remove extra electronic complexity or the need for more than already present actuators. This problem has been solved a few times in the past, and is known as Differential Swerve.

By utilising a differential, the control of the module wheel rotation and module rotation are controlled by relative similar and relative different motor rpms respectively. Rather than controlling the independant speed of two motors, we control the relative speed of two motors. In an example mechanism using arbitrary values, motor A turns at 0.5 speed and motor B turns at -0.5 speed, the wheel recieves 0.5 speed (and power). Here when the speeds are summed there is a zero result, so not module rotation. If motor A turns at 0.5 speed and B turns at -0.4 speed, the wheel recieves 0.4 speed. When these values are summed, a value of 0.1 is present meaning the module will rotate with 0.1 speed. If motor A turns at 0.2 speed and motor B at 0.2 speed, the module will rotate at 0.4 speed. In practice module rotation speed is a different angular velocity to the wheel, these values purely exist to demonstrate a point and are not to be taken with any mathematical precision.

Similar to our other swerve thread, this one aims to document our development of custom differential swerve modules known as SS8.1. This aims to be a documentation process for us, feedback and help to and from the community, and a blueprint for any other teams that aim to persue a similar goal. A thread like this from @nuclearnerd is what got our team started with swerve, so I take it fairly seriously as without these threads we wouldn’t be here.

Primary Objectives:

  1. Design, construct and implement custom differential swerve modules that are reliable enough to take to support a competative robot
  2. Compete at an official event with custom differential swerve modules, preferably in 2023
  3. Directly compare the performance of Coaxial and Differential swerve modules of similar build and technologies in order to gain a comparison of performance difference due to design concept. By designing the modules to fit directly onto our 2022 robot they can be quickly tested in real world loading conditions, as well as against the existing coaxial modules.

Secondary Objectives:

  1. Utilise as few ‘difficult’ components as possible. This is defined as a part that requires high tolerance CNC manufacturing and not available off the shelf ie. that would be inaccesable to most teams. Differential mechanisms that can survive in FRC conditions almost certaintly require at least one complex metal part, either bevel gears or ring gears. Not defined as a difficult part is one printed with FDM printers out of common filament such as ABS, nor is an aluminium plate machined on a 2.5 axis CNC router as these could be reasonably expected available to a team attemting this type of project.
  2. Reduce cost wherever possible. This may be achieved by substituting materials, or by abiding by SO1.
  3. Utilise as many similar design features to our current custom coaxial swerve modules. This reduces the unknowns as features such as a type of printed fork or machined plate that could bring out surprises in manufacturing and implementing.
  4. Apply generative design where possible. This is permits some weight saving as well as requiring proper engineering analysis of loads to do correctly, encouraging some maths to be performed. Also it looks super cool.

Breaking the formality, we see this as a genuine path to getting an edge on the competition in the age of COTS swerve. Our robot this year was light at 40kg, and was definately one of if not the fastest and most nimble on the field. Where it lacked though was enough power to push out of defense, in part due to low traction wheels but also going up against six-falcon tank drives. Swerve drives are also pretty inefficient, I wouldn’t be surprised if 10% of motor power is lost in the drivetrain particularly one like ours that uses some 3D printed components.

Differential swerve drive is not new, 971 had an early concept in 2017 with the wheel in between the differential gears and i’m guessing that others had done it earlier. A few Diff Swerve concepts exist on CD too, but only two I can see really going beyond the basic prototyping stage. What I have not seen evidence of is one making it to the field, nor a proper comparison to answer whether or not its worthwhile.

Below are some CAD photos of the current running concept. It utilises a pair of NEO motors, one CTRE absolute encoder, some bevel gears and spur gears from WCP (i think?) and some bearings from Thrifty Bot. Wheel is 100mm diameter (4" for those backwards) and designed to fit 25.4mm wide tread (1in).

The module below the plate is very similar to our last swerve (SS7.2). A great decision that could make or break this module is the type of differential to got with. We didn’t want a wheel-in-diff swerve as this can’t practically get over any obsticle (see 971’s variant). We saw two types of diffs as viable; bevel gear or spur gear. Bevel gear diff has the advantage or orienting the output with the wheel, so only a chain/belt/spur gear drive down is required. It is also generally more compact. Spur gear diffs need more space, parts and a later bevel gear stage to drive the wheel but have significant advantage of not needing custom machined bevel gears, a major plus for us. Instead, as modelled, it only requires two spur ring gears with a pulley profile. If machined in two parts, these can be done on a good 2.5 axis router out of aluminium with patience. We will probably get them machined out of steel with a CNC milling machine, but we honestly believe it is a viable route. The cutaway above shows the mechanism, with the four spur gears bridging the height difference of the two ring gears. Initially both rings were coupled by a single long spur gear, but I quickly realised that this wouldn’t work. Only one spur gear transmits power to the wheel, the other one on the axle is to balance the torque applied to the rotating parts of the module.

Another complex part is the two idler spur gears nestled inside the black bracket. These are riding on dead shafts and will be cut from Andymark 20dp spur gear stock as a basic lathe can bore the bearing seats. Much easier than using hex gears, also alot cheaper! The used bevel and hex spur gears are the same as our last swerve, so just building off that.

Known problems to be adressed or tested for:

  1. Generatively designed parts will be 3D printed and rigorously tested for durability. Encoder mount may need to be beefed up, though the simulation says it can take a load of 300N where the encoder is. Off-axis load is the killer though.
  2. Printed forks + other complex drivetrain parts worked perfectly in the 2022 season without a single replacement, but with the increase in power they may begin to fail.
  3. The module rotation is geared very fast, as in for ~1000rpm max speed. With only one motor turning this is lowered to 500rpm though, so remains to be seen how it actually performs. Absolute encoder tracks module angle.
  4. Drive is geared 5.1:1 (14t → 70T, 70T → 24t, 15t → 45t). This is a bit faster than the 6:1 on SS7.2 as we think we’ve got the power for it and the drive motors will be unlikely to be always running 100% for drive as some power needs to be given to rotation.
  5. These modules are looking to be quite heavy. 800g is given to the ring gears alone, per module. The top plate will be made of HDPE to help alleviate this, as well as decent pocketing, but we’ll just have to see. I haven’t done a full BOM and weight breakdown yet because i’m kind of scared to find out how much it actually weighs.
  6. The open top differential will turn fingers into mincemeat. As the rings are toothed, the ring below spins the other way, the differnetial gears are all sticking out, the differential gear stack rotates within the ring gears at up to 1000rpm. Yeah, will need to cover that up.
  7. Actually getting the rings made will be a huge pain. Here in australia there are zero small CNC manufacturers, and material stock is incredibly difficult or expensive to obtain in anything other than mild steel or hardware store aluminium. If you live in the US you may not quite understand how obscenely hard/expensive it is to get anything robot worthy other than those two basic metals in Aus (plus some plastics).

Questions for general response:

  1. Any obvious problems? Please let me know
  2. Could using 6061 aluminium for the ring gears be feasable? The 24t Spur gears running on it are also aluminium, so it shouldn’t wear too much but we can’t anodise them. Load simulation tells me the metal is strong enough, it just depends on wear.

Next on the agenda is a MDF and 3D printed mockup of the module, as with SS7.2. This will allow us to confirm the differential’s functionality. Any questions, feedback, or other comments are very much appreciated!

CAD Link:

I’ll leave on a comparison shot between SS8.1 and SS7.2


Clap, clap, clap!!!

6061 gears are going to be pretty weak! You may find you want case hardened steel pinions. Look at your contact stresses. Use the published equations. Mis-matched materials may end up helping. Look at hard anodizing your teeth. That’s not nearly as deep as case hardening, but it’s -something- to increase durability!

I remember running numbers on Dr. Joe’s diff swerve… you should look at what motor speeds you need across the full 4 quadrant map of forward/reverse vs clockwise/CCW.

I wish I was closer!

1 Like

Yep, I’ll plot those soon to see what it comes out at. Currently debating whether to rotate module by changing the speed of one motor, or half the change in two. Advantage of one motor change is a greater rpm change for the same motion and thus more accurate, but creates uneven power draw in the motors which could create problems. Which do you think is a better method?

1 Like



If you need to cut some aluminium it is worth asking 5985 or 3132. I have no experience using tiny endmills but a 1/32” should work for the 20DP profile ring pulley thing. It could be made of HDPE as well I imagine.

Got some maths for you, this spreadsheet has some functions with what we believe to be required to bolt onto our existing coaxial swerve code to get diff swerve working. PID tuning will be essential here, so we better start reading up on that. Current maths means we will be using both motor for steering to spread load and give maximum power output.

As you say, we’ll try our best for steel gears. I should have a machine arriving that can cut them in house, and will greatly reduce costs if we can as long as we can get a decent stock of 0.75ish mm endmills. Aluminium and HDPE can be done with existing router.

Poor luca will have a time trying to control this if it ends up working


If you only change one motor’s velocity, then you’ll get a change in both rotation and translation. If you want to adjust rotation only, you need to adjust both motors’ velocities equal and opposite amounts.


What tools/software are you using for your generative design? The parts seem cumbersome to print but I think that’s a worthwhile tradeoff for how cool they look.
This has got to be one of the cleanest/best looking FRC sub-mechanism designs I’ve seen, fantastic job and best of luck bringing it into reality.

1 Like

Absolutely beautiful CAD and design work.

I will also say: with the latest generation of brushless motors in FRC we have found to be traction limited, not power limited (even with 2x the contact patch of nitrile vs most other modules). Thus defeating the point of diff swerve; we abandoned development to pursue gains elsewhere.

As an aside: I see no reason not to print those ring gears on a high end printer, especially out of onyx with CF inlayed.

Thrifty swerve has already proven that that style of ring gear is ready to take some abuse.


EDIT: Some abuse, Thrifty Swerve uses it for steering.

Old And Wrong

Some abuse, IIRC that design uses the nylon gear as the low speed reaction point for power transmission, but does not actually transmit drive power through that nylon profile?

I was surprised at how smooth it ran after getting greased.

It’s worth a shot anyway though, especially at proof of concept.

The Generative parts are done with Fusion 360’s Generative Design tools. One normally needs to pay for credits to permit limited runs, or have a large company account deal, but an education account gives one complete unrestricted access. Which is good, as paying out of pocket used to mean over a hundred dollars per generation! Though i think they reduced the cost significantly recently.

In regards to printing, my printed makes parts out of ABS well and has no problem with supports at all, so this part will be like any other except it is 60% support and raft.

We’ll look into the printing route then. In australia such high end printers are pretty rare, but im sure it’s possible to get done.

Conversely we found that with colson wheels on our swerve we were motor power limited from one NEO per module (6:1, 4x1.5" colson). Using tread has other motives such as cost and proving that we can, but remains to be seen if we will now be traction limited. Hopefully our future comparison will highlight that.

Good to know, our tooth profile is standard 20DP so its a bit stronger than thrifty swerves. Personally I lean toward steel gears as we had the weight this year (15kg under) and it’ll ensure no critical failures, but re-printing some parts will be much favoured over re-machining eight large steel ring gears in two parts each.

I was wrong, ThriftySwerve uses the printed ring for steering only - so, not quite as low as I said. Power goes directly from the input to the center shaft.

If you’re interested in collaborators in the states, I bet a non-zero number of teams would print a couple parts and mail them down… could be worth a shot after you ask around locally. Depends on how tight you want to try to hold the IP.

IP is 100% open for anyone to use for any (non-profit) purpose, so will ask around. There are some metal printers here in Aus, though they are either soft metals only or make titanium parts weighing tons. I think there is a company that will do small steel parts, but will have to go digging again.


Those internal ring gears would rather be wire edm’d in 2D than metal printed, unless you’re adding custom bearing features in them or something?

I think skyehawk was suggesting nylon rather than metal. It think nylon won’t fail immediately, as long as it’s lubricated. You’ll definitely have enough time to start programming it, which is the really hard part.

Taking a second look at the design, 2D Wire EDM is the technology that stands out to me as most suitable - trying to mill steel with a tiny bit to gear tolerances will suck. The flex of your tool will take you out of tolerance before you even get to the machine frame.

The other “right tool” is an actual gear hobbing machine. I worked with Associated Gear in Los Angeles who had one, but they’re a pro job shop. Might be worth searching “gear hobbing” near you.

1 Like

I definitely agree for falcon 500s and neos, but I’d be curious if this would still be the case with neo 550s.

I bet you could get the form factor of each module even smaller too.

Totally agree that Wire EDM would be ideal, but will have to modify the ring gears to be three piece rather than two piece as there is a non-2d profile lip around the top and bottom to allow the bearings to run over the HTD pulley profile.

For the first prototype the whole thing will probably routed MDF and 3D printed ABS. Not to take robot weight, but to ensure the design works and start code as you say.

Will take a look for a gear cutter nearby, though again the pulley profile means that CNC machining in two parts requires the least setups.

Tempting, ill take a look.

Only problem I would see with this and im not sure if it would be smaller or larger space requirement is the increased reductions you would need to run with the 550’s

I think you’re really understating the amount of software aptitude (among other things) you need for a differential swerve to work. If you can make a differential swerve work reliably, you were already capable of this advantage you were dismissing as too difficult - and if great control systems are out of reach for your team, so is differential swerve.

I hate to single out a tiny part of a huge post that shows a lot of detailed mechanical design work - but it seems like this is one detail that hasn’t really been fully analyzed. You can prove out your basic feasibility of something like this on even a smaller, less mechanically complex scale if you want - but I think you’ll be spending a lot of time chasing a level of precision in your control loops that is rarely seen in FRC.

1 Like

Fair enough. Our software people’s thinking was that an effectively black box differential swerve code which we are somewhat familiar with would be more reliable and feasable than some sort of advanced odometry (which we’ve never tried anything like). We are comparatively inexperienced against other teams that have tried swerve, so who knows what it’ll end up taking.

The diff swerve is all mathed and mostly coded out, just needs to be tuned on the to-be mockup and final version