Skip to content

Releases: wpilibsuite/xrp-wpilib-firmware

XRP-WPILib Firmware v2.0.1

26 Mar 12:39
00f102a
Compare
Choose a tag to compare

About XRP-WPILib

This firmware for the XRP robot works in conjunction with the WPILib XRP extension to support writing WPILib robot programs and running them on low cost XRP robots.

Important Note for V2.0.1

This firmware version adds support for the new, non-beta XRP control board. This new board is powered by an RP2350 and is faster, has more memory, and also provides additional IO (including 2 extra servo channels). Both beta and non-beta boards will continue to be supported, although given the processor change between the 2 boards, there are now 2 firmware flavors. If you have the beta board, install the firmware with -beta in the filename. Otherwise, install the one which does NOT have -beta in the filename. If you aren't sure which version of the board you have, take a look at this page which has a comparison diagram of the beta and non-beta boards.

While this version provides no additional (user-facing) functionality, there has been some amount of refactoring done to add support for the new, non-beta board. We have tested this firmware version with both board variants, but if you see any issues, please let us know!

WPILib Hardware Support

  • Onboard LED and Pushbutton exposed as DIO channels 0 and 1
  • 2 motors (left/right) exposed as XRPMotor channels 0/1 (These behave similarly to PWM based motor controllers)
  • 2 additional motors (motor3/motor4) exposed as XRPMotor channels 2/3
  • 2 servo outputs (servo1/servo2) exposed as XRPServo channels 4/5
  • (On non-beta board) 2 additional servo outputs (servo3/servo4) exposed as XRPServo channels 6/7
  • Encoders for each motor (channel 4/5 for Left, channel 6/7 for Right, channel 8/9 for motor3, channel 10/11 for motor4)
  • 3-axis gyro exposed as XRPGyro
  • 3-axis accelerometer exposed as BuiltInAccel
  • Support for XRP reflectance sensor (reporting Left/Right values on Analog 0/1)
  • Support for XRP Rangefinder (reporting values on Analog 2)

Note on WPILib support for Non-Beta boards: Current versions of WPILib (2025.3.2 and below) will only support up to 2 servos when using the XRP Vendordep. An update to WPILib to add support for servo 3 and 4 on the non-beta board will be coming shortly.

Difference between XRP and Romi capabilities

For the most part, code written for the Romi and XRP are interchangeable. The main difference being that anywhere a Spark motor controller was used in Romi code should be replaced with a XRPMotor (with same channel numbers) for the XRP. Similarly anywhere a Servo object was used in Romi code should be replaced with a XRPServo.

Additionally, the XRP only has a single pushbutton and LED, compared to the 3 each for the Romi. Thus, DIO channels 3 and 4 are not used on the XRP.

Finally, the XRP requires the use of a XRP specific WPILib HAL Sim extension.

Changes from v1.1.0

  • Add support for the non-beta XRP control board

Known Issues

  • There is a known bug where if you have a brand new board, the configuration will build incorrectly and you will not be able to connect to it because the SSID is blank. This has been fixed in v2.0.1

What's Changed

Full Changelog: v1.1.0...v2.0.0

XRP-WPILib Firmware v1.1.0

21 Oct 20:14
65446cb
Compare
Choose a tag to compare

About XRP-WPILib

This firmware for the XRP robot works in conjunction with the WPILib XRP extention to support writing WPILib robot programs and running them on low cost XRP robots.

WPILib Hardware Support

  • Onboard LED and Pushbutton exposed as DIO channels 0 and 1
  • 2 motors (left/right) exposed as XRPMotor channels 0/1 (These behave similarly to PWM based motor controllers)
  • 2 additional motors (motor3/motor4) exposed as XRPMotor channels 2/3
  • 2 servo outputs (servo1/servo2) exposed as XRPServo channels 4/5
  • Encoders for each motor (channel 4/5 for Left, channel 6/7 for Right, channel 8/9 for motor3, channel 10/11 for motor4)
  • 3-axis gyro exposed as XRPGyro
  • 3-axis accelerometer exposed as BuiltInAccel
  • Support for XRP reflectance sensor (reporting Left/Right values on Analog 0/1)
  • Support for XRP Rangefinder (reporting values on Analog 2)

Difference between XRP and Romi capabilities

For the most part, code written for the Romi and XRP are interchangeable. The main difference being that anywhere a Spark motor controller was used in Romi code should be replaced with a XRPMotor (with same channel numbers) for the XRP. Similarly anywhere a Servo object was used in Romi code should be replaced with a XRPServo.

Additionally, the XRP only has a single pushbutton and LED, compared to the 3 each for the Romi. Thus, DIO channels 3 and 4 are not used on the XRP.

Finally, the XRP requires the use of a XRP specific WPILib HAL Sim extension.

Changes from v1.0.1

  • Add feature to Get Encoder Rate (Period)
  • Bumped SDK dependency to use new picosdk2 (with support for RP2040 and RP2350 chips)

Known Issues

  • None... yet

What's Changed

New Contributors

Full Changelog: v1.0.1...v1.1.0

XRP-WPILib Firmware v1.0.1

05 Jan 19:19
fe8d29a
Compare
Choose a tag to compare

About XRP-WPILib

This firmware for the XRP robot works in conjunction with the WPILib XRP extention to support writing WPILib robot programs and running them on low cost XRP robots.

WPILib Hardware Support

  • Onboard LED and Pushbutton exposed as DIO channels 0 and 1
  • 2 motors (left/right) exposed as XRPMotor channels 0/1 (These behave similarly to PWM based motor controllers)
  • 2 additional motors (motor3/motor4) exposed as XRPMotor channels 2/3
  • 2 servo outputs (servo1/servo2) exposed as XRPServo channels 4/5
  • Encoders for each motor (channel 4/5 for Left, channel 6/7 for Right, channel 8/9 for motor3, channel 10/11 for motor4)
  • 3-axis gyro exposed as XRPGyro
  • 3-axis accelerometer exposed as BuiltInAccel
  • Support for XRP reflectance sensor (reporting Left/Right values on Analog 0/1)
  • Support for XRP Rangefinder (reporting values on Analog 2)

Difference between XRP and Romi capabilities

For the most part, code written for the Romi and XRP are interchangeable. The main difference being that anywhere a Spark motor controller was used in Romi code should be replaced with a XRPMotor (with same channel numbers) for the XRP. Similarly anywhere a Servo object was used in Romi code should be replaced with a XRPServo.

Additionally, the XRP only has a single pushbutton and LED, compared to the 3 each for the Romi. Thus, DIO channels 3 and 4 are not used on the XRP.

Finally, the XRP requires the use of a XRP specific WPILib HAL Sim extension.

Changes from v1.0.0

  • Added sanity checks for WiFi configuration

Known Issues

  • None... yet

What's Changed

New Contributors

Full Changelog: v1.0.0...v1.0.1

XRP-WPILib Firmware v1.0.0

22 Oct 02:19
749be1f
Compare
Choose a tag to compare

About XRP-WPILib

This firmware for the XRP robot works in conjunction with the WPILib XRP extention to support writing WPILib robot programs and running them on low cost XRP robots.

WPILib Hardware Support

  • Onboard LED and Pushbutton exposed as DIO channels 0 and 1
  • 2 motors (left/right) exposed as XRPMotor channels 0/1 (These behave similarly to PWM based motor controllers)
  • 2 additional motors (motor3/motor4) exposed as XRPMotor channels 2/3
  • 2 servo outputs (servo1/servo2) exposed as XRPServo channels 4/5
  • Encoders for each motor (channel 4/5 for Left, channel 6/7 for Right, channel 8/9 for motor3, channel 10/11 for motor4)
  • 3-axis gyro exposed as XRPGyro
  • 3-axis accelerometer exposed as BuiltInAccel
  • Support for XRP reflectance sensor (reporting Left/Right values on Analog 0/1)
  • Support for XRP Rangefinder (reporting values on Analog 2)

Difference between XRP and Romi capabilities

For the most part, code written for the Romi and XRP are interchangeable. The main difference being that anywhere a Spark motor controller was used in Romi code should be replaced with a XRPMotor (with same channel numbers) for the XRP. Similarly anywhere a Servo object was used in Romi code should be replaced with a XRPServo.

Additionally, the XRP only has a single pushbutton and LED, compared to the 3 each for the Romi. Thus, DIO channels 3 and 4 are not used on the XRP.

Finally, the XRP requires the use of a XRP specific WPILib HAL Sim extension.

Changes from v0.5.1

  • Re-enabled ultrasonic rangefinder support
  • Make drive encoders report positive counts when moving forward
  • Fixed bug where disconnecting the WPILib UDP connection would not reset the message sequence count, leading to the XRP appearing to not take input
  • Added version info to the status file

Known Issues

  • None... yet

What's Changed

Full Changelog: v0.5.1...v1.0.0

XRP-WPILib Firmware v0.5.1

26 Sep 23:01
9a67930
Compare
Choose a tag to compare

About XRP-WPILib

This firmware for the XRP robot works in conjunction with the WPILib XRP extention to support writing WPILib robot programs and running them on low cost XRP robots.

WPILib Hardware Support

  • Onboard LED and Pushbutton exposed as DIO channels 0 and 1
  • 2 motors (left/right) exposed as XRPMotor channels 0/1 (These behave similarly to PWM based motor controllers)
  • 2 additional motors (motor3/motor4) exposed as XRPMotor channels 2/3
  • 2 servo outputs (servo1/servo2) exposed as XRPServo channels 4/5
  • Encoders for each motor (channel 4/5 for Left, channel 6/7 for Right, channel 8/9 for motor3, channel 10/11 for motor4)
  • 3-axis gyro exposed as XRPGyro
  • 3-axis accelerometer exposed as BuiltInAccel
  • Support for XRP reflectance sensor (reporting Left/Right values on Analog 0/1)
  • Support for XRP Rangefinder (reporting values on Analog 2) (Temporarily disabled)

Difference between XRP and Romi capabilities

For the most part, code written for the Romi and XRP are interchangeable. The main difference being that anywhere a Spark motor controller was used in Romi code should be replaced with a XRPMotor (with same channel numbers) for the XRP. Similarly anywhere a Servo object was used in Romi code should be replaced with a XRPServo.

Additionally, the XRP only has a single pushbutton and LED, compared to the 3 each for the Romi. Thus, DIO channels 3 and 4 are not used on the XRP.

Finally, the XRP requires the use of a XRP specific WPILib HAL Sim extension.

Changes from v0.5.0

  • Fixes a crash related to ultrasonic sensor usage

Known Issues

  • None... yet

What's Changed

Full Changelog: v0.5.0...v0.5.1

XRP-WPILib Firmware v0.5.0

21 Sep 22:53
ef809a8
Compare
Choose a tag to compare

About XRP-WPILib

This firmware for the XRP robot works in conjunction with the WPILib XRP extention to support writing WPILib robot programs and running them on low cost XRP robots.

WPILib Hardware Support

  • Onboard LED and Pushbutton exposed as DIO channels 0 and 1
  • 2 motors (left/right) exposed as XRPMotor channels 0/1 (These behave similarly to PWM based motor controllers)
  • 2 additional motors (motor3/motor4) exposed as XRPMotor channels 2/3
  • 2 servo outputs (servo1/servo2) exposed as XRPServo channels 4/5
  • Encoders for each motor (channel 4/5 for Left, channel 6/7 for Right, channel 8/9 for motor3, channel 10/11 for motor4)
  • 3-axis gyro exposed as XRPGyro
  • 3-axis accelerometer exposed as BuiltInAccel
  • Support for XRP reflectance sensor (reporting Left/Right values on Analog 0/1)
  • Support for XRP Rangefinder (reporting values on Analog 2)

Difference between XRP and Romi capabilities

For the most part, code written for the Romi and XRP are interchangeable. The main difference being that anywhere a Spark motor controller was used in Romi code should be replaced with a XRPMotor (with same channel numbers) for the XRP. Similarly anywhere a Servo object was used in Romi code should be replaced with a XRPServo.

Additionally, the XRP only has a single pushbutton and LED, compared to the 3 each for the Romi. Thus, DIO channels 3 and 4 are not used on the XRP.

Finally, the XRP requires the use of a XRP specific WPILib HAL Sim extension.

Changes from v0.4.0

  • BREAKING: This version utilizes a custom binary protocol over UDP. As such, using the WPILib WebSockets extension will NOT work starting with v0.5.0 of the firmware
  • Added support for the reflectance sensors and rangefinder

Known Issues

  • None... yet

What's Changed

Full Changelog: v0.4.0...v0.5.0

XRP-WPILib Firmware v0.4.0

06 Sep 21:21
1a433f2
Compare
Choose a tag to compare

About XRP-WPILib

This firmware for the XRP robot works in conjunction with WPILib WebSocket extensions to support writing WPILib robot programs and running them on low cost XRP robots.

WPILib Hardware Support

  • Onboard LED and Pushbutton exposed as DIO channels 0 and 1
  • 2 motors (left/right) exposed as XRPMotor channels 0/1 (These behave similarly to PWM based motor controllers)
  • 2 additional motors (motor3/motor4) exposed as XRPMotor channels 2/3
  • 2 servo outputs (servo1/servo2) exposed as XRPServo channels 4/5
  • Encoders for each motor (channel 4/5 for Left, channel 6/7 for Right, channel 8/9 for motor3, channel 10/11 for motor4)
  • 3-axis gyro exposed as XRPGyro (Note that in this version, only the Z axis is reported)

Difference between XRP and Romi capabilities

For the most part, code written for the Romi and XRP are interchangeable. The main difference being that anywhere a Spark motor controller was used in Romi code should be replaced with a XRPMotor (with same channel numbers) for the XRP. Similarly anywhere a Servo object was used in Romi code should be replaced with a XRPServo.

Additionally, the XRP only has a single pushbutton and LED, compared to the 3 each for the Romi. Thus, DIO channels 3 and 4 are not used on the XRP.

Changes from v0.3.0

  • Provides a web based configuration UI to allow setting of WiFi AP name/password, as well as setting the XRP up to connect to an existing network (STA mode)

Known Issues

  • Occasional input lag - This is getting worked on as part of a larger WPILib WS change
  • Gyro only reports Z axis
  • There is occasional gyro data lag (the gyro data is integrated on the XRP side, so whenever the data makes it through, it should be up to date)

What's Changed

Full Changelog: v0.3.0...v0.4.0

XRP-WPILib Firmware v0.3.0

25 Aug 01:20
bb97854
Compare
Choose a tag to compare

About XRP-WPILib

This firmware for the XRP robot works in conjunction with WPILib WebSocket extensions to support writing WPILib robot programs and running them on low cost XRP robots.

WPILib Hardware Support

  • Onboard LED and Pushbutton exposed as DIO channels 0 and 1
  • 2 motors (left/right) exposed as XRPMotor channels 0/1 (These behave similarly to PWM based motor controllers)
  • 2 additional motors (motor3/motor4) exposed as XRPMotor channels 2/3
  • 2 servo outputs (servo1/servo2) exposed as XRPServo channels 4/5
  • Encoders for each motor (channel 4/5 for Left, channel 6/7 for Right, channel 8/9 for motor3, channel 10/11 for motor4)
  • 3-axis gyro exposed as XRPGyro (Note that in this version, only the Z axis is reported)

Difference between XRP and Romi capabilities

For the most part, code written for the Romi and XRP are interchangeable. The main difference being that anywhere a Spark motor controller was used in Romi code should be replaced with a XRPMotor (with same channel numbers) for the XRP. Similarly anywhere a Servo object was used in Romi code should be replaced with a XRPServo.

Additionally, the XRP only has a single pushbutton and LED, compared to the 3 each for the Romi. Thus, DIO channels 3 and 4 are not used on the XRP.

Changes from v0.2.0

  • Exposes a USB Removable Drive when connected to computer. A single file is provided on this disk that shows which WiFi SSID is being broadcast etc.

Known Issues

  • Occasional input lag - This is getting worked on as part of a larger WPILib WS change
  • Gyro only reports Z axis
  • There is occasional gyro data lag (the gyro data is integrated on the XRP side, so whenever the data makes it through, it should be up to date)

XRP-WPILib Firmware v0.2.0

16 Aug 21:20
f3be79e
Compare
Choose a tag to compare

About XRP-WPILib

This firmware for the XRP robot works in conjunction with WPILib WebSocket extensions to support writing WPILib robot programs and running them on low cost XRP robots.

WPILib Hardware Support

  • Onboard LED and Pushbutton exposed as DIO channels 0 and 1
  • 2 motors (left/right) exposed as XRPMotor channels 0/1 (These behave similarly to PWM based motor controllers)
  • 2 additional motors (motor3/motor4) exposed as XRPMotor channels 2/3
  • 2 servo outputs (servo1/servo2) exposed as XRPServo channels 4/5
  • Encoders for each motor (channel 4/5 for Left, channel 6/7 for Right, channel 8/9 for motor3, channel 10/11 for motor4)
  • 3-axis gyro exposed as XRPGyro (Note that in this version, only the Z axis is reported)

Difference between XRP and Romi capabilities

For the most part, code written for the Romi and XRP are interchangeable. The main difference being that anywhere a Spark motor controller was used in Romi code should be replaced with a XRPMotor (with same channel numbers) for the XRP. Similarly anywhere a Servo object was used in Romi code should be replaced with a XRPServo.

Additionally, the XRP only has a single pushbutton and LED, compared to the 3 each for the Romi. Thus, DIO channels 3 and 4 are not used on the XRP.

Changes from v0.1.0

  • Gyro calibration on startup
  • AHRS implementation (Yaw is reported as the gyro Z axis)
  • Encoder PIO program updates (Corrects the CPR to 585)

Known Issues

  • Gyro only reports Z axis
  • There is occasional gyro data lag (the gyro data is integrated on the XRP side, so whenever the data makes it through, it should be up to date)

XRP-WPILib Firmware v0.1.0

11 Aug 17:47
215b996
Compare
Choose a tag to compare

About XRP-WPILib

This firmware for the XRP robot works in conjunction with WPILib WebSocket extensions to support writing WPILib robot programs and running them on low cost XRP robots.

WPILib Hardware Support

  • Onboard LED and Pushbutton exposed as DIO channels 0 and 1
  • 2 motors (left/right) exposed as XRPMotor channels 0/1 (These behave similarly to PWM based motor controllers)
  • 2 additional motors (motor3/motor4) exposed as XRPMotor channels 2/3
  • 2 servo outputs (servo1/servo2) exposed as XRPServo channels 4/5
  • Encoders for each motor (channel 4/5 for Left, channel 6/7 for Right, channel 8/9 for motor3, channel 10/11 for motor4)
  • 3-axis gyro exposed as XRPGyro (Note that in this version, only the Z axis is reported)

Difference between XRP and Romi capabilities

For the most part, code written for the Romi and XRP are interchangeable. The main difference being that anywhere a Spark motor controller was used in Romi code should be replaced with a XRPMotor (with same channel numbers) for the XRP. Similarly anywhere a Servo object was used in Romi code should be replaced with a XRPServo.

Additionally, the XRP only has a single pushbutton and LED, compared to the 3 each for the Romi. Thus, DIO channels 3 and 4 are not used on the XRP.

Known Issues

  • Gyro only reports Z axis
  • There is occasional gyro data lag (the gyro data is integrated on the XRP side, so whenever the data makes it through, it should be up to date)
  • Encoders currently report incorrect CPR (should be 585)