FRC 900 The Zebracorns | 2025 Build Blog | Open Alliance

Welcome to the Zebracorns 2025 Open Alliance Build Blog!

After our first year as an Open Alliance team, we’re excited to return for the 2025 season! We’re looking forward to sharing what happens behind the stripes with y’all!

Our Build Blog This Year

Similar to last year, our Build Blog is supported by the work of many student contributors! Our goal this year is to be more student-led, from the general team structure to our Build Blog. Our leadership team will be posting and engaging within the thread. Say hi to:

  • Project Management Lead: Arianna
  • Design Lead: Sid
  • Fabrication Lead: Sofia
  • Programming Lead: Ben
  • Electrical Lead: Robbie
  • Strategy Lead: Smriti
  • Outreach Coordinator: Linda
  • Writer Extraordinaire: Teresa!

Team History

The Zebracorns (Team 900), originally named “Team Infinity,” began competing in the FIRST Robotics Competition in 2002. We are based in Durham, NC, at the North Carolina School of Science and Mathematics (NCSSM). Our mission is to inspire and empower students across North Carolina to become exceptional innovators and leaders. Students and mentors collaborate to learn and apply multidisciplinary skills, engineering techniques, and cutting-edge technologies through a creative design process, fostering a culture of excellence. We work out of NCSSM’s Mechatronics Lab. During the day, it is a classroom for engineering and CS classes. It is transformed into our build space at night, which we share with two other FTC teams!

Our mascot originates from NCSSM’s unicorn mascot, and our Zebra stripes symbolize our diverse students from various backgrounds. As NCSSM is a residential school for 11th/12th grade, we are challenged with quick turnover rates. Our students, who come from all across the state and represent a wide set of other FIRST teams and levels of robotics experience, each add their own stripes to our herd!

What Will We Share?

Expect various topics, including robot design, strategic discussion, programming, meeting summaries, and memes! We like experimenting and implementing cool things like ROS (ex: ROSCon 2018), alongside sharing technical knowledge through whitepapers, which can be found on our website (https://frc900.github.io). We plan to post every Wednesday and Saturday during the build season.

Pre-Season Previews

But, before build season, we would love to share what we’ve been up to in the past few months! In the coming weeks, expect posts recapping our 2024 season, our offseason activities, and some cool projects we’ve been working on through the pre-season.

That’s all for now — thank you for reading, and we’ll catch up soon!

Links

P.S.: Just a reminder that we are all youth participants! We ask that all discussion regarding our Build Blog stays on Chief Delphi and that other questions/comments be directed to our team email [email protected].

27 Likes

Let’s go! Btw CAD release of our 2024 robot, Artemis, should be out before the start of the season, and our code’s already public :slight_smile:

3 Likes

what happened to team900.org? i remember i had a paper bookmarked but when i tried to access it, it was dead

Hey! We did some transferring of the website domain – frc900.github.io is now our team’s website. You should now be able to access those specific whitepapers again.

3 Likes

alright, thanks! looking forward to yalls posts here :smile:

2 Likes

Season Recap: Crescendo

Here’s some of the stuff we’ve been up to since our last post on our Crescendo build thread and our first post on this one!

District Champs

2024 District Champs was the debut of Project Windy. We attached a leaf blower to the robot’s arm to blow the TRAP door open, thus allowing our shooter to aim near vertically and score.

|171.0226x234.2515

(P.S. We plan on releasing 2024 Robot CAD in a couple of weeks on our website! Our code is already made public at The Zebracorns · GitHub)

While it successfully worked a couple of times in practice matches and earned us the first TRAP scored in an NC Qualification match (!), it was overall inaccurate and time-consuming during matches—1 scored out of 10 attempts across District Champs, with alignment and shooting taking around 10 seconds. We were happy to receive the Creativity Award for our leaf-blower, though!

Additionally, we debuted our “disruptor” auto, which would race to the center and collect/fling notes toward our alliance’s amp—getting to the notes faster than the other alliance, and hopefully scoring these stockpiled notes later in the match. This auto was most successfully run in this match, although the notes were not wisely used during tele-op.

Throughout qualifications, we struggled with connection issues, from cameras going down to the robot not starting after the end of auto. After ranking 28th, we were graciously chosen as the 2nd pick for Alliance 8, alongside Team 6004 f(x) Robotics and Team 3506 Yeti Robotics! We made it to round 3 of playoffs before getting eliminated.

Overall, we are proud of the run we had for the 2024 season! Although we didn’t qualify for Worlds this year, there was a lot to celebrate and learn from. We are taking our successes, failures, and lessons from the previous season and applying them to the 2025 Water Game!

2024 Strategy Reflection: Was the TRAP a trap?

Looking back on last season, some stuff went well, but also a whole bunch didn’t. Our decision to go after the TRAP defined a lot of our highs and lows last season, eating up hours of testing and iteration before achieving its final form: Project Windy. One of many problems we encountered on this journey was a somewhat vague definition of what scoring in the TRAP looked like. In years past, we have encouraged our strategy team to think of the what instead of the how, leaving the actual design up to the mechanical subteam. However, this vagueness also worked against us, slowing down our design as we debated which route we wanted to pursue: shooting or climbing then scoring.

After deciding to test TRAP shooting, since it could utilize the shooter we knew we wanted and also allow for multiple TRAP shots per match, we saw some luck initially with fast shots from a shooter a little over 2 feet off the ground. After having some difficulty replicating a similar shot from a shooter height closer to what we thought ours would be, we began testing a different shot: a steep shot (where the note was almost vertical the whole time) while the door was held open. After mounting a modified leaf blower onto our robot, we were able to score in the TRAP at District Champs…twice. We did achieve the first TRAP in an NC Qualification match, but scoring TRAP simply took too long and was not accurate enough to be a winning strategy for us, so we pivoted away from it and chose to focus on scoring in other places instead.

For us, while the TRAP may not have been a trap (it did lead to us winning the Creativity Award!), it certainly did teach us a couple of things and led to some changes in how we approach strategy moving forward. First, we plan on incorporating more discussion of feasibility and design into our strategy discussions, making sure that the scoring methods we choose to pursue are ones that we have plans on designs for. We’ve also learned to value simple, effective design. In the wise words of Karthik, “The jack of all trades is the master of none.” While we may have strayed from this in 2024, we plan on focusing our efforts on a simpler robot this year, prioritizing reliability and practice.

Summer Accelerator

This June, we hosted our second Summer Accelerator program as part of our host school’s summer enrichment program offerings. The Accelerator program specifically is designed for middle and high-schoolers from all across North Carolina, giving them the opportunity to live on NCSSM’s campus and participate in STEM courses on a wide variety of topics. Through our program, we were able to teach 7th-9th graders how to design, build, and program FLL robots.

Additionally, we were able to cover tuition costs for every student who attended this program through our Teaching Innovation and Graciousness through Engineering and Robotics (TIGER) initiative, allowing us to break down economic and geographic barriers to STEM and Engineering education.

Delayed Strategy Discussion this Season

Due to NCSSM’s schedule, most of our students will be returning to school on January 7th, meaning that our annual game manual reading, strategy discussion, and subsequent kickoff OA post will be delayed for a few days. Some of us will be enjoying the kickoff stream from our houses, while others will be joining kickoff meetings with their old teams! We’re excited to see the discussion on Chief Delphi and share our thoughts once the team convenes.

P.S.: Just a reminder that we are all youth participants! We ask that all discussion regarding our Build Blog stays on Chief Delphi and that other questions/comments be redirected to [email protected].

10 Likes

Week 1: Strategy & Design

As we mentioned last week, due to NCSSM’s schedule students did not return to campus until January 7th. Subsequently, our team enjoyed Kickoff from our homes and met virtually on Sunday before reconvening in person. We had our first full team meeting on Wednesday.

Our Strategy

This year, we aim to prioritize simplicity and reliability. Due to the 5 points gained for each coral scored in L4, we are specializing our robot to fill the 12 scoring spots on L4 for 60 points. Our L4 cycle should take 10-12 seconds.

Very early on we decided that we did not want to prioritize climbing and put it on the “Will Not” list as the amount of time spent developing and testing the climber would not be worth the points it gave during a match. Additionally, we determined that the processor scoring was not worthwhile due to it only being a 2-point net gain.

Therefore, our priority list lines up to be the following:

Requirements:

  1. Drive
  2. Intake from CORAL STATION
  3. Autonomously align to SCORING PIPES
  4. Score in L4
  5. Score in L2 and L3

Nice to Haves:

  1. Score in L1

Will not:

  1. Ground Intake
  2. Algae in processor
  3. Shallow Climb
  4. Deep Climb
  5. Algae in net

(If we complete our “requirements” and “nice to haves” ahead of schedule, we may reconsider our “will nots.” For now, this remains unlikely.)

This chart shows our potential point breakdown, with our robot scoring 2 L4 coral in auto and the remaining 10 L4 coral in tele-op:

L4 Coral Strategy
Auto Points 17: 3 (LEAVE) + 2*7 (L4)
Teleop Points 50: (5 points/cycle * 10 cycles) (Only L4)
Endgame Points 2: (Park)
Total 69

One compromise with this strategy is that it does not significantly work toward the Coral or Barge RP. Because the new RP system adds emphasis on winning the match and decreases the significance of additional RP (winning a match still counts for ½ the total possible RP while an additional RP now only accounts for ⅙ the total), we believe this is a fair compromise to make.

Wednesday: Team members reviewed the game manual and passed a game manual quiz! After assessing other potential strategies, we voted to pursue the L4 CORAL Strategy.

Field Element Construction

Thursday: We fully assembled the CORAL STATION, and cut the PVC pipes for the CORAL game elements. With our strategy, we are only assembling the CORAL STATION and REEF.

Saturday: We started assembly of our REEF pipes using this model that uses 3D printed connectors and PVC pipes. This design worked well and didn’t require any glue, however, we did have to sand down some of the pipes to fit and add tape around the connectors for others. We cut out pieces for the REEF base following the field element design provided by FIRST, which proved to be a lengthy process as our school’s larger ShopBot was broken. Once we have one of the sides fully assembled, either Monday or Tuesday of next week, we plan to cut the other two REEF sides with the (hopefully fixed!) ShopBot.

(as an added bonus, the PVC pipes and 3d printed connectors resemble zebra stripes!)

Early Design Process

With strategy goals decided, our design team began brainstorming robot archetypes and geometries. Here are some of the proposed archetypes and geometries.

Passive Intake + Outtake!

  • Base + 2 stage elevator
  • Passive end effector similar to 3255’s prototype
  • End effector vertically offset from carriage to reach L4

Sideways elevator with rotary intake on the last stage

  • Sideways elevator to make passthrough easier
  • The same end effector used to intake and outtake
  • Rotating intake to “dunk” on branches

2-stage elevator with carriage

  • 1 DOF
  • Scoring is far away from L4, will fall off if not accurate

2-stage elevator w/ refined end effector

  • 2 Stage elevator + carriage
  • The end effector design used here has a third set of compliant wheels that are used to guide the coral onto the L4 reef and prevent backlash or flicking after the coral is ejected, currently being prototyped

As we refined our understanding of the robot and field geometry, we listed some design goals/preferences :As we refined our understanding of the robot and field geometry, we listed some design goals/preferences:

  • Minimize DOFs: Focusing on keeping degrees of freedom (DOFs) minimal helps simplify the mechanical design of the robot and the software behind it.
    • This is a general good principle, but we are placing special emphasis on it this season.
    • Avoid stacked DOFs (e.g. adding an arm)
  • Passthrough: Outtake on the opposite side of the robot through which it intakes.
    • The nearest faces of the reef face towards the coral feeding stations. Therefore, by having a passthrough, robots don’t need to turn around to score on the reef.
  • Low Center of Gravity (CoG): Especially with how much we need to extend to reach L4, and how high the coral station is, we need to be wary of CoG in our designs and take steps to lower it.
    • Allows the robot to be driven more aggressively with less risk of damage/tipping.
    • Since our strategy is focused on under-scoping and hyper-optimizing, this is one of the most important aspects to optimize.
  • Wide intake, narrow outtake:
    • Even with the grooves in the coral station, a wide intake will help account for alignment errors.
    • A narrow outtake makes alignment to the branches easier and more consistent, decreasing cycle times

We decided to move forward with a 3-stage elevator archetype:

This is similar to our 2-stage + carriage archetype but adds another stage. We initially wanted to stick with a 2 stage elevator for simplicity, especially since we could use the same continuous belted rigging as our 2023 robot, Chimera. However, a 3-stage + carriage elevator brings the intake and end effector to a lower stowing position, therefore lowering the CoG. Furthermore, this archetype also has the advantage of a separate intake which allows us to achieve a wide intake.

This three-stage elevator design uses an internal belt rigging loosely based on 4414’s elevator from 2023, though ours is designed such that the only tube machining needed is drilling clearance holes in some tubes for the belt runs. This is harder to rig and repair, but we determined this trade-off to be worth it given the overwise simplicity of the robot compared to the tradeoffs that other archetypes present. Overall, we found this archetype appealing since it achieved all our goals and preferences the best, with the only significant point of complexity being the elevator.

Additionally, we will continue using SDS mk4is as in previous years. For our swerve, we chose an L2 ratio and Grip Lock wheel, because of the accuracy and traction it provides.

Early Prototyping

Thursday/Saturday: Our first prototype this season was an outtake to test angles, distances, and compliance needed to score CORAL on the REEF, especially on L4. We assembled the outtake Saturday and messed around with it a little bit, and next meeting we will be able to more thoroughly test its limits and capabilities.

Code Architecture

Now that we’ve mostly decided on an archetype, we’ve begun discussing how to control this robot. We’ve also been giving mechanical unsolicited advice :slight_smile:

  • don’t get algae or coral stuck
  • sensor to know if we have a coral, one in the intake spot and one in the scoring spot
  • need to make sure our mechanism can’t hit scoring pipes

Action Servers

We extensively use ROS’s actionlib framework for our code and create action servers for most robot functionality. Here’s a recap from our 2023 whitepaper:

“The ROS actionlib library is a client-server setup for asynchronous robot operations. A client sends a request (“goal”) to a server to start an action. The client code continues as the server runs the requested action in the background. Client code can query the state of a server request, allowing that client to synchronize one or more actions happening in parallel.”

We arrange our actions hierarchically. The lowest level servers (usually with names ending in -er, leading to names like the “intaker” and “elevator”) directly control mechanisms. We then create higher-level actions that call these lower-level actions (usually with names ending in -ing; for example, the placing server will call the elevator and outtaker/roller servers to raise our elevator up and then outtake a CORAL). Finally, we have a few servers at an even higher level (e.g. a server to autoalign to the REEF and place a CORAL, calling our autoaligning and placing servers); these are usually the servers called directly by our tele-op node.

Writing individual, modular action servers that work together to build complex behaviors has had many benefits. We’ve been able to divide up programming work by action server, leading to more tasks for people to do. We can swap out actionlib servers to replace functionality, assuming servers share the same action message definitions. We can more easily test individual parts of the robot. We log every goal/feedback/result message, through the rosbag tool. The list goes on.

The servers we’re planning on building this year are (note for next year: starting with the actions we want our robot to do is probably better than starting with individual mechanism servers):

Lower-level

  • Elevator: move the elevator to a specific position
    • Goal: Enum for elevator position (intake, L1, L2, L3, or L4)
    • Feedback: Percent complete
    • Result: Succeeded or not
    • In progress
  • Intake: intake a CORAL, stopping when sensor triggered (indicating we have a CORAL)
  • Roller: controls CORAL management in end effector
    • Goal: Enum for intaking (from intake/handoff) or outtaking (ejecting CORAL)
    • Feedback: Nothing
    • Result: Succeeded or not

Higher-level

  • Auto aligning: auto aligns to the nearest REEF face
    • Goal: Enum for left or right pipe
    • Feedback: Current alignment error
    • Result: Succeeded or not
    • In progress
  • Placing: places a CORAL
    • Goal: Enum for level (L1, L2, L3, or L4) + a bool for only raising the elevator
    • Feedback: Percent finished
    • Result: Succeeded or not
    • Other servers it calls: Elevator, roller
  • (not an actionlib server) Autorotate: rotates towards the nearest REEF face or coral station
  • Auto aligning + placing: self-explanatory
    • Goal: Enum for left or right pipe, enum for level (L1, L2, L3, or L4)
    • Feedback: Current state
    • Result: Succeeded or not
    • Other servers it calls: auto aligning, placing

This will change as the season goes on, but this is a good starting point.

Other random stuff

We’ve also been setting up our code for 2025 (e.g. importing the Reefscape field and AprilTag locations to our 2D stage simulator, updating the WPILib version, etc). Additionally, our swerve velocity control might be a tiny bit more accurate soon (we’re now accounting for the fact that the robot drives in an arc instead of a straight line while rotating and driving, aka implementing WPILib’s ChassisSpeeds discretize function). We haven’t thought extensively about autonomous modes yet, but our main objective will likely be to score as many L4 CORAL as possible (and potentially push alliance partners off the ROBOT STARTING LINE to get the AUTO RP).

Moving Forward

Looking ahead, we believe that to make L4 worth it, we must minimize our cycle time. Some ways we plan on doing this is to optimize auto-alignment and give our driver ample time to practice. So, it will be important for the mechanical team to finish the design and fabrication of the robot quickly so that the robot can be handed off to the programming team and driver. (Easier said than done)

Snow :snowflake:

Not entirely related to robotics, but it snowed at NCSSM for the first time in 3 to 4 years! This did slightly delay our Saturday meeting, but we enjoyed going outside and touching grass snow!

This was a long post – thanks for reading, and we’re excited to post next Wednesday!

P.S.: Just a reminder that we are all youth participants! We ask that all discussion regarding our Build Blog stays on Chief Delphi and that other questions/comments be redirected to [email protected].

17 Likes