Dr Joe's Diff Swerve

It has been several years in the making but I am finally ready to start talking publicly about some design work I have been working on for 3 years now.

A photo of my Diff Swerve V3.0 module was released today on the Formlabs Instgram site. Please go visit that link and like/comment/follow/etc. If I get a ton of traffic to the site, I am hopeful that Formlabs will be more likely to support FIRST-type projects going forward.

Before I do, some thankyous.
#1 TJ2 Team 88. The team has been supportive in 100s of ways. Buying supplies, devoting coding resources, providing moral support. So grateful

#2 Formlabs. when they hired me and told me “infinite 3D prints” were part of the offer, I am not sure they understood just how many prints that would mean in my particular case. But despite my outsized appetite for printing, I’ve gotten nothing but support.

#3 Steal from the best. This design owes a lot to the work of Swerve Design Specialist, West Coast Design, & (the ever gracious) Stryke Force #2767 & Bomb Squad #16 (well, as long as I am thanking Swervey FIRST teams, Robonauts #118, Wildstang #111, & ChiefDelphi #47 carried a lot of water moving Swerve Designs forward over the years)

Fun facts:

  • New concept for Diff Swerve: the Differential is accomplished using spur gears only – I hate having one bevel gear in this design. I wasn’t about to add more if I can help it.
  • Designed from ground up to have as much as possible printed on a Formlabs Fuse1 Printer. Only non printed parts: Sensor, motors, shafts, gears, bearings, tread, chain, fasteners
  • All gears, shafts, bearings designed using 100in-lbs load input at Falcon Shaft (~2.5X stall torque of Falcon 500 motor)
  • 100% custom spur gear profiles to maximize strength, packaging, & performance
  • Approx 40 ball bearings (they are cheap and the design is complicated, why skimp?)
  • The equations of motion for driving a Diff Swerve compared to a standard Swerve are surprisingly straightforward. A simple 2D matrix transformation allows you to basically treat the steering and drive outputs as independent (e.g. you desire OmegaSteering and OmegaWheels you simply multiply that vector by a 2D matrix to determine OmegaMotor1 & OmegaMotor2 that will provide desired steering and wheel outputs)
  • Oh yeah. IT WORKS! It works really well. This is the 1st Diff Swerve module that have seen that is close to what I will call Competition Ready.
    Video of the module
    Video of the chassis

Now to the spec (for V3.1):

  • Motors: Falcon 500
  • Wheel: 3.5Dia with 1.5" Blue Nitrile Tread on custom printed hub
  • Ratio (wheels): 6:1 (=1.83"/motor rev = 46.5mm/motor rev => Top Speed 14.5fps 4.5m/s)
  • Ratio (steering): 12:1
  • Weight: ~6.5lbs per module
  • Height: 7" << Key Priority to stay under bumper height
  • Swerve Axis to Frame Perimeter: 2.93"
  • Steering Sensor: Absolute Position (in addition to Falcons of course)

Next Steps:

  • Multi motor configurations (Current design is a Ukulele form factor with both motors along the same frame rail. Coming Soon: SkyScraper with the motors standing tall & proud and Stealth Bomber with one motor against each rail forming a sort of V shape plan view)

  • Complete Software Package (goal is to make Diff Swerve easier than Tank Drive)

  • Find some beta tester

  • Figure out a “go to market” plan in order to get Diff Swerve on as many robots as I can. I am really hoping to get some interest in someone willing to distribute this (AM, Vex, WCP, REV, CTRE, … at me, I am all ears)


What do they know about swerve? They’re just a forum!



I like this. Bring on the bearings!!!

(For real though, this looks great!)

1 Like

Joe -

Just a high level note…I was geeking out over your stuff 20 years ago, and here we are in 2021 and I’m still geeking out over your stuff. Thanks for letting me rewind the clock back to high school for a bit there…

(Not trying to make you feel old, but sorry :stuck_out_tongue: )


Things sure have evolved :slight_smile:


This is really cool stuff. For those of us who don’t have access to one yet, what are your impressions on the Fuse1? Most of us are over here in Markforged land but the Fuse1 is attractive.


Very impressive

Can you briefly explain how the differential works and how the design solves the low steering angle problem? I can’t really tell what’s going on just from the cutaway.

In the past we’ve seen some (uncompleted) designs that rely on having extra reduction stages before the steering stage and increaser stages after, but it doesn’t look like this design has the same.


What is the overall LxW of this configuration?

Why the choice of using chain from the motors instead of belt?

Why did you feel the need for so many bearings? Many of the shafts seem to have 3 bearings, which seems like the middle one could be omitted?

Any CAD files available?

I’m sure I’ll have way more questions when I have time this weekend to take a deeper look.


Seconding this.

Seriously. For anyone that doesn’t know dr joe is a living legend for swerve and I’m super excited to dig more into this over the weekend.


I am looking forward to seeing a 3D model too, just to get my head around it. You’ve got an interesting thing going where the planet carrier in the differential (red part below) has a further gear reduction (through those orange helical gears in your first .gif I imagine) before reaching the steering fork. It’s just not obvious on the cross section view. Can you explain further?


:open_mouth: Is this… a solution to the “double falcon steer goes wheeeeee too much” problem? :smiley:

1 Like

I would think so. It’s the same approach I recommended here (although I like Joe’s implementation using a compound planetary gear)

1 Like

My mind is blown. Nothing further.

I am going to have to do a video on this – maybe a zoom meeting or some other live stream. But in a nutshell here is the idea:

There are two motor inputs. You can follow the torque in the screen grab above. The idea is that the blue and the green paths are such that the power from the motors goes either to the wheels (as shown – i.e. when the motors are driving in the same direction) or to the housing that holds the green and blue shaft.

The ratios are very carefully chosen on the diff swerve mechanism such that the ratio from motors to the pink output shaft are identical AND also the reaction forces that the green and blue shafts make on the housing EXACTLY cancel each other (equal and opposite – don’t forget the opposite thing. My initial design equations kept blowing up when I used the ratios that I thought were correct – specifically, I had the blue and the green drive trains the same, the problem is that the equations were telling me that it wasn’t going to work. I had to literally print a model and see it not work with my own eyes before I believed that I hadn’t mess up my algebra). Notice that to make that work, I have to have a ratio in there that is less than one (Man, I HATE having to have a ratio that is less than one when I know I will eventually need a larger ratio but equations don’t lie). This is the only way to get the reaction forces to exactly cancel. The ratio from the motor to the pink shaft is 2:1 (it’s complicated but trust me it checks out).

So when you drive them motors the same way, all is well for turning the wheels.

When you drive them the opposite way, The Pink shaft is fixed and the housing rotates around it, effectively making planetary gears of the gears on the blue and green shaft. The ratio from the motor to the “carrier housing” (a name I just made up for the housing that holds the green and blue shafts) is 1:1.

But Dr. Joe, you promised that the ratio for steering was 12:1! Yes, yes, I did. And it is. That is where those sexy helical gears you see spinning in that gif come in. Those helical gears spin freely on the Carrier Housing and they mate with two internal gears. One has 55T and is attached to the robot chassis (i.e. it is fixed). The other has 60T and is attached to the steering axis of the swerve module. They are helical because it makes a more advantageous loading condition (and I am a show off – the probably don’t need to be helical to be strong enough). The way it works is that every time the Carrier Housing rotates a full turn the upper fixed gear makes the helical planets go “55 teeth around” (because that gear has you know 55 teeth) but the lower gear has 60 Teeth so it only goes 5/60th of turn. And THAT is how we get our 12:1 ratio on the steering. Seems like magic but it works like a charm.


GAH. I have my labels wrong above. 55T on top. 60T on Bottom.


Addressed in another reply

1 Like

Also, good eyes


In plan view this is just under 6" wide and just under 11" long. The intent is to have this mount to Vex Versaframe so you can count the holes yourself for scale.

Chain vs. belt:
Nick you know me so I won’t lie, I love chain with a passion I can never feel for belt. That said, I tried. I tried hard to make belts work. V1 of my concept had belts, I swear. Actually V3.0 the one on the Instagram Post also had belts.
But in the end, chain won back my heart BECAUSE it was a battle to the death to get V3.1 below a 7" bumper. Every mm counted and chain just made the stack shorter – note that I even had to go to #15 chain to make the 7" height limit. It was a battle to the DEATH I say.

Bearings why so many?
The short answer is Load. Every bearing is either there to fully define the shaft (which is tricky some times with these planetary things with shafts rotating on shafts) OR to carry the load. I was very serious about load. I used the same 100in-lbs at the Falcon motor shafts load for the gear teeth load calculations and for the bear loads. Sometimes I need to double or triple up the bearing in order to get it to be reasonable.


Also, I am serious when I ask for folks to like/comment/follow the Formlabs Instagram account

The more interest this post gets, the more likely I will be able to get Formlabs to think about FIRST related projects.


Me and my Head Coach are scratching our heads, as we aren’t this mechanically inclined. This can be powered by one motor?