-
Notifications
You must be signed in to change notification settings - Fork 0
Release 1.0.1
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.
- 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.
-
- The io package was largely cleared and only several methods in
FileStream
remain.
- 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.
- 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.
- Minor changes to
Interpolation
hierarchy - Added
LagrangePolynomial
- Fixes to
Vector3
andVector2
- Several name changes to
Mathf
functions
- Seperation to implementation packages and abstract packages:
- vision.cv: OpenCV implementation
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 newAnalysis
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 anAnalysisCreator
object which is attached to aVisionProcessing
. This object is responsible for creating theAnalysis
object with the wanted data and can be used instead of the automatic creation provided by theVisionSource
. - 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 ofVisionRunner
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
- Fixed
TcpCommInterface
- Fixed
StreamCommInterface
- Added
RxTxCommInterface
- Removed ip data from Packet
-
Sendable
ID is distributed automatically fromCommunications
and cannot be changed by users
- Removed
ScheduledTask
, now usingRunnable
instead -
Scheduler
is no longer singleton. An instance is available fromRobotFactory
- Added
PeriodicAction
- Added
PeriodicRunnable
-
System
is nowSubSystem
- 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 toRobotFactory
.
-
FlashRio
provides initialization parameters before initializing FlashLib -
Log
s 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
- Added Slider control
- Added vision editing window
- Added PID Tuner window and control sendable
- Several software improvements for improved functionality