Three Stage Shifting Swerve Module (FRC 5987 Galactic Swerve MK2)

I disagree that this is the maximum (sizing) load case. This load case is to overcome the friction of the wheel scrubbing on the carpet as you try to turn it. But there is another load case that is larger that needs to be considered:

When the drive motor applies a torque to drive the wheel, this torque will also try to spin the module due to the reaction torque at the 90 degree bevel gear. If the wheels were unable to turn (such as when you are in a pushing match) and the motor were at max stall torque, the reaction trying to spin the module would be the motor’s stall torque times the gear ratio of the gearing between the motor and the bevel.

For our swerve module, we use a NEO motor for drive and then run with either 3:1 or 4:1 before the bevel and 2:1 after the bevel gear.

So, if you take the stall torque of our NEO motor @40A, times this gearing (we will take the worst case which is the 4:1), you get 2.92 ft-lb of torque trying to spin the module.

I believe that this is the highest load that the steering motor needs to react. So this is what we use to assess our steering motor options.

You can plug this in to the JVN calculator if you want, but the math is pretty simple.

Taking the NEO 550 steering motor, you have 0.215 ft-lbs of stall torque available @30A. Our module uses a 33.3:1 total steering ratio (10:1 in a VP gearbox and 100:30 in the final drive ratio), so if you multiply the NEO 550 stall torque times the 33.3:1 ratio and you get 7.15 ft-lbs of torque available to resist the spinning of the module. This is 2.45 times the maximum torque from the drive motor described above. So, this gives us a decent factor of safety and ensures that we are not running the motor at excessive amperage at stall as we are resisting the torque of the drive motor. Taking the 30 Amps divided by 2.45, we get 12.25 Amps. REVs testing of the NEO550 says that it can sustain up to 20 amps continuously (over a minute) without failing, so 12 amps seems pretty safe.

Running the same math with a 30:1 ratio shows a similar result with 13.6 Amps at stall needed on the NEO 550 to resist the torque imparted by the NEO drive motor.

20:1 is getting marginal - with slightly over 20 amps needed to resist the drive motor torque.

Our limit has always been controllability rather than torque. In previous years, the steering control loop was in the main robot code and the absolute encoder was fed back to the RIO. The loop time of the main code limited how fast we could spin the module and still have a stable control loop. In 2018 and 2019 we were running 150 RPM module speed with an RS550 (banebots) motor. We probably could have run faster, but we spent our time iterating other aspects of the designs instead.

But this year with the NEO550 we tried something new which was to run the steering control in the motor controller using the motor encoder itself for control rather than the absolute encoder. This allowed a much faster control loop without any jitter associated with the deadband due to geartrain backlash. So now the torque limit has become a much bigger factor. We believe we are still control limited, but our main goal was to reduce the VP gearbox from 2 stages to 1 stage, so once we had done that, we didn’t go any further.

1 Like

Seeing that you’re both from Israel, I wonder - do you know of a supplier of shoulder bolts here (we’re from Tel Aviv, but Haifa suppliers will do just fine)? I was looking into it but never found anything.

1 Like

I’ve bought them from China before for university research projects. I know we get a lot of our fasteners from בורג המפרץ in Haifa. I can’t say for sure that they have shoulder bolts though. There are a number of industry supply shops in the Haifa Bay Area, I would imagine at least one of them has them. One of the students may know better than me.


I’d take this one step further. If you’re stalling and still getting pushed you’d need to add the force you’re getting pushed to your own stall torque. From a practical standpoint I’d probably take my own stall torque x2 and call it good.

We buy from אום ובורג in Jerusalem, I don’t know about shoulder bolts specifically but they do a giant supply you could check with them.

1 Like

I’ll check with them, thanks! The only place I saw that sells them was McMaster, that’s why I was surprised to hear that they found them somewhere in Israel.

Btw - I believe you guys are closer to TLV than to Jerusalem, if you’d like I could send you our suppliers’ names so you’d save the time going to & from Jerusalem (they’re great for buying standard hardware).

We’ve bought a shoulder bolt from אספקה טכנית א.ה for our CNC machine before during the season, small store in the Haifa industrial area. We have a sponsor from Mivrag who are a fastener manufacturing company, we could check to see if they have them


Hmmm… I see what you are saying, but I am wondering if that is what would happen.

Assuming your drive wheel is not slipping, then I agree that if you applied an external force to the robot, that force would impart a torque through the drive gearing back to the motor. However, I think that if you apply a torque to the shaft that is greater than the stall torque of the motor, you will back drive the motor. I don’t think that the motor can provide a greater resistance to back driving than it’s own stall torque.

I think if you do the free body diagram of the robot, the force of the robot pushing against you is the equal and opposite reaction force to your own robot’s pushing force; those two forces cancelling out (static equilibrium; sum of F = 0) so that the net acceleration (F=ma) is zero. But if you removed the opposing robot and replaced it with a solid barrier, the free body diagram for your robot would not change. The reaction force applied by the barrier would be the same magnitude as the reaction force of a robot pushing against you.

This idea of backdriving your motors somewhat supported empirically where I have seen the weaker robot in a pushing match getting pushed backward and their wheels are rotating. At that point, the weaker robot’s drive motors are being back driven by the stonger robots drive motors and are effectively mechanically connects through the carpet and bumpers.

I will admit that adding a small fraction of the stall torque to account for friction (and sticktion) in the drive gearing is probably a good design practice. But I don’t think the 2x case that you are proposing can physically happen.

1 Like

The 2x figure is more for the shock forces involved of either getting slammed by another robot in the start of a pushing match, or simply slamming into the wall and stalling momentarily, which probably happens more frequently.

I agree that the drive motor will apply significant torque, good catch. I think your math is a bit off though- I’ll try to demonstrate once I get to my laptop. I don’t think the gear ratio affects the torque the drive motor exerts on the rotation of the module.

Our module design is fairly deterministic. The motor torque passes through a VP gearbox before the bevel gear. The bevel gear is on the axis of rotation of the module. So it is easy to draw a free body diagram around the stationary part of the module and see exactly how much torque would be applied to the bevel gear.

The bevel gear drives a mating bevel gear on a cross shaft.

As a thought experiment, I imagined what the reaction forces would look like if the cross shaft were welded to the housing instead of supported by bearings. in this case the contact forces at the mesh point of the bevel gear teeth impart the torque into the module. Since it has nowhere else to go, then from a free body diagram, all this torque must be reacted by the steering motor.

For module designs like this one, it is a little harder to see where the reaction forces go. But in the end, I convinced myself that the math works out the same. The parallel axis theorem comes in to play, so the math is a bit trickier and you have to make sure you account for the side loading through the bearing of the transfer gear. Make sure you carefully separate the rotating part of the module from the rest of the assembly when you do your free body diagram and I think you will get to the same answer I did. If not, I would love to see your math as I have not spent as much time on this style of module gearing design and may have made some errors in my free body diagrams.

They actually send regularly to one of our mentors’ workplace so we don’t really do the trip but thanks!


Sorry for the late response, had a lot to do.

If you think of the module at stall, with no wheel slippage, the input Falcon will apply 1.82 N-m (16 in-lbs) to the module. For this style of module, the other torques will all cancel out inside the module itself, regardless of bevel gear and spur gear reductions. This means that in addition to the 52*0.25 = 13 in-lbs required to turn the module from my last post, you’ll need another 16 in-lbs to overcome the drive torque when stalling (or starting an acceleration). Adding another 64 lbs to the “arm load” cell in JVN will simulate this, as 64*0.25 = 16 in-lbs. Here’s the finished result:

I’d even argue that the module will be facing torque from the drive motor more frequently than the turning calculation, so it’s important not to miss it. Thank you for bringing this up!

Thanks for the remarks, I know some of the parts are unnecessarily hard to manufacture and I agree that if we decide to build a swerve drive, we definitely shouldn’t build this one or any other shifting swerve module. This swerve module was made purely for fun.
As for the other things, I haven’t noticed them when modeling, I’ll fix them


finally got around to fixing the module, here’s the new lever system:
I changed the bolts for steel pins that are press fitted through the middle but are loose fit in the lever piece, and added slots on both sides.


Torque multiplication does not “cancel out internally” in any gearbox. It is a little known fact about gearboxes that, as part of the torque multiplying process going on inside the gearbox, there is a reaction torque being applied to the housing. In statics, all forces and torques must sum to zero in order for a system to be in static equilibrium.

Let’s look specifically at the math for a planetary gearset. If you go down to the “torque ratios” section on the Epicyclic Gearing wiki page (about 1/3 of the way down the page), you will see that there is a term Tau_r for torque of the ring gear in addition to the Tau_s (torque of the sun gear) and Tau_c (torque of the planet carrier). We normally don’t think about this term because we bolt the gearbox case securely to some part of our structure and that reaction torque is just transferred to the structure. We also don’t typically think about the reaction torque imparted to the motor case (stator) when the motor spins up the rotor (until we try to hold the NEO 550 in our hands the first time we test the motor). :grin:

If you do any gear ratio multiplication in the module itself using gears that are parallel to the axis or module rotation, you can think of this gear reduction as a type of epicyclic gearset. The input gear is like the sun gear. The gear that is driven by this input gear which is on a parallel shaft is like a planet gear (don’t let the fact that we have only one planet gear in this case instead of 3 or 4 throw you off - the math does not care about how many planet gears you have). In this analogy, the module is analogous to the carrier. This makes sense because the the shaft that the parallel gear rides on is much like the planet gear axle in terms of its placement offset from the axis of rotation of the module and the fact that it allows the carrier to spin.

Now, here is where things get a little tricky. There is a type of epicyclic gearset called a stepped planet gearset. In a stepped planet type gearset, two planet gears are connected together through a shaft. The bevel gear on the other end of the shaft in our swerve module example is analogous this second planet gear in our case. Normally, that second planet would ride on the ring gear which is a fixed to the housing of the gearbox. If we “lock” the wheel, then the bevel ring gear attached to the wheel is effectively locked and provides a reaction point for the bevel pinion gear. Because that bevel ring gear is on a perpendicular axis, it’s reaction torque is not transferred to the carrier’s axis of rotation so it effectively acts as the ring gear in our epicyclic analogy and since it is locked in this thought experiment, it acts like a fixed housing for our gearset.

Now, let’s bring the swerve steering system into the picture. The swerve steering system is effectively trying to react the torque of the carrier in our epicyclic gearset analogy. If the gear ratio from the sun gear to the planet gear has reduced the speed and increased the torque, then the reaction torque that is needed to hold the carrier stationary is higher than the sun gear torque by the gear ratio of the gearset involved.

I came to the same conclusion when I performed a detailed free body diagram analysis of all the elements involved.

Bottom line (aka TL:DR): It does not matter whether the gear reduction occurs in gears that are supported by the fixed housing (like in our design) or in gears supported by the rotating structure of the module or any combination, any gear reduction between the motor and the bevel gear will contribute to the torque imparted to the module by the drive motor and must be reacted by the steering motor.

In the past, this has not been a critical design consideration as the gear ratio for the steering system has typically been limited by the speed that the control system can handle. But with the brushless revolution offering new ways to improve the closed loop control of the module, we are able to speed up the rotation speed and reduce the reaction torque and we need to make sure that we still have enough torque available to control the modules position without burning out our motors.

I hope this makes sense. There is a lot more math to it than this. Since much of that math is design dependent (gear pitch diameters and measurements of particular moment arms) and frankly tedious, I have not included it here.


Are the adapters on the piston and shifter in the lever mechanism hardware parts or 3D printed? If they are hardware parts, where did you find them?

the adapters are 3d printed parts.

Edit… Nevermind… I just saw the little slots… cool!

I am having some issues with the lever… I don’t think it going to work as well as you think… Lest someone has made one before. The problem is the lever sweeps out a circle as it pivots. This is a problem as your shifting shaft is a fixed distance from the pivot/fulcrum… as you sweep up the shaft will be forced along the arc bending it until it hits the half way point then unbends at the top… Maybe someone can correct me if I am wrong…

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.