Team 5818 Differential Swerve Drive

Team 5818 is happy to present our latest offseason project: a fully functional differential swerve drive! The general ideas behind this drivetrain have been milling around our team for quite some time now, but this summer we finally put in the work and pulled it off.

Incomplete module photo:

Open loop test video:

Closed loop test video:

Full drivetrain test video:

Some details about the module:

  • Steering: 2 miniCIMs at a 5:1 reduction
  • Throttle: 2 miniCIMs at a 5:1 reduction
  • Sensors: one CIMcoder on each motor. No absolute position sensor; module position is tracked by averaging individual encoders
  • Control: 2 Talon SRXs utilizing Remote Sensor and Auxiliary PID features

A few items on this list made me skeptical when the module design was first proposed. In particular, the lack of a direct azimuth sensor seemed troubling. However, we’ve found that we can robustly track module position by averaging the encoder counts of each motor. Likewise, the difference between the encoder counts can be used to track the module’s wheel position. Furthermore, the Talon SRX can now close its on-board feedback loops using a sum of multiple sensors, which worked perfectly for this application. The steering ratio also seemed rather fast, but so far we’ve been able to steer the module on the ground without any problems. Further tests will reveal whether the module’s torque will be adequate under the weight of a realistic robot.

Feel free to ask any questions!


That’s cool.

Wow, nicely done!

The link to the closed loop test went to your 2018 robot reveal, so you might want to fix the link, especially given the importance of your amazing project.

1 Like

Love it! That’s the first working model I’ve seen posted.

Can you post a section view of a CAD model? I’m trying to figure out a) what the other horizontal shaft bevel gear does and b) what your triple-coaxial bearing setup looks like.

I would also love it if you did some instrumented testing - push a heavy block, navigate a circuit, accelerate from stop, while measuring the speeds and currents. [edit] - I’m especially interested in the steering response under load, especially since your steering ratio is so quick.




This is incredibly impressive. Especially since you are using just CIMcoders with that fast of a steering ratio. Great idea to use casters for the test chassis so that you only needed 2 modules. I’m expecting this to inspire other teams to build their differential swerve drive designs.

1 Like

If you mean the horizontal bevel gear that doesn’t connect to the pulley, it’s just there to add support to the differential.

b) what your triple-coaxial bearing setup looks like.

The bearing setup is pretty simple, I’ll try to post some pictures shortly.

I would also love it if you did some instrumented testing - push a heavy block, navigate a circuit, accelerate from stop, while measuring the speeds and currents. [edit] - I’m especially interested in the steering response under load, especially since your steering ratio is so quick.

I’m also curious to see the results of these tests. This is very much an ongoing project, and we’ll be sure to keep posting updates results.

I’m glad that a real differential swerve chassis got made. Congrats on being the first team to pull it off.

I’m really amazed at how well the module works considering the 5:1 steering ratio. While I doubt that this module would beat a traditional swerve drive in a weighted decision matrix, it’s starting to look like that might be possible down the road with further development.

1 Like

Clean, simple, which makes it elegant. The bar has been set.

Good job!

Fantastic work. The simplicity of the module is really what does it for me. What’s the magic sauce between the two pulleys that creates the differential effect?
The choice to go without an azimuth encoder is bold, especially with CIMcoders. I’m surprised that it works so well- great job!

1717 confirmed.

All jokes aside, seriously impressive. Do you reckon we’ll see it at the Camarillo Airshow this weekend? We also have a few surprises up our sleeve… :smiley:

The lower pulley is directly attached to the bevel gear that forms the top of the mechanical differential. This bevel gear is bored out, allowing for a shaft from the top pulley to descend through and attach to another bevel gear at the bottom of the differential.

Yowza, that is slick. I honestly did not think I would see something like this within the next 3 years, certainly not functioning this well with only FRC hardware. Excellent job!

Would you be willing to post a copy of the code at some point? Would be highly interested to see how you ended up configuring stuff.

We’ll definitely be posting it soon after a few more tests and refinements. Most of the Talon SRX stuff follows directly from the Phoenix Examples repository on GitHub. While those examples are geared toward differential drivetrains, a differential swerve module is basically the same thing.

Why do you think this style module wouldn’t hold up in a weighted matrix?

and I doubt a traditional swerve would beat a traditional 6wd drive in a weighted decision matrix…

1 Like

Who determines the weights?

Whoever wants to win the argument!

… As is tradition.


I just get the impression that the benefits don’t outweigh the disadvantages yet for this module. Mostly because the steering does seem a little twitchy, and it seems like there a lot of new places where this module could see mechanical failure (like in the triple coaxial, or the bearing support for the driven bevel gear).

However, these are only first impressions and could easily be proven wrong with more testing. I’m definitely more confident in the viability of differential swerves in general after seeing this thread.

and rightfully so… That’s why I compared it to a normal swerve. Comparing to a skid-steer wouldn’t be a fair fight.

1 Like

I’m just spitballing here:

In previous swerve design threads, people felt comfortable with a bag motor steering at ~100:1 ratio. Since CIM motors have about 6x more torque than a bag motor you could maybe get away with a ~15:1 steering ratio (assuming you might divert half of the power of two CIM motors to steering when needed). Your setup already has a 5:1 ratio, so you’re only a factor of 3 off (using CIM motors is helpful here).

If you wanted to reduce the twitchiness it might not be very difficult. You could replace the pulley on the output bevel gear with a 36 or 30 tooth pulley (biggest that will fit) and replace the driven pulley on the wheel with an 18 or 24 tooth pulley to get a step-up ratio of 2 to 3x. Then you’d have to increase the reduction between the motors and the bevel gears - probably by adding a second stage.

It would also be fun to see if adding a dedicated azimuth (steering) encoder would improve tracking. Honestly it might not (as long as the talons never lose count - the angle is just a mathematical difference of the existing encoder counts) but it would give you a backup, and an absolute reference at startup. You could add one easily by hollowing out whatever shaft is running the lower bevel gear, and running a small ~3/16" diameter shaft up from the fork, through the shaft, and up to an encoder mounted above the first stage pulleys.

Testing will show if you even need to fix the steering. I’m looking forward to the results!