2020 Low-Resource Swerve Design - JellySwerve V1

Recently, the amount of open source and published swerve designs, on and off of Chief, has skyrocketed. The amount of COTS swerve modules available has also reached entirely new levels, and has opened the door for many more teams to pursue this particular drivetrain.
As a personal project, I decided that I, too, would pursue swerve, and began design of a swerve system to suit the needs of my team, specifically, a team that has no cnc capabilities, limited 3dp access, and limited financial resources (relative to the “swerve team” benchmark). This exercise was far more theoretical than an actual practical design, and was mostly an experiment testing if we could build a swerve system, disregarding if we actually should.

Because of this, I had a few design requirements:

  • Low cost - Ideally new purchases shouldn’t exceed $1,000 dollars for a full, quad module drivebase (although I also designed a dual module drivebase that may be quite viable, even at a significantly reduced cost).
  • Ease of machinability - Should be able to be manufactured using a drill press, lathe, and porta-band (and 3d printer if necessary).
    • Few Custom Parts - Should use as many COTS parts as possible, even if this increases cost.
    • Simple custom parts - each part should have 2 or 3 individual ways to be manufactured, and a few possible ways to be assembled. Parts should also follow simple, fractional, imperial dimensions, and should have relatively high tolerances where possible.
  • Durability/practicality
    • Should be structurally sound, nothing should bend or break, even if this increases weight and/or footprint.
    • Should use as many trusted and durable parts as possible.
  • Should have certain desirable performance traits, geared (pun absolutely and unapologetically intended) towards use in Infinite Recharge.
    • 4" Colson drive wheel
    • Neo drive motor geared to ~15fps free speed
    • Modular steering reduction, (3:1 to 30:1)
    • Accurate positional sensing, homing

Additionally I had a few things I specifically didn’t consider, as they weren’t incredibly relevant to the needs of my team (or at least this theoretical team, that chooses to buy swerve modules instead of an imperial bit set):

  • Module size/footprint (to a reasonable degree), vertical height was considered to be important (module should fit below bumper line)
  • Module weight (again, to a reasonable degree)

With those requirements (and lack thereof) defined, I set to work designing. CAD is available here (Onshape), and BoM here.

This design takes some inspiration from 1533’s StrangeSwerve, as well as from 221’s Rev Pro 2 module, moving the drive gearing mostly below the bevel gear pair, and using a dual plate vertical construction for the forks. The forks and azimuth assembly are purely mechanical, and can be fully “dropped” from the frame for maintenance.

The structure of the module is comprised of a custom forks/lower assembly (fastened together with welds and/or bolts), “clamped” onto a modified McMaster square turntable (4.7" ID). The McMaster turntable is rated for 500 lbs vertically, but it remains to be seen how it handles lateral loading and shock (my biggest concern, as driving over barriers at speed is quite common in Infinite Recharge, and that can cause sharp lateral load on the wheel–forks–bearing). It is however, quite cheap at 5 dollarydoos, and also can mount directly to the robot chassis, acting as a bottom plate of sorts, for the module.

Rotation is handled by a chassis mounted neo 550 attached to an ultraplanetary gearbox, and connected to a modified 66t vex sprocket in a 3:1 reduction.

Drive power is given by a chassis mounted neo, geared at a 6:1 reduction. This connects to the lower drive assembly (via a 2:1 sprocket reduction), which spins the upper bevel gear (Vex 15t steel bevel). The upper bevel gear is held in place both by the versahub on the sprocket, a 3/8" hex shaft, and a custom delrin flanged bushing. A 3:1 reduction occurs after this, moving to a hex bore gear on the live axle driving the colson (I chose a live axle due to familiarity, as well as a lack of structural worry, the fork assembly is plenty strong).

The neo’s output pinion is connected to a section of 1/2" hex shaft by a set of pin head set screws, which fit into the neo’s pinion shaft slot quite nicely.

The module’s rotation is monitored by a littelfuse relative hall effect sensor, which measures the proximity of a magnet in one axis. This, combined with some simple trig, and the neo550s integrated encoder to determine direction, gives accurate positional data at all times.

This can be used for pre-match zeroing of the module, taking only a split second of my team’s admittedly sparse autonomous routine.
If this proves problematic, there is room for the implementation of manual zeroing, likely with a WCP-style bolt-in-corresponding-holes method, or with a manual jig (to make the side of the fork parallel with the chassis).

A single module costs $229.81 without hardware or motors (the most likely purchase, as my team already has several neos and spark MAXs), and $343.92, all inclusive. This module could be made cheaper, however that was not the primary intent with this design. The actual primary intent was to design a robust swerve module that most teams could actually build, from scratch, with many options for tooling and assembly.
Basically, the aim was to “simplify swerve”, and I believe that it succeeds in that regard.

I’m quite proud of this design. I believe that I accomplished what I set out to do, and was able to design something unique, yet effective, hopefully building on the niche of accessible swerve modules. In addition, I learned quite a few valuable things during this process, and am excited to improve and iterate on this design in the future.

I would love comments and critiques here, and would be thrilled to answer any questions that may arise.


As a PSA, I don’t have one of the McMaster turntables on hand, and thus haven’t been able to play with one, and get a feel for how it works, tolerances wise. Because this is a key part of my design, I have already considered it pretty heavily, including failure modes (eg: what if it’s really bad?).

I didn’t, however, consider what would happen if the part was really, really bad. If it (hypothetically) were, the turntable plate could deform, giving the forks an angle, and therefore loosening the chain tension, which would hamper drive and rotation. Most of these issues are solved by adding a second turntable, also in a supporting role, but higher up. These two should solve any issues that could arise from having a single one, and the cost of adding a second one is negligible. I still wanna test this module with a singular turntable, in it’s original location. I ordered one to play with this week.

If the turntable proves to be so bad that even two wont work, there are definitely alternatives.

I also updated the upper bevel gear bushing to include an inner conical chamfer, to better support the gear against an upwards load.

I appreciate the review points, keep em coming!


Interesting sensor! It looks like the datasheet lists an 18mm activation distance, is there a SKU for longer distances?

1 Like

Possibly, I haven’t looked into it all that extensively, but I’m fairly certain there is, albeit at a higher price. 18mm should be fine for zeroing, as at the “home” position, the magnet will be in range.

I’m fairly certain the activation distance is not from the magnet itself, but from the edge of the emitted permanent magnetic field, which should be a little bigger, and therefore a little closer to the magnet. Please correct me if I’m wrong there. Range issues could likely be solved simply by adding a stronger magnet, which should fit within the space.
I didn’t think of this until now, but the permanent magnets in the motors might actually effect the hf sensor reading, depending on sensitivity. I’m not sure about this tho. I’m not familiar with using hall effect sensors like this, so I’ll curb that train of thought for now.

There’s definitely room for improvement with the rotational sensing.
Hmm, functionally, do you think I’d actually need a rotational sensor other than the one in the 550? If zeroing can be done manually, or with a momentary switch + cam, why have the hall effect? I guess it all comes down to how accurate the neo 550 encoder is, and what an acceptable tolerance is for steering…

Oh cool, a neo 550 encoder counts 42 times per revolution (about every 8.5 degrees). This, combined with a theoretical 30:1 steering reduction should give an encoder count every 0.28 degrees of steering at the wheel, which is pretty darn tootin’, I’d say.

In that case, I don’t think there’s any real need for an external sensor, as long as you can zero manually, or with a cheaper sensing method. That’s actually great!, about twenty bucks off my BoM!

Not to be the debbie downer here, I appreciate the amount of thought and work you’ve put into this, but this swerve really is not a good idea in any way.

This swerve without motors (using your provided bom prices) is 20 dollars less then the battle tested SDS MK3.

In return for saving those 20 dollars, you are introducing a lot of failure points and bad ideas, everything from the inaccuracy of being chain driven, to the lazy Susan’s that aren’t rated for this type of application and many, many more.

Also, an external encoder for zeroing is absolutely required. Manual zeroing is not an option, if your robot browns out in a match and your motor controllers reset, without a way of external zeroing you will be dead in the water. And precision matters here, to the degree. One swerve module being even a degree off will result in drift that will add up very quickly and make any form of complicated autos or even basic driving a nightmare. And on top of that while I don’t have personal experience with the Neo’s, many who have used it have stated that the internal encoder is not accurate enough to do angle control.

For the sake of brevity, I am not listing several other things about the design of the module itself (how parts are attached etc). And someone more qualified than me can probably do a better job anyway.

Actually, I think by doing this exercise you independently proved why cots swerve is the way to go. For a very tiny amount of more money (20 dollars in the grand scheme is not much at all, especially on something like your drivetrain which is the most important part of a robot), you get a cots swerve that has been battle tested, and optimized in everyway.

If your team does decide to do swerve, spend the extra 20 dollars per module to get the SDS MK3. You will have a significantly better module in every way (battle tested, much less part count, nice user features like the coaxial external encoder, and much more), and you will save yourself all the machining time and major headaches I promise you will have with trying to make this module (or for that matter, pretty much any custom module). Not to mention, excellent product support should anything go wrong.


Ill add one thing, with the thin wall tube I’d be little worried of the chain somehow getting stuck and that plate holding the 550 getting bent or bending the thin wall tube, making the chain skip.

1 Like

I think the intent of the design was pretty clear from the original post. This isn’t meant to be better than a COTS swerve, its a design experiment to explore the possibility of a swerve design that does not use CNC capability.


Sure, and my point is that I would not classify the end result of this project as a possible swerve design that is feasible to run in a competition. I wasn’t comparing it to a cots swerve, I simply mentioned the price differential of the SDS MK3 since “being cheap” was listed as a goal of the project.
The main point of my post was to show all the failure points and compromises that the swerve module had, which would (from experience) almost 100 percent guaranteed result in issues on field.


I’d say that the intention of this design never was to introduce the “swerve to end all swerves”, rather, to prove that something simple and easily machinable by most teams could be done. This design is by no means intended as a replacement for a proper COTS swerve, such as the SDS mk3, it was never advertised that way. This design was simply a project to showcase that a custom swerve can be made, fully in house, by even the lowest-resource teams.

Also, I don’t know where you got the $20 figure, but that isn’t even close to the price difference between this and even the most base model of sds module ($300). The difference is more like $60 ($80, if you count the most recent version of the BoM, using a switch+cam solution for remote zeroing, and $100, if you take that without hardware), which totals $240+ for a full drivebase. That is absolutely significant, especially for a lower resource team attempting swerve.

Chains don’t really present inherent innaccuracy, especially when tensioned and maintained properly, which was considered in this design.
The McMaster turntable, while new to the swerve space, is likely more than up to the task, and could easily be reinforced if needed.
I really don’t know what you mean by “many, many more”, I think there are a few flaws, but I wouldn’t expressly call them “failure points” or “bad ideas”. I do think improvements can be made based on testing though.

That’s actually a good point, and a mid-game reset was not something I considered. However, there is a “zero sensor” in the form of a switch+cam system that should replace the hf sensor + magnet just fine, for about an eighth of the cost, and give a really precise reading.

I agree, but the math don’t lie. The neo 550 absolute encoder should give steering data to within a .28 degree precision at the wheel, which is more than satisfactory.

1 Like

Good point.

Irl, the frame would be constructed of 0.1" thickwall stock, which is not pictured in the CAD (0.05" was just what I had downloaded, so I used that). Apologies for the confusion there.

1 Like

Even then, I’d worry about it only being mounted on one side. Which is easy to fix with another small piece of tube and an extension of the neo 550 plate.

1 Like

Good point, you could also just run bolts all the way through the stock, rather than rivets through only one wall.

Thirfty Swerve is $200 before motors, which I think is where the $20 comes from.

If a team is going this far to save money on a swerve module, they really should just stick to the KOP. This isint anything against your design or the choices made, but imo it needs to be said at least once before someone starts going out to replicate this for an actual robot.


While “being cheap” was a goal of the project, it was not the main goal, simplicity and accessibility were.

I’d also say that, while this design in its current state (v1) may not be wise to run in a competition (as with any v1 design), I see no reason for the 100% failure rate you suggested. I have tested a basic version of this design, and see no blatant issues with the concept. I am open to suggestions though, if more specifics were given.

Correct me if I’m wrong, but I don’t think the sds module comes with motors. That makes the price including motors (equivalent to the hardware+motors option) equal to $380 without the billet wheel, and $405 with. Thats about $80 more than the equivalent version of this design, totaling $320 per drivebase = that’s an ender-3 or a drill-press, absolutely significant.

While I do agree that low budget teams shouldn’t really attempt swerve, and there are better places to spend, this is not designed to give low budget teams a “competitive advantage”, obviously a COTS option will beat this out in terms of ease+performance, nobody said that wasn’t the case. There is something to be said, however, about designing just for the sake of designing, not to improve match performance. This is more of an “offseason project” kinda thing, and I think it fits well fithin that niche, especially for teams who may want to build their own swerve, but lack the tooling to do so.

Also yeah, thrifty swerve is a killer deal.


Swerve is a really fun thing to design, I’m glad you’ve taken it upon yourself. Here are my comments about the design from a once-over of the module.

  • Turntables are not really designed to take horizontal loads, especially bending moments like you’re giving here. Regardless of whether you use a turntable or a thick-race or x-contact bearing, the NEO chain setup is bending that constantly, which introduces unnecessary loads and may cause the chain to skip. You should add a second bearing that can take up these reaction forces like shown in the SDS cad:

  • Your bevel pinion is not in a great position. That is a fairly thick bushing, but having only a single point of contact for a bevel setup, which has high thrust forces and forces pushing the bevel teeth apart, is bad, and will lead to wear or skipping. Some modules solve this with a longer shaft and two bearings above, but the best solution is one bearing on each side: (SDS again):

  • The magnet you linked should work, or close to it. The datasheet specifies a distance and a magnet from Littelfuse’s catalog, and from my poor understanding of magnets and their strength points to the McMaster magnet being slightly stronger, if only a little.

  • The Neo550 mount should probably be reinforced. Again with the bending thing, it’s possible for that chain to skip or wear if planetary bends inward slightly.

  • I’m not sure how the plates that the wheel is attached to attach to the plate connected to the turntable?

  • Watch out for the module itself buckling. It doesn’t have anything forcing the plates apart at the end, so it could buckle inward and cause the gears to no longer mate or just wear quickly. You could solve this by making the bottom axle dead.

  • Tapping an 8-32 into a 1/4" plate is pretty sus, but might work fine. Swerves that use this attachment method typically use 3/8" material or thicker.

  • Just a minor CAD note, your chain is much thinner than real #25 chain. MKCad has a configurable simple chain part available, or my chain featurescript could do it. I notice you imported your COTS parts too, which are all available in MKCad. Using the parts library should save you a lot of time on iteration.


You are correct, Its been removed from my post. Didnt read far enough on the SDS page, my bad.

Great points, thanks so much for the tips!

Good point. Even a small amount of lateral play in the turntable could lead to a chain skip, and a second turntable would be cheap and easy to add. I may add this if stress testing proves it to be an issue.

Yeah, I noticed this, but didn’t get around to changing it in the CAD (I last worked on the CAD about a month ago). The actual bushing has a chamfered ID extending down, and is in full, lubricated contact with the conical surface of the bevel gear. That should solve any potential issues there.

Heh, forgive the hypocrisy, but it’s TIG welded together, I have an aluminum TIG welder at home. This is the reason for my statement regarding the high strength from before, a welded connection like that, in conjunction with the structural tie-ins on top, should result in an incredibly strong structure.
It is also possible to fasten this similarly to the top plate, using bolts through the side of the forks, threaded into the base plate horizontally.

Good to know. The fasteners could go smaller in diameter, as there are four, and I’m not super worried about shearing.

Yeah I use the heck out of MKCAD, and have a mix of that, McMaster downloads, and Onshape standard content in this design. MKCAD has pretty much everything, but not everything. It lacks variety in specific lengths and thread patterns, as well as in metric fasteners, so I use McMaster and standard content to fill in the blanks there. I also like to have a McMaster part number as the only name of the part, as this helps with BoM stuff later. Downloading works well with my research and part-shopping workflow as well.
Thanks for the tip about the chain though, it’s been a hot minute since I’ve seen one irl, so I just spitballed the dimensions. It’s just a mockup, though.

No worries my dude, thanks for the tips!

Yeah I don’t think that the chain thing changes the design, just pointing it out. Is there a reason you didn’t use motors, sprockets, gears, the wheel, the UP gearbox, or bearings from MKCad?

This isn’t really a skill or equipment that most teams have. And you can’t pin it through the side because the gear is in the way. It’ll take slightly more than a trivial redesign to figure that out.

The direction I recommend from that is to make the plates thicker, not the bolts smaller. You’re teetering on the edge of too-weak, not too-strong.