Skip to content

Releases: amarcolini/joos

0.4.9

21 Jan 07:28
Compare
Choose a tag to compare

Changes

  • Navigation module is now multiplatform!
  • GUI is now rewritten for the web!
  • New feedforward classes to better separate it from feedback
  • New AngleSensor class
  • New annotations + delegates for CommandOpMode to make things cleaner
  • Overhauled drive classes
  • Fixed bug where CommandOpMode was initializing commands too early
  • New experimental GVF following algorithms
  • New PositionPath and PositionPathBuilder
  • MotorGroup is now also a List<Motor> for more utility methods
  • Simplified Motor
  • New quality of life features for GamepadEx and MultipleGamepad
    • Controller-independent buttons
    • button concactenation + nicer button selectors
  • Trajectories are now serializable to JSON
  • Removed Angle.defaultUnits
  • Added faster, state-of-the-art path projection algorithms
  • Fixed many bugs with JoosConfig annotation and its siblings
  • Much improved swerve kinematics and overall support
  • Angular acceleration constraints now implemented correctly
  • Fixed bug where ParallelCommands couldn't run more than once
  • Updated all dependencies (including FTC Dashboard)

0.4.8

08 Aug 02:13
Compare
Choose a tag to compare

Changes

  • Migration to kotlin build script
  • Addition of dokka documentation
  • CommandInterface is now implemented only by CommandOpMode and Robot
  • CommandScheduler's methods are now static for ease of access
  • RobotOpMode has been removed and merged into CommandOpMode using registerRobot
  • Component has more convenience constructors
  • TrajectoryConstraints and subclasses moved to com.amarcolini.joos.trajectory.constraints

Note: The GUI has not changed, so the artifacts for this release have been omitted. The artifacts from the previous release will work fine.

0.4.7

30 Jun 22:54
Compare
Choose a tag to compare

Changes

  • Public vars with private setters are no longer put on FTC Dashboard (kotlin)
  • Command decorators are now more memory efficient
  • Added RepeatCommand for repeating commands
  • Added TimeCommand for time-based commands
  • Removed initialize from RobotOpMode and replaced it with a constructor reference constructor parameter
  • Added item providers to SuperTelemetry, similar to the default OpMode telemetry
  • More quality-of-life methods and constructors for Motor and Motor.Encoder
  • DiffSwerveDrive now also has setWeightedDrivePower
  • Added Standard2WheelLocalizer and Standard3WheelLocalizer for dead wheel odometry
  • Redid GUI rendering system, fixing jittering issues when dragging waypoints
  • Better separated FeedforwardCoefficients and PIDFController
  • Moved Kinematics.calculateMotorFeedforward to FeedforwardCoefficients
  • Minor bug fixes

0.4.6-alpha

03 Jun 23:45
Compare
Choose a tag to compare
0.4.6-alpha Pre-release
Pre-release

Changes

  • The annotation module is fixed and now also makes sure it can access fields/properties
  • CommandScheduler is now a singleton! This allows for a lot of helpful features:
    • Robot no longer needs an OpMode as a constructor parameter
    • CommandInterface allows easy access to CommandScheduler
    • Telemetries and gamepads get automatically registered
  • New CommandOpMode in case you don't like using Robots
  • Fixes to SuperTelemetry
  • Motor distancePerRev separated into gearRatio and distancePerOutputRev, allowing for setTargetAngle and goToAngle
  • New Motor.Kind for easy construction
  • Servo range set to 300 degrees by default because all the goBILDA servos have that range
  • command module now requires minSdkVersion of 24

0.4.5-alpha

12 May 01:39
Compare
Choose a tag to compare
0.4.5-alpha Pre-release
Pre-release

Changes

  • Annotation processor now supports scanning kotlin types through ksp, which should now be used instead of kapt (#14).
  • Kotlin types are now scanned when creating config variables, so kotlin properties will show up on FTC Dashboard
  • JoosConfig can now also be placed on individual fields / properties as well as on companion objects
  • GUI importing is now improved - Gradle will automatically retrieve platform-specific dependencies
  • Imu fix?

0.4.4-alpha

07 May 00:58
Compare
Choose a tag to compare
0.4.4-alpha Pre-release
Pre-release

Changes

  • New annotations: JoosConfig and WithConfig, and an annotation processor to go with them!

To install the annotation processor, add it to the annotationProcessor configuration:

dependencies {
  annotationProcessor 'com.github.amarcolini.joos.command:annotation:0.4.4-alpha'
}

Or if using kotlin, install kapt and add it to the kapt configuration:

dependencies {
  kapt 'com.github.amarcolini.joos.command:annotation:0.4.4-alpha'
}
  • GUI robot size is now changeable
  • Fixed GUI bug with strafeLeft and strafeRight
  • Angle, Pose2d, and Vector2d are now mutable (so they can be altered on dashboard)

0.4.3-alpha

23 Apr 20:27
Compare
Choose a tag to compare
0.4.3-alpha Pre-release
Pre-release

Changes

  • The GUI is now distributed with jlink and platform-specific classifiers
  • MotorGroup now has a rotation property and its motors are now public

0.4.2-alpha

16 Apr 18:12
Compare
Choose a tag to compare
0.4.2-alpha Pre-release
Pre-release

Changes

  • Differential swerve module directionality optimized (thanks @omagarwal25)
  • Angle methods now avoid extra conversions when possible
  • Fixed bug where updating DiffSwerveDrive before setting any drive power/signal threw an error

0.4.1-alpha

10 Apr 20:31
Compare
Choose a tag to compare
0.4.1-alpha Pre-release
Pre-release

Changes

  • SwerveKinematics and DiffSwerveKinematics now minimize module rotation in favor of direction switching (#9)
  • Minor quality of life improvements for trajectory builders

0.4.0-alpha

10 Apr 15:03
Compare
Choose a tag to compare
0.4.0-alpha Pre-release
Pre-release

Changes

  • New Angle class! Code that used to look like this:
       new TrajectoryBuilder(new Pose2d(), Math.toRadians(0.0), new GenericConstraints())
               .splineTo(new Vector2d(30, 30), Math.toRadians(0.0))
               .turn(Math.toRadians(90))
               .splineToSplineHeading(new Pose2d(40, -20, Math.toRadians(45)), Math.toRadians(30))
               .build();

now looks like this:

        new TrajectoryBuilder(new Pose2d(), 0.0, new GenericConstraints())
                .splineTo(new Vector2d(30, 30), 0.0)
                .turn(90)
                .splineToSplineHeading(new Pose2d(40, -20, 45), 30)
                .build();
  • Servo speed can now be changed
  • All DriveComponents now have an exposed motor group for easy access to motor properties
  • Differential swerve drive support out-of-the-box! (#4)
  • DashboardUtil has been removed and merged into SuperTelemetry
  • SuperTelemetry now graphs items on their own line in FTC Dashboard (#7 and #8)
  • Motor now has 2 new properties: rotation and maxDistanceVelocity
  • RobotOpMode now has preInit and preStart instead of just init so that it is possible to schedule commands that run in the run loop (#5)
  • Did someone say DRAGGABLE TANGENTS AND HEADING? Cause the GUI has it now
  • CommandScheduler.reset() should now be thread-safe (#9)
  • Minor logo changes