• Non ci sono risultati.

STUDIO TEORICO SUL CONTROLLO OTTIMO IN TEMPO REALE DI UN SISTEMA NON LINEARE E APPLICAZIONE SPERIMENTALE AD UN BRACCIO ROBOTICO CON ATTUATORI ELASTICI

N/A
N/A
Protected

Academic year: 2021

Condividi "STUDIO TEORICO SUL CONTROLLO OTTIMO IN TEMPO REALE DI UN SISTEMA NON LINEARE E APPLICAZIONE SPERIMENTALE AD UN BRACCIO ROBOTICO CON ATTUATORI ELASTICI"

Copied!
82
0
0

Testo completo

(1)

Facoltà di Ingegneria

Laurea Magistrale in Ingegneria Robotica e dell'Automazione

Tesi di laurea

Candidato:

Enrico Centeni Romani

Relatori:

Antonio Bicchi

Manolo Garabini

STUDIO TEORICO SUL CONTROLLO OTTIMO IN

TEMPO REALE DI UN SISTEMA NONLINEARE E

APPLICAZIONE SPERIMENTALE AD UN BRACCIO

ROBOTICO CON ATTUATORI ELASTICI

Sessione di Laurea del 28/09/2017 Anno Accademico 2016/2017

(2)
(3)

(Confucio)

(4)

1 Introduzione 1

2 Metodi Numerici per il Controllo Ottimo 3

2.1 Formulazione generale di un problema di controllo ottimo . . . 3

2.2 Problema di controllo ottimo affrontato . . . 4

2.3 Metodi risolutivi per problemi di controllo ottimo . . . 4

2.3.1 Metodi indiretti . . . 6

2.3.2 Metodi diretti . . . 9

2.3.3 Dynamic Programming . . . 11

2.3.4 Metodi diretti e indiretti: approcci . . . 12

2.3.5 Controllo ottimo bang-bang . . . 15

2.4 FeedForward e FeedBack . . . 16

2.5 NMPC . . . 16

2.5.1 Principio di funzionamento . . . 16

2.5.2 Stabilità . . . 18

2.5.3 Riepilogo . . . 19

2.6 Metodi/applicativi per OCP in FeedForward . . . 19

2.6.1 Considerazioni generali . . . 20

3 Formulazione del Problema 22 3.1 Applicazioni . . . 22

3.2 Problema di Controllo Ottimo . . . 22

3.3 Modelli . . . 24

3.3.1 Braccio R SEA/VSA a 2 DoF . . . 24

3.3.2 Braccio SEA a 4 DoF . . . 27

4 Soluzioni Proposte 30 4.1 IS-BVP Solver . . . 30

4.1.1 Algoritmo . . . 31

4.1.2 Esempio: Manipolatore rotoidale controllato in posizione . . 32

4.1.3 Pro e contro . . . 34 4.2 Evolution Tree . . . 34 4.2.1 Fase Offline . . . 36 4.2.2 Fase Online . . . 37 4.2.3 Pro e contro . . . 39 4.3 Evolution Network . . . 40 4.3.1 Pro e contro . . . 42 iv

(5)

5 Simulazioni 43

5.1 Simulazioni in Feed-Forward . . . 43

5.1.1 Controllo in velocità R SEA . . . 44

5.1.2 Controllo in velocità R VSA . . . 46

5.1.3 Controllo in velocità RR SEA . . . 49

5.2 Accuratezza Evolution Tree in base al numero di livelli . . . 49

5.3 Controllo NMPC: IH-NMPC . . . 51

5.4 Simulazioni in FeedBack . . . 52

5.4.1 Sistema nominale . . . 52

5.4.2 Sistema perturbato . . . 53

5.5 Applicazione: Simulazione di tiro oggetti . . . 55

6 Esperimenti 58 6.1 Il robot fisico . . . 58

6.2 Identificazione . . . 59

6.3 Dettagli di implementazione . . . 62

6.3.1 Controllo in velocità . . . 62

6.3.2 Codice: Da Matlab a C via Armadillo . . . 62

6.4 Esperimenti . . . 62

A Codice 68

(6)

2.1 Minimo locale e minimo globale . . . 5

2.2 Analogia orizzonte infinito - orizzonte finito: la strada che presumo più corta non è detto che lo sia veramente . . . 18

2.3 Schema NMPC . . . 18

3.1 Applicazioni di interesse . . . 23

3.2 Manipolatore Planare R SEA sotto l’azione della gravità . . . 24

3.3 Sistema RR . . . 27

3.4 giunto SEA . . . 27

4.1 Manipolatore Planare R SEA sotto l’azione della gravità . . . 32

4.2 IS-BVPS - Esempio Interazioni Algoritmo . . . 33

4.3 Albero Binario . . . 36

4.4 Sottospazio di ricerca Evolution Tree . . . 38

4.5 Ottimizzazione locale: variazione dei tempi di switch dell’ottimizza-zione globale (caso con 2 tempi di switch) . . . 39

4.6 Esempio: Nodi in insieme non convesso. La linea rossa rappresenta la traiettoria per arrivare al nodo A, mentre le linee versi sono le traiettorie che nascono dal nodo B . . . 41

5.1 Simulazioni: Manipolatore Planare R SEA, tempo finale task 0.5 sec 44 5.2 Simulazioni: Manipolatore Planare R SEA, tempo finale task 1 sec . 45 5.3 Simulazioni: Manipolatore Planare R VSA, tempo finale task 0.5 sec 47 5.4 Simulazioni: Manipolatore Planare R VSA, tempo finale task 1 sec 48 5.5 Simulazioni: Manipolatore Planare RR SEA, tempo finale task 0.5 sec 49 5.6 Accuratezza ETS al variare della discretizzazione dell’albero: caso R SEA . . . 50

5.7 Accuratezza ETS al variare della discretizzazione dell’albero: caso R VSA . . . 50

5.8 Accuratezza ETS al variare della discretizzazione dell’albero: caso RR SEA . . . 51

5.9 NMPC: Sistema Nominale - Evoluzione stati in simulazione . . . 53

5.10 NMPC: Sistema Nominale - Evoluzione controlli in simulazione . . . 54

5.11 NMPC: Sistema Nominale - Evoluzione indice di performance in simulazione . . . 54

5.12 NMPC: Sistema Perturbato - Evoluzione stati in simulazione . . . . 55

5.13 NMPC: Sistema Perturbato - Evoluzione controlli in simulazione . . 55

(7)

5.14 NMPC: Sistema Perturbato - Evoluzione indice di performance in

simulazione . . . 56

5.15 Simulazione: Evoluzione braccio durante il tiro . . . 57

6.1 Braccio fisico complessivo . . . 58

6.2 Trasmissione moto angolare braccio fisico . . . 59

6.3 Insieme link 1 link 2 . . . 60

6.4 Controllo in Velocità: Ritardo Input . . . 62

6.5 Esperimento 1 - [x1(tf) x2(tf)] = [0 π4] : Evoluzione stato . . . 63

6.6 Esperimento 1 - [x1(tf) x2(tf)] = [0 π4] : Evoluzione controlli . . . . 63

6.7 Esperimento 1 - [x1(tf) x2(tf)] = [0 π4] : Indice di Performance . . . 64

6.8 Esperimento 2 - [x1(tf) x2(tf)] = [π4 π4] : Evoluzione stato . . . 64

6.9 Esperimento 2 - [x1(tf) x2(tf)] = [π4 π4] : Evoluzione controlli . . . . 64

(8)

Viene presentato un metodo per ottenere soluzioni numeriche di problemi di controllo ottimo (OCP) per sistemi di equazioni differenziali ordinarie con possibili applicazioni in task dinamici in combinazione con algoritmi di controllo predittivo basato sul modello. Il metodo in questione è pensato per applicazioni che necessitano la risoluzione di OCP in breve tempo e può sfruttare in modo efficiente la conoscenza pregressa (ottenuta ad esempio con l’applicazione del Principio di Massimo) di archi di controlli ottimi determinando la loro lunghezza e sequenza.

Il metodo presentato è stato applicato in simulazione e ad un prototipo reale di manipolatore robotico planare a due gradi di libertà con giunti elastici.

Sperimentalmente è stato ottenuto che il sistema nella configurazione testata riesce a raggiungere una velocità superiore al doppio di quella raggiungibile senza giunti elastici. L’approccio con controllo predittivo permette una riduzione del-l’errore sulla posa finale desiderata del robot fino a 10 volte circa rispetto ad un esperimento eseguito con controllo in ciclo aperto.

Abstract

We presented a method for obtaining numerical solutions of optimal control problems (OCP) for systems of ordinary differential equations with possible appli-cations in dynamic tasks in combination with predictive control algorithms based on the model. The method is intended for applications that require the resolution of OCP in a short time and can efficiently exploit the prior knowledge ( obtained for example by the application of the Principle of Maximum) of control’s arcs by determining their length and sequence.

The presented method has been applied in simulation and to a real prototype of planar robotic manipulator with two degrees of freedom with elastic joints.

Experimentally it was obtained that the system in the tested configuration is able to reach a speed higher than double that attainable without elastic joints. The approach with predictive control enables a reduction of the error on the desired final pose of the robot up to 10 times compared to about an experiment conducted with control in open loop.

(9)

Ringrazio la mia famiglia, che mi ha sempre supportato in tutto il mio percorso di studi. Ringrazio i miei amici, in cui ho sempre potuto trovare una spalla su cui appoggiarmi. Ringrazio il mio Relatore Antonio Bicchi e Correlatore Manolo Garabini, per avermi aiutato nella stesura della Tesi e per aver reso possibile la conclusione del mio percorso universitario. Ringrazio tutte le persone che, nel bene o nel male, hanno contribuito a rendermi la persona che sono oggi.

Grazie a tutti

Pisa, 2017 Enrico Centeni Romani

(10)

Introduzione

I meccanismi di attuazione robotici a rigidezza costante “Series elastic actuators” (SEA) o variabile “Variable Stiffness Actuators” (VSA) hanno acquisito una certa importanza a livello accademico grazie alle loro peculiarità in termini di possibilità di incremento di performance [18] e safety [5]. Questi ci permettono di poter eseguire dei task robotici in modo da ottimizzare certe variabili durante il moto del robot, tra cui ad esempio fattori di consumo energetico, minimizzando l’energia totale da dare in ingresso al sistema, o ad esempio per scopi diametralmente opposti, tra cui ad esempio massimizzare l’energia cinetica totale ad un certo tempo fissato per scopi quali urti. Questi tipi di applicazioni sono state affrontate ad esempio in [15] [16] [20] dove si ottiene un significativo miglioramento delle performance, sia nel caso di attuatori a rigidità fissata o variabile.

Con questi meccanismi è quindi possibile a parità di hardware del braccio, ovvero coppia massima e velocità massima dei motori, ottenere significativi miglioramenti in velocità ed altre variabili di interesse, e questo solamente conferendo al giunto una certa elasticità (fissa o variabile).

Questi problemi possono essere formalizzati da un punto di vista teorico come dei problemi di controllo ottimo (OCP). Sfortunatamente però, a meno di voler risolvere problemi molto semplici (LQR a orizzonte infinito, problemi lineari, casi particolari) non esistono metodologie che ci permettono di risolvere OCP generali ottenendo soluzioni in forma chiusa, molto spesso è irrinunciabile ricorrere a metodi di risoluzione in forma numerica [24].

Occorre precisare però che questi metodi, se associati al controllo di un robot reale, hanno lo scopo di fornire gli ingressi del sistema in feedforward, quindi non garantiscono nessun tipo di stabilità o robustezza del sistema stesso in caso di incertezze di modello, dei suoi parametri o disturbi. Risulta quindi necessario in molti casi e applicazioni usufruire della retroazione di stati o uscite al fine di garantire la stabilità e robustezza del sistema. Viene utilizzato quindi uno schema di controllo Nonlinear Model Predictive Control (NMPC) per il caso preso in esame.

Verranno trattati principalmente problemi relativi al massimizzare determinate variabili nel solo tempo finale del task tf, rispettando dei vincoli imposti sul valore

dello stato al tempo finale desiderato, ed in alcuni casi sarà possibile generalizzare i risultati ottenuti. Un fattore molto importante preso in considerazione, e che giocherà un ruolo fondamentale nella scelta dei metodi in esame, sarà quello di voler risolvere tutti i calcoli in tempo reale. Questo significa, nei casi presi in esame,

(11)

risolvere il problema a ciclo aperto in qualche frazione di secondo, e di poter effettuare il controllo a ciclo chiuso riuscendo a gestire i calcoli computazionali durante il controllo NMPC (rispettando tutte le deadline del controllo). Queste considerazioni ci porteranno alla scelta di dover eseguire parte dei modesti conti “fuori-linea”, ovvero in un momento precedente, memorizzando alcuni dati in memoria.

Verranno poi proposti due metodi di risoluzione a ciclo aperto, uno diretto ed uno indiretto, scegliendo il primo per le sue capacità di rispondere in maniera adeguata alle stringenti esigenze temporali del controllo. Per confrontare i principali metodi in feed-forward verranno utilizzati alcuni casi di interesse.

Verrà infine illustrato un problema riguardante la massimizzazione della velocità dell’end effector di un manipolatore planare RR con rigidezza fissata ai giunti (4 DoF). La bontà del metodo verrà confermata sia in ambito simulativo, tramite l’ambiente di lavoro Matlab, sia in ambito sperimentale. In quest’ultimo caso è stato utilizzato un braccio costruito nel centro di ricerca E. Piaggio dell’Università di Pisa. In molti casi possiamo riscontrare un aumento delle variabili di interesse di un fattore 2 o addirittura superiore, e il tutto aggiungendo un semplice elastico nella trasmissione tra motori e assi di rotazione dei link del robot.

Il secondo capitolo offre una breve panoramica dei principali metodi di risolu-zione numerici di problemi di controllo ottimo generici illustrando anche casi particolari quali il controllo bang bang. Viene poi mostrato un controllo a ciclo chiuso che può trattare nella sua formulazione indici di performance e sistemi non lineari, il Nonlinear Model Predictive Control (NMPC).

Il terzo capitolo mostra nello specifico il problema che si intende affrontare, ovvero la massimizzazione della velocità dell’end-effector al tempo finale di un task con un braccio robotico a 1 o 2 giunti, SEA o VSA.

Il quarto capitolo mostra i metodi proposti in questa tesi per la risoluzione di problemi di controllo ottimo in tempo reale per task robotici di circa 1 secondo.

Il quinto capitolo vengono modellati alcuni esempi di manipolatori robotici con giunti elatici a 2 e 4 gradi di libertà. Con questi vengono poi eseguite delle simulazioni di confronto tra i metodi per la risoluzione di OCP presi in esame. Infine, per il metodo proposto in questa tesi, vengono fatte delle simulazioni su un braccio robotico a 4 DoF ad anello aperto e chiuso, con e senza disturbi.

Il sesto capitolo mostra vari esperimenti sul braccio robotico a 4 DoF, illustran-do come il controllore predittivo a ciclo chiuso NMPC possa aumentare le prestazioni rispetto al caso di sua assenza.

L’appendice A riporta qualche porzione di codice prodotta e utilizzata durante il lavoro di tesi.

(12)

Metodi Numerici per il Controllo

Ottimo

In questo capitolo viene formulato un problema di controllo ottimo in manie-ra genemanie-rale ed illustmanie-rate in maniemanie-ra sintetica le principali tecniche numeriche di risoluzione e le loro varie classificazioni. Viene poi introdotto il controllore NM-PC utilizzato per porre in retroazione il sistema ed infine i principali applicativi utilizzati nel corso di questa tesi.

2.1

Formulazione generale di un problema di

con-trollo ottimo

Un problema di controllo ottimo è posto in maniera generale come segue: determinare lo stato x(t) ∈ Rn, il controllo u(t) ∈ Rm, il vettore dei parametri

p ∈ Rq, il tempo iniziale t0 ∈ R e finale tf ∈ R, con t ∈ [t0, tf] variabile indipendente,

che ottimizza l’indice di performance in forma di Bolza (massimizza o minimizza) J = φ[x(t0), t0, x(tf), tf, p] +

Z tf

t0

ψ(x(t), u(t), t, p)dt (2.1) soggetto ai seguenti vincoli:

• dinamica del sistema

˙x(t) = f (x(t), u(t), t, p) (2.2) • path constraints

Cmin ≤ C[x(t), u(t), t, p] ≤ Cmax (2.3)

• condizioni al contorno (boundary conditions)

Θmin ≤ Θ[x(t0), t0, x(tf), tf, p] ≤ Θmax (2.4)

l’indice di performance è una misura della qualità della traiettoria e la (2.2) è la dinamica dello stato.

(13)

2.2

Problema di controllo ottimo affrontato

Si vuole risolvere un OCP in forma

minu J = φ(x(tf)) subject to ˙x = f (x(t), u(t), t) x(t0) = x0 c(x(tf)) = θ umin ≤ u ≤ umax ∀t ∈ [t0, tf] (2.5)

dove ˙x = f (x(t), u(t), t) rappresenta la dinamica di un sistema nonlineare descritta da equazioni differenziali ordinarie con x(t) ∈ Rn vettore dello stato, u(t) ∈ Rm vettore dei controlli e x0 condizioni iniziali; J = φ(x(tf)) rappresenta

l’indice di performance che dipende esclusivamente dallo stato al tempo finale, tf;

c(x(tf)) rappresenta un vincolo dipendente dallo stato al tempo finale.

2.3

Metodi risolutivi per problemi di controllo

ot-timo

Esistono molte classificazioni possibili per i metodi di risoluzione in forma numerica di questi problemi. Una abbastanza generale è data dalla suddivisione in questi 3 grandi gruppi, riportata da Diehl [12] e Sager [25]:

• metodi indiretti: viene utilizzato il calcolo variazionale per derivare le condizioni di ottimalità del primo ordine (FOOC). Questo porta a formalizzare il problema come un Boundary Value Problem (BVP) e quindi risolve il problema originale indirettamente perché non si cerca più di massimizzare o minimizzare un certo funzionale di costo direttamente, ma in realtà si risolve un BVP. I metodi di soluzione analitica per equazioni differenziali ordinarie (ODE) riguardano poche classi di equazioni del primo ordine (es. lineari, a variabili separabili ecc.), per cui in caso generale se le equazioni della dinamica (2.2) sono equazioni differenziali ordinarie generiche, occorre risolvere il BVP con metodi numerici. L’approccio è definito anche “first optimize then discretize” poiché prima si ricavano le condizioni di ottimalità,

poi si integra la dinamica con metodi numerici.

• metodi diretti: il controllo u(t) e/o lo stato x(t) vengono discretizzati appros-simandoli a funzioni ad esempio polinomiali, vengono scelti un set di parametri variabili ed il problema viene poi risolto in termini di programmazione non lineare (NLP). Questo significa trascrivere un problema di ottimizzazione a dimensione infinita con uno a dimensione finita, minimizzando la funzione costo con i parametri variabili oggetto dell’ottimizzazione. In questo caso l’approccio è “first discretize then optimize”, prima si discretizza il problema e poi si controllano le condizioni di ottimalità.

(14)

• programmazione dinamica DP: si basa sul principio di ottimalità dell’equazione di Bellman nel caso discreto, mentre l’analogo nel caso continuo di basa

sull’equazione alle derivate parziali di Hamilton-Jacobi-Bellman (HJB). Rao [24] organizza la classificazione con i soli metodi diretti ed indiretti, come Betts [4] che però riserva per i metodi di programmazione dinamica un paragrafo a parte. E’ stata scelta la classificazione di Diehl per porre chiarezza sui vari metodi, senza lasciare spazio ad incertezze sulla collocazione della DP.

Se l’OCP si riconduce ad un problema di ottimizzazione possiamo distinguere tra

• metodi locali: Il loro obiettivo è la ricerca del minimo locale dell’indice di performance, ovvero il punto in cui il valore della funzione è minore o uguale al valore dei punti nel suo intorno, ma forse maggiore che in un punto lontano da esso.

• metodi globali: Ricercano invece il minimo globale, il punto in cui il valore dell’indice di performance è minore o uguale al valore di tutti gli altri punti presenti nel dominio delle soluzioni ammissibili.

minimo locale

minimo locale e globale

Figura 2.1: Minimo locale e minimo globale

Una volta ricondotto il problema ad un metodo diretto o indiretto è possibile utilizzare per la risoluzione degli stessi i seguenti

• metodi di shooting

• metodi di multiple-shooting • metodi di collocation

In tutti i casi risulta indispensabile saper risolvere un Initial Value Problem (IVP), ovvero integrare le equazioni della dinamica in un certo intervallo di tempo (es. in [t0, tf]).

Formalizziamo quindi un IVP, per poi illustrare i metodi di risoluzione per problemi di controllo ottimo partendo dalla classificazione di metodi diretti, indiretti e derivanti dalla programmazione dinamica.

(15)

Problema 1 (IVP). Dati:

un sistema di n equazioni differenziali

˙x = f (x(t), t) (2.6)

il valore dello stato in un determinato tempo tinit

x(tinit) (2.7)

si vuole determinare il valore dello stato al tempo tf inal x(tf inal), con tinit6= tinit,

integrando le equazioni differenziali

x(tf inal) = x(tinit) +

Z tf inal

tinit

˙x(s)ds (2.8)

I metodi principali per risolvere IVP numericamente sono Metodi Multi-Step, Metodi Multi-Stage o Metodi di Collocazione. Gli ultimi verranno brevemente introdotti nella sezione2.3.4 . Per una consultazione più accurata per tutti i metodi si rimanda a [3, 10, 30].

Definiamo quindi anche un Boundary Value Problem BVP Problema 2 (BVP). Dati:

un sistema di n equazioni differenziali

˙x = f (x(t), t) (2.9)

il valore dello stato in istanti temporali differenti t1, t2

xi(t1) = ¯xi i = 1, . . . , l (2.10)

xj(t2) = ¯xj j = l + 1, . . . , n (2.11)

l < n (2.12)

si vuole determinare il valore dello stato al tempo desiderato td ∈ R.

Riguardo ai IVP e BVP, in tutti i casi devo risolvere delle equazioni differenziali, ma nel caso di IVP ho le condizioni al contorno definite tutte nello stesso istante temporale, quindi posso integrare la dinamica da quel punto in avanti o indietro mentre nel BVP le condizioni al contorno sono definite in istanti temporali differenti tra loro, quindi la risoluzione di un BVP, a meno di ricondursi a casi particolari in cui è possibile ricavarsi una soluzione analitica, è molto difficile in generale.

2.3.1

Metodi indiretti

Nei metodi indiretti si ricavano le condizioni di ottimalità tramite il calcolo delle variazioni del problema di controllo ottimo descritto in (2.1). Il problema viene tipicamente riscritto in forma Hamiltoniana aumentata

(16)

dove λ(t) ∈ Rn è il co-stato e µ(t) ∈ Rc è il moltiplicatore di Lagrange associato

ai vincoli di percorso (path constraints). Le condizioni ottenute sono le seguenti: ˙x = ∂H ∂λ T , ˙λ = − ∂H ∂x T (2.14) uopt = min u∈U H (2.15) Θ(x(t0), t0, x(tf), tf) = 0 (2.16) λ(t0) = − ∂ψ ∂x(t0) + νT ∂Θ ∂x(t0) , λ(tf) = ∂ψ ∂x(tf) − νT ∂Θ ∂x(tf) (2.17) H(t0) = ∂ψ ∂t0 − νT∂Θ ∂t0 , H(tf) = − ∂ψ ∂tf + νT∂Θ ∂tf (2.18) µj(t) = 0 se Cj(x, u, t) < 0 ∀j = 1, . . . , c (2.19) µj(t) ≤ 0 se Cj(x, u, t) = 0 ∀j = 1, . . . , c (2.20)

dove ν è il moltiplicatore di Lagrange associato alla condizione al contorno Θ. Le (2.17) sono le condizioni al contorno del co-stato (transersality conditions) e le (2.19) sono le condizioni sui moltiplicatori di Lagrange riferiti ai vincoli di percorso (complementary slackness conditions). Le equazioni (2.14), riferite alla dinamica di stato e co-stato, sono ricavate a partire dall’Hamiltoniano e per questo vengono chiamate Sistema Hamiltoniano. In pratica, si parte dalle equazioni della dinamica (2.1)(2.2)(2.3)(2.4), si ricava l’Hamiltoniano (2.13) e successivamente la (2.14)(b).

L’insieme del sistema Hamiltoniano, condizioni al contorno di stato e co-stato e le complementary slackness conditions viene chiamato Hamiltonian Boundary Value Problem (HBVP). I metodi indiretti si ricavano gli estremali (traiettorie ammissibili soluzione dell’HBVP) in maniera numerica.

L’equazione (2.15) è conosciuto come il Principio del minimo di Potryagin (PMP), utilizzato molto frequentemente per determinare il controllo ottimo.

Principio 1 (Principio del minimo di Pontryagin). Se ¯u ∈ U è il controllo ottimo per l’HBVP , allora

H(¯x(t), ¯u(t), ¯λ(t), t) ≤ H(¯x(t), u(t), ¯λ(t), t), ∀u ∈ U, t ∈ [t0, tf] (2.21)

dove ¯x e ¯λ sono le traiettorie ottime di stato e co-stato.

In un HBVP devo risolvere delle equazioni differenziali (2.14) significa risolvere un sistema di equazioni non lineari del tipo

f (z) = 0 (2.22)

(17)

e risolvere un sistema di equazioni non lineari è equivalente alla ricerca di uno zero di un polinomio (root-finding). Questo deriva dalle condizioni al contorno dell’HBVP perché dobbiamo rispettare dei vincoli puntuali per risolvere il problema indiretto. Per fare chiarezza prendiamo l’esempio del BVP definito nel Problema 2, supponendo di volerlo risolvere.

Consideriamo l’IVP associato al Problema 2 composto da n ODE con intervallo temporale [t1 t2]

˙x = f (x(t), t), (2.24)

con le l condizioni al contorno all’istante t1 noti

xi(t1) = ¯xi i = 1, . . . , l (2.25)

mentre le altre n − l condizioni al contorno sono definite in t2, ma consideriamo

di associarli come valori incogniti z = [zl+1, . . . , zn] in t1.

xj(t1) = zj j = l + 1, . . . , n (2.26)

Il problema è divenuto quello di scegliere le n − l z incognite all’istante iniziale t1 in modo da soddisfare le condizioni al contorno all’istante t2

xj(t2) = xj(t2; ¯xi, . . . , ¯xl, zl−1, . . . , zn) = ¯xj (2.27)

quindi definiamo f (z) = xj(t2) − ¯xj e tentiamo di risolvere f (z) = 0,

ricondu-cendoci così ad un problema di root-finding.

Il metodo più comune per risolvere un sistema di equazioni non lineari è il metodo di Newton [24] che cerca di trovare la soluzione del sistema in maniera iterativa partendo da un guess iniziale z = z0

zk+1 = zk− α p (2.28)

dove la direzione di ricerca p è calcolata risolvendo il sistema di equazioni lineari

A(z) p = −f (z) (2.29)

dove A matrice nxn è lo Jacobiano di g() rispetto al vettore zk.

A =       ∂g1 ∂z1 k ∂g1 ∂z2 k . . . ∂g1 ∂zn k ∂g2 ∂z1 k ∂g2 ∂z2 k . . . ∂g2 ∂zn k .. . ... . .. ... ∂gn ∂z1 k ∂gn ∂z2 k . . . ∂gn ∂zn k      

Quando lo scalare α è posto uguale a 1, il metodo è equivalente ad utilizzare l’approssimazione lineare del sistema lineare nel punto zk.

Il metodo di Newton converge alla soluzione desiderata se il guess iniziale è abbastanza vicino ad essa, quindi non necessariamente si otterrà la soluzione desiderata visto che sistemi di equazioni non lineari hanno, in generale, soluzioni multiple. E’ noto inoltre che il metodo di Newton si interrompe in presenza di singolarità dello Jacobiano, in questo caso è possibili sostituire il metodo di Newton

(18)

con metodi quasi-Newton. Solitamente per risolvere (2.22) e (2.23) si utilizzano metodi di Newton [24] e sue varianti con un risolutore NLP (vedi sezione dei metodi diretti 2.3.2) minimizzando l’indice di performance fittizio

J (z) = (z − z0)T(z − z0) (2.30)

con z0 guess iniziale e avendo come vincolo la (2.22).

2.3.2

Metodi diretti

Nel caso di metodi diretti, controllo e/o stato vengono approssimati con metodi appropriati. Quando si approssimano i soli controlli si parla di control parametri-zation method, mentre quando si approssimano anche gli stati si effettua un state and control parametrization method. I parametri liberi vengono poi solitamente utilizzati come variabili in un problema di programmazione non lineare (NLP). Un NLP si può formulare in maniera generale come segue:

Definizione 1 (NonLinear Programming). Determinare il vettore di parametri x ∈ Rn che massimizza (minimizza) l’indice di performance

f (x) (2.31)

rispettando i seguenti vincoli

g(x) = 0 (2.32)

h(x) ≤ 0 (2.33)

dove g(x) ∈ Rm e h(x) ∈ Rp.

Le condizioni necessarie per cui f (x) siano il minimo (o massimo) globale sono le first order optimality conditions (FOOC), conosciute anche come le Karush-Kuhn-Tucker conditions (KKT), date da

gi(x) = 0, (i = 1, . . . , m) (2.34) hi(x) ≤ 0, (i = 1, . . . , p) (2.35) νi ≥ 0, (i = 1, . . . , p) (2.36) νihi(x) = 0, (i = 1, . . . , p) (2.37) L(x, λ, ν) = ∇f (x) + m X i=1 λi∇gi(x) + p X i=1 νi∇hi(x) = 0 (2.38)

dove (2.38) è a condizione di annullamento del Lagrangiano del problema L(x, λ, ν) e λ, ν sono moltiplicatori di lagrange. Le KKT sono, in un caso generale, solo condizioni necessarie per l’ottimo globale e necessarie e sufficienti per l’ottimo locale. Nel caso in cui il problema sia convesso, le KKT diventano condizioni necessarie e sufficienti per l’ottimo globale.

(19)

Metodi di risoluzione di NLPs

In molti problemi di ottimizzazione non lineare la funzione obiettivo f ha un numero molto elevato di minimi locali, per cui trovare un ottimo locale che soddisfi le KKT è un problema relativamente semplice usando metodi di ottimizzazione locale. Trovare il minimo o massimo globale di una funzione è molto più difficile perché i metodi di soluzione analitica molto spesso non sono di aiuto visto che non applicabili, e l’utilizzo di strategie di soluzione numerica porta a problemi molto complessi che non garantiscono di aver raggiunto o meno l’ottimo. I metodi di risoluzione numerica per risolvere gli NLP sono divisi principalmente in due categorie: metodi gradient-based e metodi euristici.

Gradient-based Sono metodi di ottimizzazione locale nei quali è richiesto un guess iniziale del vettore di variabili di decisione incognito x ∈ Rn. Ad ogni

iterazione dell’algoritmo viene scelta una direzione di salita/discesa dk ed un passo

pk muovendosi nello spazio delle variabili decisionali x. Nel metodo del gradiente,

dk è proprio il gradiente della funzione f (xk), ∇f (xk), scelto con segno opportuno.

L’aggiornamento delle variabili da xk a xk+1 è dato da

xk+1 = xk+ pkdk (2.39)

I metodi gradient-based più utilizzati per la risoluzione di NLPs sono i sequential quadratic programming (SQP) e gli interior point methods (IP).

I primi sono utilizzati su problemi per i quali la funzione obiettivo ed i vincoli sono continui e due volte derivabili. Questi metodi risolvono una sequenza di sottoproblemi di ottimizzazione, ciascuno dei quali utilizza un modello quadratico della funzione obiettivo e una linearizzazione dei vincoli.

Ad oggi gli algoritmi SQP vengono utilizzati in ambito accademico e indu-striale per risolvere i problemi applicativi molto complessi [27]. Nel problema NLP (2.31) (2.32) (2.33), ad ogni iterazione xk, viene trovata un’appropriata

dire-zione di discesa dk come soluzione del sottoproblema di programmazione quadratica

QP min d 1 2d T2 xxL(x, λ, ν)d + ∇(f )T(xk)d (2.40) con h(xk) + ∇h(xk)Td ≤ 0 (2.41) g(xk) + ∇g(xk)Td = 0

Se il problema ha solo vincoli di uguaglianza, allora il metodo è equivalente ad applicare il metodo di Newton per le KKT del problema. Metodi SQP sono stati implementati in molti software di calcolo, tra cui NPSOL, SNOPT, MATLAB ed altri.

Euristici Sono metodi di ottimizzazione globali, ovvero esplorano tutto il dominio di ottimizzazione. Tra i metodi più conosciuti ci sono i Metodi Monte-Carlo (es. Simulated annealing), algoritmi evolutivi (EA)(es. algoritmi genetici ) e gli Swarm-based optimization algorithms (es. particle swarm optimization (PSO)).

(20)

Nei Metodi Monte-Carlo viene fatto un campionamento “random” della funzione da ottimizzare f. Si basano su un algoritmo che genera un set di punti incorrelati tra loro, che seguono la distribuzione di probabilità che si suppone porti ad indagare maggiormente regioni dove si presume sia l’ottimo.

Nel Simulated annealing, ad ogni punto candidato nello spazio di ottimizzazione viene assegnato uno stato corrispondente alla sua energia interna. Usando un approccio probabilistico, l’algoritmo decide se rimanere nello stato corrente del sistema oppure se saltare in un intorno deciso in maniera arbitraria dall’utente. La probabilità di saltare da uno stato all’altro dipende sia da quanto il candidato soddisfi la funzione di performance, sia dalla temperatura globale del sistema, associata ad un tempo.

Gli algoritmi genetici sono una euristica di ricerca che imita il processo di selezione naturale. Viene scelta una popolazione iniziale di soluzioni, o geni, e ad ognuno di essi viene associato un certo valore di fitness che illustra quanto una soluzione sia buona o meno (è un indice di performance). Questi geni vengono poi mutati, ovvero combinati, con un meccanismo di crossover: in base ad una soglia i geni continuano ad evolversi tra loro, altrimenti vengono scartati. Si formano così varie generazioni di geni con il passare delle iterazioni dell’algoritmo. La parte più critica di questi algoritmi è la scelta della soglia di crossover e della legge di mutazione dei geni sopravvissuti.

Un altro approccio euristico è il particle swarm optimization che condivide con gli algoritmi genetici i concetti di popolazione iniziale e di generazioni, ma non prevedono mutazioni o funzioni di crossover. In questi metodi, le soluzioni candidate (o particelle) si muovono nello spazio di ottimizzazione seguendo le particelle che riescono ad ottenere migliori performance in termini di funzione costo, memorizzando le soluzioni migliori durante tutto il loro percorso. Viene infine eseguita una ottimizzazione locale nell’intorno della soluzione migliore.

2.3.3

Dynamic Programming

La programmazione dinamica (DP) è una tecnica a tempo discreto basata sul principio di ottimalità, ossia qualunque sotto-arco di una traiettoria ottimale è anch’esso ottimale. Se ad esempio abbiamo una soluzione ottimale (˜x(t), ˜u(t) del problema (2.1) (2.2) (2.3) (2.4) per t ∈ [t0, tf], allora (˜x(t), ˜u(t) è sempre la

soluzione ottimale al problema per il sottoarco compreso nell’intervallo temporale

tsubarc ∈ [¯t, tf], con ¯t > t0 e con stato iniziale x(¯t).

Viene definita la funzione di cost-to-go nel seguente modo (caso tempo discreto)

J (¯x, t) = min x,u E(x(tf)) + tf X t0 L(x(t), u(t))dt (2.42) Considerando i generici istanti temporali {tk, tk+1} ∈ [t0, tf] la funzione di

cost-to-go ottimale può essere scritta come

J (¯xk, tk) = min x,u J (xk+1, tk+1) + tk+1 X tk L(x(t), u(t))dt (2.43)

(21)

quindi, partendo da J (¯x, tf) = E(x(tf)), è possibile calcolare la funzione di

costo in maniera ricorsiva dal tempo finale tf fino al tempo iniziale t0.

La programmazione dinamica ponendo tk+1− tk → 0 ci porta all’equazione di

Hamilton-Jacobi-Bellman, che può essere utilizzata per trovare la soluzione del problema di controllo ottimo per sistemi a tempo continuo.

− ∂J

∂t(x, t) = minu (L(x(t), u(t)) +

∂J

∂x(x, t)f (x, u)) (2.44) anche in questo caso la soluzione deve essere trovata partendo dal tempo finale tf e proseguendo indietro nel tempo (back-ward ) fino al tempo iniziale t0 con

J (x, tf) = E(x(tf)).

L’equazione di Bellman e la HJB sono condizioni necessarie di ottimalità per un sottospazio del dominio delle soluzioni. Se viene considerato l’intero spazio delle soluzioni, allora le equazioni sono condizioni necessarie e sufficienti per l’ottimo. Lo svantaggio principale è la cosiddetta curse of dimensionality, poiché è necessario risolvere un’equazione differenziale alle derivate parziali, in generale, in uno spazio multidimensionale molto vasto. L’equazione HJB e programmazione dinamica sono quindi utilizzati principalmente per problemi su pochissime dimensioni. In alternati-va, questi metodi vengono usati per problemi di ottimizzazione locale approssimando il problema, come avviene nel caso dei Differential Dynamic Programming (DDP). DDP

Il Differential Dynamic Programming (DDP) è un algoritmo per problemi di controllo ottimo che utilizza un’approssimazione locale quadratica della dinamica del sistema e dell’indice di performance, garantendo una convergenza quadratica. DDP è un algoritmo del secondo ordine simile al metodo di Newton. Viene impostato il problema partendo dalla programmazione dinamica

Il DDP è un procedimento iterativo per la ricerca del controllo ottimo ¯u. Si decide una traiettoria iniziale dei controlli ui(t), integrando la dinamica nell’intervallo

temporale [t0tf], ottenendo lo stato al tempo finale x(tf). Successivamente si esegue

un passaggio all’indietro sulla traiettoria nominale per generare una nuova sequenza di controllo, e quindi un passaggio in avanti per calcolare e valutare una nuova traiettoria nominale, e così via.

Questi metodi vengono utilizzati ad esempio nei lavori di Todorov [33] e Tassa [32].

2.3.4

Metodi diretti e indiretti: approcci

Dopo aver impostato il problema originale (2.1)(2.2)(2.3)(2.4) con una metodo-logia diretta o indiretta, il problema può essere risolto con tecniche di

• Shooting

• Multiple-Shooting • Collocation

(22)

Shooting method

Nello Shooting viene fatto un guess iniziale sulle variabili di decisione nel problema (parametri nel caso di metodo diretto, condizioni al contorno incognite nel caso indiretto) e viene integrata la dinamica del sistema nell’intervallo temporale di interesse. Se le condizioni di ottimo non vengono verificate, in un intorno arbitrario di quel guess “sparo” (da shooting) altre possibili traiettorie cercando di migliorare l’indice di performance del problema di controllo ottimo.

Nel caso di metodo diretto, è un control parametrization method, dove il controllo viene parametrizzato usando ad esempio un funzionale del tipo

u(t) ≈

m

X

i=1

aiψi(t) (2.45)

ψi(t) sono funzioni note e ai sono i parametri variabili soggetti all’ottimizzazione.

a = [a1a2. . . am] è il vettore delle variabili di decisione da inizializzare. Le equazioni

della dinamica (2.2) vengono integrate e l’NLP derivato dallo shooting diretto si occupa di minimizzare il costo (2.1), rispettando le condizioni di path e al contorno (2.3)(2.4).

Nel caso di metodo indiretto, eseguo un guess sulle n variabili al contorno incognite allo stato iniziale, integrando la dinamica in avanti da t0 a tf, o viceversa

ipotizzo un valore delle altre n variabili al contorno allo stato finale, integrando indietro nel tempo da tf a t0.

Solitamente in questi metodi le condizioni al contorno del problema originale vengono rilassate utilizzando meccanismi di threshold

1 if abs( x _ s i m - x _ c o n s t r ) < t h r e s h o l d _ v a l u e

2 v i n c o l o r i s p e t t a t o

3 else

4 v i n c o l o non r i s p e t t a t o

oppure integrate nell’indice di performance

Jnew = Jold+ (xsim− xconstr)2 (2.46)

Si effettuano questi metodi principalmente perché rispettare “esattamente” quei vincoli risulta, in molti casi, impossibile. Si effettua, in gergo, un passaggio da vincoli di tipo hard (hard constraints) a vincoli di tipo soft (soft constraints). Multiple Shooting Method

Nei multiple shooting methods, l’intervallo di tempo [t0, tf] viene suddiviso in N

sottointervalli, e per ognuno di essi [ti, ti+1] viene impostato uno shooting method.

Ciò pone però delle discontinuità tra i vari sottointervalli. Per risolvere questo problema vengono utilizzate le condizioni di continuità

y(t−i ) − y(t+i ) = 0 (2.47) dove y(t) rappresenta le variabili dello stato nel caso dei metodi diretti y(t) = x(t), mentre negli indiretti sono l’insieme di stato e co-stato y(t) = [x(t) λ(t)]T.

(23)

Nonostante il metodo di multiple shooting aumenti la dimensione del problema a causa delle (2.47), solitamente si ottengono minori errori causati dalla non esatta conoscenza delle condizioni iniziali, integrando la dinamica in più segmenti. Analogamente ai metodi di shooting se non abbiamo un buon guess iniziale del vettore dei parametri variabili, trovare la soluzione del problema risulta molto difficile.

Collocation Methods

Un metodo di collocazione è, in generale, un metodo per la soluzione numerica di equazioni differenziali ordinarie, equazioni differenziali parziali ed equazioni integrali. Dividiamo, come nei casi multiple-shooting, l’intervallo temporale di integrazione in N sottointervalli [ti, ti+1]. Supponiamo inoltre di approssimare la

variabile stato per ogni sottointervallo con un polinomio di ordine K

X(t) ≈

K

X

k=0

ai(t − ti)k, t ∈ [ti, ti+1] (2.48)

Il set di K + 1 coefficienti [a0, . . . , aK] viene scelto in modo da rispettare il valore

della funzione nello stato iniziale dell’intervallo

X(ti) = x(ti) (2.49)

e in modo da corrispondere al valore della sua derivata ˙

X(tj) = f (x(tj), tj), (j = 1, . . . , K) (2.50)

nei punti

tj = ti+ liαj, 0 ≤ αj ≤ 1, (j = 1, . . . , K) (2.51)

li = ti+1− ti, (i = 1, . . . , N ) (2.52)

La (2.50) è chiamata collocation condition e serve a determinare il valore dei coefficienti dell’approssimazione polinomiale dello stato (2.48) assegnando nei collocation points (2.51) il valore della derivata della funzione. Anche in questo caso viene utilizzata la condizione (2.47) per garantire la continuità delle variabili tra i vari sottointervalli.

I metodi di collocazione utilizzati per risolvere problemi di controllo ottimo sono chiamati state and control parametrization method, dove stato e controlli nel caso diretto e stato, co-stato e controlli nell’indiretto vengono approssimati in maniera polinomiale. Si suddividono in locali e globali.

Nei primi generalmente sia varia il numero di sottointervalli N lasciando inalte-rato il grado del polinomio p per sottointervallo. Nei secondi si utilizzano polinomi globali per ricavare i punti di collocazione, un caso particolare riguarda i metodi pseudospettrali.

(24)

Metodi Pseudospettrali I metodi pseudospettrali sono una classe di metodi di collocazione diretta globale. A differenza dei metodi di collocazione locali, lo stato è approssimato utilizzando un polinomio globale in punti di collocazione che sono la radice di polinomi particolari (Gauss, Legendre, Chebyshev).

Il nome deriva dalla proprietà che l’approssimazione introdotta converge spet-tralmente (esponenzialmente) rispetto al numero di punti di collocazione (quindi al grado del polinomio nel sottointervallo).

Per un’analisi più dettagliata consultare [24]. Uno degli applicativi più impor-tanti che fà utilizzo di metodi pseudospettrali è GPOPS (GPOPS II) (vedi [23]).

2.3.5

Controllo ottimo bang-bang

Formalizzando il problema di controllo ottimo indirettamente tramite HBVP è possibile in alcuni casi poter avere delle informazioni sulla struttura del controllo stesso tramite il PMP. Nel caso in cui l’hamiltoniano sia lineare nelle variabili di controllo e non ci siano vincoli di percorso per lo stato del sistema, l’applicazione del principio di minimo o massimo di Pontryagin porterà poi a spingere il controllo al suo limite superiore, inferiore o indeterminato (controllo singolare) a seconda del segno del coefficiente di u nell’hamiltoniano.

Questo risultato è molto utile poiché l’insieme delle soluzioni ottime ammissibili U diventa completamente determinato da 3 elementi: comando al tempo iniziale u(t0), numero di switch del comando ns e istanti di switch tis, dove i = 1, . . . , ns

nel caso di singolo controllo u ∈ |Rm con m = 1, altrimenti per m > 1 servono la

sequenza e gli istanti di switching.

I metodi di risoluzione di problemi di controllo ottimo in letteratura solitamente adottano questo approccio algoritmico [35]:

1. si sceglie un numero di switch del comando ns “a priori”

2. per tale numero di switch si esegue guess di partenza della soluzione

3. si ottimizzano gli istanti di switching con un metodo NLP a scelta, perché genericamente non c’è una soluzione analitica al problema

Dato che è necessario scegliere un numero di switch iniziali, è possibile iterare il metodo, incrementando il numero di switch di volta in volta [25] o in alternativa i primi due punti possono essere eseguiti con il software NUDOCCCS [8].

Recentemente un lavoro di Henrion [19] trasforma il problema di ottimizzare gli switching e la sequenza in un problema di ottimizzazione polinomiale (convessa) che però in molti casi non fornisce una soluzione esattamente uguale a quella del problema in questione ma dà un lower bound per il valore del minimo. Anche in questi casi comunque devono essere rispettate alcune ipotesi tra cui scegliere aprioristicamente un numero di switch ns. In alternativa, senza fare alcuna ipotesi

su sequenze e tempi di switching, è possibile utilizzare un solver per OCPo generici, data la potenza dei metodi diretti di collocazione [4, 24].

(25)

2.4

FeedForward e FeedBack

Tutti i metodi illustrati nelle sezioni precedenti risolvono problemi di controllo ottimo in FeedForward per il sistema di interesse (2.2) lungo un orizzonte temporale di controllo fissato. Nel caso quest’ultimo rappresenti un impianto generico, esso sarà soggetto a vari disturbi e incertezze che possono destabilizzare il sistema stesso e dunque avremo bisogno di una certa forma di FeedBack. Considerare un controllo in ciclo aperto nella pratica è ovviamente una semplificazione non di poco conto, difatti è generalmente sconsigliato in molte applicazioni.

Un controllo a ciclo aperto molto spesso non è quindi sufficiente a garantire specifiche di stabilità e convergenza della soluzione: per applicazioni reali è necessario ricevere dei feedback dal sistema per rispettare le specifiche prefissate.

Il primo passo da fare resta risolvere un OCP di un sistema non lineare è ottenere una soluzione a ciclo aperto considerando il sistema nominale (senza incertezze di modello) privo di disturbi e rumori, il secondo è quello di scegliere un controllore a ciclo chiuso per controllare al meglio l’impianto.

Vi sono diverse metodologie a ciclo chiuso per il controllo ottimo di sistemi non lineari, ad esempio retroazionare il controllo su traiettorie di riferimento, iLQG a ciclo chiuso, learning, dynamic motion primitives, feedback linearization, NMPC. Nel caso specifico, ci soffermiamo sull’ultimo di questi, l’NMPC (Nonlinear Model Predictive Control).

2.5

NMPC

Il Non-linear Model Predictive Control (NMPC) è un’estensione del Model Predictive Control (MPC) per il controllo di sistemi non lineari tramite previsione della dinamica. Nell’NMPC (come nell’MPC) si effettua una soluzione iterativa di OCP su un orizzonte di predizione finito (receding horizon). Nel caso MPC, data la linearità del sistema, il problema può essere scritto sotto forma di ottimizzazione convessa e risolto in maniera molto agevole data la potenza dei metodi convessi. Nel caso di NMPC invece questo passaggio non è più valido e concetti di stabilità e robustezza sono molto più complicati da ottenere. Per la teoria sul NMPC si rimanda a [13] e [14] , dove vengono presi in considerazione sia problemi receding horizon sia infinite horizon. Per questi ultimi le condizioni di stabilità sono meno stringenti che per il primo caso.

La soluzione numerica dei problemi di controllo ottimo NMPC è tipicamente basata su metodi che utilizzano sistemi di ottimizzazione Newton-like con metodi diretti di shooting, multiple-shooting o collocation. E’ possibile utilizzare metodi Newton-like perché si presume che la soluzione trovata al passo precedente (in termini di controlli) sia simile alla soluzione al passo successivo, per cui si utilizza il vecchio controllo come guess iniziale per il comando all’istante successivo.

2.5.1

Principio di funzionamento

Il principio base del NMPC è il medesimo della controparte lineare. L’ingresso applicato al sistema da controllare nel MPC è dato dalla soluzione iterativa di

(26)

un problema di controllo ottimo a ciclo aperto a orizzonte finito. Basandosi sulle misure dello stato al tempo t, il controllore “prevede” la dinamica del sistema lungo l’orizzonte di predizione Tp e determina il controllo lungo l’orizzonte dei controlli Tc

che ottimizza un indice di performance dato. Questo controllo viene dato al sistema in catena aperta fino al prossimo tempo di campionamento t + Ts (che può essere

in generale variabile), dove vengono ri-acquisite le misure del sistema, ri-calcolato il controllo e così via.

La funzione costo solitamente utilizzata in problemi nmpc è della forma J =

Z t+Tp

t

F (x(τ ), u(τ )dτ (2.53)

In teoria sarebbe preferibile utilizzare un controllo ad orizzonte infinito (Infinite Horizon MPC IHMPC ) cioè far tendere Tp e Tc a infinito per minimizzare l’indice

di performance lungo tutto l’orizzonte temporale. Il problema purtroppo è che in casi classici di utilizzo (es. reattori chimici) il controllo è utilizzato in applicazioni in continuo funzionamento, per giorni e giorni, e risulta impensabile risolvere un problema di controllo ottimo a ciclo aperto per orizzonti così grandi online. D’altra parte per brevi orizzonti temporali da un punto di vista computazionale è più efficiente risolvere un controllo ottimo a ciclo aperto ma stato e controllo a ciclo chiuso così ottenuti differiranno dalla soluzione a ciclo aperto a orizzonte infinito anche senza disturbi o incertezze di modello. Quest’ultimo aspetto deriva dal fatto che, in generale, non è vero che un’ottimizzazione continua lungo un orizzonte temporale finito equivale alla soluzione ad orizzonte infinito, nel primo caso il sistema a ciclo chiuso potrebbe addirittura divenire instabile. Per spiegare meglio questo concetto si introduce un esempio illustrato in figura2.2 nella pagina seguente. Immaginiamo di essere nel punto A di una mappa e di voler raggiungere il punto B. Sappiamo a priori che il punto B è a ovest rispetto al punto A. Nel caso di orizzonte finito di predizione riusciamo a “vedere” solo le strade presenti entro un certo raggio dalla nostra posizione, che rappresenta la nostra visuale, mentre nel caso di orizzonte infinito riesco a vedere interamente tutte le strade presenti nella mappa. La nostra visuale è l’analogo del nostro orizzonte di predizione: se ne ho una ridotta, sono incoraggiato a prendere la strada che porta a ovest, mentre se ho una visuale di tutta la mappa prenderò la strada che nel complesso è più corta.

Per questo motivo, assicurare la stabilità a ciclo chiuso in controlli a orizzonti finiti implica che l’indice di performance non possa essere scelto a piacere, ma debba essere integrato da termini che sotto le opportune ipotesi la garantiscono .

Se immaginiamo di espandere l’orizzonte del controllo a infinito e di non avere né disturbi né incertezze di modello, avremmo che lo stato reale del sistema e quello predetto coincidono. Ovviamente questo non è possibile in un applicazione reale dove disturbi e incertezze di modello sono, generalmente, presenti e non trascurabili. E’ per questo che il sistema necessita di una certa forma di feedback.

L’algoritmo NMPC di può descrivere in maniera generale nel seguente modo. Ad ogni istante di campionamento del controllore al tempo t = kTs con k ∈ N:

(27)

A B

Tp

Finite horizon solution

Infinite horizon

solution N

or

d

Figura 2.2: Analogia orizzonte infinito - orizzonte finito: la strada che presumo più corta non è detto che lo sia veramente

2. Ottenere un controllo ottimo ottimizzando l’indice di performance desiderato nell’orizzonte di controllo considerato utilizzando il modello matematico del sistema e lo stato corrente del sistema

3. Dare in input al sistema il controllo calcolato al punto precedente e tornare a 1 time traiettoria di riferimento PASSATO FUTURO t t+Ts t+Tc t+Tp orizzonte di controllo orizzonte di predizione campionamento misure / ricalcolo controlli

Figura 2.3: Schema NMPC di base

Possiamo affrontare il tema della stabilità e della robustezza in due casi, nel caso di orizzonte infinito IHNMPC, e finito NMPC. Questi argomenti sono abbastanza corposi e di seguito vengono solo accennati alcuni aspetti salienti utili per questa tesi. Per una visione più accurata si rimanda a [13,14].

2.5.2

Stabilità

Il problema per la stabilità è che il controllo a ciclo chiuso differisca dal con-trollo a aperto. Il modo più facile per ottenere stabilità a ciclo chiuso è quello

(28)

appunto di adottare l’IHMPC, dove Tp e Tc tendono a infinito. Questo deriva dal

principio di ottimalità di Bellman, spiegato brevemente in sezione2.3.3, che implica automaticamente la stabilità a ciclo chiuso per l’IHNMPC.

Nel caso invece di orizzonte finito di predizione la stabilità, senza ulteriori ipotesi, non è garantita. Esistono molti schemi in letteratura che garantiscono la stabilità anche in questi casi aggiungendo vincoli al problema (stability constraints) e aggiungendo ulteriori termini all’indice di performance J , che però non possono essere dati arbitrariamente ma debbono essere opportunamente calcolati ed inseriti. Un esempio è il Quasi-Infinite Horizon NMPC dove viene imposta una regione terminale del controllo a orizzonte finito interno allo spazio ammissibile degli stati nella forma

x(t + Tp) ∈ Ω ∈ X (2.54)

e viene aggiunto all’indice di costo originale 2.53 un termine finale all’orizzonte di predizione divenendo come segue

J =

Z t+Tp

t

F (x(τ ), u(τ )dτ + E(x(t + Tp)) (2.55)

Come già detto 2.55 non è un termine che può essere a piacere ma deve essere calcolato in modo da garantire la stabilità a ciclo chiuso.

2.5.3

Riepilogo

Ricapitolando, l’NMPC utilizza il concetto di predizione come nel MPC, ma è in grado di gestire modelli non lineari della dinamica del sistema e può tenere di conto di vincoli particolari introdotti ad esempio da saturazioni. Deve risolvere un problema di controllo ottimo online che richiede solitamente un dispendio computazionale abbastanza elevato. E’ necessario avere una retroazioni delle variabili di stato o in alternativa almeno una loro stima.

2.6

Metodi/applicativi per OCP in FeedForward

Tra gli applicativi utilizzati in questa tesi possiamo considerare • BVP4C-5C - matlab’s bvp solvers

• GPOPS - gauss pseudospectral optimal control software • SNOPT - Sparse Nonlinear OPTimizer

• DDP - differential dynamic programming

• KD-RRT - Kyno-Dynamic rapidly exploring random tree

Vengono di seguito descritti in maniera sintetica e fatta una breve accenno sui loro comportamenti rispetto ai problemi presentati.

(29)

BVP4C-5C Sono funzioni implementate in Matlab che risolvono two-point boun-dary value problems (BVPs) o multiple point BVPs per equazioni differenziali ordinarie. E’ un metodo di collocazione indiretto che suddivide il vettore tempo [t0, tf] in N segmenti e descrive ogni sottoinsieme con un polinomio di ordine p = 4.

La funzione tenta quindi di risolvere le equazioni algebriche per ogni sottoinsieme con il Metodo di Newton partendo da un guess iniziale sui valori del costato iniziale incogniti.

I risultati riscontrati con queste funzioni sono abbastanza scarsi dato che non è stato possibile risolvere i problemi più semplici in esame, tra cui il manipolatore R con attuatori elastici controllato in posizione. Il software cade molto spesso in condizioni di Jacobiano singolare durante l’utilizzo del metodo di Newton.

In [34] vengono implementati alcuni esempi con queste funzioni.

GPOPS II GPOPS, acronimo di Gauss Pseudospectral Optimal Control Software, è un metodo pseudo-spettrale (hp-adaptive pseudospectral method). Suddivide il vettore tempo in un numero variabile di segmenti ognuno dei quali di lunghezza temporale variabile h. Tali segmenti vengono poi descritti da un polinomio di ordine variabile p Il software risolve OCP generici nella forma illustrata in sezione 2.1. Tra i vantaggi del metodo possiamo annoverare la sua velocità per semplici problemi (R) e di essere distribuito in maniera gratuita per studenti ed accademici. Riesce a gestire una formulazione generale di OCP ed è implementato in Matlab. Purtroppo non sempre trova soluzione per il caso di RR planare, e per casi più complicati i tempi di calcolo sono abbastanza lunghi.

KD-RRT L’RRT è un metodo molto utilizzato per il Path Planning di sistemi robotici. E’ un tipo di Metodo Monte-Carlo dove viene esplorato uno spazio delle soluzioni costruendo degli alberi aggiungendo i nuovi nodi in maniera casuale. Ogni nuovo punto nello spazio è aggiunto al punto più vicino dell’albero esistente. Solitamente utilizzato per evitare ostacoli (collision-avoidance) e risulta molto veloce nel trovare soluzioni in tempi rapidi.

I KD-RRT sono essenzialmente metodi RRT ma viene integrata la dinamica nella creazione del percorso, vincolando i collegamenti tra i vari nodi a rispettare i vincoli dinamici. Questo metodo viene utilizzato nel motion Planning e può essere utilizzato per risolvere problemi di controllo ottimo non convessi. I risultati ottenuti con metodi KD-RRT sono stati abbastanza deludenti data la lentezza della convergenza ad una soluzione persino per gli esempi più semplici.

Differential Dynamic Programming I risultati di questo algoritmo brevemen-te illustrato in 2.3.3. Nei casi di interesse riesce a trovare soluzioni solo per casi semplici (R lineare). Per problemi non convessi il metodo acquisisce un certo valore se il guess iniziale dato all’algoritmo sul controllo è abbastanza buono.

2.6.1

Considerazioni generali

Tra i software/metodi elencati per la risoluzione di OCP a ciclo aperto vi sono metodi molto validi, ma i tempi di esecuzione degli algoritmi possono essere anche

(30)

molto elevati e comunque dipendenti dal problema in questione. Risulta quindi difficile ottenere una buona soluzione in un lasso di tempo molto breve, dell’ordine del secondo o meno. Questo ci porta a domandarci se sia possibile eseguire dei calcoli fuori linea per essere poi agevolati nella soluzione dell’OCP in run-time. Questo ragionamento è alla base dei metodi Evolution Tree ed Evolution Network, proposti nel capitolo4. Verranno eseguiti nel capitolo 5alcune simulazioni di confronto con i metodi proposti e gli applicativi utilizzati che sono riusciti a convergere ad una soluzione dell’OCP in tempi ragionevoli.

(31)

Formulazione del Problema

In questo capitolo definiamo il problema che vogliamo affrontare partendo dalle applicazioni reali di interesse. Viene quindi definita la formulazione del problema di controllo ottimo. Infine vengono descritti i modelli matematici dei bracci robotici del problema in esame.

3.1

Applicazioni

Siamo interessati ad applicazioni di bracci robotici capaci di emulare applicazioni di comune interesse della vita di tutti i giorni. In particolare vogliamo, grazie all’utilizzo di giunti robotici di tipo Series Elastic Actuators (SEA) o Variable Stifness Actuators (VSA), massimizzare la velocità dell’End-Effector di un braccio robotico a 2 GdL (Manipolatore Planare R) o a 4 GdL (Manipolatore Planare RR) rispettando dei vincoli di posizione e velocità allo stato iniziale e di sola posizione allo stato finale. Questa è una semplificazione di applicazioni molto comuni soprattutto in ambito sportivo, basti pensare ad un tennista che colpisce una pallina con la sua racchetta, un calciatore che effettua un tiro verso la porta avversaria, un giocatore di baseball che effettua un lancio verso il battitore o a molti altri casi analoghi ( 3.1 nella pagina successiva). Si noti che se i giunti del manipolatore robotico non hanno una componente elastica al loro interno la velocità della parte terminale del braccio è univocamente determinata dalla velocità massima dei motori. Grazie agli attuatori SEA e VSA è possibile immagazzinare energia all’interno delle molle dei giunti durante il task robotico per poi sprigionarla nella fase finale del tiro. A seguito di questa considerazione ha quindi senso formulare il problema di massimizzazione della velocità del braccio al tempo finale del task come un OCP poiché in base alla dinamica del braccio durante tutto il movimento è possibile avere un guadagno in velocità dell’End-Effector al tempo finale del task.

3.2

Problema di Controllo Ottimo

Come descritto nel capitolo precedente si vuole risolvere un OCP in forma

(32)

(a) Montolivo pronto ad effettuare un tiro. (b) Un Fabbro che lavora il ferro.

(c) Dritto di Federer. (d) Lancio del giavellotto.

(33)

minu J = φ(x(tf)) subject to ˙x = f (x(t), u(t), t) x(t0) = x0 c(x(tf)) = θ umin ≤ u ≤ umax ∀t ∈ [t0, tf] (3.1)

dove ˙x = f (x(t), u(t), t) rappresenta la dinamica di un sistema nonlineare descritta da equazioni differenziali ordinarie con x(t) ∈ Rn vettore dello stato, u(t) ∈ Rm vettore dei controlli e x

0 condizioni iniziali; J = φ(x(tf)) rappresenta

l’indice di performance che dipende esclusivamente dallo stato al tempo finale, tf;

c(x(tf)) rappresenta un vincolo dipendente dallo stato al tempo finale. Si noti che

questo è un problema più specifico di quello riportato in 2.1.

3.3

Modelli

3.3.1

Braccio R SEA/VSA a 2 DoF

Viene preso come riferimento il sistema in figura 3.2 rappresentante un mani-polatore planare a 2 DoF. I due DoF sono la posizione angolare del link q e del motore θ. Consideriamo sia il caso di attuatore elastico a rigidità fissa o variabile con tre tipi di input: comando in posizione, velocità e coppia. Vengono ricavate le equazioni della dinamica rispetto a [q θ], le equazioni della dinamica in forma di stato, l’hamiltoniano del problema di controllo ottimo di interesse ed equazioni del costato per ogni caso.

Iniziamo con il caso SEA comandato in coppia, per poi derivare le altre equazioni della dinamica q θm x y k g

Figura 3.2: Manipolatore Planare R SEA sotto l’azione della gravità

Il sistema è non lineare a causa della forza di gravità agente su baricentro del link. Scriviamo le equazioni della dinamica considerando m la massa del link, l la posizione del baricentro lungo il link, k la costante elastica torsionale della molla

(34)

(inizialmente considerata costate), kv l’attrito viscoso al giunto, I il momento di

inerzia baricentrico del link e Jm momento di inerzia del motore:

(

(ml2 + I)¨q + gml cos(q) + k(q − θ) + kvq = 0˙

Jmθ − k(q − θ) = τ¨

(3.2) è quindi possibile riscrivere le equazioni in forma di stato

˙x =          ˙ x1 = x2 ˙ x2 = −gml cos(x1)+k(x1 −x3)+kvx2 ml2+I ˙ x3 = x4 ˙ x4 = ut+k(x1 −x3) Jm (3.3)

dove x = [x1x2x3x4] è il vettore di stato, x1 è la posizione angolare del link q,

x2 la sua velocità angolare, x3 la posizione angolare del motore θ, x4 la sua velocità

angolare e ut l’ingresso in coppia τ .

Considerando di voler massimizzare l’indice di performance dipendente esclusi-vamente dallo stato finale, senza parte integrale

J = ˙q(tf) = x2(tf) (3.4)

L’Hamiltoniano del sistema risulta

H = λT ˙x = = λ1x2− λ2 gml cos(x1) + k(x1− x3) + kvx2 ml2 + I + λ3x4 + λ4 ut+ k(x1− x3) Jm (3.5) Ricavando le equazioni della dinamica del co-stato come −∂H∂x = 0 si ottiene

˙λ =          ˙ λ1 = λ2(k−glmsin(xml2+I 1)) − kλ4 Jm ˙ λ2 = mlkv2λ+I2 − λ1 ˙ λ3 = kλJm4 − mlkλ2+I2 ˙ λ4 = −λ3 (3.6)

Il comando ottimo, secondo il Principio del massimo di Pontryagin, è quello che massimizza l’hamiltoniano (3.5).

In questo caso abbiamo che l’ingresso ut, ovvero la variabile su cui possiamo

agire, ha come coefficiente λ4

Jm e visto che Jm ha valore positivo possiamo concludere

che il controllo che massimizza (3.5) è

ut=      umaxt se λ4 > 0 umint se λ4 < 0 ut qualsiasi se λ4 = 0 (3.7)

In tutti i casi (controllo in posizione, velocità o coppia) abbiamo che il controllo ottimo è della forma uopt= umaxsign(∗), quindi possiamo concludere che il controllo

(35)

Controllo in velocità Nel caso di ingresso in velocità per ricavarsi le equazioni in forma di stato è sufficiente considerare le prime 3 ODE di (3.3) con x4 = uv,

con uv ingresso in velocità del sistema

˙x =      ˙ x1 = x2 ˙ x2 = −gml cos(x1)+k(xml2+I1−x3)+kvx2 ˙ x3 = uv (3.8)

Facendo così si elimina la dinamica del motore. Calcolando l’hamiltoniano H = λT ˙x = λ1x2− λ2

gml cos(x1) + k(x1− x3) + kvx2

ml2+ I + λ3uv (3.9)

si nota anche in questo caso che il controllo è del tipo bang-bang, e stavolta dipende dal segno di λ3.

Le equazioni della dinamica del costato risultano

˙λ =      ˙ λ1 = λ2(k−glmsin(xml2+I 1)) ˙ λ2 = mlkv2λ+I2 − λ1 ˙ λ3 = −mlkλ2+I2 (3.10)

Controllo in posizione E’ sufficiente considerare le prime 2 ODE di (3.8) con x3 come il nuovo ingresso in posizione up corrispondente alla posizione angolare del

motore θ. ˙x = ( ˙ x1 = x2 ˙ x2 = − gml cos(x1)+k(x1−up)+kvx2 ml2+I (3.11) Proseguendo con l’hamiltoniano

H = λT ˙x = λ1x2− λ2

gml cos(x1) + k(x1− up) + kvx2

ml2+ I (3.12)

le variabili che moltiplicano up risultano mlk2+I, quindi anche in questo caso il

controllo è bang-bang.

Le equazioni della dinamica del costato risultano

˙λ =( ˙λ1 = λ2(k−glmsin(xml2+I 1))

˙

λ2 = mlkv2λ+I2 − λ1

(3.13)

Da SEA a VSA

Il passaggio da attuatore a rigidezza fissa a variabile è molto semplice da un punto di vista di equazioni della dinamica dello stato. Si considera la constante elastica della molla k nella forma

k = k max+ kmin 2  + k max− kmin 2  uk (3.14)

(36)

dove uk∈ [−1, 1] è il comando di rigidezza variabile. Nel caso in cui sappiamo

che il controllo della rigidezza è bang-bang, uki dovrà assumere solo i valori ∈ −1, 1. Vogliamo quindi sapere se i controlli (che adesso sono due) sono ancora da considerare bangbang (sempre in riferimento all’indice di performance (3.4).

Controllo in coppia Sostituendo (3.14) in (3.3) e rieseguendo i conti ed utiliz-zando sempre il Principio del massimo, si ottiene che i coefficienti degli ingressi in coppia e di rigidezza risultano

( c(uc) = λ2(k−glmsin(x1)) ml2+I c(uk) = mlkv2λ+I2 − λ1 (3.15)

3.3.2

Braccio SEA a 4 DoF

Prendiamo in esempio un manipolatore planare RR con rigidezza fissata ai giunti controllato in velocità. Il sistema è rappresentato nella seguente figura

q1 q2 x y Figura 3.3: Sistema RR q θ k

Figura 3.4: giunto SEA

(37)

Equazioni della dinamica

E’ possibile descrivere la dinamica del manipolatore come segue. Definendo m1m2 le masse dei link, l1l2 le distanze dei baricentri dei link dai rispettivi giunti,

a1a2 le lunghezze dei link, J1J2 i rispettivi momenti di inerzia baricentrici lungo

l’asse z, k1 k2 i valori di rigidità torsionale delle molle, kv1kv2 le componenti di

attrito viscoso rotazionale dei giunti ed in fine J m1 J m2 i momenti di inerzia

dei motori possiamo costruire le equazioni della dinamica. E’ possibile scrivere il sistema nella forma

(

B(q)¨q + C(q, ˙q) ˙q + G(q) + K(q − θ) + Kvq = 0˙

M (θ)¨θ − K(q − θ) = τm

(3.16) dove q sono le configurazioni dei giunti del manipolatore RR e θ sono le configu-razioni dei motori. Vengono qui riportate le matrici B(q), C(q, ˙(q)), G(q), K, Kv:

La matrice delle masse

B(q) =b11 b12 b21 b22  con          b11 = I1+ m1l21+ I2+ m2(a21+ l22+ 2a1l2cos(q2)) b12 = I2+ m2(l22+ a1l2cos(q2)) b21 = b12 b22 = I2+ m2l22 (3.17) la matrice di Coriolis C(q, ˙q) =c11 c12 c21 c22  con                h = −m2a1l2sin(q2) c11= h ˙q2 c12= h( ˙q1+ ˙q2) c21= −h ˙q1 c22= 0 (3.18)

la matrice della gravità

G(q) =g1 g2  con ( g1 = g((m1l1+ m2a1) cos(q1) + m2l2cos(q1+ q2)) g2 = gm2l2cos(q1+ q2) (3.19) quindi le matrici delle molle, dell’attrito viscoso ai giunti e delle masse dei motori

K =k1 0 0 k2  Kv = kv1 0 0 kv2  M = Jm1 0 0 Jm2  (3.20)

controllo in velocità Nel caso di controllo dei motori del braccio in velocità, possiamo riscrivere le (3.16) come

(

B(q)¨q + C(q, ˙q) ˙q + G(q) + Kvq − K(θ − q) = 0˙

˙

θ = umot

(38)

considerando come ingresso umot.

Prendendo quindi come vettore di stato x = [q1q2 q˙1q˙2θ1 θ2]T ∈ R6, vettore dei

controlli u = [u1u2]T ∈ R2, possiamo riscrivere il sistema delle equazioni di stato

come                                                                        ˙x1 = x3 ˙x2 = x4 ˙x3 =

I2k2x2−I2k1x1+I2k1x5−I2k2x6−I2kv1x3+I2kv2x4−k1l22m2x1+k2l22m2x2+k1l22m2x5−k2l22

−a2 1l22m22c22+a21l22m22+I2a21m2+m1l21l22m2+I2m1l21+I1l22m2+I1I2 +kv2l22m2x4+a1l32m22x23s2+a1l32m22x42s2−a1gl22m22c1−I2a1gm2c1+m2x6−kv1l22m2x3 −a2 1l22m22c22+a21l22m22+I2a21m2+m1l21l22m2+I2m1l21+I1l22m2+I1I2 +−I2gl1m1c1+2a1l32m22x3x4s2+a1gl22m22c12c2+a21l22m22x23c2s2+a1k2l2m2x2c2+I2a1l2m2x23s2 −a2 1l22m22c22+a21l22m22+I2a21m2+m1l12l22m2+I2m1l12+I1l22m2+I1I2 +−a1k2l2m2x6c2+a1kv2l2m2x4c2+I2a1l2m2x24s2−gl1l22m1m2c1+2I2a1l2m2x3x4s2 −a2 1l22m22c22+a21l22m22+I2a21m2+m1l21l22m2+I2m1l21+I1l22m2+I1I2 ˙x4 = −

(I1k2x2−I2k1x1+I2k2x2+I2k1x5−I1k2x6−I2k2x6−I2kv1x3+I1kv2x4+I2kv2x4+a21k2m2x2−a21k2m2x6

−a2 1l22m22c22+a21l22m22+I2a21m2+m1l12l22m2+I2m1l21+I1l22m2+I1I2 −a21kv2m2x4−k1l22m2x1+k2l12m1x2+k2l22m2x2+k1l22m2x5−k2l21m1x6−k2l22m2x6+kv2l21m1x4−kv1l22m2x3 −a2 1l22m22c22+a21l22m22+I2a21m2+m1l21l22m2+I2m1l21+I1l22m2+I1I2 −kv2l22m2x4+a1l32m22x23s2+a31l2m22x23s2+a1l32m22x24s2+a21gl2m22c12−a1gl22m22c1+I1gl2m2c12 −a2 1l22m22c22+a21l22m22+I2a21m2+m1l21l22m2+I2m1l21+I1l22m2+I1I2

−−I2a1gm2c1−I2gl1m1c1+2a1l32m22x3x4s2+a1gl22m22c12c2+2a21l22m22x23c2s2+a21l22m22x24c2s2

−a2

1l22m22c22+a21l22m22+I2a21m2+m1l21l22m2+I2m1l21+I1l22m2+I1I2

−−a1k1l2m2x1c2+2a1k2l2m2x2c2+a1k1l2m2x5c2−2a1k2l2m2x6c2−a1kv1l2m2x3c2+2a1kv2l2m2x4c2

−a2 1l22m22c22+a21l22m22+I2a21m2+m1l21l22m2+I2m1l21+I1l22m2+I1I2 −−a21gl2m22c1c2+gl21l2m1m2c12+I1a1l2m2x23s2+I2a1l2m2x32s2+I2a1l2m2x24s2−gl1l22m1m2c1 −a2 1l22m22c22+a21l22m22+I2a21m2+m1l21l22m2+I2m1l21+I1l22m2+I1I2 −2a21l22m22x3x4c2s2+a1l21l2m1m2x32s2+2I2a1l2m2x3x4s2−a1gl1l2m1m2c1c2 −a2 1l22m22c22+a21l22m22+I2a21m2+m1l21l22m2+I2m1l21+I1l22m2+I1I2 ˙x5 = u1 ˙x6 = u2 (3.22) dove c∗ e s∗, dove ∗ rappresenta un argomento generico corrispondono a cos(∗)

e sin(∗).

L’indice di performance J anche in questo caso rappresenta il modulo della velocità finale dell’End-Effector

J = −VEEX sin(θ1+ θ2) + VEEY cos(θ1 + θ2) (3.23)

con

( VX

EE(θ, ˙θ) = −a1θ˙1sin(θ1) − a2( ˙θ1+ ˙θ2) sin(θ1+ θ2)

VY

EE(θ, ˙θ) = a1θ˙1cos(θ1) + a2( ˙θ1+ ˙θ2) cos(θ1+ θ2)

(3.24)

Da SEA a VSA Il passaggio da attuatori a rigidezza fissa a variabile è il medesimo per il caso di manipolatore a singolo link 3.3.1.

(39)

Soluzioni Proposte

In questo capitolo vengono riportate due metodologie per risolvere un problema di controllo ottimo a ciclo aperto. La seconda soluzione (Evolution Tree) viene poi adottata per le varie simulazioni ed esperimenti sul braccio robotico. La terza proposta riguarda una estensione della precedente nel caso in cui volessimo, in linea teorica, eseguire dei task di lunghezza temporale scelta a piacere.

4.1

IS-BVP Solver

Il primo metodo proposto è un metodo indiretto2.3.1. Formalizziamo il problema nel seguente modo:

Dati

• Un range temporale [t0, tf]

• Uno stato iniziale x(t0)

• Uno stato finale x(tf)

• Equazioni della dinamica ˙x = f (x, u) non lineari

• Vincoli sugli ingressi U = [u1. . . um] con umini ≤ ui ≤ umaxi ∀i ∈ {1, . . . , m}

• Vincoli di percorso (2.3) assenti

Vogliamo ottimizzare un indice di performance del tipo (2.1)

Il problema viene formulato con l’Hamiltoniano (2.13) senza moltiplicatori di lagrange associati ai vincoli sugli stati.

H(x, λ, u, t) = φ + λTf (4.1)

La cosa che dobbiamo fare è risolvere un BVP. Con il problema formulato in precedenza abbiamo condizioni al contorno in parte al tempo iniziale x(t0) e in

parte al tempo finale λ(tf). Prendendo in considerazione un metodo di shooting

potrei pensare di integrare n equazioni differenziali da t0 in avanti (o le altre n da

tf all’indietro). Ricordiamo inoltre che nel caso in cui non siano presenti vincoli

sugli stati del sistema e che i controlli siano lineari nelle equazioni della dinamica, il

Riferimenti

Documenti correlati

Istituzioni di Matematiche I per Geologi, Vecchi Ordinamento Scritto Generale: 18-5-2001;

Istituzioni di Matematiche I per Geologi (Vecchio Ordinamento) Scritto Generale: 6-7-2001; Docente: C.. Van

Scritto Generale: 14-7-2000; Docente: C. Van

Istituzioni di Matematiche I per Geologi, Vecchi Ordinamento Scritto Generale: 29-9-2001;

Scritto Generale: 22-9-2000; Docente: C. Van

Sulla base di tale prospettiva teoretica, il saggio indaga la natura delle relazioni fra le discipline degli archivi, delle biblioteche e dei musei rispondendo a due

Paolo Dario Dott.ssa Francesca di Puccio Dott.ssa Arianna Menciassi Dott.. Ai miei genitori, che mi hanno sempre sostenuto nei

vera e propria creazione di un Marchio culturale per promuovere attraverso ideologie e diverse attività la diffusione della cultura cinese nel mondo. Inoltre,