Subzero Robotics
Overview
During high school, I was part of FIRST Robotics Competition Team 5690 (SubZero Robotics). As programming lead and driver, I worked across autonomous behavior, vision tracking, subsystem architecture, and teleop automation reliability.
The 2024 season was our team's 10th year competing. We finished 8th overall at the Minnesota State Championships with a 7-1-0 qualification record, while maintaining strong runtime stability across events.
My Scope
- Designed and maintained the C++ control codebase using WPILib.
- Led autonomous system development and safety hardening for match-ready routines.
- Built and tuned vision-assisted aiming/intake features using AprilTags and Note detection.
- Supported team SDLC through issue tracking, sprint planning, PR reviews, and release flow.
Autonomous System
PathPlanner + Tagged Auto Selection
We used PathPlanner to build autos early, then expanded our auto framework to support tag-based filtering. Each routine was tagged by attributes such as piece count, distance, and starting position. At runtime, grouped choosers filtered the final auto list so we could select specific routines quickly under match pressure.
- Executed a 3-note auto successfully in all matches at our first regional.
- Added a safety wrapper around PPLib path loading after seeing an alliance partner fail due to path deploy issues.
Debugging "Baby Auto"
We diagnosed an intermittent issue where the robot traveled shorter physical distances while odometry over-reported movement. Root cause traced back to Spark MAX config erase/reflash behavior in startup code. Removing the config erase path resolved the issue and eliminated future occurrences.
Vision, Targeting, and Driver Assist
AprilTag Pose Reliability
We ran dual Limelights with PhotonVision for pose estimation. A key fix came from correcting track width and wheelbase values (robot dimensions were off by about 2 inches each direction), which resolved large pose errors during rotation. We also tuned PhotonVision iterator settings to improve long-distance pose quality at the cost of output rate, then balanced that tradeoff with multi-camera usage.
Note Detection Pipeline
For game-piece acquisition, we used a Limelight 2+ with a Coral TPU and fused multiple distance/heading strategies from bounding boxes: center-angle trigonometry, area-based calibration, and width-based calibration. We selected methods by distance regime and fused results to generate reliable Note poses for on-the-fly pathfinding.
For practical teleop control, we added a PID mode that keeps the Note centered in the image while preserving driver translation control. This avoided feedback loops caused by noisy full-pose correction while moving.
Architecture and Automation
Reusable Subsystem Abstractions
We developed reusable single-axis mechanism infrastructure around a PID motor controller wrapper and typed-unit interfaces. This reduced per-mechanism implementation overhead for arm/climber features and improved safety through shared soft-limit handling.
Teleop State Machine
A major 2024 goal was automation in teleop. We implemented 18 distinct states mapped to command compositions, with safe transition checks, LED state feedback, timeout guards, and immediate cancel behavior from driver override inputs. We used deferred command patterns to allow state-dependent behavior from fixed bindings.
Custom Hardware Integration
We integrated custom electronics including the ConnectorX board for state signaling and a keypad for triggering state-machine actions. We also worked through RoboRIO lockups linked to notifier-thread priority and I2C interactions, then stabilized the system by changing communication behavior and replacing NavX with a CAN-based Pigeon 2.
Simulation, Logging, and SDLC
We used WPILib simulation and AdvantageScope replay heavily to validate command logic and tune assists before robot access windows. In one case, a driver-assist PID was tuned fully in sim and deployed without additional changes on hardware.
Development workflow followed an agile structure with GitHub Issues, sprint boards, roadmap planning, PR review requirements, and competition release branching. This reduced regressions and improved delivery predictability during events.
Measured Outcomes
- 8th overall finish at Minnesota State Championships with a 7-1-0 qualification record.
- 0 code changes at first regional and fully stable teleop operation at second regional.
- Reliable autonomous + vision-driven features deployed in competition without runtime failures.
- Faster feature iteration through simulation, logging, and structured review workflow.