Overview
WPILib provides classes for reading various sensors commonly used in FRC robots. This guide covers encoders, gyroscopes, and accelerometers.Encoders
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Encoder.java:18
Quadrature encoders count shaft rotation and sense direction using two channels (A and B) that are out of phase.
Basic Encoder Usage
- Java
- C++
Encoding Types
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Encoder.java:125
- k1X: Counts only rising edges on channel A (lowest resolution)
- k2X: Counts both rising and falling edges on channel A
- k4X: Counts all edges on both channels (highest resolution, default)
Distance Per Pulse
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Encoder.java:453
Convert encoder counts to meaningful units:
- Java
- C++
Resetting Encoders
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Encoder.java:355
- Java
- C++
Advanced Configuration
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Encoder.java:483
- Java
- C++
Gyroscopes
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogGyro.java:17
Gyroscopes measure rotational rate and can integrate to provide heading.
Analog Gyro
- Java
- C++
Gyro Calibration
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogGyro.java:53
- Java
- C++
Digital Gyros
- Java
- C++
Accelerometers
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/BuiltInAccelerometer.java:14
Built-in Accelerometer
The roboRIO has a built-in 3-axis accelerometer:- Java
- C++
External Accelerometers
- Java
- C++
Complete Odometry Example
- Java
- C++
Best Practices
- Calibrate gyros at startup - Robot must be stationary during calibration
- Reset sensors at known positions - Reset encoders when robot is at a known position
- Set distance per pulse - Convert encoder counts to meaningful units
- Use averaging for smoother rates - Call
setSamplesToAverage()for encoders - Monitor gyro drift - Gyros accumulate error over time; reset periodically
- Check sensor connections - Verify sensor values are reasonable
Next Steps
- Motor Control - Control motors with feedback
- Pneumatics - Control pneumatic systems
- Vision - Process camera data