CACSD with Python - SUPSIrepository.supsi.ch/5918/1/PresentazionePython.pdf · DTI / ISEA / LSM /...

34
DTI / ISEA / LSM / Titolo principale della presentazione CACSD with Python Prof. Roberto Bucher SUPSI - ISEA – SMT Rapperswil 28.01.2014 SGA Meeting und Preisübergabe Förderpreis 2013

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

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

Comparison Matlab / Scicoslab / Python

DTI / ISEA / LSM / Titolo principale della presentazione

Matlab + Simulink

DTI / ISEA / LSM / Titolo principale della presentazione

Matlab + Simulink

DTI / ISEA / LSM / Titolo principale della presentazione

Scicoslab + Modelica

DTI / ISEA / LSM / Titolo principale della presentazione

Scicoslab + Modelica

DTI / ISEA / LSM / Titolo principale della presentazione

Scicoslab + Modelica

DTI / ISEA / LSM / Titolo principale della presentazione

Python

Demo 1

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

Python

Demo 2

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!

DTI / ISEA / LSM / Titolo principale della presentazione

Questions?