-
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 -
ConstantsHandlerwas integerated with the new beans package -
Logis 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
FileStreamremain.
- 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
QueueCameraimplementation for a queue of images providing the data instead of an actual camera.
- Minor changes to
Interpolationhierarchy - Added
LagrangePolynomial - Fixes to
Vector3andVector2 - Several name changes to
Mathffunctions
- 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
VisionSourcealone. 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
Analysisobject was able to hold specific data, limiting users. The newAnalysisclass 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 anAnalysisCreatorobject which is attached to aVisionProcessing. This object is responsible for creating theAnalysisobject 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.
VisionRunneris now able to work with any library implementation without the need for a different implementation. Further more, implementations ofVisionRunnermerely 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
-
SendableID is distributed automatically fromCommunicationsand cannot be changed by users
- Removed
ScheduledTask, now usingRunnableinstead -
Scheduleris no longer singleton. An instance is available fromRobotFactory - Added
PeriodicAction - Added
PeriodicRunnable -
Systemis 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.
-
FlashRioprovides initialization parameters before initializing FlashLib -
Logs are disabled by default - A
Runnabletask to update HID is added to the scheduler by default - Seperated the bulldog library from SBC robot control
-
SbcRobotuses 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
PidControllerand added feed forward - Improvement of built-in systems
-
MecanumStabilizeris 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