Skip to content

WPILib Overview

The standard FRC software library.

What Is WPILib?

WPILib (WPI Robotics Library) provides classes for interfacing with the FRC control system: motors, sensors, driver station, and more.

Key Packages

PackagePurpose
edu.wpi.first.wpilibjCore classes (MotorController, Joystick, Timer)
edu.wpi.first.wpilibj2.commandCommand-based framework
edu.wpi.first.mathMath utilities (geometry, kinematics)
edu.wpi.first.math.kinematicsSwerve/differential drive math
edu.wpi.first.networktablesData sharing between robot and dashboard
edu.wpi.first.cameraserverCamera streaming
edu.wpi.first.wpilibj.driveMecanum/differential drive helpers

Supported Languages

LanguageLibraryNotes
JavaWPILibJRecommended for beginners
C++WPILibCBetter performance, more complex
PythonRobotPyInterpreted, easier to debug

XBot uses Java.

Common Classes

Motor Controllers

java
// PWM motors
Spark spark = new Spark(0);
spark.set(0.5);

// CAN motors (via vendor libraries)
TalonFX talon = new TalonFX(1);
talon.set(0.5);

Sensors

java
// Gyro
PigeonIMU gyro = new PigeonIMU(new CANBus());
double heading = gyro.getYaw();

// Limit switch
DigitalInput limit = new DigitalInput(0);
boolean isPressed = limit.get();

Joystick

java
XboxController controller = new XboxController(0);
double leftY = controller.getLeftY();
boolean aPressed = controller.getRawButtonPressed(1);

Timer

java
Timer timer = new Timer();
timer.start();
double elapsed = timer.get();

Built for XBot Robotics Team 488