Skip to content

Release 1.0.1

Tom Tzook edited this page Sep 3, 2017 · 5 revisions

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

The second release of FlashLib, 1.0.1 improves upon the structure and general use of FlashLib. Work was done across the entire library, improving the works of existing features and code while adding and integrating new ones. This release did not focus on non-FRC robot control, but rather focused on the entire FlashLib and all of its features. Because of that, although possible, non-FRC robot control is far from ready.

Changelog

util Package

  • Addition of utility functions to FlashUtil
  • ConstantsHandler was integerated with the new beans package
  • Log is now abstract and can be implemented for different logging types. Built-in implementations:
    • SimpleStreamLog: A simple log which keeps an open stream with 2 log files: error log and standard log. Since this implementation keeps an open stream, if the software crashes the data will be lost. Useful for simple softwares without any danger of crash issues or simple runtime debugging.
    • SimpleBufferedLog: A log which keeps a buffer and saves data to a file when the buffer is used or by a manual user call. Since this implementation does not keep an open stream, a software crash would not result in data loss. Useful for robotic softwares or when a chance for software crash is possible.

io Package

  • The io package was largely cleared and only several methods in FileStream remain.

util.beans Package

  • A new package under util, the beans package introduces JavaBeans and properties into FlashLib. The beans package provide interfaces and implementations of JavaBeans and properties. The beans contained are used in several places throughout FlashLib and are very useful. The beans are seperated into primitive and generic interfaces and are then combined.

cams Package

  • Seperated into different packages for different library implementations:
    • cams.cv: OpenCV
    • cams.ni: NIVision
  • New QueueCamera implementation for a queue of images providing the data instead of an actual camera.

math Package

  • Minor changes to Interpolation hierarchy
  • Added LagrangePolynomial
  • Fixes to Vector3 and Vector2
  • Several name changes to Mathf functions

vision Package

  • Seperation to implementation packages and abstract packages:
    • vision.cv: OpenCV implementation

Dynamic Vision System

The Dynamic Vision System was a major focus for this release. Improvements were made to the filter serialization, library abstraction, vision analysis and vision control:

  • Filter Serialization: The conversion between filters and XML or byte streams, which was introduced in 1.0.0, provides a huge part to the dynamics of the library. To allow for easier user implementation, we used the new util.beans package to introduce filter parameters, making the usage of parameters a lot easier.
  • Library Abstraction: The vision system aimed from the start to be used by any wanted vision library, which is why using abstraction is extremely important. We improved the abstraction of the vision system by minimizing the classes which require implementation to VisionSource alone. In addition, new methods were added for implementations to allow further use of the library.
  • Vision Analysis: After performing vision, we need to save the results. Up until now, the Analysis object was able to hold specific data, limiting users. The new Analysis class can hold any amount of data wanted by using a data map. In addition, analysis objects are not only created automatically, but instead users can create them manually using an AnalysisCreator object which is attached to a VisionProcessing. This object is responsible for creating the Analysis object with the wanted data and can be used instead of the automatic creation provided by the VisionSource.
  • Vision Control: To further abstraction and simplify use, Vision implementations were improved. VisionRunner is now able to work with any library implementation without the need for a different implementation. Further more, implementations of VisionRunner merely change the way vision is ran. There are 2 built-in implementations:
    • SimpleVisionRunner: A synchronized implementation used to run vision manually.
    • ThreadedVisionRunner: A unsyncronized implementation which uses a thread to run the vision.
  • A large addition of template matching into the vision system was done including OpenCV implementation

Communications Management System

  • Fixed TcpCommInterface
  • Fixed StreamCommInterface
  • Added RxTxCommInterface
  • Removed ip data from Packet
  • Sendable ID is distributed automatically from Communications and cannot be changed by users

Robot Scheduler

  • Removed ScheduledTask, now using Runnable instead
  • Scheduler is no longer singleton. An instance is available from RobotFactory
  • Added PeriodicAction
  • Added PeriodicRunnable
  • System is now SubSystem

Robot HID

  • The HID access of a robot was abstracted an is now available through an interface: HIDInterface. To use, it is necessary to implement the interface to provide the necessary HID data and attach the instance to RobotFactory.

Robot Control

  • FlashRio provides initialization parameters before initializing FlashLib
  • Logs are disabled by default
  • A Runnable task to update HID is added to the scheduler by default
  • Seperated the bulldog library from SBC robot control
  • SbcRobot uses initializing class to set init parameters instead of a constants file
  • Added remote and local shell control
  • Robot class for SBC is defined in the manifest file under Robot-Class
  • Added easy control of remote SBC by using Communication class
  • Improved PidController and added feed forward
  • Improvement of built-in systems
  • MecanumStabilizer is now abstract with existing implementations

Flashboard

  • Added Slider control
  • Added vision editing window
  • Added PID Tuner window and control sendable
  • Several software improvements for improved functionality