This is the final release for 2024 Crescendo season. It reflects the 3061-relevant portions of our 2024 robot code as of the last competition (IRI) plus a few minor bug fixes.
We will shift our focus to preseason projects, which will primarily be developed in the frc-software-2024 repository, which is also publicly accessible. The next 3061-lib release will be a 2025 beta that reflects the results of these preseason projects.
The changes since the v2024.2.0 release are categorized by topic in rough order of significance.
Drivetrain Subsystem
- add ability to override rotation during PathPlanner paths (useful for targeting)
- constrain the robot pose to stay on the field, which doesn't happen when the wheels slip when colliding with the field walls
- reset the robot's pose to the previous pose when the pose "teleports" (i.e., changes much more than possible); why this happens rarely is still not understood but may have something to do with vision pose estimates with invalid timestamps
- add accessor to get measured angular velocity of the drivetrain
- add accessor to get the estimated robot pose in the future based on current velocity
- tuned system test for drivetrain
- add enabled inputs for drive and steer motors
- fix bug where swerve states in inputs were not initialized
- use new initial configs for drie and steer motors in CTRE's SwerveModuleConstantsFactory to specify current limits
- fix bug where closed loop reference and error signals were not associated with current control mode and, therefore, returning invalid values
- add constants for MK4i L3+
- tune current limits for swerve drive motors
- remove swerve drive characterization autos (need to use separate project with SysId)
- add auto command to characterize swerve wheel diameter based on 6328's clever technique
- fix bug in DriveToPose to account for blue field origin
Simulation
- use TorqueCurrentFOC for steer control in simulation to match physical robot (CTRE fixed bug preventing this)
Vision
- change behavior of reset pose to vision to wait until a recent vision pose estimate is available before applying
- count how many times each camera provides a new estimated pose
- add ambiguity threshold for including estimated poses from vision
- attempt to mitigate impact of NT4 bug where timestamps may be in the future by applying a ceiling of the current time
- only provide a vision-based robot pose if the data is less than 0.5 seconds old
- tune function to calculate standard deviation for vision pose estimates
- add input to capture if the estimate is from seeing multiple tags
- fix bug where multi-tag poses would have an ambiguity of 0, which would result in standard deviations that were too low
- fix simulation bug where the PhotonPoseEstimator needs to be provided with the transform from the camera to the robot
- fix simulation bug where cameras added to the vision system sim don't need to have transform applied
LEDs
- remove duplicate auto finished pulse in LEDs class
- remove distraction LED pattern
- add fire LED pattern
- add orange pulse LED pattern
- add support for GRB LED strips connected to roboRIO
Debugging
- add names to all scheduled commands to facilitate debugging
PathPlanner Autos
- put tuning auto paths in PathPlanner folders
- adjust PathPlanner defaults for 2024 robot
- add start point auto that sets the robot's pose to the specified position
- run follow path warmup command in robotInit to force loading of PathPlanner's Java classes
Robot Configurations
- remove 2023 robot configurations
- add 2024 Artemis robot configurations
- add practice board configuration for testing off-robot with basic electrical board
Field2d
- consolidate management of current alliance color in Field2d singleton
- add method to determine if the robot has complete left the alliance side of the field (useful in auto)
Miscellaneous
- allow all physical toggle switches to trigger when disabled (avoids need to force toggle when enabled)
- update to latest vendor deps
- display LEDs and DIO ports in the sim GUI
- add workaround from CTRE to ensure that the CANivore has been enumerated by the root hub and therefore, hoot files will be properly generated
- add DEMO_MODE to Constants that slows robot's velocity and displays alternative LED patterns
What's Changed
Full Changelog: v2024.2.0...v2024.3.0