https://github.com/avinashresearch1/controlsystems.jl
A Control Systems Toolbox for Julia
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
Repository
A Control Systems Toolbox for Julia
Basic Info
- Host: GitHub
- Owner: avinashresearch1
- License: other
- Default Branch: master
- Homepage: https://juliacontrol.github.io/ControlSystems.jl/stable/
- Size: 68.6 MB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
ControlSystems.jl
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"]) ```

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
- Repositories: 2
- Profile: https://github.com/avinashresearch1
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},
}