v5.0.0
v5.0.0 (2024-09-24)
Integration of SDK v10.1 and season-related features.
Breaking changes
- Trajectory mirroring of the
RoadRunner
utility class has been revamped by an enum- Instead of passing a simple boolean state to reflect across the alliance plane, options now exist to mirror symmetrically
- The new
MirrorMap
types are nowNONE
,ALLIANCE_REFLECTION
(default), andSYMMETRIC_MIRROR
- The symmetric mirror profile was created as the INTO THE DEEP field is symmetric and using global reference frames is important for AprilTag repositioning
- All old instances of pose mirroring contexts have been replaced with taking in a parameter of type
MirrorMap
- PhotonFTC (v3.0.2-ALPHA) by Eeshwar has been integrated as an included library
- Teams may choose not to use Photon by removing the annotation from
BunyipsOpMode
and/or not including the library - Reread and follow the wiki installation instructions to bring in the new integrations, as well as making sure the versions match (for other lib. updates)
- Teams may choose not to use Photon by removing the annotation from
Processor
instances no longer take a copy of the frame before sending it to the processing methods- For most cases, this should not change anything; this change was needed to be made for the new SDK v10.1 processors
- There should now be less memory overhead for vision processing as a side effect
- This is listed as a breaking change as it may affect certain processors
- Fixed misnamed processor thresholds for all CENTERSTAGE Pixel colour processors, the thresholds were called YCBCR instead of YCRCB
Non-breaking changes
- Various docs updates and migration to the wiki
DualTelemetry
now displays the appropriate unit ofHz
instead ofl/s
once the loop times are too fast to be represented as milliseconds- The slow loop speed warnings of
DualTelemetry
now don't show up during the init-phase when used in aLinearOpMode
derivative- The init-phase is the heavy processing of the OpMode and loop times don't matter during init
Processor.getCameraDimensions()
is now a public methodRamping.DcMotor
now extendsDcMotorImplEx
instead ofDcMotorImpl
Bug fixes
RoadRunnerDrive
watchdog timeouts no longer log in warnings but instead debug logs- Fixed the separator in
TelemetryMenu
, there is now a gray bar at the start of every menu entry for ease of use on FtcDashboard RoadRunnerDrive
instances now cache their run mode during the constantsetMode()
calls in the update loop- This reduces redundant invocations of
setMode()
- It is important to only dynamically modify the drivetrain run mode manually through the
RoadRunnerDrive
instance instead of the motors themselves, due to the caching
- This reduces redundant invocations of
Additions
- Update to SDK v10.1; the new recommended SDK version is now v10.1
- New
ColourLocator
processor that wraps aColorBlobLocatorProcessor
- New
ColourSensor
processor that wraps aPredominantColorProcessor
- Appropriate data classes with filtering methods are
ColourBlob
andColourSample
, appropriately - Since these processors are instance-based instead of abstract, their IDs are represented by
coloursensor0
,coloursensor1
, etc. andcolourlocator0
,colourlocator1
etc. depending on the number of instances- These IDs are important to know for FtcDashboard switching or processor differentiation
- The BunyipsLib integration of these processors makes constant FtcDashboard viewing available and reduces unnecessary canvas overhead
- These new processors work the same as the pre-existing
ColourThreshold
andAprilTag
processors - The legacy
ColourThreshold
andMultiColourThreshold
will not be deprecated
- New
Notes
- RoadRunner v1.0.0 is not planned for integration as of now
- This is because of the ties RoadRunner v0.5.6 has with the path generator, visualiser, and utilities that don't bring any significant value to BunyipsLib upon migration
- Command-based features of RoadRunner v1.0.0 are already implemented as part of the
Scheduler
andTask
system - Time is better spent for BunyipsLib development working on the wiki and new features rather than refactoring old but still useful systems
- If support for RoadRunner v1.0.0 becomes more viable to integrate when external tools are updated to support RR v1.0.0, integration may be scheduled as another major release
StartingConfigurations
assumes a square field, where the blue alliance is opposite the red alliance- In the event a future season does have a diamond field (it has not been the case for a while), then an integration may be made to support this
- It is not of priority now or for this season, so it is not scheduled for implementation and won't be reconsidered until next season