CACSD with Python - SUPSIrepository.supsi.ch/5918/1/PresentazionePython.pdf · DTI / ISEA / LSM /...
Transcript of CACSD with Python - SUPSIrepository.supsi.ch/5918/1/PresentazionePython.pdf · DTI / ISEA / LSM /...
DTI / ISEA / LSM / Titolo principale della presentazione
CACSD with Python
Prof. Roberto BucherSUPSI - ISEA – SMT
Rapperswil 28.01.2014
SGA Meeting und
Preisübergabe Förderpreis 2013
DTI / ISEA / LSM / Titolo principale della presentazione
Outline
• Introduction• CACSD environment• Python• Examples
• Comparison Matlab – Scicoslab -Python
• Code generation
• Conclusions
DTI / ISEA / LSM / Titolo principale della presentazione
Introduction
• Matlab / Simulink are “de facto” THE TOOLS in education
• But...– What happens wenn our (ex-) students have to develop
advanced control systems in little companies?– Mathworks licenses are too expensive for most little
companies!
DTI / ISEA / LSM / Titolo principale della presentazione
CACSD - Matlab alternatives
CACSD Tool Matrix/Algebra Hybrid Simulator Discrete Events
Code generationfor emb. Sys.
Matlab ✔ Matlab ✔ Simulink ✔ Stateflow ✔ RTW
Scicoslab/NSP ✔ Scilab ✔ Scicos ✔ SMCube1 ✔ 2
Scilab ✔ Scilab ✔ xCos - (-)3
Octave ✔ Matlab like - - -
1 Commercial2 Free + Commercial (RTAICodeGen, E4Coder)3 Modified RTAICodeGen, Scilab 6.x
DTI / ISEA / LSM / Titolo principale della presentazione
CACSD - Matlab alternatives
CACSD Tool Matrix/Algebra Hybrid Simulator Discrete Events
Code generationfor emb. Sys.
Matlab ✔ Matlab ✔ Simulink ✔ Stateflow ✔ RTWScicoslab/NSP ✔ Scilab ✔ Scicos ✔ SMCube1 ✔ 2
Scilab ✔ Scilab ✔ xCos - (-)3
Octave ✔ Matlab like - - -
Python ✔ (✔) Simpy4 (✔)
1 Commercial2 Free + Commercial (RTAICodeGen, E4Coder)3 Modified RTAICodeGen, Scilab 6.x4 No graphical editor
DTI / ISEA / LSM / Titolo principale della presentazione
Python
• Python is a general-purpose, high-level, object oriented programming language similar to Matlab, Scicoslab, Scilab and Octave.
• Its implementation was started in December 1989 (Guido van Rossum at Centrum Wiskunde & Informatica in the Netherlands)
• Python is often used as a scripting language, but is also used in a wide range of non-scripting contexts.
• Distributed under the Python Software Foundation License (PSFL) similar to BSD license.
• Very large community of developers!
DTI / ISEA / LSM / Titolo principale della presentazione
Python
• Numpy numeric array• Scipy scientific functions
– FFT, Integrate, Interpolate, Optimize, Signal, Sparse,Statistic
• Matplotlib Plot functions• PyQt Integration with Qt Libraries• Python-Qwt5 Integration with Qt Widgets• ...• Python Control Systems Library (python-control)
DTI / ISEA / LSM / Titolo principale della presentazione
Python for Matlab users
• The python scripting language is similar to Matlab– http://wiki.scipy.org/NumPy_for_Matlab_Users
• Main differencies:– Indexing (Python is 0 based!)
– Array/Matrix distinction (linear algebra operations!)
– Importing of functions
• from np.linalg import *
• from control.matlab import ss, tf
DTI / ISEA / LSM / Titolo principale della presentazione
Python Control Systems Library (python-control)
• 2009-2011– Richard Murray1 – Caltech
• Control-0.3a– Continous Time systems– SISO Systems
• 2011– Roberto Bucher (SUPSI)
• yottalab.py– MIMO systems– Discrete Time systems (Field Tsamp!)– Set of functions to handle discrete time systems.– Design of complex discrete controllers was possible!
– yottalab.py distributed with control toolbox as separate toolbox
1 Aström and Murray – Feedback Systems
DTI / ISEA / LSM / Titolo principale della presentazione
Python Control Systems Library (python-control)
• Situation 2014
– Richard Murray (Caltech)
• Control-0.6c
– Some ideas and functions migrated from yottalab to python-control
– Discrete Time systems (dt: sampling time)
– Functions related to discrete time systems
– Roberto Bucher (SUPSI)
• Supsictrl
– yottalab.py
» Few functions not cleanly implemented by Richard Murray
» Some additional functions to simplify the controller design (observer, reduced order observer, controllers in compact form, anti windup design, etc.)
– RCPblk.py
» Toolbox for Rapid Controller Prototyping, hybrid simulation and Code generation for RT systems
DTI / ISEA / LSM / Titolo principale della presentazione
Python for control – Other related projects
• Ryan Krauss (Southern Illinois University Edwardsville)
– controls.py
• Some routines related to transfer functions (continous and discrete) only for education purposes.
• Python control systems, with only one developper, Rafael G. Martins (only for education purposes)
• Stephen Boyd and Lieven Vandenberghe are now mostly developing optimization libraries, but a few applications specific to control systems can be found on their page
DTI / ISEA / LSM / Titolo principale della presentazione
Python for Control
• Files– Ipython– Numpy– Scipy
– Matplotlib
– Avventi Slycot
– Control-0.6c
– Yottalab.py
– RCPblk.py
– pyBlockEdit
DTI / ISEA / LSM / Titolo principale della presentazione
Python for Control
• Files– Ipython– Numpy– Scipy
– Matplotlib
– Avventi Slycot
– Control-0.6c
– Yottalab.py
– RCPblk.py
– pyBlockEdit
DTI / ISEA / LSM / Titolo principale della presentazione
Python for Control
• Files– Ipython– Numpy– Scipy
– Matplotlib
– Avventi Slycot
– Control-0.6c
– Yottalab.py
– RCPblk.py
– pyBlockEdit
DTI / ISEA / LSM / Titolo principale della presentazione
Python for Control
• Files– Ipython– Numpy– Scipy– Matplotlib– Avventi Slycot– Control-0.6c– Yottalab.py– RCPblk.py– pyBlockEdit
DTI / ISEA / LSM / Titolo principale della presentazione
Python + CodeGen + Simulation
fname = 'disks'genCode(fname,4,0.01,[sq1, Plant, contr, prnt])genMake(fname)
DTI / ISEA / LSM / Titolo principale della presentazione
Python + CodeGen + Simulation
fname = 'disks'genCode(fname,4,0.01,[sq1, Plant, contr, prnt])genMake(fname)
DTI / ISEA / LSM / Titolo principale della presentazione
Python + CodeGen + Simulation
fname = 'disks'genCode(fname,4,0.01,[sq1, Plant, contr, prnt])genMake(fname)
DTI / ISEA / LSM / Titolo principale della presentazione
Code generation
• Find the right block sequence• Generate the C code with 3
functions:– Init
• Initialization– ISR
• Outputs update• States update
– Termination
DTI / ISEA / LSM / Titolo principale della presentazione
Code generation
Standard C-Code
DsPIC board
Linux ARM
PC with Linux RTAIor PREEMPT RT
DTI / ISEA / LSM / Titolo principale della presentazione
Real-time execution
• State feedback controller with integral part• Code generated from Python as PREEMPT_RT executable• 10 ms Sampling time
DTI / ISEA / LSM / Titolo principale della presentazione
Real-time execution
• State feedback controller with integral part• Code generated from Python as PREEMPT_RT executable• 10 ms Sampling time
DTI / ISEA / LSM / Titolo principale della presentazione
Real-time execution
• State feedback controller with integral part• Code generated from Python as PREEMPT_RT executable• 10 ms Sampling time
DTI / ISEA / LSM / Titolo principale della presentazione
Conclusions
• Which alternatives to Matlab / Simulink / RTW?
• Python for control is promising, but not enough mature yet• Python control is an education toolbox, but not ready for industrial
development• But
Freedom to develop what we want and need• Urgent
– Rewrite some functions (ex. Pole placement for MIMO system gives bad results)
– Graphical editor for block diagram!