FlashLib

A robotics development framework

BSD-3-CLAUSE License

Stars
10
Committers
5

Bot releases are hidden (Show)

FlashLib - Release 3.2.6 Latest Release

Published by tomtzook 8 months ago

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
FlashLib - Release 3.2.4

Published by tomtzook 9 months ago

  • Fixed a bug with starting and stopping Action from inside another Action.
  • Modified DeviceInterface to use a better defined id for devices.
FlashLib - Release 3.2.3

Published by tomtzook 9 months ago

  • 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
FlashLib - Release 3.2.2

Published by tomtzook 10 months ago

  • Added 'Mathf.shortestAngularDistanceMotionDirection`
  • Improved Counter device API and usage
  • Fix to PidController D component to take period into account
FlashLib - Release 3.2.1

Published by tomtzook 12 months ago

  • 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
FlashLib - Release 3.2.0

Published by tomtzook about 1 year ago

  • 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.
FlashLib - Release 3.1.0

Published by tomtzook almost 2 years ago

  • 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.
FlashLib - Release 3.0.0

Published by tomtzook almost 3 years ago

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.

FlashLib - Release 2.2.0

Published by tomtzook almost 5 years ago

  • Renamed flashlibj -> flashcore.
  • Scheduler conflicts fix.
FlashLib - Release 2.1.0

Published by tomtzook almost 5 years ago

Update to the robot mode system, and robot bases.

FlashLib - Release 2.0.0

Published by tomtzook almost 5 years ago

First full release in FlashLib's 2.0.0 rewrite.

  • Complete restructuring of the library.
  • Removed Flashboard
  • Removed HAL
  • Removed FRC parts
FlashLib - Release v2.0.0-beta.6

Published by tomtzook about 5 years ago

FlashLib - Release v2.0.0-beta.1

Published by tomtzook about 5 years ago

A beta release for version 2.0.0, using continuous deployment. Preparing for the final release of 2.0.0. Was deployment to maven central as well.

FlashLib - Release v2.0.0-alpha.4

Published by tomtzook over 5 years ago

Now officially declaring the next release as 2.0.0. This is an alpha release for testing of the new version.

FlashLib - Release 1.2.0

Published by tomtzook about 7 years ago

Release 1.2.0 focuses on the non-FRC robot framework, making it the center of FlashLib.

1.2.0 introduces new features into FlashLib like the Hardware Abstraction Layer, and provides improvements of existing features. From this version FlashLib is ready to be fully deployed with non-FRC robotics applications.

Checkout the wiki page of the release for more information: Release 1.2.0

FlashLib - Release 1.0.2

Published by tomtzook about 7 years ago

Update to the java port of FlashLib and Flashboard.

This release contains major improvement to the library build process, refinement of robot abstraction, improvements to the communications system, major changes in the HID package and some performence updates to Flashboard.

Some code from previous version of the library will not be compatible with the changes made. Especially revolving the robot abstraction and HID package.

FlashLib - Release 1.0.1

Published by tomtzook about 7 years ago

Release 1.0.1 is an update for the origin 1.0.0 intended for FRC use. It includes bug fixes and many improvements and addition to both Flashboard and FlashLib for Java.

Although work was done to the entire library, notable changes were the vision system, scheduler improvements, communications refinement. Addition were made to util in the form of JavaBeans, a new vision editing window for vision in Flashboard and many more things.
Examples were updated and new ones were added to help users with using the library.

Unfortunatly, because of the many changes, this version is not compatible with most code written for version 1.0.0. Please refer to the examples or the Wiki for information about changes and differences.

FlashLib - Release 1.0.0

Published by tomtzook over 7 years ago

First release is finally here and ready for FRC use.

  • Java only
  • Vision system
  • Communication system
  • Scheduler system
  • Flashboard is ready for dashboard usage