WPILib 2024.2.1 Update Release

This is an update release of WPILib for the 2024 season. This release improves dashboard NetworkTables connection/disconnection behavior and improves SysId, along with other bugfixes. This upgrade is recommended for all teams.

Upgrading from earlier 2024 releases is easy: simply download and run the new installer and it will update your current installation. If you already have the 2024 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. This release is compatible with the kickoff release of the RoboRIO image, so there is no need to upgrade the RIO image if you have already done so for 2024. Mac note: for this release, it is necessary to manually remove the 2024.1.1 version of AdvantageScope before running the installer in order for the new version to be installed.

The documentation for WPILib is located at https://docs.wpilib.org/ (if you have trouble accessing this location, FIRST Robotics Competition Control System — FIRST Robotics Competition documentation is an alternate location with the same content).

If you’re new to FRC, start with Getting Started.

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 2024.1.1

NetworkTables

  • Fix large text message splitting by PeterJohnson
  • Use last received time instead of last ping response for connection timeout
  • WebSocket serializer bugfixes by PeterJohnson
  • Fix client “received unknown id -1” by PeterJohnson
  • Improve disconnect reason reporting by PeterJohnson
  • Enhance debug logging across NT and WS layers by PeterJohnson
  • Map int[] to int64[] for DataLog by PeterJohnson
  • NetworkTable::GetStruct: Add I template param by PeterJohnson

SysId

  • Data selector: use timestamps instead of ranges by PeterJohnson
  • Filter valid test names by PeterJohnson
  • Fix peak acceleration filtering behavior in dynamic velocity test by HarryXChen3
  • Fix test duration slider responsiveness by Oblarg
  • Remove unused “gains to encoder counts” checkbox by calcmogul
  • Show warning tooltips next to bad feedforward gains instead of throwing by HarryXChen3
  • Document using AdvantageScope for troubleshooting by calcmogul

SysIdRoutine:

  • Fix SysId log key for acceleration by calcmogul
  • Defer creation of state log entry by jwbonner
  • Fix state log entry name typo by auscompgeek
  • Use mechanism name instead of subsystem name by AngleSideAngle

WPILib

  • Add ADIS16470 methods with no params by spacey-sooty
  • [C++] Use std::atomic for ADIS classes by spacey-sooty
  • Don’t automatically pull in cscore for all robot projects by ThadHouse
  • [C++] Fix destruction crash in ADIS classes by PeterJohnson

Glass / Simulation GUI

  • Fix Field2d position and scaling by PeterJohnson
  • Default to 2024 field image by PeterJohnson
  • Sim GUI DS: Add “Disconnected” state and start in it by PeterJohnson

RoboRIO Team Number Setter

  • Add functionality to enable and disable NI webserver by ThadHouse

VS Code

  • Pass native compiler arguments to intellisense engine by ThadHouse
  • Fix debug keybindings by sciencewhiz
  • Disable vscode completion case matching by sciencewhiz

GradleRIO

  • Increase SSH timeout from 3 to 7 seconds by ThadHouse
  • Catch MalformedInputException by ThadHouse
  • Update OneDrive error to be more informative by spacey-sooty

Installer

  • Offline cache module files for junit by ThadHouse
  • Add Linux arm64 installer by ThadHouse
  • Fix running AdvantageScope.py directly by calcmogul
  • Update AdvantageScope to 3.0.2 by jwbonner
  • Install Python API docs by sciencewhiz

Examples

  • Limit error bit correction in April Tag examples by sciencewhiz

Other notable changes

  • Use Miklast high resolution field render by sciencewhiz
  • [wpiutil] Fix using 2 different locks in StructArrayLogEntry by ThadHouse
  • [wpimath] Use tolerance in rotation interpolation tests by calcmogul
  • [wpiutil] Fix how DynamicStructs handle strings by ThadHouse
  • [hal] Don’t write a 0 length led string to the FPGA by ThadHouse
  • [hal] Use 64 bit timestamp in DMA by ThadHouse

New Contributors

  • gerth2 made their first contribution
  • HarryXChen3 made their first contribution
  • BenBean18 made their first contribution
  • AngleSideAngle made their first contribution
16 Likes

this-is-getting-out-of-hand-star-wars

4 Likes

fun story, gerth2 is a holdover from my UIUC login.

Who the other gerth at UIUC was, I’ve never learned.

6 Likes

1 Like

Will this be noticeable to the user or is it only internal?

Shouldn’t be noticeable to the user. It really only affects the case where the roboRIO is extremely loaded down. Which would have resulted in a timeout before. The target not found in general will fail early, because thats unreachable instead of an explicit timeout.