Skip to main content

Python Control Systems Library

Project description

https://anaconda.org/conda-forge/control/badges/version.svg https://img.shields.io/pypi/v/control.svg https://github.com/python-control/python-control/actions/workflows/python-package-conda.yml/badge.svg https://github.com/python-control/python-control/actions/workflows/install_examples.yml/badge.svg https://github.com/python-control/python-control/actions/workflows/control-slycot-src.yml/badge.svg https://coveralls.io/repos/python-control/python-control/badge.svg

Python Control Systems Library

The Python Control Systems Library is a Python module that implements basic operations for analysis and design of feedback control systems.

Have a go now!

Try out the examples in the examples folder using the binder service.

https://mybinder.org/badge_logo.svg

The package can also be installed on Google Colab using the commands:

!pip install control
import control as ct

Features

  • Linear input/output systems in state-space and frequency domain

  • Block diagram algebra: serial, parallel, feedback, and other interconnections

  • Time response: initial, step, impulse

  • Frequency response: Bode, Nyquist, and Nichols plots

  • Control analysis: stability, reachability, observability, stability margins, root locus

  • Control design: eigenvalue placement, linear quadratic regulator, sisotool, hinfsyn, rootlocus_pid_designer

  • Estimator design: linear quadratic estimator (Kalman filter)

  • Nonlinear systems: optimization-based control, describing functions, differential flatness

Dependencies

The package requires numpy, scipy, and matplotlib. In addition, some routines use a module called slycot, that is a Python wrapper around some FORTRAN routines. Many parts of python-control will work without slycot, but some functionality is limited or absent, and installation of slycot is recommended (see below). The Slycot wrapper can be found at:

https://github.com/python-control/Slycot

Installation

Conda and conda-forge

The easiest way to get started with the Control Systems library is using Conda.

The Control Systems library has packages available using the conda-forge Conda channel, and as of Slycot version 0.3.4, binaries for that package are available for 64-bit Windows, OSX, and Linux.

To install both the Control Systems library and Slycot in an existing conda environment, run:

conda install -c conda-forge control slycot

Mixing packages from conda-forge and the default conda channel can sometimes cause problems with dependencies, so it is usually best to instally NumPy, SciPy, and Matplotlib from conda-forge as well.

Pip

To install using pip:

pip install slycot   # optional; see below
pip install control

If you install Slycot using pip you’ll need a development environment (e.g., Python development files, C and Fortran compilers). Pip installation can be particularly complicated for Windows.

Installing from source

To install from source, get the source code of the desired branch or release from the github repository or archive, unpack, and run from within the toplevel python-control directory:

pip install .

Article and Citation Information

An article about the library is available on IEEE Explore. If the Python Control Systems Library helped you in your research, please cite:

@inproceedings{python-control2021,
  title={The Python Control Systems Library (python-control)},
  author={Fuller, Sawyer and Greiner, Ben and Moore, Jason and
          Murray, Richard and van Paassen, Ren{\'e} and Yorke, Rory},
  booktitle={60th IEEE Conference on Decision and Control (CDC)},
  pages={4875--4881},
  year={2021},
  organization={IEEE}
}

or the GitHub site: https://github.com/python-control/python-control

Development

Code

You can check out the latest version of the source code with the command:

git clone https://github.com/python-control/python-control.git

Testing

You can run the unit tests with pytest to make sure that everything is working correctly. Inside the source directory, run:

pytest -v

or to test the installed package:

pytest --pyargs control -v

License

This is free software released under the terms of the BSD 3-Clause License. There is no warranty; not even for merchantability or fitness for a particular purpose. Consult LICENSE for copying conditions.

When code is modified or re-distributed, the LICENSE file should accompany the code or any subset of it, however small. As an alternative, the LICENSE text can be copied within files, if so desired.

Contributing

Your contributions are welcome! Simply fork the GitHub repository and send a pull request.

Please see the Developer’s Wiki for detailed instructions.

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

control-0.10.1.tar.gz (9.5 MB view details)

Uploaded Source

Built Distribution

control-0.10.1-py3-none-any.whl (549.6 kB view details)

Uploaded Python 3

File details

Details for the file control-0.10.1.tar.gz.

File metadata

  • Download URL: control-0.10.1.tar.gz
  • Upload date:
  • Size: 9.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.2

File hashes

Hashes for control-0.10.1.tar.gz
Algorithm Hash digest
SHA256 3bba142c9274d896efda8c9a21aaf61dd38d673d6d40714a7989d143428e738c
MD5 740459809604c801a4b1dabbdd97b202
BLAKE2b-256 33c2c480f2af22bfb3f2fbb0e791a26e7b8d7d3a63b6873f644c22b161dd5299

See more details on using hashes here.

File details

Details for the file control-0.10.1-py3-none-any.whl.

File metadata

  • Download URL: control-0.10.1-py3-none-any.whl
  • Upload date:
  • Size: 549.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.2

File hashes

Hashes for control-0.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ff4c7620addb7edcafa24f712b9cad61dcdf50a40018f16b8dcb0b26c7774524
MD5 139b10f67debee299d63865e4a51ff2d
BLAKE2b-256 b29b972af6f963631c10e98e35fe53a46f6f4ec1e2dd05c5d88f63f3c75c3d21

See more details on using hashes here.

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