All Projects → JuliaControl → Controlsystems.jl

JuliaControl / Controlsystems.jl

Licence: other
A Control Systems Toolbox for Julia

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Controlsystems.jl

PyConSys
Python Control System : Create control loops and let the AI set the PID parameters
Stars: ✭ 21 (-91.89%)
Mutual labels:  control-systems
LTVModels.jl
Tools to estimate Linear Time-Varying models in Julia
Stars: ✭ 14 (-94.59%)
Mutual labels:  control-systems
EL6483 EmbeddedSystems
All course materials, build systems, etc. for the graduate Real-Time Embedded Systems Course, Spring 2017
Stars: ✭ 14 (-94.59%)
Mutual labels:  control-systems
AutomationShield
Arduino library and MATLAB/Simulink API for the AutomationShield Arduino expansion boards for control engineering education.
Stars: ✭ 22 (-91.51%)
Mutual labels:  control-systems
Google-Summer-of-Code-with-SymPy
This repository showcases my proposal, final report, and the work done during Google Summer of Code 2020 with the SymPy project.
Stars: ✭ 12 (-95.37%)
Mutual labels:  control-systems
LibDS
Library for controling FRC robots
Stars: ✭ 29 (-88.8%)
Mutual labels:  control-systems
mpc
A software pipeline using the Model Predictive Control method to drive a car around a virtual track.
Stars: ✭ 119 (-54.05%)
Mutual labels:  control-systems
keras2c
A simple library to deploy Keras neural networks in pure C for realtime applications
Stars: ✭ 25 (-90.35%)
Mutual labels:  control-systems
signalo
A DSP toolbox with focus on embedded environments written in Rust.
Stars: ✭ 71 (-72.59%)
Mutual labels:  control-systems
Director
Director is a facility scale broadcast orchestration and control suite. Not actively maintained
Stars: ✭ 35 (-86.49%)
Mutual labels:  control-systems
FARNN
Code that trains cancer soft-robot networks
Stars: ✭ 15 (-94.21%)
Mutual labels:  control-systems
control
Control in C++
Stars: ✭ 17 (-93.44%)
Mutual labels:  control-systems
ParallelCollectionMonitoring
使用数十个.NET客户端控制硬件设备进行工作,采集数据并进行处理,管理人员通过 Android 应用实时控制各设备的工作。本作品获得第十二届中国研究生电子设计竞赛华南赛区一等奖。
Stars: ✭ 21 (-91.89%)
Mutual labels:  control-systems
SLICOT-Reference
SLICOT - A Fortran subroutines library for systems and control
Stars: ✭ 19 (-92.66%)
Mutual labels:  control-systems
nn robustness analysis
Python tools for analyzing the robustness properties of neural networks (NNs) from MIT ACL
Stars: ✭ 36 (-86.1%)
Mutual labels:  control-systems
CRAWLAB-Code-Snippets
Small pieces of code for use in CRAWLAB research
Stars: ✭ 12 (-95.37%)
Mutual labels:  control-systems
SymbolicControlSystems.jl
An interface between ControlSystems.jl and SymPy.jl
Stars: ✭ 20 (-92.28%)
Mutual labels:  control-systems
RobustAndOptimalControl.jl
Robust and optimal design and analysis of linear control systems
Stars: ✭ 25 (-90.35%)
Mutual labels:  control-systems
MatrixEquations.jl
Solution of Lyapunov, Sylvester and Riccati matrix equations using Julia
Stars: ✭ 31 (-88.03%)
Mutual labels:  control-systems
bht-ams-playerstage
Player/Stage SLAM
Stars: ✭ 35 (-86.49%)
Mutual labels:  control-systems

ControlSystems.jl

Build Status Documentation Status

PkgEval codecov

A control systems design toolbox for Julia.

Installation

To install, in the Julia REPL:

using Pkg; Pkg.add("ControlSystems")

News

2021-01

  • Breaking: Support for julia versions older than 1.3 is dropped
  • Breaking: c2d(::StateSpace) now returns only the system, not the x0map. See c2d_x0map for the old functionality.
  • System order can be specified in baltrunc.
  • New discretization methods in c2d. We now support :zoh,:foh,:fwdeuler,:tustin
  • Symbolic computation utilities in SymbolicControlSystems.jl

More details under releases.

2020-10

  • lsimplot, stepplot, impulseplot now have the same signatures as the corresponding non-plotting function.
  • New function d2c for conversion from discrete to continuous.

2020-09-24

Release v0.7 introduces a new TimeEvolution type to handle Discrete/Continuous systems. See the release notes.

2019-11-03

  • Poles and zeros are "not sorted" as in Julia versions < 1.2, even on newer versions of Julia. This should imply that complex conjugates are kept together.

2019-05-28

Delay systems

  • We now support systems with time delays. Example:
sys = tf(1, [1,1])*delay(1)
stepplot(sys, 5) # Compilation time might be long for first simulation
nyquistplot(sys)

New examples

2019-05-22

New state-space type HeteroStateSpace that accepts matrices of heterogeneous types: example using StaticArrays.

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

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

Synthesis

care, dare, dlyap, lqr, dlqr, 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.

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*((J*s + b)*(L*s + 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[kp*P/(1 + kp*P) for kp = [1, 5, 15]];

# Plot the step response of the controllers
# Any keyword arguments supported in Plots.jl can be supplied
stepplot(CLs, label=["Kp = 1" "Kp = 5" "Kp = 15"])

StepResponse

Additional examples

See the examples folder and ControlExamples.jl

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].