Welcome to WPILib
WPILib is the comprehensive software library for programming FIRST Robotics Competition robots. It provides everything you need to build competitive robot code, from hardware abstraction to advanced control algorithms.Our Mission
The WPILib Mission is to enable FIRST Robotics teams to focus on writing game-specific software rather than focusing on hardware details - “raise the floor, don’t lower the ceiling”. We work to enable teams with limited programming knowledge and/or mentor experience to be as successful as possible, while not hampering the abilities of teams with more advanced programming capabilities. We support Kit of Parts control system components directly in the library and strive to keep parity between major features of each language (Java, C++, and Python).Hardware Abstraction Layer
Direct control of roboRIO hardware through a clean, consistent API that handles all the low-level details
Advanced Control Systems
PID controllers, feedforward, profiled motion, and state-space control for precise robot movement
Robot Simulation
Test and develop robot code on your desktop with physics-based simulation before deploying to hardware
Command-Based Framework
Organize complex robot behaviors into reusable, composable commands with built-in scheduling
Computer Vision
Built-in CameraServer and AprilTag detection for vision processing and field localization
Network Tables
Real-time communication between robot code, dashboard, and vision coprocessors
Core Libraries
WPILib consists of several integrated components:Hardware Abstraction Layer (HAL)
The HAL provides low-level access to roboRIO hardware components:- Digital I/O, PWM, Relay outputs
- Analog inputs and outputs
- Encoders and counters
- Pneumatics control (CTRE PCM, REV PH)
- CAN bus communication
- Power distribution monitoring
WPILibJ & WPILibC
The main robot programming libraries for Java and C++:- TimedRobot framework with 20ms periodic execution
- Motor controller classes and groups
- Drive train implementations (Differential, Mecanum, Swerve)
- Sensor wrappers (gyros, accelerometers, limit switches)
- Smart Dashboard integration
WPIMath
Mathematical utilities and control theory implementations:- Geometry classes (Pose2d, Transform2d, Rotation2d)
- Kinematics (differential, mecanum, swerve)
- Odometry and pose estimation
- Trajectory generation and following
- State-space controllers and Kalman filters
NTCore (Network Tables)
Real-time publish/subscribe communication system:- Automatic type handling and serialization
- Bidirectional communication
- Connection to driver station, dashboards, and coprocessors
- Persistent value storage
CSCore (Camera Server)
Streaming camera framework:- USB and HTTP camera support
- MJPEG and H.264 streaming
- OpenCV integration for vision processing
- Multiple simultaneous camera streams
Language Support
WPILib officially supports three programming languages:- Java
- C++
- Python
Java is the most popular choice for FRC teams, offering strong typing, excellent IDE support, and extensive community resources.Requirements: JDK 17 or later
Open Source
WPILib is an open source project, licensed under the BSD 3-clause license. We welcome contributions from the community!GitHub Repository
View source code, report issues, and contribute to development
Documentation
Official documentation with guides, API reference, and tutorials
Community Support
Get help from the FRC community on Chief Delphi forums
Contributing Guide
Learn how to contribute code, documentation, and bug reports
Getting Started
Ready to start programming your robot? Follow our installation and quick start guides:Installation Guide
Install the WPILib development environment and required tools
Quick Start Guide
Create your first robot program in minutes
WPILib is developed and maintained by WPI (Worcester Polytechnic Institute) in collaboration with FIRST and the FRC community.