.. include:: .. meta:: :google-site-verification: POR_nG8b56eXGxmUIutST7jcA_Vl58ypSdJTzJ1g0zg WPILib Documentation ==================== .. raw:: html

Welcome!

WPILib is the standard programming library for FIRST Robotics, supporting teams competing in FIRST Robotics Competition (FRC) and FIRST Tech Challenge (FTC).

How can we help?

Core Documentation

New to WPILib? You're in the right place.

Start with Zero to Robot to connect Systemcore, install WPILib, and write your first robot program. No programming experience is required.

Set Up and Program Your Robot

→
Zero to Robot
Choose a programming language and editor, connect and configure Systemcore, then deploy code and drive. Assembly and wiring guides are linked in Step 1.
Already comfortable programming? Read New to WPILib for an introduction to the robot program structure, hardware classes, and development tools. Then continue with the setup step you need.

Welcome back! Get ready for 2027.

Use the checklist below to install WPILib, import your project, and update vendor libraries. Check the replacement tools before you deploy.

FRC

Pre-Season Checklist

FRC

Tools to Replace for 2027

These tools are not available in the 2027 release. Choose a replacement before your first robot test.

  • Shuffleboard: update to Elastic or AdvantageScope
  • SmartDashboard: update to Glass or Elastic
  • PathWeaver: update to PathPlanner or Choreo
  • RobotBuilder: being removed with the control system change in 2027
FRC

What Is New for 2027

  • FRC now uses Systemcore: see the hardware migration guide
  • 2027 field images and AprilTag layout data (included in WPILib after kickoff)
  • Windows 10 is no longer supported: Windows 11 is required
  • Vendor library updates required: check the Dependency Manager
Full 2027 changelog
FTC

FTC: Choose Your Control System

FTC teams use Systemcore with WPILib or REV Control Hub / Expansion Hub with the FTC SDK. Choose the documentation for your hardware.

Using REV Control Hub / Expansion Hub?

Follow FTC Docs for setup, wiring, and programming.

Using Systemcore with WPILib?
  • Systemcore works with WPILib code; Motioncore connects motors
  • See the FTC overview for release status and setup information
  • Practice writing and running code on an XRP robot
  • WPILib FTC overview
FRC + FTC

Practice with WPILib

  • Use WPILib to read sensors, control motors, and write autonomous routines
  • Choose your language and editor in Zero to Robot
  • Use the XRP to practice without waiting for a competition robot
Follow the WPILib blog for release updates
.. rubric:: Find the Right Documentation .. grid:: 1 1 3 3 :gutter: 3 .. grid-item-card:: WPILib: Systemcore and Robot Programming :link: /docs/zero-to-robot/introduction :link-type: doc :class-card: sw-card-shared Set up Systemcore, write robot code, and learn how to test and debug it. You'll also find links to hardware guides and vendor documentation. .. grid-item-card:: FRC Docs: Team, Hardware, and Vendor Resources :link: /docs/hardware/hardware-basics/hardware-overview :link-type: doc :class-card: sw-card-frc **Separate site coming soon** ^^^ Find FRC hardware guides, vendor links, and team resources. These will move to a separate site; until then they are here in WPILib docs. +++ Browse current FRC resources → .. grid-item-card:: FTC Docs: Hardware and Setup and more :link: https://ftc-docs.firstinspires.org/en/latest/ :link-type: url :class-card: sw-card-ftc Find FTC assembly and wiring guides, plus setup and programming help for the REV control system. For Systemcore programming, use WPILib docs. .. raw:: html

Core Documentation

Looking for a specific topic? Start with the links below.

Foundations

Hardware Overview
Compare controllers, power distribution, radios, and sensors.
Software Overview
Choose a programming language and development environment.
Robot Programming
Write robot code with commands, subsystems, and triggers.

Everyday Tools

Dashboards
Display sensor readings and robot status in Elastic, AdvantageScope, or Glass using NetworkTables.
Simulation
Test your code on your computer without a robot.
API Reference
Java, C++, and Python class and method documentation.

Controls and Autonomous Programming

Path Planning
Plan autonomous paths with PathPlanner, Choreo, and WPILib tools.
Advanced Controls
PID, feedforward, state-space, kinematics, and system identification.
Still using a legacy control system? This site covers the 2027 Systemcore-based control system. FRC teams using a roboRIO should use the 2026 WPILib documentation. FTC teams using a REV Control Hub or Expansion Hub should use the FTC documentation.
---- .. toctree:: :maxdepth: 1 :caption: Start Here :hidden: New to WPILib Returning Teams Zero to Robot .. toctree:: :maxdepth: 1 :caption: Reference :hidden: docs/yearly-overview/index docs/api-reference docs/software/support/support-resources docs/software/support/troubleshooting docs/software/frc-glossary .. toctree:: :maxdepth: 1 :caption: Programming Fundamentals :hidden: docs/software/what-is-wpilib docs/controls-overviews/control-system-software docs/software/basic-programming/index docs/software/hardware-apis/index docs/software/commandbased/index docs/software/python/index docs/software/programming-snippets docs/software/examples-tutorials/wpilib-examples docs/software/examples-tutorials/third-party-examples .. toctree:: :maxdepth: 1 :caption: Tools, Dashboards, and Networking :hidden: docs/software/vscode-overview/index docs/software/vscode-overview/3rd-party-libraries docs/software/firstdriverstation/index docs/software/dashboards/index docs/software/telemetry/index docs/software/wpilib-tools/outlineviewer/index docs/software/wpilib-tools/wpical/index docs/networking/networking-introduction/index docs/networking/networking-utilities/index .. toctree:: :maxdepth: 1 :caption: Robot Behavior and Autonomy :hidden: docs/software/kinematics-and-odometry/index docs/software/pathplanning/index docs/software/advanced-controls/index docs/software/wpilib-tools/robot-simulation/index .. toctree:: :maxdepth: 1 :caption: Control Systems :hidden: docs/ftc/index docs/xrp-robot/index docs/romi-robot/index .. toctree:: :maxdepth: 1 :caption: Hardware and Wiring :hidden: docs/controls-overviews/control-system-hardware docs/hardware/hardware-basics/hardware-overview docs/hardware/hardware-basics/status-lights-ref docs/software/can-devices/index .. toctree:: :maxdepth: 1 :caption: Contributing :hidden: docs/contributing/wpilib-docs/index docs/contributing/wpilib/index docs/legal/privacy-policy Report an Issue .. nowarningstoctree:: :maxdepth: 1 :caption: PR CHANGED FILES docs/api-reference.rst docs/contributing/wpilib-docs/style-guide.rst docs/controls-overviews/control-system-hardware.rst docs/controls-overviews/control-system-software.rst docs/ftc/basic-ftc-robot-wiring.rst docs/ftc/ftc-robot-wiring-overview.rst docs/ftc/index.rst docs/hardware/hardware-basics/hardware-overview.rst docs/hardware/hardware-basics/robot-battery.rst docs/networking/networking-introduction/ip-configurations.rst docs/networking/networking-utilities/portforwarding.rst docs/romi-robot/programming-romi.rst docs/software/advanced-controls/controllers/bang-bang.rst docs/software/advanced-controls/controllers/combining-feedforward-feedback.rst docs/software/advanced-controls/controllers/feedforward.rst docs/software/advanced-controls/controllers/pidcontroller.rst docs/software/advanced-controls/controllers/profiled-pidcontroller.rst docs/software/advanced-controls/controllers/trapezoidal-profiles.rst docs/software/advanced-controls/filters/debouncer.rst docs/software/advanced-controls/filters/linear-filter.rst docs/software/advanced-controls/filters/median-filter.rst docs/software/advanced-controls/filters/slew-rate-limiter.rst docs/software/advanced-controls/geometry/pose.rst docs/software/advanced-controls/geometry/transformations.rst docs/software/advanced-controls/state-space/state-space-debugging.rst docs/software/advanced-controls/state-space/state-space-flywheel-walkthrough.rst docs/software/advanced-controls/state-space/state-space-observers.rst docs/software/advanced-controls/system-identification/creating-routine.rst docs/software/advanced-controls/trajectories/constraints.rst docs/software/advanced-controls/trajectories/ltv.rst docs/software/advanced-controls/trajectories/trajectory-generation.rst docs/software/advanced-controls/trajectories/transforming-trajectories.rst docs/software/advanced-gradlerio/deploy-git-data.rst docs/software/advanced-gradlerio/profiling-with-visualvm.rst docs/software/basic-programming/alliancecolor.rst docs/software/basic-programming/coordinate-system.rst docs/software/basic-programming/cpp-units.rst docs/software/basic-programming/deploy-directory.rst docs/software/basic-programming/functions-as-data.rst docs/software/basic-programming/index.rst docs/software/basic-programming/java-gc.rst docs/software/basic-programming/joystick.rst docs/software/basic-programming/opmodes.rst docs/software/basic-programming/robot-preferences.rst docs/software/can-devices/can-addressing.rst docs/software/commandbased/commands-v2/binding-commands-to-triggers.rst docs/software/commandbased/commands-v2/command-compositions.rst docs/software/commandbased/commands-v2/command-scheduler.rst docs/software/commandbased/commands-v2/commands.rst docs/software/commandbased/commands-v2/cpp-command-discussion.rst docs/software/commandbased/commands-v2/index.rst docs/software/commandbased/commands-v2/organizing-command-based.rst docs/software/commandbased/commands-v2/pid-subsystems-commands.rst docs/software/commandbased/commands-v2/profile-subsystems-commands.rst docs/software/commandbased/commands-v2/profilepid-subsystems-commands.rst docs/software/commandbased/commands-v2/structuring-command-based-project.rst docs/software/commandbased/commands-v2/subsystems.rst docs/software/commandbased/commands-v2/what-is-command-based.rst docs/software/commandbased/commands-v3/creating-commands.rst docs/software/commandbased/commands-v3/how-it-works.rst docs/software/commandbased/commands-v3/index.rst docs/software/commandbased/commands-v3/lambda-functions.rst docs/software/commandbased/commands-v3/making-commands-run.rst docs/software/commandbased/commands-v3/mechanisms.rst docs/software/commandbased/commands-v3/migration-guide.rst docs/software/commandbased/commands-v3/scopes.rst docs/software/commandbased/commands-v3/state-machines.rst docs/software/commandbased/commands-v3/structuring-your-project.rst docs/software/commandbased/commands-v3/telemetry.rst docs/software/commandbased/commands-v3/triggers.rst docs/software/commandbased/commands-v3/troubleshooting.rst docs/software/commandbased/index.rst docs/software/dashboards/advantagescope.rst docs/software/dashboards/glass/command-based-widgets.rst docs/software/dashboards/glass/field2d-widget.rst docs/software/dashboards/glass/introduction.rst docs/software/dashboards/glass/mech2d-widget.rst docs/software/dashboards/glass/widgets.rst docs/software/examples-tutorials/wpilib-examples.rst docs/software/firstdriverstation/first-driver-station-best-practices.rst docs/software/firstdriverstation/first-driver-station-debug-graph.rst docs/software/firstdriverstation/first-driver-station-errors-warnings.rst docs/software/firstdriverstation/first-driver-station-introduction.rst docs/software/firstdriverstation/first-driver-station-log-viewer.rst docs/software/firstdriverstation/index.rst docs/software/firstdriverstation/manually-setting-the-first-driver-station-to-start-custom-dashboard.rst docs/software/frc-glossary.rst docs/software/hardware-apis/misc/addressable-leds.rst docs/software/hardware-apis/motors/servos.rst docs/software/hardware-apis/motors/using-motor-controllers.rst docs/software/hardware-apis/motors/wpi-drive-classes.rst docs/software/hardware-apis/pneumatics/pressure.rst docs/software/hardware-apis/sensors/analog-inputs-software.rst docs/software/hardware-apis/sensors/analog-potentiometers-software.rst docs/software/hardware-apis/sensors/digital-inputs-software.rst docs/software/hardware-apis/sensors/gyros-software.rst docs/software/hardware-apis/sensors/limit-switch.rst docs/software/kinematics-and-odometry/differential-drive-kinematics.rst docs/software/kinematics-and-odometry/differential-drive-odometry.rst docs/software/kinematics-and-odometry/index.rst docs/software/kinematics-and-odometry/intro-and-chassis-velocities.rst docs/software/kinematics-and-odometry/mecanum-drive-kinematics.rst docs/software/kinematics-and-odometry/mecanum-drive-odometry.rst docs/software/kinematics-and-odometry/swerve-drive-kinematics.rst docs/software/kinematics-and-odometry/swerve-drive-odometry.rst docs/software/networktables/client-side-program.rst docs/software/networktables/listening-for-change.rst docs/software/networktables/multiple-instances.rst docs/software/networktables/networktables-networking.rst docs/software/networktables/nt4-migration-guide.rst docs/software/networktables/publish-and-subscribe.rst docs/software/networktables/reading-array-values-published-by-networktables.rst docs/software/networktables/robot-program.rst docs/software/networktables/tables-and-topics.rst docs/software/programming-snippets.rst docs/software/python/index.rst docs/software/support/troubleshooting.rst docs/software/systemcore-info/index.rst docs/software/systemcore-info/systemcore-ssh.rst docs/software/telemetry/datalog-download.rst docs/software/telemetry/datalog.rst docs/software/telemetry/persistent-alerts.rst docs/software/vision-processing/apriltag/index.rst docs/software/vision-processing/roborio/using-multiple-cameras.rst docs/software/vision-processing/wpilibpi/basic-vision-example.rst docs/software/vision-processing/wpilibpi/using-cameraserver.rst docs/software/vision-processing/wpilibpi/working-with-contours.rst docs/software/vscode-overview/3rd-party-libraries.rst docs/software/vscode-overview/creating-robot-program.rst docs/software/what-is-wpilib.rst docs/software/wpilib-tools/robot-simulation/drivesim-tutorial/index.rst docs/software/wpilib-tools/robot-simulation/drivesim-tutorial/odometry-simgui.rst docs/software/wpilib-tools/robot-simulation/drivesim-tutorial/updating-drivetrain-model.rst docs/software/wpilib-tools/robot-simulation/introduction.rst docs/software/wpilib-tools/robot-simulation/physics-sim.rst docs/software/wpilib-tools/robot-simulation/unit-testing.rst docs/software/wpilib-tools/wpical/index.rst docs/xrp-robot/index.rst docs/xrp-robot/programming-xrp.rst docs/yearly-overview/2026-game-data.rst docs/yearly-overview/known-issues.rst docs/yearly-overview/removed-features.rst docs/yearly-overview/returning-quickstart.rst docs/yearly-overview/yearly-changelog.rst docs/zero-to-robot/introduction.rst docs/zero-to-robot/new-to-wpilib.rst docs/zero-to-robot/returning.rst docs/zero-to-robot/step-1/basic-robot-wiring.rst docs/zero-to-robot/step-1/index.rst docs/zero-to-robot/step-1/intro-to-frc-robot-wiring.rst docs/zero-to-robot/step-1/kitbot-starterbot-assembly.rst docs/zero-to-robot/step-2/first-driver-station-installation.rst docs/zero-to-robot/step-2/index.rst docs/zero-to-robot/step-2/offline-installation-preparations.rst docs/zero-to-robot/step-2/python-setup.rst docs/zero-to-robot/step-2/wpilib-setup.rst docs/zero-to-robot/step-3/imaging-your-systemcore.rst docs/zero-to-robot/step-3/index.rst docs/zero-to-robot/step-3/openmesh.rst docs/zero-to-robot/step-3/radio-programming.rst docs/zero-to-robot/step-4/creating-test-drivetrain-program-cpp-java-python.rst docs/zero-to-robot/step-4/index.rst docs/zero-to-robot/step-4/running-test-program.rst stubs/software-tools-stub.rst .. todolist::