ControlSystems

A Control Systems Toolbox for Julia

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

Science Score: 54.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
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    4 of 43 committers (9.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.8%) to scientific vocabulary

Keywords

automatic-control bode-plot control-systems control-theory controls delay-systems discrete-systems dynamical-systems feedback-controller feedback-systems kalman-filter laplace-transform lqg-controller lqr-controller lti-system model-reduction nyquist-diagrams pid-control riccati-equations simulations

Keywords from Contributors

ode numerical sciml differential-equations sde dde dae stochastic-differential-equations julialang programming-language
Last synced: 6 months ago · JSON representation ·

Repository

A Control Systems Toolbox for Julia

Basic Info
Statistics
  • Stars: 557
  • Watchers: 27
  • Forks: 90
  • Open Issues: 54
  • Releases: 97
Topics
automatic-control bode-plot control-systems control-theory controls delay-systems discrete-systems dynamical-systems feedback-controller feedback-systems kalman-filter laplace-transform lqg-controller lqr-controller lti-system model-reduction nyquist-diagrams pid-control riccati-equations simulations
Created about 11 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Citation

README.md

ControlSystems.jl

Star on GitHub

Build Status

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 = [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: JuliaControl
  • Login: JuliaControl
  • Kind: organization

Control Systems Design in Julia

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
  • Fork event: 6
  • Create event: 58
  • Commit comment event: 76
  • Issues event: 39
  • Release event: 8
  • Watch event: 54
  • Delete event: 71
  • Issue comment event: 437
  • Push event: 213
  • Gollum event: 1
  • Pull request review event: 2
  • Pull request review comment event: 5
  • Pull request event: 114
Last Year
  • Fork event: 6
  • Create event: 58
  • Commit comment event: 76
  • Issues event: 39
  • Release event: 8
  • Watch event: 54
  • Delete event: 71
  • Issue comment event: 437
  • Push event: 213
  • Gollum event: 1
  • Pull request review event: 2
  • Pull request review comment event: 5
  • Pull request event: 114

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 1,312
  • Total Committers: 43
  • Avg Commits per committer: 30.512
  • Development Distribution Score (DDS): 0.488
Past Year
  • Commits: 204
  • Committers: 7
  • Avg Commits per committer: 29.143
  • Development Distribution Score (DDS): 0.034
Top Committers
Name Email Commits
Fredrik Bagge Carlson b****n@g****m 672
Fredrik Bagge Carlson c****b@u****g 232
Mattias Fält m****f@c****e 96
Mattias Fält f****s@g****m 89
olof3 o****3 57
Mattias Fält m****t 45
Albin Heimerson a****n@c****e 29
Jim Crist c****2@u****u 12
github-actions[bot] 4****] 9
olof3 o****t@c****e 9
Jerome LE NY j****y@p****a 8
Michele Zaffalon m****n@g****m 7
Fredrik Bagge Carlson b****n@g****m 5
KronosTheLate 6****e 3
Tiago Oliva t****a@g****m 2
olof3 - 2
Uwe Fechner u****c@g****m 2
CompatHelper Julia c****y@j****g 2
Andre Rodrigues Simoes a****s@g****m 2
Adrian Hill a****l@m****g 2
HappyControlEngineering 4****g 2
Tony Kelman t****y@k****t 2
femtocleaner[bot] f****] 2
freemin7 2****7 2
Jaakko Ruohio j****2 1
Jonnie Diegelman 4****e 1
Mattias Fält J****3 1
agerlach 5****h 1
Albin Heimerson a****m@h****m 1
Aditya Mahajan a****m@u****u 1
and 13 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 98
  • Total pull requests: 257
  • Average time to close issues: almost 2 years
  • Average time to close pull requests: 3 months
  • Total issue authors: 45
  • Total pull request authors: 19
  • Average comments per issue: 7.36
  • Average comments per pull request: 2.54
  • Merged pull requests: 198
  • Bot issues: 0
  • Bot pull requests: 16
Past Year
  • Issues: 15
  • Pull requests: 100
  • Average time to close issues: 4 days
  • Average time to close pull requests: 3 days
  • Issue authors: 12
  • Pull request authors: 6
  • Average comments per issue: 1.4
  • Average comments per pull request: 2.09
  • Merged pull requests: 79
  • Bot issues: 0
  • Bot pull requests: 8
Top Authors
Issue Authors
  • baggepinnen (12)
  • albheim (7)
  • B-LIE (7)
  • mzaffalon (6)
  • hurak (6)
  • franckgaga (4)
  • mfalt (4)
  • olof3 (4)
  • jamestjsp (3)
  • ufechner7 (3)
  • lucasmsoares96 (2)
  • fibonatic (2)
  • scls19fr (2)
  • fedeinthemix (2)
  • KronosTheLate (2)
Pull Request Authors
  • baggepinnen (201)
  • github-actions[bot] (18)
  • mfalt (8)
  • franckgaga (7)
  • mzaffalon (7)
  • KronosTheLate (3)
  • VaiTon (3)
  • CasBex (2)
  • albheim (2)
  • gdalle (2)
  • tallakt (2)
  • olof3 (2)
  • jaakkor2 (1)
  • gruberchr (1)
  • pietrop88 (1)
Top Labels
Issue Labels
enhancement (5) help wanted (2) v1 (2) bug (1) priority (1) question (1) promotion-conversion (1) plots (1) decision-needed (1)
Pull Request Labels

Packages

  • Total packages: 2
  • Total downloads:
    • julia 757 total
  • Total dependent packages: 19
    (may contain duplicates)
  • Total dependent repositories: 6
    (may contain duplicates)
  • Total versions: 163
juliahub.com: ControlSystems

A Control Systems Toolbox for Julia

  • Versions: 89
  • Dependent Packages: 9
  • Dependent Repositories: 6
  • Downloads: 261 Total
Rankings
Forks count: 1.3%
Stargazers count: 1.4%
Average: 3.4%
Dependent repos count: 4.2%
Dependent packages count: 6.7%
Last synced: 6 months ago
juliahub.com: ControlSystemsBase

A Control Systems Toolbox for Julia

  • Versions: 74
  • Dependent Packages: 10
  • Dependent Repositories: 0
  • Downloads: 496 Total
Rankings
Forks count: 1.2%
Stargazers count: 1.4%
Average: 5.0%
Dependent packages count: 7.6%
Dependent repos count: 9.9%
Last synced: 6 months ago

Dependencies

.github/workflows/PRCommentResponder.yaml actions
  • gr2m/get-json-paths-action v1.x composite
  • octokit/request-action v2.x composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/docs.yml actions
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/test.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/CompatHelper.yml actions
.github/workflows/PingControlExamplePlots.yml actions