My first attempt at swerve

For the last two years I’ve been doing programming and media on the team. While I enjoy programming a lot, I wanted to try something different for my senior year and I wanted to refresh my CAD abilities. So of course I decided to try and do a simple swerve drive, because why not.

The idea behind the way the module is designed is for it to be manufacturable in our shop (which has a hand operated mill and lathe), at our sponsors (which can provide us with laser cutting, bending and little CNC operations) and stuff that we can get from VEXpro/AndyMark/other Israeli COTS providers. I took some inspiration from the modules of Aren Hill, 1323, 2910 and 2767 among others - I took some inspiration from pretty much every module I saw on CD.

The module weighs in at ~3kg/~6.6 pounds. The steering ratio is ~19.4:1 and the translation ratio is 5.71:1, which according to JVN’s calculator suppose to output about 17ft/s unadjusted with the default 3.5" Colsons. While the steering ratio is considered pretty low, 2910 used 18:1 with a NEO and 1323 has 56.67:1 with a 775pro (pretty much the same rotational speed) on their modules so it’s supposed to be controllable.

The CAD isn’t completely finished - I still have some nuts and bolts to add in and an encoder mount, but overall it’s pretty much done. I’d love to hear your feedback about it, but please keep in mind that this is the first serious mechanism I did ever so it’s probably not perfect :smile:



Also, while the filename says rev2 this is the 3rd or 4th revolution of this module

1 Like

That looks really good to me. I haven’t done much in the way of Swerve design but one possible issue I see is the plates that hold the axle for your wheels. If those flex inwards then it’ll most likely cause the bearings to experience more load and possibly bind. I would fix it by adding plates across the front and back of the main two to prevent that flexing.

1 Like

Or standoffs. I agree that you will need some more support in case you were to get hit from the side by another robot. I haven’t checked the cad but do you have thrust bearings above the coaxial bevel gear and between the rotating pod/mounting plates? Those look like areas where there is a lot of axial load that will cause extra friction.


Actually, after seeing your design I thought about using a thrust bearing between the rotating ABS part and the mounting plate, but honestly it blocked my thinking about the other parts of the module. I saw that most teams use a regular ball bearing so I decided to use one of those instead.

Also, thrust bearings in these type of diameters are pretty expensive in Israel and that’s another concern I had when designing the module. I am thinking about moving to use a thrust bearing though in a future revolution if I could find a cheaper option on AliExpress or Amazon or something

1 Like

It would be helpful to see a cross section showing your bearing setup. That said, a few points:

  1. Why are you cantilevering your wheels?
  2. Why are there no lightning holes?
  3. How thin are the plates? Have you considered making the plates out of plastic? Paging @Nick_Coussens for benefits there and thickness info.
  1. To be honest, I didn’t completely think this part through, but now that you mention it I see why it could become a problem.
  2. I wanted to get to a level of design that I could post on CD, and I didn’t feel the need to do lightning holes in order to do that, but they will be a part of a future revision.
  3. They are 4mm thin

I forgot to mention that this is a great design!

I just opened up your cad and saw the large ball bearing you have for your module rotation. A lot of teams use a similar setup so I think that will work. One thing I am worried about is the cantilever on your coaxial bevel gear. That shaft is going a long way without support and I think you could lose proper engagement with the other bevel gear, especially since the bevel gears will be pushing away from each other with a decent amount of force. For my design specs, I calculated a force of ~50 N trying to disengage the bevel gears. Maybe add an extra bearing into the orange “versakey holder” to give the shaft more support. This will also help keep the shaft from bending if you are hit from the side by another robot.

1 Like

This is a cross section of the module

Thank you! I got that feedback from my mentors too, and that’s something that’ll go into the next revision.

I’d be a bit concerned about tapping the side of a 6mm plate. It’s unclear if the 4mm holes you have there are M4 screws (so they would actually be 3.3mm diam) or M5 screws (so they would actually be 4.2mm diam). Even in the better case, that still leaves only 1mm wall thickness on a part that’s going to see a lot of bending and shear stresses.

You might consider switching the transmission methods so the drive motor uses gears and the module rotation uses belts. This will give less backlash for both transmissions (which is especially important for the module rotation), and it will overall be lighter (because belt is lighter than chain).

Also, you probably want an absolute encoder 1:1 with the module rotation so you know the position on startup. You should think about where you can put that.

The screws are supposed to be M4 tapped (I am aware that the diameter is wrong, I set it a couple of days ago and forgot to update it), but I thought about using a thicker plate for the forks - I’ll probably end up using 8mm thick since we have some in the shop if I remember correctly.

I thought about using a belt for rotation, but AFAIK other than creating a custom large pulley on a CNC similarly to 2910 or moving to use a VP (which I don’t really want to do since this module is already pretty heavy as it is) there is no option to move to a belt drive for the azimuth control (there is also the option to 3d print a pulley using NylonX or something similar but as of this moment we still don’t have an access to a 3d printer for the 2020 season since ours broke). As for the weight concern, I tried to make the chain as small as possible so that it will have the smallest effect on the weight of the module.

The absolute encoder will be 1:1 with the rotation, I already started working on that.

Overall, why did you go for the dual-wheel design instead of a more canonical bevel beside wheel or even Revolution style (if you’re stuck on using these bevel gears because of the hex bores)

Since I can’t get the SDS gears in Israel (more on that here in Matan’s thread), and the VEXpro bevel gears have a pretty large profile, I couldn’t do a bevel beside wheel design.
When I started designing the module I went on to create a Revolution style design, but it weighed a lot and I didn’t see a need in another reduction after the gear and chain reduction above the bottom of the bot. Although, I might move to a belt/chain drive there, in order to move from dual wheels to a single one.

Don’t you think a neo for module steering is a bit too much ? maybe you could get away with a cheaper, lighter, smaller motor (BAG, 775, etc). Yet you’re maybe right by since the dual wheel configuration makes azimuthing harder.
Also maybe you could make all this a little smaller by not aligning the reduction stages. Like if you don’t align the motor/first stage shaft/second stage shaft and instead put them in a triangular configuration that could make the module a little more compact (yeah that’s small improvement).
And +1 for the concerns about bottom plate thickness and wheel module plates attachment.

Otherwise the module looks functionnal and simple enough, wich is always a good thing, especially for swerve.

The NEO is 0.1 lbs heavier than a 775pro and 0.2 lbs heavier than the BAG. Once you figure in the fact that the NEO has 1/3 the free speed of the other two motors so you can lose a gearbox stage, its either even or lighter. Factor in the higher power, better efficiency, and less likelihood of burning up, it’s not a bad choice as an azimuth motor.


Look nice.
Why the motors is so far from each other?

I’m no expert, but I see no reason to space the wheels so far apart, it will just add more scrub while turning.

Using a NEO for azimuth control was mainly done because using a 775pro or a BAG would’ve required another stage of reduction, whether with a VP or not - which will add to the weight of the module more than using a NEO with less reduction stages (and it also has more power than a BAG and a lower stall current than a 775pro).

I might do that, but I had a lot of layout problems with that when I started designing the module so I don’t know whether it’ll end up being possible with the current configuration of the 84T gear for the azimuth control

No particular reason whatsoever, other than wanting to keep a smaller profile overall cutting into the drivetrain. It will also help with wiring. I might even add a place to mount the SparkMax controllers on top of the module since there is probably enough space for that

That’s the minimal distance for engaging the VEXpro bevel gears.

I’ve updated the GrabCAD link to include the 2nd revolution of my swerve module. The major changes between rev 1 and rev 2 are changes to the location of the motors on the plates, thje bottom plate’s thickness (4mm to 5mm) and lightning holes all round. The module now weighs in at ~2.63kg/~5.8 pounds. Stuff that still need to be added to the 3rd revolution are a 1:1 encoder mount and some way to support the forks so that they won’t flex inside using standoffs or something similar. Still missing the bolts for connecting the rotating pod and the azimuth gear, which will be in the 3rd revolution as well.

Looking for some more feedback

1 Like