A control systems library for Python3
Project description
harold
A control systems package for Python3 (>=v3.6 required).
Introduction
This package is written with the ambition of becoming a daily work-horse of a control engineer/student/researcher with complete access to the source code with full rights (see LICENSE file) while still working inside a full-fledged programming language. This allows for working in any medium that supports Python and its scientific packages NumPy and SciPy.
harold fully supports the mantra of reproducible research and thus aims to provide the means of accessible and transparent computational development tools.
Usage
A brief tutorial about the basics can be found under the notebooks folder.
Documentation
See the Sphinx documentation .
Useful Links
1- There is already an almost-matured control toolbox which is led by Richard Murray et al. (click for the Github page ) and it can perform already most of the essential tasks. Hence, if you want to have something that resembles the basics of matlab control toolbox, you should give it a try. However, it is somewhat limited to SISO tools and also relies on SLICOT library which can lead to installation hassle and/or licensing problems for nontrivial tasks.
2- You can also use the tools available in SciPy signal module for basics of LTI system manipulations.
3- Instead, if you are interested in robust control you probably would appreciate the Skogestad-Python project.
Help Wanted!
harold is built on rainy days and boring evenings unless you hire me directly for a specific tool. If you are missing out a feature, don’t be shy and contact me. User-feedback has higher priority over the general development.
Bug reports and PR submissions are more than welcome!
Contact
If you have questions/comments feel free to shoot one to harold.of.python@gmail.com or join the Gitter chatroom.
ChangeLog ============ v.1.0.1 ——- + Restructured documentation, now has a function reference template. + State and Transfer conversion with static cols/rows bugs fixed. + minimal_realization and staircase bugs fixed + random model creation in continuous and discrete time is possible. + pole placement via ackermann
v.1.0.0
First public release
Time domain plots and auto time sequence generation.
Unit tests are significantly improved(>80%)
Lots and lots of bug fixes.
Change the documentation theme to guzzle
Added first order hold discretization method
Removed FAQ from docs
v.0.1.1rc1
Unified State, Transfer checks via arg_utils
Fixed transfer_to_state argument signature
Added discretization and undiscretization funcs
Separated the frequency domain computations and plotting
Rewritten the frequency grid generation
Fixed some of the unwrapping bugs
Added lqr, dlqr, lqry and dlqry with a single signature
Refactored minimal_realization related funcs.
Fixed hinf-norm bugs
Started time domain plots.
v0.1.1b5
Requirement of NumPy is changed to 1.13 and above. Among others, we need __array_ufunc__ override mechanism for representation algebra. This should not be an issue since noone seems to use this.
The representations can now be sliced with G[:,1:3] etc.
v0.1.1b4
Sanitized the circular dependencies a bit more
minimal_realization is changed to accept models instead of A,B,C triplet
minimal_realization for Transfer uses the pole zero cancellation check
more housekeeping and bug fixes
added damping, natural frequency properties of poles
state_to_transfer does not return minimal realizations (per request)
v0.1.1b3
More tests
bode, nyquist plots with matplotlib
Rewritten the transmission_zeros to improve accuracy
Removed the single file and replaced it with modular files.
Refactored Riccati solvers to SciPy official repo
Lyapunov solver safety net is moot. Created PR #6775 in SciPy
v0.1.1b2
Added Riccati solvers
More documentation
Added safety net for lyapunov solvers in case there is no solution
v0.1.1b1
Added Lyapunov solvers
Fixed many bugs
Removed block diag and switched to scipy version
v0.1.1a
Initial versioning and packaging.
Adding documentation and Sphinx integration.
Basically everything there is.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.