Releases: wpilibsuite/allwpilib
WPILib 2024.0.0 Alpha 1 Release
This is an early preview release of WPILib for the 2024 season. This release is not intended for competition or full-size robot use. The purpose of this release is to provide an easy-to-use installation of WPILib for users of the XRP robot.
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.
WPILib requires 64-bit Windows 10 or 11, Ubuntu 22.04, or macOS 11 or higher. C++ teams should note that Visual Studio 2022 is 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.
Follow the WPILib installation guide to install WPILib.
WPILib is developed by a small team of volunteers and the FIRST community.
MD5 Hashes
0359f187d5ee0867ebf14dddab7189ce WPILib_Linux-2024.0.0-alpha-1.tar.gz
17482d9049ef59cde02754d2f15250e4 WPILib_Windows-2024.0.0-alpha-1.iso
0190c12529458e3e98c06e17b0acc637 WPILib_macOS-Intel-2024.0.0-alpha-1.dmg
bd7acc8217ec6f5125ff6409d265af0b WPILib_macOS-Arm64-2024.0.0-alpha-1.dmg
SHA256 Hashes
bb7f321379ced9126a071172157a045e7a78e1f7d21ff672031e4204b88ec334 WPILib_Linux-2024.0.0-alpha-1.tar.gz
2dc07b93bfdb9360d4009ed49a225f2439b0484790a863f333f6b7c338d12d81 WPILib_Windows-2024.0.0-alpha-1.iso
0a15b36ddc8d4c1f9f1864bb9841731dfcd2c10f6bc3ffd2af46bfda81781559 WPILib_macOS-Intel-2024.0.0-alpha-1.dmg
c484bec59f2ac1aa325dc460df8e1f9d430361895ce0211ff9ec6fdc109ef7c6 WPILib_macOS-Arm64-2024.0.0-alpha-1.dmg
WPILib 2023.4.3 Release
This is an update release of WPILib for the 2023 season. This release reduces NetworkTables CPU usage and latency, improves dashboard NetworkTables connection/disconnection behavior, and has several other quality-of-life improvements, in particular to Shuffleboard. This release also includes all fixes made in earlier releases.
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 2022.4.2
NetworkTables
- Optimize scan of outgoing messages by @PeterJohnson in #5227
- NT4 client: close timed-out connections by @PeterJohnson in #5175
- Use int64 for datalog type string by @PeterJohnson in #5186
- ParallelTcpConnector: don't connect to duplicate addresses by @PeterJohnson in #5169
Math
- Check LTV controller max velocity precondition by @calcmogul in #5142
- Fix invalid iterator access in TimeInterpolatableBuffer by @virtuald in #5138
- Fix Pose3d log returning Twist3d NaN for theta between 1E-9 and 1E-7 by @7910f6ba7ee4 in #5168
- Fix NaN in C++ MakeCostMatrix() that takes an array by @calcmogul in #5194
- Fix potential divide-by-zero in RKDP by @calcmogul in #5242
Commands
- RamseteCommand: default-initialize m_prevSpeeds by @PeterJohnson in #5188
WPILib
- Add isTestEnabled and minor docs cleanup by @rzblue in #5172
- Fix enableLiveWindowInTest crashing in disabled by @rzblue in #5173
- DataLogManager: increase time for datetime to be valid by @PeterJohnson in #5185
- Fix DutyCycleEncoder.setDistancePerRotation() in java simulation by @rzblue in #5147
- Fix RobotController.getComments() mishandling quotes inside the comments string by @rzblue in #5197
- [java] DriverStation: Fix joystick data logs by @PeterJohnson in #5240
- Shuffleboard: Keep duplicates on SelectTab() by @Starlight220 in #5198
Shuffleboard
- Fix IndexOutOfBoundsException in tab setup by @Starlight220 in wpilibsuite/shuffleboard#772
- Make any entries set by dashboard retained by @PeterJohnson in wpilibsuite/shuffleboard#778
- FieldData: Don't throw on missing data by @Starlight220 in wpilibsuite/shuffleboard#776
- Add DataSource.equals() by @Starlight220 in wpilibsuite/shuffleboard#774
- Don't switch to selected tab on value change by @Starlight220 in wpilibsuite/shuffleboard#771
- CameraServerWidget: Explicitly unbox Number objects by @Starlight220 in wpilibsuite/shuffleboard#780
- Use ConcurrentHashMap for static collection of NT sources by @Starlight220 in wpilibsuite/shuffleboard#779
SysId
- Give measurement period a valid default of 1 by @calcmogul in wpilibsuite/sysid#495
- Add Venom support by @wlmchen in wpilibsuite/sysid#499
Docs
- CommandScheduler.isComposed: Remove incorrect throws clause (NFC) by @DAflamingFOX in #5183
- WaitCommand: Remove subclass note (NFC) by @Starlight220 in #5200
Examples
- Shuffleboard: Correct parameter order by @Starlight220 in #5204
New Contributors
- @7910f6ba7ee4 made their first contribution in #5143
- @wlmchen made their first contribution in wpilibsuite/sysid#499
MD5 Hashes
fc58a52edea675b0ff91938a9c9d0743 WPILib_Linux-2023.4.3.tar.gz
5b67d336669bed34ab0dd428f81b9d31 WPILib_Windows-2023.4.3.iso
47246def80eea87b468e0be30119f789 WPILib_macOS-Intel-2023.4.3.dmg
1bb6113c1202fbb68248c3848556e47e WPILib_macOS-Arm64-2023.4.3.dmg
SHA256 Hashes
640e1ee7cc8f39d1789b4137f4a5aae90f78eeecf2326e2c50808205d02e7795 WPILib_Linux-2023.4.3.tar.gz
8ea417ede0a8541c9ab906b943be55ca49112dddef6750f2db1a742ba0c69378 WPILib_Windows-2023.4.3.iso
a80723596a08790c78b4c35ac64b4758c72076e74df559512a62c808b2a11ef1 WPILib_macOS-Intel-2023.4.3.dmg
8dad67e28a3bdf482979a1fe4c857d52ab36a2fdec56ae05971b7177d5409ae9 WPILib_macOS-Arm64-2023.4.3.dmg
WPILib 2023.4.2 Release
This is an update release of WPILib for the 2023 season. This release reduces overhead that can impact loop times in Java, and has several other quality-of-life improvements. Note: while this release only has a few changes since 2023.4.2, it includes all fixes made in earlier releases; it's strongly recommended teams upgrade if running versions earlier than 2023.4.1.
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 2022.4.1
WPILib
- Fix HAL_GetRuntimeType being slow on the roboRIO by @ThadHouse in #5130
Simulation
- DutyCycleEncoderSim: Add constructor that takes channel number by @rzblue in #5118
- Fix REV PH solenoids 8+ simulation by @superpenguin612 in #5132
- Fix DataLogManager crash on exit in simulation by @gaborszita in #5125
Commands
- Add default command removal method to Subsystem by @democat3457 in #5064
Docs
- Strip path from generated NT docs by @sciencewhiz in #5119
- Fix XboxController::GetBackButton doc by @auscompgeek in #5131
SysId
- Fix inversion checkbox showing up on built in Spark MAX and TalonFX encoder settings by @rzblue in wpilibsuite/sysid#491
- Handle case where robot enables before SysId connects by @calcmogul in wpilibsuite/sysid#493
Shuffleboard
- FmsInfo: Don't throw on missing data by @Starlight220 in wpilibsuite/shuffleboard#766
GradleRIO
- Don't configure SmartDashboard as a tool on mac arm by @ThadHouse in wpilibsuite/GradleRIO#650
New Contributors
- @gaborszita made their first contribution in #5125
MD5 Hashes
07b5c5142eaad9f5c33ba7ac1dc53161 WPILib_Linux-2023.4.2.tar.gz
1072aff0a9c3af3b4da5f0915c0dc9a2 WPILib_Windows-2023.4.2.iso
4f9a57c8bd836fc86e84d10faa83b0c9 WPILib_macOS-Intel-2023.4.2.dmg
3a43345cf59ee7ab9ff2bc2090b1db34 WPILib_macOS-Arm64-2023.4.2.dmg
SHA256 Hashes
9c3804de5c6e15a2732aefde129512e93f3681bd3ffbb5a6cf34efdd05c0334e WPILib_Linux-2023.4.2.tar.gz
55bd46d63a2213f27b92fd8e9f214157de1f5f9144ad5fabee32f6f4d4359d25 WPILib_Windows-2023.4.2.iso
a9a029dde0cc5e293251652f0d77015a9290f1cc5d07d80d4d7e25ea7629f492 WPILib_macOS-Intel-2023.4.2.dmg
8c58136596fad4502f3c6b4c8fcfca86ac131bc9123350b282217b0381193dba WPILib_macOS-Arm64-2023.4.2.dmg
WPILib 2023.4.1 Release
This is an update release of WPILib for the 2023 season. This release fixes a couple of critical NetworkTables bugs.
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 2022.3.2
WPILib
- SendableChooser: static_assert copy- and default-constructibility by @Starlight220 in #5078
- Disable Java mock time on the Rio by @PeterJohnson in #5092
NetworkTables
- Fix crash in disconnect error reporting (introduced in 2023.3.2) by @PeterJohnson in #5084
- Improve disconnect error reporting by @PeterJohnson in #5085
- Reduce initial connection overhead by @PeterJohnson in #5086
- Fix use-after-free in server by @PeterJohnson in #5101
- Fix possibility of hang when stopping client or server by @PeterJohnson in #5102
Math
- Fix Pose3d exp()/log() and add rotation vector constructor to Rotation3d by @jlmcmchl in #5072
- Fix exception for empty pose buffer in pose estimators by @calcmogul in #5106
- Add timestamp getter to MathShared by @jwbonner in #5091
Examples
- Improve descriptions (NFC) by @Starlight220 in #5051
- ArmSimulation, ElevatorSimulation: Extract mechanism to class by @Starlight220 in #5052
- ArmSimulation: Fix flaking test by @Starlight220 in #5093
- MecanumDrive: Fix axis comment in C++ example (NFC) by @sciencewhiz in #5096
Glass / OutlineViewer
- NT view: Set default value when publishing new topic by @PeterJohnson in #5109
- NT view: Provide menu item to create topic from root by @PeterJohnson in #5110
- NT view: Change string/string array to quoted by @PeterJohnson in #5111
Shuffleboard
- Allow updates in int arrays (issue #756). by @fovea1959 in wpilibsuite/shuffleboard#757
- Remove 25th channel from PDP widget by @Starlight220 in wpilibsuite/shuffleboard#761
- Add a widget for ProfiledPIDController by @SamCarlberg in wpilibsuite/shuffleboard#764
- Check for invalid NT value by @Starlight220 in wpilibsuite/shuffleboard#759
PathWeaver
- Add filename to trajectory gen exception by @sciencewhiz in wpilibsuite/PathWeaver#290
SysId
- Fix display of Spark Max time measurement window setting by @calcmogul in wpilibsuite/sysid#481
Docs
- Document range of enableCompressorAnalog (NFC) by @sciencewhiz in #5099
- Improve documentation of addRequirements (NFC) by @bovlb in #5103
New Contributors
MD5 Hashes
e541b48d97e8d773b38f1db1ef35874d WPILib_Linux-2023.4.1.tar.gz
b7f93503e06c475ba91028a6dae42e47 WPILib_Windows-2023.4.1.iso
4e265f381d9cd8fd489b46efaba3b81b WPILib_macOS-Intel-2023.4.1.dmg
bc4a8861fba00b44c6dc9b3766b6e68e WPILib_macOS-Arm64-2023.4.1.dmg
SHA256 Hashes
d2f11d69cd45dc66dd0947933ffa6143c07590da2e9a29337d6495c1d1eb2bf4 WPILib_Linux-2023.4.1.tar.gz
de26f0d689c51b878c5fa74102b55102eac115ef81090a9608125d9b552ae1e2 WPILib_Windows-2023.4.1.iso
9b86949bfba312168f0866f394de9d964a6c0e473662d83e334bc5be2a4a88ad WPILib_macOS-Intel-2023.4.1.dmg
442fbb7e56734e4f67efcece4f216df8c738f427a54d0493c713191de335db7c WPILib_macOS-Arm64-2023.4.1.dmg
WPILib 2023.3.2 Release
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
- [command...
WPILib 2023.3.1 Release
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 https://gi...
WPILib 2023.2.1 Release
This is an update release of WPILib for the 2023 season. This release fixes two major bugs in the kickoff release:
- SendableChooser might not pick up the value set by the dashboard
- Calls to NT flush() on clients were rate-limited to the default rate
Significant new features in this release:
- 2023 field images have been added to Shuffleboard and PathWeaver
- A 2023 field layout has been added for AprilTagFieldLayout
- An AprilTag vision example has been added for both C++ and Java
Upgrading from the kickoff 2023 release 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 now requires 64-bit Windows 10 or 11, Ubuntu 22.04, or macOS 11 or higher. Newly supported this year is Apple Silicon (arm64)! We have dropped support for older platforms including Windows 7, Ubuntu 20.04, and macOS 10.15. 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
apriltag:
- [apriltag] Add 2023 layout JSON by @mcm001 in #4912
- [apriltag] Explain what April tag poses represent (NFC) by @bovlb in #4930
wpimath:
- [wpimath] Fix swerve kinematics util classes' equals function by @ohowe1 in #4907
- [wpimath] Pose estimator: Allow multiple vision measurements from same timestamp by @mcm001 in #4917
- [wpimath] Fix SwerveDriveKinematics not initializing a new array each time by @ohowe1 in #4942
- [wpimath] Fix PID atSetpoint to not return true prematurely by @sciencewhiz in #4906
commands:
- [commands] Fix spacing in command composition exception by @superpenguin612 in #4924
- [commands] BREAKING: C++: Delete UB-causing rvalue variants of CommandPtr methods by @Starlight220 in #4923
ntcore:
- [ntcore] Fix client flush behavior by @PeterJohnson in #4903
- [ntcore] Queue current value on subscriber creation by @PeterJohnson in #4938
examples:
- [examples] Cleanup PotentiometerPID, Ultrasonic, UltrasonicPID by @Starlight220 in #4893
- [examples] DigitalCommunication, I2CCommunication: Add tests by @Starlight220 in #4865
- [examples] Add example programs for AprilTags detection by @fovea1959 in #4932
other:
- [wpiutil] Guard MSVC pragma in SymbolExports.h by @calcmogul in #4911
- [fieldImages] Add 2023 field by @sciencewhiz in #4915
- [wpilibj] Add missing distance per pulse functions to java EncoderSim by @rzblue in #4928
- [hal] Add handle constructor and name getters for sim devices by @rzblue in #4925
SysId
- Fix SparkMax initialization sequence by @jlmcmchl in wpilibsuite/sysid#459
- Update to WPILib release version by @TytanRock in wpilibsuite/sysid#461
Shuffleboard
- Add 2023 field image by @sciencewhiz in wpilibsuite/shuffleboard#748
- Remove PID Widget features only used by old PIDController by @sciencewhiz in wpilibsuite/shuffleboard#746
PathWeaver
- Use field images from allwpilib by @pjreiniger in wpilibsuite/PathWeaver#286
Installer
- Fix artifact error page by @ThadHouse in wpilibsuite/WPILibInstaller-Avalonia#323
- Treat ARM64 Windows like x64 Windows by @jkunkee in wpilibsuite/WPILibInstaller-Avalonia#322
New Contributors
- @fovea1959 made their first contribution in #4932
- @TytanRock made their first contribution in wpilibsuite/sysid#461
- @jkunkee made their first contribution in wpilibsuite/WPILibInstaller-Avalonia#322
MD5 Hashes
0d1a6eddd593b51c1d19ce3b9bcf6d7e Linux/WPILib_Linux-2023.2.1.tar.gz
7d9bf7896a71ceebcd8ea5a77344496b Win64/WPILib_Windows-2023.2.1.iso
e0ce03dcc0b8d614531e5eeb16470ed2 macOS/WPILib_macOS-Intel-2023.2.1.dmg
a329654a0a16bd0c15967e2a0fc125a3 macOSArm/WPILib_macOS-Arm64-2023.2.1.dmg
SHA256 Hashes
28a99bae0830a1b43aad78621ab6a329ba48897a5c01489c554ed571e40b8d98 Linux/WPILib_Linux-2023.2.1.tar.gz
691b308a08c04e84180d2e6cffc2b53a4f65a2fcbd97de861b8628470b87dc48 Win64/WPILib_Windows-2023.2.1.iso
732c3416ff5dcd994ba45fd57c370b2d12460a44db2895fef2d45aad69063a57 macOS/WPILib_macOS-Intel-2023.2.1.dmg
3f38f9c1df71949771d769397efd66222806da6b4750979a17c37a0a8e79de1b macOSArm/WPILib_macOS-Arm64-2023.2.1.dmg
WPILib 2023.1.1 Release
This is the kickoff release of WPILib for the 2023 season.
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 now requires 64-bit Windows 10 or 11, Ubuntu 22.04, or macOS 11 or higher. Newly supported this year is Apple Silicon (arm64)! We have dropped support for older platforms including Windows 7, Ubuntu 20.04, and macOS 10.15. 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.
MD5 Hashes
07c3db6a4fb11d4d23ed8a833b68a2fa Linux/WPILib_Linux-2023.1.1.tar.gz
8aaf62c19a3cb812d2f5bb679334b397 Win64/WPILib_Windows-2023.1.1.iso
5407a60b27e6ea2553b03ad4b2931308 macOS/WPILib_macOS-Intel-2023.1.1.dmg
883188efa1d6d2addbfafabe8dde5489 macOSArm/WPILib_macOS-Arm64-2023.1.1.dmg
SHA256 Hashes
24b7839e584ed31ab249d72d346ca28ebdee39ccaeb42ce32f10b23c17d4f7e1 Linux/WPILib_Linux-2023.1.1.tar.gz
5094459bbe2bbe91fa6e21b85d424435bf6ceacea24dae0b441fa4694f941015 Win64/WPILib_Windows-2023.1.1.iso
cd55d8ada8a32af88d8cfe9234e18bbb5d7c7e69f49e86580716852a0ad788bd macOS/WPILib_macOS-Intel-2023.1.1.dmg
dbeda30b74ef26868295ad067b84639d6b4a48fbd58929fdd1ec29386b30106d macOSArm/WPILib_macOS-Arm64-2023.1.1.dmg
WPILib 2023.1.1 Beta 7 Release
For Beta Teams only
This release is for beta teams only. It will not work for 2023 in-season use.
Getting Started
This is the beta-7 release of WPILib for the 2023 season. This release will only work with the 2023 v2.x roboRIO image (it was released as part of the NI Game Tools beta 3 release).
Check out what's new for 2023 and jump directly to the WPILib installation guide. A list of known issues with this release can be found here.
If you're starting from a 2022 robot project, you will need to import it to create a 2023 project.
What's Changed since beta-6:
- [wpimath] Add reference to angleModulus in docs for rotation2d by @ohowe1 in #4786
- [wpiutil] Fix UnescapeCString overflow when input size < 2 by @rzblue in #4796
- [wpiutil] Fix MemoryBuffer initialization by @rzblue in #4797
- [wpilibc] Add C++ Notifier error handling, update java notifier error message by @rzblue in #4795
- Change terminology for ArmFeedforward gravity gain by @csokolove in #4791
- [wpimath] Fix ComputerVisionUtil transform example in parameter docs by @calcmogul in #4800
- [ntcore] Clean up ntcore_test.h by @PeterJohnson in #4804
- [commands] Fix incorrect Trigger docs (NFC) by @rzblue in #4792
- [ntcore] Pass pub/sub options as a unified PubSubOptions struct by @PeterJohnson in #4794
- [cmd] Test no-op behavior of scheduling a scheduled command by @Starlight220 in #4806
- [wpimath] Rewrite pose estimator docs by @calcmogul in #4807
- [glass] Fix NT view UpdateClients() bug by @PeterJohnson in #4808
- [commands] CommandXBoxController bumper documentation fix (NFC) by @srimanachanta in #4815
- [apriltag] Fix AprilTagFieldLayout JSON name by @r4stered in #4814
- [apriltag] Better description of pose coordinates (NFC) by @bovlb in #4810
- [wpilib] Joystick.getMagnitude(): use hypot() function by @srimanachanta in #4816
- ProfiledPIDController: Add to SendableRegistry by @shueja-personal in #4656
- [ntcore] Simplify local startup by @PeterJohnson in #4803
- Add comment on how to view elevator sim by @michaelleong25 in #4482
- Update to new image, use new TCP notify callback and new duty cycle API by @ThadHouse in #4774
- Fix events being manual reset accidentally by @ThadHouse in #4818
- Add support for PPS signal by @ThadHouse in #4819
- [ntcore] NetworkTable: fix visibility of get/set value by @PeterJohnson in #4820
- Update Command-based starter project by @Starlight220 in #4778
- Use atomic rather then mutex for DS Data updates by @ThadHouse in #4787
- [cmd] Enhance Command Sendable implementations by @Starlight220 in #4822
New Contributors
- @csokolove made their first contribution in #4791
- @srimanachanta made their first contribution in #4815
Full Changelog: v2023.1.1-beta-6...v2023.1.1-beta-7
MD5 Hashes
280db3e26fa880d8c9d549e73a6af8d7 Linux/WPILib_Linux-2023.1.1-beta-7.tar.gz
13e19a98f45c0ac359856eb8532ddf25 Win64/WPILib_Windows-2023.1.1-beta-7.iso
5330057d55c2844e6dcb68dd150a13c2 macOS/WPILib_macOS-Intel-2023.1.1-beta-7.dmg
b488664607fe560736b0572e211fed87 macOSArm/WPILib_macOS-Arm64-2023.1.1-beta-7.dmg
SHA256 Hashes
168a60e0acb3910dbefa5c1b2d661bbeaed14e48c5da55eb01cc34ca621d6c32 Linux/WPILib_Linux-2023.1.1-beta-7.tar.gz
01ebd63058ecb38bdb878e7a21ad6e07171737aa55770ff2707632323735e4bb Win64/WPILib_Windows-2023.1.1-beta-7.iso
e0e328ab41b1c2bfa56f06a04ab5c87d0af74f603c600bfa799d1a8999a41cb8 macOS/WPILib_macOS-Intel-2023.1.1-beta-7.dmg
406d3717ac3ad96556210b99ede918e39004b3067041f604aa0b17360142a16e macOSArm/WPILib_macOS-Arm64-2023.1.1-beta-7.dmg
WPILib 2023.1.1 Beta 6 Release
Getting Started
This is the beta-6 release of WPILib for the 2023 season. While this release will work with the 2023 v1.3 roboRIO image, we highly recommend upgrading the image to 2023 v1.4 (it was released as part of the NI Game Tools beta 2 release). This release is a critical patch fix for beta-5.
Check out what's new for 2023 and jump directly to the WPILib installation guide. A list of known issues with this release can be found here.
If you're starting from a 2022 robot project, you will need to import it to create a 2023 project.
What's Changed since beta-5:
- Replace const char* with std::string_view in Driver Station sim functions by @rzblue in #4532
- [ntcore] Remove table multi-subscriber by @PeterJohnson in #4789
- Upgrade vscode to 1.74.0
What's Changed since beta-4:
- This release adds the core support for AprilTags, but the higher level classes for team use are not yet written.
- Shuffleboard has been updated to use NetworkTables 4.
WPILib changes:
- [apriltag] Switch 2022 apriltag layout length and width values by @amquake in #4670
- [glass] Don't check IsConnected for NT widgets by @PeterJohnson in #4674
- [cpp cmd] Change CommandPtr to use CommandBase by @Starlight220 in #4677
- Fix jni artifacts linking to incorrect libraries by @ThadHouse in #4680
- [java cmd] Rename wait factory to waitSeconds by @Starlight220 in #4684
- [ntcore] Allow duplicate client IDs on server by @PeterJohnson in #4676
- [example] Use EncoderReversed constants by @Starlight220 in #4682
- [glass] Plot: allow for more than 11 plots by @ohowe1 in #4685
- [cscore] Add UYVY image support by @PeterJohnson in #4700
- [cscore] Use MFVideoFormat_L8 for Gray on Windows by @PeterJohnson in #4701
- [wpimath] Clarify Rotation3d roll-pitch-yaw direction by @calcmogul in #4699
- Rename HolonomicDriveController.calculate params by @Starlight220 in #4683
- [wpilibc] Shuffleboard SimpleWidget: Return pointer instead of reference by @PeterJohnson in #4703
- [cscore] Add Y16 image support by @PeterJohnson in #4702
- [apriltag] Fix pluralization of apriltag artifacts by @calcmogul in #4671
- [cmd] RepeatCommand: restart on following iteration by @Starlight220 in #4706
- [example] CANPDP: Expand properties shown by @Starlight220 in #4687
- [glass] Update NT view for topicsOnly and sendAll changes by @PeterJohnson in #4718
- [ntcore] Server: Properly handle multiple subscribers by @PeterJohnson in #4717
- [wpiutil] StringExtras: Add UnescapeCString by @PeterJohnson in #4707
- [wpigui] Reload fonts to scale rather than preloading by @PeterJohnson in #4712
- [build] cmake: Use FetchContent instead of ExternalProject by @PeterJohnson in #4714
- [cpp cmd] Add factory templates by @Starlight220 in #4686
- Add link to MotorSafety article by @Starlight220 in #4720
- [cmd] Add property tests for command compositions by @Starlight220 in #4715
- [ntcore] Add NetworkTable table-specific listeners by @PeterJohnson in #4640
- [wpigui] Add FontAwesome by @PeterJohnson in #4713
- Use defaulted comparison operators by @calcmogul in #4723
- Command convenience factories by @Oblarg in #4460
- [cmd examples] Renovate command-based examples by @Starlight220 in #4409
- Add gitignore for simgui files under myRobot and wpilibcExamples by @rzblue in #4726
- Remove missed isFinished check by @Starlight220 in #4727
- [cmd] Revert Trigger implementation by @Starlight220 in #4673
- [examples] Update all examples to use NWU coordinate conventions by @rzblue in #4725
- Allow unsetting a subsystem's default command by @democat3457 in #4621
- Tweak and use Color HSV formula for AddressableLED by @democat3457 in #4724
- [cmd] Refactor ProxyScheduleCommand, SelectCommand into ProxyCommand by @Starlight220 in #4534
- Update Subsystem factories to return CommandBase by @rzblue in #4729
- [ntcore] Send duplicate values to network if necessary by @PeterJohnson in #4730
- [ntcore] Add Sub option for local vs remote changes by @PeterJohnson in #4731
- [glass] NT: clear meta-topic info on disconnect by @PeterJohnson in #4732
- [build] Fix cmake install of thirdparty includes by @PeterJohnson in #4741
- [ntcore] Fix special topic multi-subscriber handling by @PeterJohnson in #4740
- [hal] Allow overriding stderr printing by HAL_SendError by @virtuald in #4742
- [docs] Generate docs for apriltag subproject by @calcmogul in #4745
- [wpimath] Add tolerance for Rotation3d rotation matrix special orthogonality by @calcmogul in #4744
- Add method to disable LW test mode by @Starlight220 in #4678
- Use Odometry for internal state in Pose Estimation by @jlmcmchl in #4668
- [wpimath] Make transform tests use pose/transform equality operators by @calcmogul in #4675
- [gradle/examples] Add unit testing infrastructure to examples by @Starlight220 in #4646
- [examples] Add main include directory to test builds by @calcmogul in #4751
- Add constructors to pose estimators with default standard deviations by @superpenguin612 in #4754
- Remove extra terms in matrix for pose estimator docs by @superpenguin612 in #4756
- Add new DCMotor functions for alternative calculations and reduction calculation by @JaciBrunning in #4749
- Fix PIDSubsystem setSetpoint behavior by @sciencewhiz in #4759
- [cscore] Emit warning that USB Camera isn't supported on OSX by @virtuald in #4766
- Call set(0) rather than disable for stopMotor on PWMMotorController by @rzblue in #4763
- Fix documentation on CommandGenericHID POV methods by @rzblue in #4760
- [apriltag] Use wpilibsuite fork of apriltag by @PeterJohnson in #4764
- Replace remaining references to Speed Controller with Motor Controller by @jlmcmchl in #4769
- [examples] HatchbotInlined: Use Subsystem factories by @Starlight220 in #4765
- [hal] Add CANManufacturer for The Thrifty Bot by @PeterJohnson in #4773
- [glass] DataSource: Add spinlock to protect value by @PeterJohnson in #4771
- [wpimath] Remove broken and obsoleted ComputerVisionUtil functions by @calcmogul in #4775
- [cmd] Move GroupedCommands to CommandScheduler by @Starlight220 in #4728
- [wpilibj] Shuffleboard: Check for null sendable by @PeterJohnson in #4772
- Adds CAN Stream API to Java through JNI bindings by @willtoth in #4193
- [cscore] Convert YUYV and UYVY directly to grayscale by @PeterJohnson in #4777
- [wpilib] Sendable: Don't call setter for getter changes by @PeterJohnson in #4770
- [wpilibj] Consist...