This guide will help you get started with an in-depth study of Team 461's Rowdy25 robot software. The goal of this documentation is to build understanding of what FRC robot software development actually entails and how to develop robot software effectively. Below are helpful tips and best practices for contributing to and deploying this code.
Note: The software and imported libraries in this project are versioned for FRC 2025 (Reefscape). Using this project as a template for a different season or modern release will require updating WPILib, vendor libraries, and possibly Java version targets.
Before anything, make sure:
- WPILib is installed
- Git for Windows or Git (Linux/macOS) is installed
- The network on your laptop is configured for your robot's radio / RoboRIO
To retrieve and deploy the code:
-
Clone the repository:
git clone <your-repo-url-for-Rowdy25.git>(or open an existing local checkout). -
Open the cloned folder as a project in WPILib VSCode (or your preferred IDE).
-
Check
vendordeps/against Vendor Libraries to confirm all vendor library manifests are present. -
If Gradle picks up an unintended Java version (this project targets Java 17), force the build to use a specific JDK with:
./gradlew -Dorg.gradle.java.home=/path/to/your/jdk build
-
Press Ctrl+Shift+P in WPILib VSCode and run "WPILib: Deploy Robot Code" (or from the command line:
./gradlew deployonce your team number is set in.wpilib/wpilib_preferences.json).
To run the simulator: ./gradlew simulateJava.
For any issue or feature that doesn't already have a branch, open an issue first and create a branch off it. This keeps main and the working tree clean and organized. If a branch already exists for the work you're doing, commit there and open a pull request back to main when ready.
- Keep a programmer on pit crew to manage robot code and to speak with judges.
- Make as few code changes as possible. If a change is required, tune or revise existing code rather than writing new code — bugs are far more likely in freshly written code.
- Confine deploys to a single laptop when possible. Event networks often restrict internet access, and a single source of truth avoids deploying stale revisions.
- Maintain a preflight checklist to thoroughly evaluate the robot before each match. Test every subsystem.
- Make sure to select an auto routine before the match starts.
- Verify on the driver station that the robot, laptop, and controllers are all connected.
- Record auto in every match when possible.
The documentation is organized to mirror the project structure. Directories under robot/ correspond to packages under src/main/java/io/github/frc461/rowdy25/:
- dev — Development guide and team conventions
- lib — Vendor dependencies and installation
- robot — Core robot classes and architecture
- autos — Autonomous routines and path management
- commands — Command-based actions (abstractions over subsystems)
- constants — Configuration and field positions
- subsystems — Mechanical system implementations
- util — Vision, field math, and helper utilities
This checklist progresses from conceptual / architectural knowledge → development workflow → high-level abstractions (commands) → low-level implementation details.
Conceptual foundation:
- Getting Started — Deployment and contribution workflow (this file)
- Robot Overview — Robot overview
- Commands Overview — How commands abstract subsystem actions
- Robot Class - Robot lifecycle and architecture
Development:
- Libraries — Vendor dependency overview and installation
- Development Guide — Development milestones and team architecture (see also AGENTS.md for a system-level reference)
High-level abstractions (how pieces fit together):
- RobotStates — State machine that coordinates the superstructure
- RobotContainer — Where commands bind to controller triggers and state changes
Low-level implementation details:
- Subsystems Overview — Lower-level mechanical control
- Individual Subsystem Docs — Drivetrain, Elevator, Pivot, Wrist, Intake, Localizer, Lights
- Constants — Configuration and tuning framework (including
RobotIdentityvariant selection) - Utilities — Vision, field math, and control helpers
Mid-to-advanced topics:
- Autonomous System — Auto routines, pathfinding, dynamic generation
- All Commands — Detailed command implementations