Releases: wpilibsuite/xrp-wpilib-firmware
XRP-WPILib Firmware v1.1.0
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
- Pin to stable framework version by @zhiquanyeo in #37
- Upgrade PlatformIO platform + arduino-pico 3.8 by @zhiquanyeo in #41
- Add Feature to Get Encoder Rate (Period) by @beardedone55 in #40
- [ci] Update actions to node 20 versions by @sciencewhiz in #43
- Bump SDK to use picosdk2 by @zhiquanyeo in #45
New Contributors
- @beardedone55 made their first contribution in #40
- @sciencewhiz made their first contribution in #43
Full Changelog: v1.0.1...v1.1.0
XRP-WPILib Firmware v1.0.1
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
- Adding WPA complliant checks in Web UI by @jpokornyiii in #35
- Update VERSION to 1.0.1 by @zhiquanyeo in #36
New Contributors
- @jpokornyiii made their first contribution in #35
Full Changelog: v1.0.0...v1.0.1
XRP-WPILib Firmware v1.0.0
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
- Reset the message sequence counter to 0 whenever a disconnect happens by @zhiquanyeo in #24
- Re-add ultrasonic rangefinder support by @zhiquanyeo in #25
- Set hostname to be the default SSID (with unique chip ID) by @zhiquanyeo in #26
- Versioning support by @zhiquanyeo in #27
- Make drive motor encoders report positive count when moving forward by @zhiquanyeo in #29
- Add version info to XRP-Status.txt file by @zhiquanyeo in #30
- Update version to 1.0.0 by @zhiquanyeo in #31
Full Changelog: v0.5.1...v1.0.0
XRP-WPILib Firmware v0.5.1
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
- Temporarily disable ultrasonic handling by @zhiquanyeo in #23
Full Changelog: v0.5.0...v0.5.1
XRP-WPILib Firmware v0.5.0
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
- UDP Protocol Implementation by @zhiquanyeo in #19
- Add support for Reflectance sensors and Rangefinder by @zhiquanyeo in #22
Full Changelog: v0.4.0...v0.5.0
XRP-WPILib Firmware v0.4.0
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
- Web Configuration UI by @zhiquanyeo in #17
- Update README.md with link to Alpha WPILib by @zhiquanyeo in #18
Full Changelog: v0.3.0...v0.4.0
XRP-WPILib Firmware v0.3.0
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
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
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)