Do not update
An update release (2023.3.2) will be made later on 2/5.
This release breaks CTRE simulation.
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
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
- Throw on nonexistent/invalid SimDevice name in SimDeviceSim constructor by @rzblue in #5041
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
MD5 Hashes
98da461d816db7ea1f943e77a2052dc3 WPILib_Linux-2023.3.1.tar.gz
fcf96e777a0224716d6195cb08d4f5e8 WPILib_Windows-2023.3.1.iso
81c95ef5cc8482851413bed05711b776 WPILib_macOS-Intel-2023.3.1.dmg
f5817bd41ee7862ba4bfef790da00524 WPILib_macOS-Arm64-2023.3.1.dmg
SHA256 Hashes
e876e2804264ff6fcf98117d059671b0d7fdb331210bb3fc9c5931405bfc7b05 WPILib_Linux-2023.3.1.tar.gz
68b5cf8a01d0aff5cd4a9de756e4861b8f450a142d4e72d1650aa7260312c33d WPILib_Windows-2023.3.1.iso
6059b6f1a9785cd8e951f58417ccc945685364a986cd5554dc0e7b3fc0c83a93 WPILib_macOS-Intel-2023.3.1.dmg
2ec18609a8e6bc1be4c2fde01bccff58e6eb8727f026463607a3abb98fd43d54 WPILib_macOS-Arm64-2023.3.1.dmg