Team 3476: Code Orange 2019 “Cloudbreak” Robot Reveal

Not gonna lie, the last shot of that video was one of the coolest things I have ever seen in FRC


How did you reduce the backlash on the turret? The Behind the Bumpers segment wasn’t entirely clear on how that worked, it seems interesting.


Any insight you can provide regarding how you minimized gyro drift? Seems like the turret consistently reached the right spot every time. Is there a re-initializing or zeroing process thwt you used to make the gyro a little more accurate?

1 Like

(Not from 3476) but a common method is using the NavX magnetometer calibration feature. It’s annoying to calibrate but results in a very usable amount of drift over a match, certainly good enough for field-oriented turret control. The placement of the navX when using the magnetometer (ex. near motors/high current wires/any large emf source) will affect its usage.

1 Like

We use the WCP Spartan Board, which includes a good gryo (ADXRS453) onboard that we communicate with through SPI using the ADXRS450_Gyro class in WPILIB. On the WCP website, it lists the drift as between 0.25 and 2 degrees per 2 minutes, which we have seen to be true. At code start we tell the gyro to calibrate using the provided function.

You can see how we use it in our 2018 code here. Our 2019 code will be going public soon, so you can see how we use it there.

If I didn’t answer all of your questions, please ask.

We are using a custom-made roller pinion drive that basically consists of a pinion with rollers arranged in a circle and a large internal ring gear. The rollers are on bearings and rotate freely instead of sliding against the gear teeth, so it has very low friction. Due to the nature of the design, there is practically no backlash if it can be manufactured accurately. We made the ring gear on a CNC router and CNC milled the bearing holes on the pinion.


Here is our whole technical binder for this year’s robot:
Technical Documentation.pdf (2.2 MB)


Beautiful tech binder for a beautiful robot.


A Quality robot built by a Quality team. It was an honor to play against you at Beach Blitz and Hopper Quals. Team Tators hope to ally with you some day in the future.

1 Like

Hey, I noticed that on your robot at worlds you guys had 3d printed mecanum wheels that replaced the rollers. Did you replace the rollers to make it easier to center the ball due to the vectored form? What material was it and how did you guys print it? Was it custom designed/modified or just printed off of a Mecanum wheel CAD? It was really amazing watching your robot score and pick up game pieces on Hopper.

1 Like

I also noticed the 3d printed mecanums. Could we get the CAD files for those perhaps?

I know that 1678 had 3d printed 2’’ mecanums at champs that they 3d printed out of Markforged onyx. They glued the hub halves together as well as the pins for the mecanum wheels.

How did you generate the tooth profile on the turret gear to get it to mate with that pinion? That whole turret rotation mechanism is just amazing.

I can honestly say I’m in love with your turret. Wow.

1 Like

Ditto this question.

Could you elaborate a bit more about that pinion and roller assembly you have that rotates the turret gear? Specifically how you machined/assembled them and where you got the 4mm roller pins and bearings from.

4x8x3mm MR84ZZ bearings from VXB: MR84ZZ Shielded Miniature Ball Bearing 4x8x3mm 4mm ID

4mm hardened steel shafts from McMaster: McMaster-Carr

Here’s a drawing for the pinion body:

We turned the overall shape from 1.75" round bar stock on a manual lathe and hex broached the center hole. The bearing holes were milled on a Haas Mini Mill and sized so the bearings can be press-fit in tightly. We used aluminum soft jaws to hold the pinion for this. For drilling the set screw hole, we put the pinion on a hex shaft, clamped the shaft to a piece of scrap aluminum to keep the hex oriented correctly, and drilled the hole with a drill press. The reason for using a set screw is to minimize backlash between the pinion and the encoder on the other end of the shaft due to poorly fitting hex shafts.

The pins were cut to size with a dremel from 4mm hardened linear shaft stock (the only 4mm shafts McMaster sells). The ends of each shaft were given a very slight taper with a bench grinder to reduce the amount of force needed to press them into the bearings. We pressed bearings into all holes on one side of the pinion, then inserted the pins, and then inserted the bearings on the other side.


Each roller on the pinion would trace an epicycloidal path if the pinion were rotated around the inside of the ring gear, so the tooth profile would be offset from an epicycloidal curve segment with a circular root the diameter of the pins:

Here are some parametric gear templates I made in Solidworks using equation-driven curves to generate gears like this:
roller pinion drive external gear.SLDPRT (1.3 MB)
roller pinion drive internal gear.SLDPRT (1.4 MB)

Note: the actual gear on our robot uses an approximated tooth geometry (straight line instead of an epicycloidal curve) because I had issues getting equation-driven curves to work correctly. It had almost no noticeable backlash and worked fine, so this is a potential solution in CAD software without equation-driven curves such as Fusion 360.


This is brilliant. Thanks for the detail!

For champs, we shortened the roller and added mecanums on the sides of the roller to help center the ball. We used PLA+ to make them. They work pretty well.
And in case you didn’t see it, here’s our Behind the Bumpers interview: Feel free to ask any other questions about our robot. We’d love to answer them!