Skip to content

Releases: Flash3388/FlashLib

Release 3.2.6

12 Feb 22:42
Compare
Choose a tag to compare

General improvements to PidController

  • improved documentation around different functions, especially applyAsDouble and isInTolerance
  • displaying the error velocity (i.e. change of error in time) via OBSR
  • modifying isInTolerance to not use clock to check tolerance stability any longer, but rather use the error velocity to determine that.
    • this removed the need for Clock and thus it was removed from use
    • see documentation in class for further info

Release 3.2.4

02 Feb 20:45
Compare
Choose a tag to compare
  • Fixed a bug with starting and stopping Action from inside another Action.
  • Modified DeviceInterface to use a better defined id for devices.

Release 3.2.3

16 Jan 18:51
Compare
Choose a tag to compare
  • Added Watchdog. Useful for tracking execution of looping code flows.
    • Watchdogs can be created from FlashLibControl.newWatchdog and will be tracked by a separate thread
    • LoopingRobotBase updated to use a Watchdog

Release 3.2.2

20 Dec 22:36
Compare
Choose a tag to compare
  • Added 'Mathf.shortestAngularDistanceMotionDirection`
  • Improved Counter device API and usage
  • Fix to PidController D component to take period into account

Release 3.2.1

08 Nov 22:51
Compare
Choose a tag to compare
  • Updated InstanceId for null pointer checks
  • Updated InstanceIdGenerator to support better generation of machine id
    • added for windows: acquiring the bios serial number from wmic as id
    • better fallback look for the first accessible mac address

Release 3.2.0

29 Sep 07:41
c3057e5
Compare
Choose a tag to compare
  • Added Actions.waitUntil
  • Logging is now based on traditional slf4j design: acquiring logger with LoggerFactory. Property files define logger functionality depending on implementation.
  • Support for FlashLib Application - i.e. non robot program which uses FlashLib.
    • A running FlashLib application is called a FlashLib instance, identified by a unique id
    • An application's unique identifier is divided into machine identifier and process identifier.
    • Robot applications are a kind of FlashLib application
  • Networking protocols for communication between FlashLib programs:
    • HFCS: UDP-based. Continuous packets of control and status information. Read further here.
    • OBSR: TCP-based. Hierarchical, shared object storage. Read further here.
    • Messaging: TCP-based. Sending custom messages between instances.
  • Removed the deprecated SynchronousScheduler.
  • Added new control components:
    • ServiceRegistry: registers and tracks castle's com.castle.concurrent.service.Service. Useful for creating services (mostly multithreaded) to be used by the robot code.
    • NetworkInterface: access to networking protocols via the robot. Namely HFCS and OBSR.
    • FlashLibMainThread: tracks the main application thread. Allows queuing tasks to run on this thread from other threads. Methods annotated with MainThreadOnly must be called from that thread.
    • DeviceInterface: a provider of device interface implementation. Extendible using java's SPI
  • Added ActionStartSelector, a specialized selector, allowing selection of and Action based on pre-made conditions.
  • PidController now has isInTolerance as indication that the error is acceptable and the system is in the wanted setpoint. Uses both checks on error and a timeout to ensure stability.
  • Action interface modified with the addition of ActionControl to execute and initialize, allowing further control of the Action.
    • Removed isFinished. Instead use, ActionControl.finish in execute or initialize
    • end now receives FinishReason instead of wasInterrupted to describe the finish reason more specifically.
  • Action interface methods (e.g. initialize) no longer have default implementations and must be implemented.
  • A new set of system implementation which provide actions. See the new component flashlib.robot.systems
  • Using OBSR to report on execution of actions in scheduler
  • Added detection and tracking of object in flashlib.vision.core and flashlib.vision.cv
  • Integration with hal for flashlib.core.io implementation. Under new component flashlib.io.hal.
  • Reworked the internal mechanisms of Trigger and ManualTrigger
  • Introduced DeviceInterface for creating and working with devices abstractly.

Release 3.1.0

09 Dec 07:11
73bb59e
Compare
Choose a tag to compare
  • Added the ability to create manually activated Triggers with Triggers.manual().
  • Added HID interface representing the Dualshock 4 controller (DualshockController). Can be created with HidInterface.newDualshockController,
  • Condition-based Triggers are now created from Scheduler.newTrigger.
  • ActionConfiguration now contains a set of ActionFlags which influence different behaviors.
    • ActionFlag.RUN_ON_DISABLED: when set, Action is allowed to run disabled modes (SchedulerMode.isDisabled returns true). When not set, the Action will be cancelled.
    • ActionFlag.PREFERRED_FOR_REQUIREMENTS: when set, the Action will not be interrupted due to requirements conflict. Attempting to start a new Action which conflicts with such Action will either cause an exception or put the new action in a wait queue for execution (depends on Scheduler implementation).
  • Analysis objects modified to reflect a strong API for identified targets.
    • Analysis.getDetectedTargets returns a list of Target objects.
  • IterativeRobot now contains implementable exit methods for control modes, called when leaving the current mode and entering a different control mode.
  • SynchronousSchedluer is deprecated now. A new implementation, SingleThreadedScheduler should be used instead.
  • Added new component flashlib.hid.sdl2 which uses SDL2 to interface with HID. The interface can be used with Sdl2Hid. Natives for using SDL2 should be installed before hand and JNI should be added from the com.github.tomtzook:jsdl2-jni artifact.
  • Added whenInterrupted callback for ActionGroup. Called when the group is interrupted.
  • ActionGroups implementations are no longer exposed directly. Use Scheduler.newActionGroup to create one instead.
    • Implementation for ActionGroup revamped.

Release 3.0.0

10 Dec 10:22
Compare
Choose a tag to compare

Major update to project structure and most core components.

  • Reorganized the project structure into several submodule (or components), with dependencies between each other.
  • Removed Flashcomm component.
  • FlashCv plugin now part of this repository.
  • Changed artifact structure. Each component corresponds to a a separate artifact, with dependencies between them, instead of one massive artifact.
  • Introducing the new flashlib.core.hid API:
    • Completely abstract.
    • Previous API served an inspiration for the generic implementation for the API.
  • Introducing the new flashlib.core.scheduling API.
    • Scheduler, Action and Trigger are now interfaces.
    • SingleThreadScheduler provides the basic implementation for Scheduler. Organized as a way to support multi-threading in the future.
    • Requirements are no longer tied directly to Subsystem, but rather to Requirement interface. Subsystem being a specific type.
    • New action group ParallelRaceActionGroup.
    • New sugar syntax for building action groups with Action.andThen, Action.alongWith and Action.raceWith.
  • Added IoInterface for creating Io ports with the robot generically.
  • Added pnuematics interfaces under flashlib.core.io.
  • Reworked robot bases:
    • Separated RobotControl from robot bases.
    • Using interfaces and delegations to avoid massive inheritance trees.
    • robotInit is no longer preferred when creating the robot. Instead, the use of a constructor is.
  • Vision pipelines reworked:
    • Supporting a more functional and flexible API, actually mimicking a pipe flow.
    • No longer working with only an Image type, now any type can be used.

See examples and Wiki for more information.

Release 2.2.0

08 Jan 16:54
Compare
Choose a tag to compare
  • Renamed flashlibj -> flashcore.
  • Scheduler conflicts fix.

Release 2.1.0

05 Jan 19:37
Compare
Choose a tag to compare

Update to the robot mode system, and robot bases.