This is an update release of WPILib for the 2023 season. Notable fixes in this release:
- Several major NetworkTables bugs
- ADXRS450 Gyros in C++
Significant new features in this release:
- SysId CTRE CANivore and Phoenix Pro support
Upgrading from earlier 2023 releases is easy: simply download and run the new installer and it will update your current installation. If you already have the 2023 WPILib vscode installed, it will detect it and you can simply click "next" for that installation step. After installation, vscode will prompt you when opening your robot project whether you want to upgrade it to this version. Note that using the installer is required to get the new version of desktop tools such as Shuffleboard.
The documentation for WPILib is located at https://docs.wpilib.org/ (if you have trouble accessing this location, https://frcdocs.wpi.edu/en/stable/ is an alternate location with the same content).
If you're new to FRC, start with Getting Started.
Minimum system requirements have changed for 2023. WPILib requires 64-bit Windows 10 or 11, Ubuntu 22.04, or macOS 11 or higher. Newly supported this year is Apple Silicon (arm64)! C++ teams should note that Visual Studio 2022 is now required for desktop builds. For this release, Mac users will need to have the Xcode Command Line Tools installed before running the installer; we are working on removing this requirement in a future release. This can be done by running xcode-select --install
in the Terminal.
If you're returning from a previous season, check out what's new for 2023; be sure to read through this, as a lot has changed from 2022! You will need a new RoboRIO image for 2023; this is available via the FRC 2023 Game Tools. Follow the WPILib installation guide to install WPILib.
If you're starting from a 2022 robot project, you will need to import your project to create a 2023 project. The import process is important, as it will make a number of automated corrections for some breaking changes that happened in 2023. It is also necessary to import vendor libraries again, since last year’s vendor libraries must be updated to be compatible with this year’s projects.
A complete list of known issues with this release can be found here.
WPILib is developed by a small team of volunteers and the FIRST community.
What's Changed since 2023.3.1
- [wpilib] Revert throw on nonexistent SimDevice name in SimDeviceSim by @PeterJohnson in #5053
- [cameraserver] Add GetInstance() to all functions by @PeterJohnson in #5054
- [ntcore] Handle excludeSelf on SetDefault by @PeterJohnson in #5058
- [ntcore] Output warning on property set on unpublished topic by @PeterJohnson in #5059
- [wpilib] ElevatorSim: Fix WouldHitLimit methods by @hadley31 in #5057
- [wpimath] Fix DCMotor.getSpeed() by @calcmogul in #5061
- [sysid] Make Spark Max built-in encoder sampling and measurement period configurable by @calcmogul in wpilibsuite/sysid#478
- [sysid] Use "encoder port" instead of "built-in" for spark max built-in encoder by @calcmogul in wpilibsuite/sysid#480
What's Changed since 2022.2.1
WPILib
- Load joystick values upon code initialization by @ThadHouse in #4950
- AprilTagFieldLayout: Improve API shape for loading builtin JSONs by @brennenputh in #4949
- Fix C++ ADXRS450 and Java SPI gyro defs by @ThadHouse in #4988
- Properly use control word that is in sync with DS data by @ThadHouse in #4989
- Add Timer::Restart() by @srimanachanta in #4963
NetworkTables
- Write empty persistent file if none found by @PeterJohnson in #4996
- Handle topicsonly followed by value subscribe by @PeterJohnson in #4991
- Special-case default timestamps by @PeterJohnson in #5003
- Use full handle when subscribing by @PeterJohnson in #5013
- Add client disconnect function by @PeterJohnson in #5022
- Don't leak buffers in rare WS shutdown case by @PeterJohnson in #5046
- Change wire timeout to fixed 1 second by @PeterJohnson in #5048
- Report better connection close messages by @PeterJohnson in #5047
Simulation
- Fix MOI calculation error in SingleJointedArmSim by @mcm001 in #4968
- Enable docking in the GUI by @PeterJohnson in #4960
- GUI: Fix buffer overflow in joystick axes copy by @PeterJohnson in #5036
- Check for null in getSimDeviceName JNI by @PeterJohnson in #5038
Math
- HolonomicDriveController: Add getters for the controllers by @OliverW10 in #4948
- Fix Pose3d exponential and clean up Pose3d logarithm by @jlmcmchl in #4970
- Workaround intellisense Eigen issue by @PeterJohnson in #4992
- Remove extraneous assignments from DiscretizeAB() by @calcmogul in #4967
- Make PIDController::Calculate(double, double) update setpoint flag by @calcmogul in #5021
- Add nearest to Pose2d and Translation2d by @rzblue in #4882
- Discard stale pose estimates by @jlmcmchl in #5045
Examples
- Add Computer Vision Pose Estimation and Latency Compensation Example by @CarloWoolsey in #4901
- Add comment to drivedistanceoffboard example by @BerkeSinanYetkin in #4877
- Fix swapped arguments in MecanumControllerCommand example by @sciencewhiz in #4976
- Update for AprilTag field load API usage by @calcmogul in #4975
- C++ RamseteCommand: Fix units by @Starlight220 in #4954
- Hatchbots: Add telemetry by @Starlight220 in #5011
- Improvements to Elevator Simulation Example by @michaelleong25 in #4937
Command-Based Framework
- Fix C++ Select() factory by @Starlight220 in #5024
DataLogTool
- Fix crash due to MemoryBuffer by @PeterJohnson in #5017
- Add msgpack to datalog example by @truher in #5032
Glass
- Add option for debug-level NT logging by @PeterJohnson in #5007
- Limit frame rate to 120 fps by default by @PeterJohnson in #5030
Shuffleboard
- Format integer arrays correctly by @fovea1959 in wpilibsuite/shuffleboard#750
- Support numbers in gyro widgets by @SamCarlberg in wpilibsuite/shuffleboard#754
- Add all known topics on networktables client connect by @lost1227 in wpilibsuite/shuffleboard#753
- Use NetworkTable disconnect instead of stop by @PeterJohnson in wpilibsuite/shuffleboard#755
SysId
- Upgrade vendordeps by @calcmogul in wpilibsuite/sysid#472
- Add CTRE CANivore and Phoenix Pro support by @TytanRock in wpilibsuite/sysid#455
GradleRIO
- Rename Sim DriverStation to be clearer about its purpose by @PeterJohnson in wpilibsuite/GradleRIO#644
VSCode
- Add replacements for wpi/numbers and wpi/span by @sciencewhiz in wpilibsuite/vscode-wpilib#581
- Change WPILib on status bar to open project information by @ThadHouse in wpilibsuite/vscode-wpilib#577
- Re-enable standalone utility notarization by @sciencewhiz in wpilibsuite/vscode-wpilib#572
- Update vscode-java to 1.14.0 by @PeterJohnson in wpilibsuite/WPILibInstaller-Avalonia#329
Docs
- [wpimath] Fix typo in Pose3d::Exp() docs by @calcmogul in #4966
- [wpimath] Update Wikipedia links for quaternion to Euler angle conversion by @calcmogul in #4995
- [wpilibj] Fix typo in MecanumDrive docs by @calcmogul in #4969
- [commands] Fix docs inconsistency for toggleOnFalse(Command) by @Nyxiad in #4978
- [wpilib] XboxController: Fix docs discrepancy by @BruceMcRooster in #4993
- Clarify DS functions provided by FMS by @sciencewhiz in #5043
New Contributors
- @BerkeSinanYetkin made their first contribution in #4877
- @Nyxiad made their first contribution in #4978
- @BruceMcRooster made their first contribution in #4993
- @fovea1959 made their first contribution in wpilibsuite/shuffleboard#750
- @lost1227 made their first contribution in wpilibsuite/shuffleboard#753
- @hadley31 made their first contribution in #5057
MD5 Hashes
3fadb13303671dcef56f9452e53ffe7a WPILib_Linux-2023.3.2.tar.gz
9bdb25c067769643e78751b3711cc228 WPILib_Windows-2023.3.2.iso
5c8af2f07b06a5d076b0233f4a771b67 WPILib_macOS-Intel-2023.3.2.dmg
d86778ed8497e91010f2b5a206eacda4 WPILib_macOS-Arm64-2023.3.2.dmg
SHA256 Hashes
39fe2164cc115f77fd1b53ea782d8b07f40290eafc17952efb42651a601081ea WPILib_Linux-2023.3.2.tar.gz
0cde682be121b3f6e5d6166012627d50b939d47aeabfffd2979c6e3699656787 WPILib_Windows-2023.3.2.iso
13de6ce3ef92ee3d9b5395bccbf864804778d09158a7ff0cdc4e610c64470c50 WPILib_macOS-Intel-2023.3.2.dmg
a8cb5de4f10ba4b19c5a423469039ff9ecccad6535484fe0bbcbd8097068e08a WPILib_macOS-Arm64-2023.3.2.dmg