Releases: upb-lea/gym-electric-motor
v3.0.2: Hotfix pypi installation
v3.0.0: Refactoring Release
The changes in this version are mainly for easier development and maintenance of gym-electric-motor. However, it should be noted that some code breaking changes have been made to the transfer of elements in the gem.make() command, so that the objects must be transferred directly here and the input of text strings is no longer possible. For more information, please have a look at the cookbook or the other updated examples.
Added
- Support for Python 3.11, 3.12, 3.13
- Ruff: Python linter & formatter (see DEVELOPMENT.md)
- StateObserver: An easy way to get state values with error checking example
- Integrated gem_controls repository into gem. classic_controllers will be removed in further version
- Using pyproject.toml, dropping deprecated setup.py
- Enabled Gymnasium env checker see here
Changed
- Dropped support for Python 3.8
- Linted and formatted all files
- Changed max. steps in some test files to improve test speed by 30%
- Changed the syntax from gem_controller.py to be compatible with the gymnasium interface
Fixed
v2.0.0: Farama Gymnasium API Adoption
With this release the Farama Gymnasium API (gymnasium v0.29.0) is adopted in this repo.
That means there are several breaking changes, which are enlisted here: Migration Guide
This change helps GEM to stay up to date and continue leveraging researchers and stakeholders from industry and academia to conduct data-driven control design for electric motors.
Moreover, Python 3.7 support is dropped in favor of Python 3.8 - 3.10.
v1.1.0 - New Motor and physical system wrappers
[1.1.0] - 2022-06-15
Added
- Physical System Wrappers as a new feature to process actions and states directly in the environment. A decent introduction can be found in the GEM cookbook (Paragraph 2.8)
- The externally excited synchronous motor (EESM) has been added to the GEM-toolbox. Instantiate it with the following keys: "{Cont|Finite}-{CC|TC|SC}-EESM-v0"
Changed
- The MotorDashboard has received a "initialize()" method to initialize the plots below a specific cell.
- The MotorDashboard is now compatible with the "%matplotlib widget" backend. Therefore, GEM is now compatible with the integrated jupiter notebook execution of Visual Studio Code
Fixed
- If multiple converters were used and the time constant tau was changed from its default values, it was possible that the values of tau were different in each converter
Christmas Release
[1.0.1] - 2021-12-20
Added
- Classic field oriented controllers for induction motors
- Uniform initialization of the WienerProcessReferenceGenerator
Changed
- Reduced the dynamics of the reference signals in several speed control environments
- Changed the default ode-solver of all environments to the ScipyOdeSolver
Fixed
- gym version compatibility for all versions >= 0.21.0
- Docs: m2r dependency to m2r2. Enables compatibility with latest sphinx versions.
- matplotlib compatibility with versions >= 3.5.0
- Bugfix in the stable_baselines3_dqn_disc_pmsm_example.ipynb example notebook
- Bugfix in the jacobian of the ConstantSpeedLoad
v1.0.0 Stable Release
Added
- classic controllers in examples with complete makeover
- Possibility to seed all random number generators at once with a unified API - Reproduciblity improved.
Changed
Environment IDs
- The environments have changed the IDs for their creation.
- Furthermore, environments specialized for torque (TC), current (CC) and speed (SC) control tasks have been introduced.
- The ids are now structured as follows:
{Cont/Finite}-{CC/TC/SC}-motorType-v0 - Details can be looked up on the code documentation pages.
gem.make() parameters
The arbitrary environment creation keyword arguments that were passed to every subcomponent of the environment
have been removed. Instead, there is a fixed set of keyword parameters for every environment described in the
API-documentation of every environment.
MPC example
- Visualization improvements
- fix: State variables were updated
Miscellaneous
- Documentation was updated
- Changed all DC Envs to FourQuadrantConverters per default
- Adjusted the dynamics of the speed references in DC environments
- Adjusted the plots for better visibility of single points
Removed
- simple_controllers.py in examples
- Tensorforce tutorial due to deprecation
ConstraintMonitor and Visualization
This minor release comes with several improvements on
- the constraint monitor
- the visualization functionality
Moreover, this is the first release to be tracked by ZENODO.
v0.3.0 Major Fall Release
This is a major release comprising 6 months of collaborative work.
Among plenty of bug fixes, several new features were added:
- Tutorial notebooks were added that can be viewed and edited on Colab. These demonstrate use cases with the most prevalent reinforcement-learning-toolboxes
- Several example scripts were added
- An external speed load was added
- AC voltage supplies (1-phase and 3-phase) were added
- NoConverter was added (to throughput voltage supplies directly to the motor)
- The DC-link can be modeled as a more physically realistic RC element now
- The constraint monitor module was introduced
- Callbacks were introduced to leverage custom hooks on certain places in the environment flow
- The visualization was majorly refactored (dropping the PyQT5 dependence, adding more insightful plotting variants)
- Default motor parameters are more realistic now
Induction Motor
Release Notes:
-
add the squirrel cage induction motor and the doubly fed induction motor as new supported motor systems
-
generalize the DoubleConverter classes to MultiConverter classes for more flexibility with future feature implementations
v0.1.0
- The calculation of Jacobian matrices was added to the motor and load models to speed up the ODE-solvers. It can be turned on/off by setting the "calc_jacobian" parameter in the initialization parameters of an evironment / SCML-System.
- The environment-ids have changed to a CamelCase notation. Please use this notation. The old ids are still available, but will be removed in future releases.