https://github.com/avinashresearch1/controlsystems.jl

A Control Systems Toolbox for Julia

https://github.com/avinashresearch1/controlsystems.jl

Science Score: 18.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.4%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

A Control Systems Toolbox for Julia

Basic Info
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Fork of JuliaControl/ControlSystems.jl
Created over 3 years ago · Last pushed over 3 years ago
Metadata Files
Readme License Citation

README.md

ControlSystems.jl

Build Status Documentation Status

PkgEval codecov

Star on GitHub

A control systems design toolbox for Julia.

Installation

To install, in the Julia REPL:

julia using Pkg; Pkg.add("ControlSystems")

Documentation

All functions have docstrings, which can be viewed from the REPL, using for example ?tf.

A documentation website is available at http://juliacontrol.github.io/ControlSystems.jl/dev/ and an introductory video series is available here.

Some of the available commands are:

Constructing systems

ss, tf, zpk, delay

Analysis

poles, tzeros, norm, hinfnorm, linfnorm, ctrb, obsv, gangoffour, margin, markovparam, damp, dampreport, zpkdata, dcgain, covar, gram, sigma, sisomargin

Synthesis

are, lyap, lqr, place, leadlink, laglink, leadlinkat, rstd, rstc, dab, balreal, baltrunc

PID design

pid, stabregionPID, loopshapingPI, pidplots, placePI

Time and Frequency response

step, impulse, lsim, freqresp, evalfr, bode, nyquist

Plotting

bodeplot, nyquistplot, sigmaplot, plot(lsim(...)), plot(step(...)), plot(impulse(...)), marginplot, gangoffourplot, pzmap, nicholsplot, pidplots, rlocus, leadlinkcurve

Other

minreal, sminreal, c2d

Usage

This toolbox works similar to that of other major computer-aided control systems design (CACSD) toolboxes. Systems can be created in either a transfer function or a state space representation. These systems can then be combined into larger architectures, simulated in both time and frequency domain, and analyzed for stability/performance properties.

Example

Here we create a simple position controller for an electric motor with an inertial load.

```julia using ControlSystems

Motor parameters

J = 2.0 b = 0.04 K = 1.0 R = 0.08 L = 1e-4

Create the model transfer function

s = tf("s") P = K/(s((Js + b)(Ls + R) + K^2))

This generates the system

TransferFunction:

1.0

---------------------------------

0.0002s^3 + 0.160004s^2 + 1.0032s

Continuous-time transfer function model

Create an array of closed loop systems for different values of Kp

CLs = TransferFunction[kpP/(1 + kpP) for kp = [1, 5, 15]];

Plot the step response of the controllers

Any keyword arguments supported in Plots.jl can be supplied

using Plots plot(step.(CLs, 5), label=["Kp = 1" "Kp = 5" "Kp = 15"]) ```

StepResponse

Additional examples

See the examples folder and ControlExamples.jl and several examples in the documentation.

Owner

  • Name: Avinash Subramanian
  • Login: avinashresearch1
  • Kind: user
  • Location: Trondheim, Norway
  • Company: JuliaHub

Simulation & Control at JuliaHub

Citation (CITATION.bib)

@inproceedings{controlsystems_jl,
  abstract     = {ControlSystems.jl enables the powerful features of the Julia language to be leveraged for control design and analysis.<br/>The toolbox provides types for state-space, transfer-function, and time-delay models, together with algorithms for design and analysis.<br/>Julia's mathematically-oriented syntax is convenient for implementing control algorithms, and its just-in-time compilation gives performance on par with C.<br/>The multiple-dispatch paradigm makes it easy to combine the algorithms with powerful tools from Julia's ecosystem, such as automatic differentiation, arbitrary-precision arithmetic, GPU arrays, and probability distributions.<br/>We demonstrate how these features allow complex problems to be solved with little effort.},
  author       = {Bagge Carlson, Fredrik and Fält, Mattias and Heimerson, Albin and Troeng, Olof},
  booktitle    = {Proceedings of CDC 2021},
  language     = {eng},
  month        = {12},
  title        = {ControlSystems.jl: A Control Toolbox in Julia},
  url          = {https://github.com/JuliaControl/ControlSystems.jl},
  year         = {2021},
}

GitHub Events

Total
Last Year