Skip to main content

A control systems library for Python3

Project description

|Travis-CI| |License| |Join the chat at Gitter| |Coveralls| |ReadTheDocs|

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`_ . (currently under significant reconstruction)

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- Instead, 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. If you are missing out
a feature, don't be shy and contact. 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.

.. _click for the Github page: https://github.com/python-control/python-control
.. _Sphinx documentation: http://harold.readthedocs.org/en/latest/
.. _Skogestad-Python: https://github.com/alchemyst/Skogestad-Python

.. |License| image:: https://img.shields.io/github/license/mashape/apistatus.svg
:target: https://github.com/ilayn/harold/blob/master/LICENSE
.. |Join the chat at Gitter| image:: https://badges.gitter.im/Join%20Chat.svg
:target: https://gitter.im/ilayn/harold?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
.. |Travis-CI| image:: https://travis-ci.org/ilayn/harold.svg?branch=master
:target: https://travis-ci.org/ilayn/harold
.. |Coveralls| image:: https://coveralls.io/repos/github/ilayn/harold/badge.svg?branch=master
:target: https://coveralls.io/github/ilayn/harold?branch=master
.. |ReadTheDocs| image:: https://readthedocs.org/projects/harold/badge/?version=latest
:target: http://harold.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status

ChangeLog
============
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.

Source Distribution

harold-1.0.0.zip (98.6 kB view hashes)

Uploaded Source

Built Distribution

harold-1.0.0-py3-none-any.whl (91.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page