Skip to main content
REBUILT 2026 is the competition robot codebase for Team Robototes (2412), written in WPILib command-based Java for the 2026 FRC game REBUILT. The project targets the RoboRIO 2 running Java 17 and is built with GradleRIO 2026.2.1. It drives a fully swerve-based drivetrain (CTRE Phoenix 6 TalonFX + CANcoder), an articulated launcher with a hood, a rotating turret, a game-piece intake and indexer, an LED strip, and a three-camera Limelight vision system — all coordinated through WPILib’s CommandScheduler.

High-level architecture

The entry point is Main.java, which calls RobotBase.startRobot(Robot::new). Robot extends TimedRobot and owns the top-level object graph.
Robot.robotPeriodic() is the heartbeat of the system. It runs the CommandScheduler, updates vision pose estimates from the drivetrain’s SwerveDriveState, logs garbage-collection count to SmartDashboard, and resumes the DataLog every second.
Controls is instantiated after Subsystems. It receives the Subsystems object and a SimWrapper and registers all CommandXboxController trigger bindings there. No robot logic lives in the periodic callbacks beyond calling CommandScheduler.run().

Package structure


Enabled subsystems

Every subsystem is gated by a boolean flag in Subsystems.SubsystemConstants. The table below shows all flags as they appear in the current codebase. Derived constants are computed as logical AND of their component flags — for example:
Disabling a subsystem by flipping its flag to false causes Subsystems to assign null to that subsystem field. Controls checks for null at the top of each configure*Bindings() method and exits early, so the rest of the binding code is safely skipped.

Dual hardware configurations

The codebase runs on two physical robots — an Alpha prototype and a Competition bot. The correct configuration is selected automatically at startup by reading the RoboRIO’s serial number in RobotType.java. In simulation the type is always SIM.
Wherever hardware differs — swerve module constants, turret PID gains, gear ratios, soft limits, and CAN bus routing — the code branches on RobotType.isAlpha() or RobotType.isComp(). See Robot Types for the full comparison.

Explore further

Quickstart

Clone the repo, build, simulate, and deploy to a RoboRIO in six steps.

Robot Types

Alpha vs Competition bot configuration — serial numbers, PID gains, gear ratios, and more.

Subsystems

Deep-dive into each subsystem: drivebase, launcher, intake, indexer, and vision.

Configuration

Hardware IDs, launcher constants, and live NT tuning.