Releases: teamhyper/hyperLib
v2.0.0
Release v1.1.2
Include HYPERVision & Connector files
Release v1.1.1
Re-release of VisionConnector so Travis can build and release properly
Release v1.1.0
Convert hyperLib's Vision System to use a VisionConnector to post information from the Raspberry Pi to NetworkTables, and allow the robot code to subscribe to those updates for Vision Commands.
Release v1.0.1
Add MecanumDrive to DriveParameters
Release v1.0.0
This is the first official stable release. Only very minor changes were made from the last release, in order to update to WPILIB 2019.1.1. From this point on, I'll make sure to maintain backwards compatibility, until version 2. Documentation on the wiki is now mostly up-to-date. A sample gradle file to use this release is coming soon.
v0.4.0-2018-compat
Version of 0.4.0 compatible with the 2018 libraries.
v0.4.0-travis: Re-release of v0.4.0
(Hopefully) fixed a bug in the travis deploy script.
Release v0.3.1
This release makes the preferences library thread-safe, and fixes a bug with how the labels on "pressed" vs "released" in the robot inspector. This is the first release after competition, and is what we'll be using to teach the new programmers over the summer. Also, I'm trying this release with an annotated tag instead of a lightweight one, since that's the "proper" way to do releases in git. It seems github releases like lightweight better, but jgitver likes annotated better, so we'll see how it goes.
Release v0.3.0
This release contains the code that is going with our robot to the 2017 competitions. Once we migrate some of the vision processing from hypercode2017 to here, and we've had some more "user acceptance testing" with junior programmers on the team, it looks like a 1.0 release will be in sight!
Most notably, we've added CommandBuilder, a builder-pattern type of thing which replaces CommandGroups (actually, it uses a CommandGroup under the hood, but it aims to be more ergonomic. In the future, we might change from CommandGroups entirely to our own thing, and code would still be compatible). Some features include:
- Easily chain together commands (e.g.
new CommandBuilder().sequential(foo).parallel(bar).build()
) - Wait for times, conditions, and other commands with
waitForDuration
,waitForCondition
,waitForMatchTime
, andwaitForChildren
. This way you can separate what a command does from when it finishes. - Easily end parallel commands with
release(Subsystem)
andreleaseAll()
. This combines well with the waitFor* methods, something we had a good deal of trouble with in 2016. - Use control flow in commands using
ifThen
,forLoop
, andwhileLoop
.ifThen
uses a WPILibConditionalCommand
, but it takes a lambda instead of requiring you to extend an abstract class. The loop commands are entirely original.
Currently the syntax on the loops and ifs makes it cumbersome to nest loops and branches. In a future release we may change it to beginWhile
and endWhile
, and so on, with validation being done in build()
. This is low priority, since currently we don't have any autonomous mode or other routines that need this complexity. (Or perhaps this difficulty has stopped us from trying anything too complex?)
Minor change: we now use one-letter abbreviations for "pressed", "release", and "held" in the OI diagrams, to save space. These diagrams could still use some work to make them pretty.
Lastly, we've set up more unit testing. As the library grows and becomes more complex, this will only get more important.