What is WPILib?

The WPI Robotics Library logo.

WPILib is the standard software library for programming FIRST® robots. It provides the classes and tools needed to control motors, read sensors, communicate with the Driver Station, and run autonomous routines across FRC® and FTC® via Systemcore.

Worcester Polytechnic Institute (WPI) logo.

WPILib is developed and maintained by a partnership between Worcester Polytechnic Institute (WPI), FIRST®, and volunteer developers from the community.

Which path are you on?

FTC with Systemcore

FTC Systemcore

Use WPILib with Systemcore and Motioncore. Write your code in Java, Blocks, C++, or Python.

FTC SDK

FTC REV Control Hub / Expansion Hub

Program a REV Control Hub or Expansion Hub with the FTC SDK. FTC Docs covers the hardware, wiring, setup, and programming.

https://ftc-docs.firstinspires.org/en/latest/

FRC

FIRST Robotics Competition

Write your robot code in Java, Blocks, C++, or Python and run it on Systemcore. You’ll need a Windows computer for the Driver Station at competition.

FRC + FTC

XRP Practice Robot

Practice reading sensors, controlling motors, and writing drive code on an XRP desktop robot. You don’t need a competition robot to get started.

What WPILib Includes

Component

Description

FRC

FTC

Robot library

Motor control, sensors, drive classes, kinematics

✓

✓ (Systemcore)

VS Code extension

Project templates, deploy, build, vendor manager

✓

✓

Simulation framework

Run robot code on laptop without hardware

✓

✓ (XRP)

Glass dashboard

Real-time telemetry and field visualization

✓

✓

Elastic dashboard

Configurable driver dashboard (replaces Shuffleboard)

✓

Planned

PathPlanner / Choreo

GUI path planning for autonomous

✓

Planned

OutlineViewer

NetworkTables browser

✓

✓

Language Comparison

Language

Useful for

Programming style

Notes

Java

Teams choosing a text-based language

Statically typed

Uses classes and explicit type declarations

Blocks (Blockly)

Teams that prefer visual programming

Graphical blocks

Generates Python code

C++

Teams with C++ experience

Statically typed

Available in the desktop environment only

Python

Teams that know Python or want to learn it

Dynamically typed

Uses indentation to group code

Tip

Java, C++, and Python use similar APIs. Class names and method names are kept identical or very close across Java, C++, and Python.

Development Environments

Write code on your computer with a desktop editor, or use an OnBot editor in your browser. OnBot runs on Systemcore and does not require a local editor installation.

Desktop Environment: Java, C++, Python

Visual Studio Code + WPILib Extension

Desktop

All three languages use VS Code as the IDE, with the WPILib extension providing project templates, build tools, simulation, and vendor library management. Works on Windows, macOS, and Linux.

Feature

Java

C++

Python

IDE

VS Code

VS Code

VS Code

Build system

GradleRIO

GradleRIO (open to change)

More integrated experience

Desktop simulation

✓

✓

✓

Offline install

✓

✓

✓

Deploy

USB or Wi-Fi to Systemcore

USB or Wi-Fi to Systemcore

USB or Wi-Fi to Systemcore

Tip

Python install experience: WPILib is actively working to provide a more integrated Python setup, reducing the number of separate steps compared to Java/C++. C++ build system: GradleRIO is the baseline; transitioning to an alternative build system is possible depending on community contributions.

OnBot Environments: Blockly, Java, Python, LabVIEW

VS Code-derived editor hosted on Systemcore

OnBot (Browser-based)

OnBot environments run entirely in the browser, no local installation required. Code is written, saved, and deployed directly on the Systemcore. Supports multiple saved Workspaces with a Deploy button to choose which one runs.

Feature

Blockly

Java

Python

LabVIEW

Editor

Block visual editor

VS Code-derived

VS Code-derived

Graphical (browser)

Backed by

Python

Java

Python

LabVIEW

Desktop install

None required

None required

None required

None required

Multi-user

Single-user (under investigation)

Single-user (under investigation)

Single-user (under investigation)

Single-user (under investigation)

Warning

C++ is not supported in OnBot environments. The browser-based toolchain does not provide a good enough C++ experience to ship. Use the desktop VS Code environment for C++ development.

OnBot notes: Currently planned as single-user access (multi-user being investigated). Supports multiple saved Workspaces with a Deploy button to select which one runs on the Systemcore. Simulation is not planned for OnBot environments.

FTC Legacy (REV)

FTC Legacy (REV)

OnBot Java / Android Studio

Teams using the REV FTC SDK with OnBot Java (browser-based) or Android Studio. Documented at ftc-docs.firstinspires.org.

https://ftc-docs.firstinspires.org/en/latest/programming_resources/shared/choosing_program_lang/choosing-program-lang.html

FTC Legacy (REV)

Blocks (FTC SDK)

Visual block-based programming via the FTC SDK OnBot interface. Documented at ftc-docs.firstinspires.org.

https://ftc-docs.firstinspires.org/en/latest/programming_resources/shared/choosing_program_lang/choosing-program-lang.html

Build and Deploy Comparison

Feature

Desktop (VS Code)

OnBot (Java / Python / Blockly / LabVIEW)

FTC Legacy (REV)

Languages

Java, C++, Python

Java, Python, Blockly, LabVIEW

Java, Blocks

C++ support

✓

✗ Not supported

✗

Build system

GradleRIO

On-device (browser)

FTC SDK / Gradle

Deploy

USB or Wi-Fi to Systemcore

Deploy button in browser (Workspace-based)

ADB over USB or Wi-Fi

Simulation

✓ Full desktop sim

✗ Not planned

✗ None

Offline install

✓

N/A, runs on Systemcore

✓

Multi-user

N/A

Single-user (under investigation)

N/A

Driver Station

_FIRST_ DS (Windows, Mac, Linux)

_FIRST_ DS (Windows, Mac, Linux)

Driver Hub / phone

Note

Only the Windows Version of the _FIRST_ DS is competition legal

Dashboards

Dashboard

Status

Best for

Elastic

✓ Current, recommended

Competition driver dashboard. Highly configurable.

AdvantageScope

✓ Current, recommended

Log review, 3D field visualization, mechanism replay.

Glass

✓ Current

Built-in simulation UI and lightweight telemetry.

Vendor Libraries

What are vendor libraries?

Hardware vendors (REV, CTRE, etc.) ship WPILib extension libraries that add support for their specific motor controllers, sensors, and accessories. In addition, software vendors (PhotonLib, PathPlannerLib, etc.) ship libraries to support autonomous routines, trajectory and vision. They are installed per project via the VS Code Dependency Manager and do not carry over on project import.

Common libraries
  • REVLib: SPARK MAX, SPARK Flex

  • Phoenix 6: Talon FX, CANcoder

  • PathplannerLib: auto trajectories

  • PhotonLib: PhotonVision cameras

  • Limelight: Limelight cameras

Path Planning

FRC and FTC + Systemcore

PathPlanner / Choreo

GUI tools for drawing autonomous paths. Both generate trajectory commands that slot into command-based robot programs. PathPlanner is more beginner-friendly; Choreo optimizes for time.

Path Planning

FTC Legacy (REV)

Road Runner and PedroPathing

Libraries for generating autonomous paths and trajectories. RoadRunner focuses on time consistency, while Pedro Pathing focuses on maximizing speed.

https://ftc-docs.firstinspires.org/en/latest/programming_resources/index.html

Shared Concepts Across Programs

These programming concepts are identical whether you are writing FRC, FTC Systemcore, or XRP code.

PID Control

Proportional-Integral-Derivative feedback loop for precise motor velocity and position control.

Odometry

Track robot position on the field using encoder and gyro data. Used for autonomous navigation.

State Machines

Command-based programming uses a state machine model: subsystems, commands, and triggers.

AprilTags

WPILib includes built-in AprilTag detection for field localization and target tracking.

Motor Control

DifferentialDrive, MecanumDrive, and swerve kinematics classes work identically across all platforms.

Java Fundamentals

WPILib Java code uses standard Java: classes, interfaces, lambdas. No framework-specific syntax to learn separately.

Source Code and API Docs

Java API Reference

Full Javadoc for WPILibJ classes and methods.

https://github.wpilib.org/allwpilib/docs/release/java/
C++ API Reference

Doxygen documentation for WPILibC.

https://github.wpilib.org/allwpilib/docs/release/cpp/
Python API Reference

RobotPy documentation for Python-based robot programs.

https://robotpy.readthedocs.io/projects/robotpy/en/stable/