Citrus Circuits 2020 and 2021 Code and CAD Release

Citrus Circuits is proud to release our code and whitepaper for our Scouting system, and code and CAD from many of the robots we’ve developed over the past two years. You can find all relevant files/documents here:

These resources are the product of 3 years worth of Citrus Circuits students, including our classes of 2020 and 2021. While many of those alumni are already well into their college/work careers, we remain indebted to their contributions to our program.

Feel free to drop any questions in this thread, myself or one of our team members will be happy to answer to the best of our ability.




Let me be the first to say, incredible work and what a resource to release to the FRC community!

One question, who was your vendor for the rough top tiny tank treads?


I’m counting around 6 robots on the screen, that’s amazing. Thanks for the release!

From a logistic perspective: how do you even begin to organize building all of this? Is 1678 split up into separate groups per robot, is everyone working on everything, did you recad these “copy” robots, who would lead the building, how autonomous were the groups, etc.


Wake up honey new citrus CAD just dropped.

Seriously though, incredibly inspirational work! I always love learning about the design decisions that go into consistently amazing bots.



way cooler than our turret setup… we had some mad backlash problems and lost a few matches due to our hall effect magnet breaking off on some rivets once the turret broke itself in.

What was your range of motion? Does the ma3 cover the whole travel, or just a small expected starting zone?

Also how did you get your battery in and out:


I imagine out the bottom, like all the cool kids.


Always hyped to see the Citrus CAD release, and this is a 6-in-1!

I know Citrus has done the upside-down belly pan several seasons now, including on many of these robots. Are there some general tips or “lessons learned” that you’ve incorporated in the latest designs? Thinking especially with the battery retention, attachment method of the bottom cover, and wire routing?


l see that you use swerve in your 2021 robot. And you use both open loop and closed loop to control you swerve drive. How you make a balance between these two loop? When do you use open loop and when do you use closed loop?

l notice that you always use openloop as true . That means you always use open loop to control your robot ?

In your chezy champs 2021 , l guess that you use open loop the whole match. And from the 1:21, l can see that your robot will be pushed away easily. l guess that it maybe the consequence of using open loop? So , do you have any solution to this?
Any reply is appreciated!
1678 Citrus Circuits Behind the Glass 2021 Chezy Champs - YouTube


Besides , can you introduce your auto? How do you accomplish such an amazing autonomous project? And how do you draw your trajectory?
Thanks for replying!



Slid out the back, CAD is missing the cutout in the bumpers.

Thanks for all the questions y’all, keep them coming! The students will be getting to y’all shortly


Thank you for releasing this information. I learned a lot, and had a lot of fun, looking through all of the CAD. I really appreciate your willingness to share your designs. After looking through the CAD for the 2020 and 2021 robots I had some questions:

  1. Why did you switch to polycord for intake power transfer on the 2021 robot? Did you do anything special to prevent slipping?
  2. How does the 2020 climber rotate upwards? I assume those 1x1 bars that pivot from the telescoping tube play some role, but cannot figure out what/how
  3. How, and out of what material did you manufacture the wheel guards on the 2021 robot? Did they break during competition?
  4. Were there issues caused by relying on the flanges of the bearings to resist side loads on the 2020 climber? if there were, did they cause the switch to bearings on all faces in 2021?
  5. In 2020 you used a standard bellypan/electronics setup, but in 2021 the bellypan is on top of the frame and the electronics are mounted upside down. Do you have a preference for one setup, or is it decided based on the specific robot’s packaging?
1 Like

We purchased the rough top tiny tank treads from FN Sheppard:

The belt P/N is: TUS375H200VAC
Description: US 375H200-V Self Tracking w/ Blue Nitrile Ruff-Top Cover

Lead time was 4 weeks. FN Sheppard is great! We also use them for the belts on our cleaning robots at my old work.




Just curious, is there a way to see the part studios/sketches? Was looking forward to looking at the master sketches/design process.

Thanks for the release!

The intake actuation is really interesting to me. It looks like you’re only powering the intake deployment, but there’s nothing constraining the rotation of the roller plates (?). This seems like it would help if you drive into a wall or something, but how do you keep the rollers in a position where you can intake balls? Does it just tend towards the extended position by gravity or angular momentum of the rollers?

l see that you use feedforward in your swerve. How do you use the characterization tool to calculate the ks , kv , ka with a swerve drive. Can you explain the main steps ?

Iirc in real life there were some cords between the top of the intake arms and the superstructure. Similar to 973’s cords, I think?


Great question, here is an answer from our 10th grade design student Brendan, who designed the turret, but doesn’t have a CD account :slight_smile:

The range of motion on the turret is ~235 degrees, and the ma3 encoder tracks for the entire travel. We have the encoder set up to a 28.4:1 ratio relative to the motor, whereas the turret rotates on a 27.8:1 relative ratio to the motor, so for the full movement of the turret, the encoder shaft only rotates ~230 degrees.


Surgical tubing, ziptied through the two holes below the top roller.


Really like your bash guards on your swerves wheels. How did you like them and how did you make them?


Great question! Design and software tasks for each of the robots are all delegated to groups per each robot, with some intermediate guidance from more experienced subteam members who are involved with the development process for multiple robots.

From a software perspective, separate groups are defined for subsystem code writing and bring-up, whereas the writing process for areas like vision tracking and superstructure for interdependent subsystems are guided by more experienced members. Usually, a veteran member leads the writing / bring-up process to properly delegate remaining tasks by skill level and priority.

On the design end, the process varied slightly for each of these robots, depending on how many were being put together simultaneously. Both our 2020 competition robot and our mk2 robot were created by splitting up veteran members to each lead the design of a single mechanism, meanwhile, new members were given the opportunity to work on smaller complex parts and systems such as 3D-printed electronics mounts, large pieces of bent sheet metal/polycarb, or even a system such as the control panel mechanism in 2020. The essence of this process has remained fairly consistent through our following projects, though we did split up our subteam into two groups for both the 2021 build season and offseason robots we made, which each underwent a similar process as described above to divide up work among group members.
As for the process of designing the 2910 and 4414 clones in the 2021 offseason, we took direct inspiration from 2910’s CAD release when redesigning many aspects of their robot, while the 4414 clone design team worked primarily off of videos and images of their robot for the redesign, since 4414’s CAD had not been made publicly available. Nonetheless, both robots still underwent a complete redesign.

Throughout the process of creating these six robots, we’ve found how vital clear and constant communication is, not only within subteams but between them. By keeping all communication transparent in our subteam Slack channels and “robot status” channel, mentors and veteran members can contribute across groups with questions/comments/concerns to provide further guidance along the way, and group leads can check-in with questions for mentors or leads from other subteams working on the same robot.

Please let us know if you have any other questions!