Quick Info
Role Team Size Duration Status Platform Repository

FRC Team 333 - Sol

2019 Competition Robot

Overview

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 Problem

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.

My Role

Lead Programmer

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 Solution

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.

Key Features

  • Implemented a pneumatically shifted drivetrain for switching between faster traversal and finer control during scoring
  • Used a light sensor to confirm when the hatch mechanism securely held a panel before placement
  • Coordinated subsystem behavior through predefined operating states so mechanisms moved in a safe, predictable sequence
  • Combined vision feedback, sensor data, and automated subsystem logic to reduce driver workload during matches
  • Prioritized reliable hatch panel and cargo scoring over an optional climb mechanism to stay focused on the robot's primary objectives

Technologies

  • Java
  • WPILib
  • NetworkTables

Engineering Highlights

    State Machine Architecture

    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.

    Vision-Based Alignment

    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.

    Sensor Integration & Control Logic

    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.

Challenges

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.

Lessons Learned

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.

Gallery

Sol competition robot on the field Sol competition robot on the practice field Sol competition robot in match queue 1 Sol competition robot in match queue 2

Project Links

GitHub Repository