This repository has been archived by the owner on Nov 2, 2021. It is now read-only.
Releases: serivesmejia/EOCV-Sim
Releases · serivesmejia/EOCV-Sim
Latest Development Build
This release contains the latest version of EOCV-Sim in the dev(elopment) branch! Stability is not guaranteed, use it at your own risk.
v3.0.0 - Compiling on the fly! Yay!
This is the 9th release for EOCV-Sim
Changelog:
- Runtime building! The sim now supports building pipelines on the fly, which allows for more quick and efficient testing. (Running the sim with a JDK is required for this feature to work, since normal JREs don't include a compiler to use)
- Workspaces & VS Code is the new (and recommended) way of developing pipelines. A VS Code workspace template can be created from the sim, see the usage explanation for more details.
- A file watcher was implemented, so when any modification happens in the current workspace under the "source" or "resource" folders specified in the
eocvsim_workspace.json
, a new build will be automatically triggered every 8 seconds. - VS Code can be executed by the sim if the current system has the
code
command. It is triggered by manually opening it in the top menu bar or when creating a VS Code workspace. - Files can now be drag and dropped into the sim to add them as Input Sources. The sim will automatically open a create dialog depending on the file extension.
- Added a "Workspace" menu under the top menu bar, which contains the new features regarding the runtime compiling.
- The UI now has smoother icons, by using a smoothing option on Java swing which makes them look a little nicer (but not much).
- Current pipeline state is now stored and reestablished if a restart happens.
- When a build is finished, the simulator tries reinitializes the currently selected pipeline if it exists, to ensure the changes were applied. Or it falls back to the
DefaultPipeline
if the old pipeline doesn't exist anymore, it also saves the state of the old pipeline and tries to apply the snapshot of the pipeline before it was reinitialized if the names of the old and new classes match. - The sim now uses a
.eocvsim
folder under the user directory to store its files, to avoid annoying the user with unwanted files now that the runtime compiling exists and it has to store the build output somewhere. If the user has previously run an older version of eocv sim which createdeocvsim_sources.json
and/oreocvsim_config.json
under the user home directory, it automatically migrates them to the new folder. - Builds created by IntelliJ Idea (the common programming style) are now considered as "dev". This helps to distinguish between official & published builds created in a CI workflow and local builds, when an issue happens and it's reported.
- The sim compiling target was changed back to Java 8, since this is one of the most widely used versions and we weren't really using many Java 9 features that couldn't have been replaced or handle different. This is also more convenient and provides better support for users directly downloading the jar and executing it.
Bugfixes:
- Fixed issues with the source selector regarding to selection when a modification or error happens. When a new source is added, it's automatically selected. And when a source is deleted, the previous source in the list is selected
- Fixed the color picker cursor size on non-windows systems
- Fixed pause not working when a tunable field that uses a combo box in the UI is included.
- Fixed an (apparently random, but it's just the garbage collector being weird) null pointer exception with
Enum
fields
Internals:
- Improved event handlers to be more idiomatic and less weird. Bye bye KEventListener!
- Improved some messy parts of the internal code and logic
v2.2.1 - JVM crashing hotfix
This is the 8th release for EOCV-Sim
Changelog:
- Removed "Java memory" message in the title since it's practically useless for the end user
- Updated to Gradle 7.0 for Java 16+ support (#25)
Bugfixes:
- Fixed JVM crashing error caused by releasing all mats in a MatRecycler finalization (#26)
- Improved memory usage by deleting unused BufferedImageRecyclers, memory is now slightly freed when allocating or recycling buffered images of different sizes (which means that the memory usage is reduced a little bit when zooming in the viewport)
v2.2.0 - Variable Tuner Upgrade
This is the 7th release for EOCV-Sim
Changelog:
- Pipelines now have a timeout all of the three methods so that the main loop doesn't get compromised due to a "stuck" pipeline (using kotlin coroutines)
- processFrame has a timeout of 4.2 seconds
- init is executed in the same scope as processFrame, when it has to be called, the timeout is doubled (16.4)
- When either processFrame or init methods timeout, the sim automatically falls back to the default pipeline and discards any frame that the old timeouted pipeline could return.
- onViewportTapped is still called from the U.I Thread, but it now has a timeout of 4.2 seconds too
- Added EnumField which handles the type Enum (accepts all classes of type enum, including the ones declared by the user)
- Major improvements to the variable tuner, added new features for color picking, tuning with sliders, configuration... See usage explanation for further details.
- GUI improvement: Dropped some external dialogs in favor of simple "popups" for more practicality
- Internals:
- Continued rewrite to kotlin
- Splitted visualizer class components into different classes
- Improved EventHandler doOnce listeners
v2.1.0 - Video Update
This is the 6th release for EOCV-Sim
Changelog:
- Added support for VideoSources! You can now input your pipeline with a moving video (*.avi format is the most supported and tested, other codecs might depend on the OS you're using)
- Added support for video recording, accessible at the bottom of the pipeline selector. Save format is AVI
- Added a new TunableField type: RectField, which handles the OpenCV type "Rect" (might be useful for rect pipelines 👀)
- Improved uncaught exception handling and added a crash report generator
- Added support for more themes from FlatLaf
- Added new config option to change the output video recording size
- Added support for EOCV's TimestampedOpenCvPipeline
- Internals:
- Major rewrite to kotlin! (Still mostly Java but that might change soon)
- A bit of code cleaning and restructuring
v2.0.2 - TaskBar hotfix
This is the 5th release for EOCV-Sim.
Bugfixes:
Fixes UnsupportedOperationException with the TaskBar API in some operating systems
v2.0.1 - BooleanField Hotfix
This is the 4th release for EOCV-Sim.
Bugfixes:
- Fixes ArrayIndexOutOfBoundsException when initial value of a boolean field was true which would make the sim enter into a frozen state.
v2.0.0 - Major Update
This is the 3rd release for EOCV-Sim.
Changelog:
- Added variable tuner for public non-final supported fields in the pipeline, accessible on the bottom part of the image viewport.
- Pipeline pause and resume option to save resources, pauses automatically with image sources for one-shot analysis
- Top Menu bar containing new features/convenient shortcuts:
- Save Mat to disk option in File submenu
- Restart feature in File submenu
- Shortcut for creating input sources under File -> New -> Input Source
- Settings menu under Edit submenu
- "About" information screen under Help submenu
- Appereance themes via the FlatLaf library, selectable in the settings window
- Telemetry now is passed to the pipeline via the constructor rather than an instance variable, check usage explaination for further details
- Mat visualizing into the viewport is now handled in another thread to improve performance
- Pipeline FPS are now capped at 30
- Zooming viewport is now supported, using mouse wheel while holding Ctrl key
Bugfixes:
- Removed call to the gc in the main loop due to performance issues
- Fixed BufferedImage mem leak by recycling previously used buffered images and trying to flush them
- Some internal code cleaning & reestructuration
- Fixed issues with native lib loading (mostly on Mac) with the OpenCV package provided by OpenPnP
v1.1.0 - Telemetry Update
This is the 2nd release for EOCV-Sim.
Changelog:
- Added a Telemetry implementation displayed in the UI. Replicates the FTC SDK one, it can be used directly in pipelines.
- Added an option to define the CameraSource resolution when creation.
- Added MacOS support (thnx Noah)
- Changed default resolution to 320x280 everywhere since it is the most commonly used in EOCV
- Native libs are now downloaded by the simulator from another GitHub repo to avoid bloating the repository with heavy files
- Java libraries, such as classgraph, opencv and gson are now delivered in compiled jars to improve compile times
Bug fixes:
- Fixed a bug where the InputSources would return a BGR Mat instead of RGB, which is the type EOCV gives.
- Regarding the last point, the visualizer now expects for the given mats to be RGB
- Improved general IO error handling everywhere, from file accessing to input sources reading, so that the simulator doesn’t enter in a freeze state if any IO related operation fails
- Improved multi threading handling for changing pipelines and inputsources.
- Fixed issue in Linux where the buttons would be moved to an incorrect position when resizing out and then trying to resize back to the original size
v1.0.0 - Initial Release
Intial EOCV-Sim release.