910 Foley Freeze 2019 Swerve Module

Hey CD! We’ve been asked by a few teams about our swerve modules and we’d love to share them with the community! Everyone working together is what makes the competition better every year, and we were standing on the shoulders of other teams who have done swerve (33, 2910, 2767, etc.). Also we will be releasing a full white paper write-up before next season, but we figured it was best to post something before we get too far into the summer so people could have them for consideration when working on off-season projects.

First the Pictures!

Link to album of more pictures

A quick overview of why we made the decisions we did:
First we owe a lot of the design to the work put in by the minds on Team 33. We have never done custom swerve before and also developed this module during the 2019 season, so having a working design was invaluable. The original plan was to use 33’s module wholesale, but after speaking to Jim Zondag at the 2018 MI state championship, and reading Nick Couzens write-up here, we thought it best to implement some of the improvements they discussed, and soon, the project very quickly became a “new thing”. The second factor that pushed our design further from theirs, was wide release of the REV Robotics NEOs. Having the power and mounting of a CIM in the size and weight near a 775-pro was a game changer, and we felt it was worth it to include this in the design.

These changes eventually necessitated every part to be re-designed and re-CADded, however, that doesn’t change the fact that the legwork in layout, design, and engineering were pioneered by 33. Thank you so much for releasing your design!

Our objective with the module was to simplify – reduce the number of components, use COTS components where available, reduce design time, machining time and weight, and to utilize the new technology of the NEOs to package it as short as possible.

Design Overview:
We’ll work our way from the frame inwards. The ⅜” lower Nylon plate and upper ¼” nylon plate were a concept used in 33’s module, and they had great results with it. In addition to easier manufacturing than aluminum on a CNC Router, you also get a large amount of impact resistance and a slight amount of suspension. This helps with even weight distribution across the 4 wheels of the module, and can make up for some manufacturing issues in the chassis. The module is mounted at the bottom of the frame so load is distributed across the outer edge of the lower plate. This prevents flexing up in the middle that would happen if the module was mounted on top of the frame.

The large 100mm bearing, how it is clamped in, and the structure of the inner rotating hub are also constructed similarly to the 33 Module. All of the parts were designed from scratch to match up with our frame and the how we power the azimuth of the rotating hub.

Concerning rotation of the hub, we have the first major deviation from the 33 design, and borrow from a concept that 2910, and other teams use. Rather than a 775-Pro and Versaplanetary combo, directly driving a gear that powers the rotation, we have a NEO and a custom gear train. After comparing these two options, we found the NEO and Geartrain are actually lighter. It also packaged significantly better. It took very little time from a machining perspective, as all of the gears used were various COTS Vex-pro 32dp, and 20dp gears. (slimmed down to 0.25” thickness for packaging… <10 minutes each on the lathe) This geartrain connects to a custom shaft. Besides the wheels and bevel gears, it is a fairly complicated part from a machining perspective. It starts as a Thunderhex, with snap ring grooves in it, and bored out for a 3/16” steel shaft to be pressed into it.

The center hub was similar to 33s design. We contacted rapid prototyping companies in our area and one generously sponsored our SLS Nylon parts for us. We also slightly simplified the design and strengthened the hub, as well as increased the grip length of the assembling screws to get more threads into the nylon of the captive nylock nuts.

Using a NEO on the drive and the AndyMark 20t:40t bevel gear combo, rather than a 775 pro and the Vex 15t:15t bevel gears enables a single stage reduction. This brought the layer count of the module from 3 down to 1. The NEO pinion drives a COTS VexPro geartrain. This powers a COTS AndyMark CIM-ulator output shaft, down to the wheel, which then powers the COTS AndyMark Bevel gear combo.

The 40t Gear bore was machined out and mounting holes were drilled to facilitate direct mounting to the Colson wheels and a dead axle. This meant a simpler pillow block design for the dead axle (a ¼” shoulder screw).The wheel we found worked best was a single 3” diameter, ⅞” wide colson wheel.

Pluses and Deltas:
+Light 4.5lbs weight per module
+Overall Driving Chassis 5 lbs lighter than previous Tank Drive designs
+Compact. Overall footprint <7x9” and under 6.5” tall (fits within the bumpers)
+Outside of the 2 plates and 3D printed pieces, fairly simple to manufacture
+Effective use of COTS components (Vexpro Gears, AM Bevels and shafts, Thunderhex + Hex shafts)
+Robust (Never failed during the season despite direct hits to the cargo depot rail)

Δ Steel inserts for the 3/16” portion of the rotational shaft
Δ Custom wheels not feasible for 3” wheels. Tread wear was too fast. Colsons were best
Δ Complicated Machining on Wheels and AM Bevel Gear
Δ Having to machine the wear part (Colson Wheels) is not desirable

Finally, the CAD STP files for the module can be found on our site here:

Myself and some of the other 910 mentors and students will be around in this thread to answer any questions you may have!


4607 loved checking this thing out at IRI! Having our pit located directly across from 2910 and 2767 didn’t hurt either… definitely a lot of inspiration floating around! Thanks for sharing all this information for others to see.


Great looking swerve, what improvements are you planning to make in the off season on it?


Thanks! And great question.
Right now we’re looking at 2 primary things. Using 4" or larger wheels for better tread wear and easier traversal of obstacles. Also inverting the NEOS to free up more of our frame for mounting mechanisms.

1 Like

How did you drill the bolt holes in the 40T bevel gear? Did you use an indexing table?

I really like this module, one quick question though. I see the benefit of mounting the main nylon plate on the bottom of the frame to reduce flexing, but unless I understand it wrong that will hold the bottom of your robot frame over three inches of the floor. Have you tested the stability of the robot when it is that high off the ground? It seems like it would make the robot prone to tipping, especially with tall pieces like an elevator mounted to the drive train.

How did you hold the gears to face them off in the lathe? Did you bore softjaws?

You are correct that the bottom of the frame was more than 3 inches off the ground. You are also correct in that you want to keep the CoG as low as possible for the best driving dynamics. A simplification of other weight considerations we took in our robot design, with swerve drive specifically:

  1. Having uniform weight around the wheels, allowing each to have good traction. (Uniform weight distribution.) Also, having as large of a wheelbase as possible.
  2. Having the CoG as close to the center of your robot as possible, to improve your turning dynamics.

Whenever we added something to the robot, we tried our best to add it low, but also paid close attention to the distribution around the frame. We actually ended up adding about 4lbs of steel in the form of “Guards,” just underneath the front two modules, because our robot was slightly more back heavy initially. This improved our driving dynamics a lot.

But back to your question, the majority of our robot mechanism packaging was inside the vertical space of the “bumper zone.” The elevator and 4 bar climber gearboxes were mounted low. The battery and supporting electronics were located to offset the weight of the elevator and intake, and also were mounted low. If I had to give a general rule of thumb for CoG, I’d say it’s it is best being at or below 1/3 of the total robot height to create ideal FRC robot driving dynamics, and locate it as close as possible to the center. Looking at our robot this year, we zipped around the field, ran into all sorts of things (depot, cargo ship) even at full speed, and the robot didn’t care (except when we ran our elevator support struts into the corner of the cargo ship at Detroit CMP at full speed, that hurt a bit, but for different reasons). Our CoG was darn near center and definitely lower than my proposed rule of thumb, and we had no real issues.

EDIT: Setting maximum acceleration and deceleration limits, as well as ramping to those limits within code also helps a lot. Good code can compensate for almost any mechanical disadvantage. haha.

Long winded answer. Hope it helps.

Just a note about me for my future contribution to the thread. I am one of 3 design engineers on 910. I am more of a structures and integration guy. Jon is the detailed, innovative, R&D kinda guy (and the designer of the module). And the other John is our head mentor and “chief” engineer. I’ll answer where I can, and get what I don’t know from Jon or John. I look forward to helping :smile:


Great looking module! Did you guys run into any noticable wear or problems over the course of the season from running your azimuth SLS nylon gear against a 7075 aluminum gear? Also, I know the Neo’s use their front face as a heat sink, did you run into any problems with it being mounted to a nylon plate?

I won’t speak for 910 here but from 33’s experience in 2018 and 2019.

We ran pretty much the exact same setup for the final reduction to the module for the azimuth on our 2018 module as Jon said. We had no issue with this setup at all, and showed no wear really. Even with a ton of carpet residue in it after our season ended, it had no issues at all.

As far as using nylon instead of aluminum for the mount plate with the NEOs, I can say that our NEOs stayed very cool with our aluminum plate on our WCD gearbox this year. Impossible to say for sure how it would have been with a plastic plate like nylon; 910 will have to speak to that directly; but I anticipate that it wouldn’t really be an issue with how cool they were running.

Love the module guys, glad to see you elevate the design to such great levels and have so much success with it. Looking forward to how you guys improve further on it.


We tried several techniques. The gear started with a hex bore originally, so we initially used that in combination with a jig on the mill to get exactly 120 degrees between the holes, but we eventually found the location of the holes was non critical if you could ensure the exact placement of the center bore. This led to us using clearance holes on the gears themselves (for the bolts that are tapped into the wheels) then we would use the gear as a template and transfer those holes onto the wheels.

Then we used 5/8" sleeve bearing here (in red below) between the bearings, inside the wheel, to ensure alignment.

We found that if we used the internal jaws of the chuck on our lathe we caught 3-4 teeth in the notches in the jaw. This was enough to guarantee center.

1 Like

Thanks for the inspiration @Nick_Coussens !

As far as the Neo heat, After running a long 30+ minute practice session, we would find that the Azimuth Neos would be hot to the touch, as they are in stall more than the drive motors. However in the normal play of FRC we didn’t have any issues and our practice bot still never had a single NEO failure on the swerve.

One of the other reasons we didn’t do this was we were developing during the season. We can CNC nylon at almost 5x the speed/DOC of aluminum, and don’t need to lubricate it the whole time. This was huge when we had to manufacture 9+ of them during the season and potentially more if we had to iterate on the design if we had any issues.

Despite this, shifting to a 1/4 aluminum top plate for the NEO’s is something we had considered for the next design iteration. We would think the cooler they run, the better. This could also potentially help with the long term season to season reliability of them.


Where I can find the math and code for controlling?

1 Like

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