We love robots. But we also know that robots kinda have a problem, mainly with what they do. Some robots are designed to be 'generalist', doing a little bit of everything, but not any singular thing well in particular. Some robots are designed to be really good at one specific thing (like an FRC robot) but fail at other tasks completely. However, we believe there might be a solution which gains the best of both worlds. A robot who can pick and place extremely well, but the things that it can pick and place, seem endless. This was the basis for SubZero.

What it does

SubZero is an robot built on top of an FRC swerve chassis with a 1.5 m elevator, extending arm, and WiFi-controlled tool system. It can use AprilTags for positioning and alignment, allowing it to approach specific locations with high precision, combined with a modular tool system which allows different tools to be connected and controlled remotely, making the robot adaptable to different tasks.

How we built it

We divided SubZero into a few main interconnected systems. The main robot code runs on a RoboRIO using WPILib, Phoenix 6, PhotonLib, and AdvantageKit. The interchangeable tools, use ESP32-S3 chips to bridge the robot's NetworkTables system to HTTP commands. We also incorporated the Nvidia Jetson and PhotonVision components for vision processing.

We designed software contracts between these systems so that each component could communicate reliably without being tightly dependent on the others. We also created simulation tests to verify robot movement and communication before testing on physical hardware.

Challenges we ran into

One of our biggest challenges was coordinating several independent systems at once. The drivetrain, elevator, arm, vision system, and tool controller all needed to communicate reliably.

We also encountered a bug where the elevator and arm could incorrectly report that they had reached their target immediately after starting from rest. We traced the problem to the system using a previous setpoint when calculating whether the mechanism had settled. We fixed this by resetting the settle latch when the mechanism initializes.

Another challenge was separating what could be proven through simulation from what required physical hardware. We built automated simulation and communication tests first, while leaving hardware-specific validation for in-person testing.

Accomplishments that we're proud of

We are proud that the core SubZero systems work together in simulation. Our robot successfully demonstrated precise AprilTag alignment, elevator and arm positioning, homing, and soft-limit protection.

We also achieved reliable communication between the robot and tool-control bridge, with automated tests covering the integration system. The ESP32 tool firmware and the Jetson vision setup also successfully build and validate independently.

Most importantly, we created a modular foundation where additional tools and robot behaviours can be added without rebuilding the entire system.

What we learned

We learned how important system architecture is when building a complex robotics project under a time constraint. Instead of treating the robot as one large program, we separated it into smaller systems with clearly defined interfaces.

We also learned the value of simulation and automated testing. Being able to test alignment, mechanism movement, and communication without physical hardware allowed us to identify bugs much earlier and iterate faster.

What's next for SubZero

Our next step is moving from simulation to full hardware validation. We want to complete the physical robot tests, validate the interchangeable tools, and run the complete system repeatedly from a real starting position.

We also want to implement higher-level behaviours such as fully automated pickAt and placeAt routines, improve object-level vision alignment, and expand the tool system. Ultimately, we want SubZero to move from executing individual robot primitives to autonomously planning and completing entire pick-and-place tasks.

Built With

Share this project:

Updates

Submission history