https://github.com/baggepinnen/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 (13.5%) to scientific vocabulary
Repository
A Control Systems Toolbox for Julia
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 9
- 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")
News
2022-02
- Breaking:
Plots.jlis no longer loaded byControlSystems.jl. This improves loading times for the package, but means that users will have to runusing Plotsmanually before plotting functions are available. - Deprecations: Functions
dare/dlyap/dkalman/dlqrare now deprecated in favor of an interface that uses dispatch on the typesContinuous / Discrete. Example:dare(A,B,Q,R)is noware(Discrete,A,B,Q,R)orare(sysd,Q,R).
2021-11
- Time-domain simuations now return a result structure (non breaking)
- Breaking:
lsimplot, stepplot, impulseplothave been replaced byplot(lsim())etc. - Breaking:
pole, tzerohas been renamed to their plural form,poles, tzeros. - Breaking:
c2dnow no longer returns thex0mapfor statespace systems, see functionc2d_x0mapfor the old behavior. - Breaking: The array layout of time and frequency responses has been transposed, i.e., in
y,t,x,u = lsim(sys, ...), the output arraysy,x,uare now of shapesize(y) == (sys.ny, T). - New functions
observer_controller, observer_predictor, placePI. - Breaking: The type
LQGhas been removed, see RobustAndOptimalControl.jl for its replacement. - Breaking:
balrealandbaltruncreturn an additional value, the applied similarity transform. - A large set of bug fixes
- For a full list of changes, see here.
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/latest/.
Some of the available commands are:
Constructing systems
ss, tf, zpk
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
Time and Frequency response
step, impulse, lsim, freqresp, evalfr, bode, nyquist
Plotting
lsimplot, stepplot, impulseplot, bodeplot, nyquistplot, sigmaplot, marginplot, gangoffourplot, pidplots, 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
Owner
- Name: Fredrik Bagge Carlson
- Login: baggepinnen
- Kind: user
- Location: Lund, Sweden
- Website: baggepinnen.github.io
- Twitter: baggepinnen
- Repositories: 59
- Profile: https://github.com/baggepinnen
Control systems, system identification, signal processing and machine learning
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
- Delete event: 1
Last Year
- Delete event: 1