The FRC Software Stack: What Runs Where
The big picture
Section titled “The big picture”An FRC robot is a small distributed system. Understanding which piece runs where keeps you from being lost later.
- roboRIO — the robot’s main controller (a real-time Linux computer made by NI). Your robot program runs here. Two versions are in use: the roboRIO 1.0 and the newer roboRIO 2.0 (which boots from a microSD card).
- Your development laptop — runs Visual Studio Code with the WPILib extension , where you write, build, and deploy code.
- Driver Station laptop — runs the FRC Driver Station (Windows only), the only legal way to enable/disable the robot during a match. It also forwards joystick/gamepad inputs to the robot.
- Radio — the robot’s wireless link to the field/Driver Station. For 2025 and later, most regions use the VH-109 radio from Vivid Hosting , which replaced the older OpenMesh OM5P-AC (the OM5P is still used in a few regions).
- Motor controllers (Talon FX, SPARK MAX, etc.), the Power Distribution Hub (PDH) or legacy Power Distribution Panel (PDP) , the Pneumatics Hub (PH) , and sensors — connected over the CAN bus and addressed by ID in your code.
WPILib: the official library
Section titled “WPILib: the official library”WPILib is the free, open-source software library that FIRST and the community maintain. It provides the classes you use for everything: motor outputs, sensor reads, joystick reads, kinematics, control loops, and simulation. You almost never talk to the roboRIO’s hardware directly — you call WPILib.
WPILib ships with a build system based on Gradle (called GradleRIO) that compiles your code and deploys it to the roboRIO over the network.
How a robot program runs
Section titled “How a robot program runs”- You write code in VS Code.
- “Build Robot Code” compiles it with Gradle.
- “Deploy Robot Code” copies the program to the roboRIO and restarts the robot program.
- The Driver Station enables the robot in Autonomous , Teleop , or Test mode.
- Your code reacts: reading sensors/inputs and setting motor outputs on a fixed loop (typically every 20 ms).
Communication glue: NetworkTables
Section titled “Communication glue: NetworkTables”NetworkTables is WPILib’s publish/subscribe system that shares values between the robot and dashboards (like Elastic , Glass , Shuffleboard , or AdvantageScope). This is how you graph a sensor, tune a value live, or pick an autonomous routine before a match.
Why this matters
Section titled “Why this matters”When something breaks, the first question is always which computer is responsible? A deploy failure is a laptop-to-roboRIO problem; a robot that won’t enable is usually a Driver Station or radio problem; a value that won’t update on the dashboard is a NetworkTables problem. Keeping the map in your head turns debugging from guesswork into a checklist.
Key takeaways
Section titled “Key takeaways”- WPILib is the official open-source library; your robot code is built on it.
- The roboRIO runs your program; VS Code deploys to it; the Driver Station enables it.
- Motor controllers, the PDH/PDP, and sensors live on the CAN bus and are addressed by ID.
- For 2025+, most teams use the VH-109 (Vivid Hosting) radio, replacing the OM5P-AC.
- NetworkTables shares live data between the robot and dashboards.
This lesson was adapted from learnfrc.com.
