Sol was FRC Team 333's robot for the 2019 Destination: Deep Space season. It competed at two regional events and the World Championship, earning the Imagery Award at the New York Tech Valley Regional and the Quality Award at the New York City Regional. As a programming team member, I helped develop and test the robot's control systems in a fast-paced, competition-driven engineering environment.
The 2019 FIRST Robotics Competition game, Destination: Deep Space, challenged teams to score hatch panels and cargo within a short match window. Hatch panels secured scoring locations, while cargo could only be scored after a hatch panel was placed. Teams earned points by delivering game pieces to rockets and cargo ships, with an optional endgame climb for additional points. The challenge required teams to balance scoring capability, mechanical complexity, and limited development time.
I served as one of two programmers on a 20+ member robotics team,
helping design, implement, and test the robot software during the
six-week build season. My work focused on robot control logic,
subsystem coordination, sensor integration, and driver-assistance
features built with Java, WPILib, and NetworkTables.
Because the software had to support a physical robot under
competition pressure, I worked closely with mechanical and
electrical teammates to debug behavior on the robot, validate
mechanism sequencing, and make controls predictable for drivers.
The robot was designed to prioritize reliable and efficient scoring
of hatch panels and cargo through integrated mechanical, electrical,
and software systems. A Limelight 2.0 vision system was used for
target detection and auto-alignment, improving scoring consistency
and reducing driver workload during alignment-heavy tasks.
The drivetrain featured a two-speed pneumatic shifting transmission,
allowing the robot to switch between speed and control depending on
match conditions. A light sensor was incorporated into the hatch
panel mechanism to confirm when a panel was securely held before
transitioning to placement, helping prevent failed scoring attempts.
On the software side, a state machine controlled subsystem
interactions and enforced safe action sequencing. For example, the
hatch panel system had to fully deploy before the arm could move
freely, preventing conflicting commands and ensuring predictable
robot behavior during operation.
The team intentionally omitted a climbing mechanism to reduce system
complexity and focus development time on core scoring performance
and overall robot reliability.
The robot software used predefined operating states to coordinate
subsystem behavior and prevent mechanisms from acting out of
sequence. This was especially important for the hatch panel
mechanism, where deployment state affected whether the arm could
move safely.
By centralizing action sequencing in a state-based control flow,
the code made robot behavior easier to reason about during testing
and reduced the chance of conflicting commands during matches.
A Limelight 2.0 vision camera supported target detection and
alignment assistance for scoring tasks. The robot used vision
feedback through NetworkTables so the software could help drivers
line up with field targets more consistently.
This driver-assistance work connected camera data with robot
control logic, giving the team a more reliable way to approach
alignment-heavy scoring cycles under match pressure.
The hatch panel mechanism used sensor feedback to confirm when a
game piece was securely held before moving into placement. This
helped the robot avoid progressing through an action sequence
before the mechanism was ready.
Combining sensor checks with drivetrain, arm, and hatch mechanism
logic made the robot's actions more predictable for both the drive
team and programmers during debugging.
The main challenge was building reliable software within the short
FRC development cycle while the robot's mechanical systems were
still changing. Code often had to be tested around evolving
mechanisms, limited practice time, and the realities of debugging on
physical hardware.
Another challenge was making automated behavior useful without
taking control away from the drivers. Vision alignment, sensor
checks, and subsystem sequencing all had to support fast match play
while remaining predictable enough for the drive team to trust.
This project taught me how important reliability, communication, and
fast iteration are when software controls physical systems. Small
logic issues can become much larger problems on a competition robot,
so testing with the real hardware and coordinating closely with
other subteams mattered as much as writing the code itself.
I also learned the value of designing control systems around clear
states and sensor feedback. That structure made the software easier
to debug, easier for teammates to understand, and more dependable
during high-pressure matches.