• Non ci sono risultati.

4.1 Strategia di controllo per regolare il moto di rollio del motociclo

N/A
N/A
Protected

Academic year: 2021

Condividi "4.1 Strategia di controllo per regolare il moto di rollio del motociclo "

Copied!
26
0
0

Testo completo

(1)

4 Sistema di controllo: “pilota virtuale”

In questo capitolo verrà descritta la realizzazione di un sistema di controllo capace di

“guidare” un veicolo a due ruote. Con il termine “guidare” si intende sia la capacità di evitare la caduta del veicolo contrastando l’intrinseca instabilità del motociclo, sia la capacità di fargli seguire, con “piccoli” errori, una traiettoria imposta a priori. Il fine di questo lavoro è quello di simulare il più fedelmente possibile il comportamento del pilota reale ovvero le azioni che egli esercita sullo sterzo per governare il motociclo. Sarà dunque necessario modellare la percezione del pilota delle condizioni di moto attuale e la sua capacità di previsione di quelle future.

Il controllore comanderà la coppia da applicare allo sterzo e la forza di trazione/frenatura da applicare alla ruota posteriore, in base ai valori delle grandezze monitorate e alla logica di controllo, con le modalità illustrate nei prossimi paragrafi.

Figura 4.1 - Diagramma a blocchi del sistema motoveicolo controllato dal pilota.

(2)

L’insieme di tutte le regole di controllo costituirà dunque il “cervello” del pilota virtuale che verrà implementato in Simulink e utilizzato nelle simulazioni per “guidare” il motociclo, la cui dinamica verrà determinata in ambiente ADAMS. Il diagramma a blocchi realizzato in Simulink è riportato in Figura 4.1; si può notare il blocco relativo al modello di motoveicolo importato da ADAMS evidenziato con colore arancio.

4.1 Strategia di controllo per regolare il moto di rollio del motociclo

La strategia di controllo che un pilota di motociclo adotta per evitare la caduta, viene acquisita sulla base dell’esperienza: se il veicolo sta cadendo da un lato, il pilota deve sterzare da quello stesso lato per creare una forza centrifuga capace di riportarlo nella posizione originaria, opponendosi all’azione della forza peso. Le operazioni da compiere per effettuare una curva, non sono per niente intuitive ed anch’esse sono legate all’esperienza: il guidatore dovrà infatti prima “controsterzare” verso l’esterno (in modo da creare una forza centrifuga iniziale capace di inclinare il veicolo verso l’interno della curva) e successivamente dovrà sterzare verso l’interno (in modo da creare una forza centrifuga capace di frenare la caduta del motoveicolo, stabilizzarlo ad un certo angolo di rollio e seguire la curva voluta).

In realtà il fenomeno è più complesso, in quanto le modalità di guida sono fortemente influenzate dalla velocità di avanzamento con cui si esegue la manovra.

Alle basse velocità infatti acquistano importanza anche i movimenti che il pilota stesso effettua con il proprio corpo per controllare il moto di rollio: nel presente lavoro non si considereranno tali azioni, supponendo che il pilota si muova solidalmente con il telaio del motociclo.

Inoltre a velocità sufficientemente alte diventano rilevanti i momenti giroscopici associati alla rotazione delle ruote ed indotti dai moti di rollio e di sterzata, che possono essere riassunti brevemente, tenendo presenti le convenzioni adottate riguardo ai versi positivi degli angoli, visibili nelle Figura 3.14 e Figura 3.15:

• effetto giroscopico sullo sterzo (ruota anteriore-rollio): un moto di rollio positivo del motociclo, e dunque anche della ruota anteriore, genera sullo sterzo un momento giroscopico che tende a ruotare lo sterzo in senso negativo, favorendo l’inserimento in curva;

(3)

• effetto giroscopico sul motociclo (ruote-rollio): un moto di rollio positivo del motociclo, e dunque anche delle ruote, genera sul veicolo stesso un momento giroscopico di imbardata negativo;

• effetto giroscopico ruota anteriore-sterzo: il moto di rotazione dello sterzo in senso positivo genera un momento giroscopico che tende a generare un angolo di rollio positivo; ad alte velocità questo effetto può essere sfruttato nella manovra di inserimento in curva, durante la fase di controsterzo prima descritta, in aggiunta all’azione della forza centrifuga; ruotando infatti il manubrio verso l’esterno della curva molto velocemente (con un’azione quasi impulsiva), si genera un momento giroscopico che tende a far inclinare la moto verso l’interno della curva, favorendone l’inserimento.

Nel paragrafo seguente verrà illustrato il modo in cui si sono tradotti i suddetti comportamenti di guida in espressioni analitiche.

4.1.1 Realizzazione delle regole di controllo

Per percorrere una traiettoria curvilinea la motocicletta deve necessariamente inclinarsi di un certo angolo di rollio φ verso l’interno della curva, in modo tale che il conseguente momento della forza peso che si viene a creare bilanci quello generato dalla forza centrifuga. Il valore di equilibrio dell’angolo di rollio, φr, può essere facilmente trovato con semplici considerazioni di equilibrio assumendo le seguenti ipotesi semplificative:

• curva a raggio costante compiuta a velocità costante (condizioni stazionarie);

• effetti giroscopici trascurabili;

• ruote lenticolari (spessore pneumatici nullo).

Con riferimento alla Figura 4.2 l’equilibrio dei momenti ci consente di ricavare:

(4.1) ⎟⎟⎠

⎜⎜ ⎞

⎛ ⋅

= g

C un t

r

2

arctan

φ ,

dove con Ct si è indicata la curvatura della traiettoria da percorrere.

Si noti che il valore del rollio a regime, con le ipotesi fatte, non è influenzato dalle caratteristiche geometriche del veicolo, ma dipende soltanto dalla curvatura della traiettoria e dalla velocità longitudinale.

(4)

G

N Fz

φ

Yf +Yr r

mg

Ctu2n

m

Figura 4.2 – Equilibrio a rollio in curva del motociclo.

Guidare il motociclo in una curva a raggio costante equivale dunque a mantenere l’angolo di rollio in un intorno del valore di equilibrio dato dalla (4.1). In una traiettoria generica la curvatura varierà da punto a punto, per cui il veicolo dovrà mantenersi prossimo ad un angolo di rollio φr(t) dato sempre dalla (4.1), in cui questa volta avremo Ct =Ct

( )

t .

In base a queste considerazioni si può realizzare un primo semplice sistema di controllo che, applicando una coppia di sterzo τ, generi forze laterali sui pneumatici tali da far seguire una traiettoria curvilinea e perciò una forza centrifuga capace di contrastare la caduta del veicolo dovuta alla forza peso. In particolare il controllo può agire applicando la coppia τ finché non si annulla la differenza fra l’angolo di rollio effettivo φ(t) e l’angolo φr(t) dato dalla (4.1); in formule possiamo scrivere:

(4.2)

[ ]

⎢ ⎤

⎡ ⎟⎟

⎜⎜ ⎞

⎛ ⋅

=

= g

t C t u

K t t K

t r n t( )

arctan )

( )

( ) ( )

(

2 2

2 φ φ φ

τ ,

ove K2 è un coefficiente positivo, in generale non costante.

Un controllore basato sulla semplice relazione (4.2) produrrebbe una legge di rollio non smorzata con oscillazioni eccessive, che porterebbero facilmente all’instabilità nell’esecuzione di manovre che impongano il raggiungimento di angoli di rollio relativamente elevati.

Si può quindi migliorare il controllore introducendo il concetto di previsione del moto di rollio: si suppone cioè che un guidatore sia capace di percepire le entità delle variazioni prima e seconda del rollio (e quindi i valori di φ& e (t) φ&& ) e perciò di capire in anticipo (t) l’angolo di rollio che il veicolo avrà dopo un certo “tempo di previsione del rollio” T È

(5)

possibile tradurre questo concetto in termini matematici approssimando il valore di φ(t+Tpr) con uno sviluppo in serie di Taylor troncato al termine con la derivata seconda:

(4.3) .

) 2 ( )

( ) ( ) (

2 pr pr

pr

t T T

t t T

t+ =φ +φ ⋅ +φ ⋅

φ & &&

Supponendo di progettare un controllore che applichi una coppia di sterzo finché il rollio previsto dalla (4.3) non eguagli quello desiderato dato dalla (4.1), ma previsto per il medesimo istante, si ottiene che:

(4.4)

[ ]

⎥⎥

⎢⎢

⎟⎟

⎜⎜

⎛ ⋅ +

⋅ +

⋅ +

=

= +

− +

=

g T t C t u

K t T K T t

K

T t T

t K t

pr t n pr

pr

pr d

pr

) arctan (

) ( )

( )

2 (

) ( ) ( )

(

2 2

2 2

2 2

φ φ

φ

φ φ

τ

&

&&

Il tempo di previsione del rollio deve essere sufficientemente piccolo (così da mantenere abbastanza accurata la relazione (4.3)) e ha un significato fisico ben preciso legato al comportamento umano reale che permette di stimare Tpr con valori ragionevoli intorno a 0.4-0.8s. È infatti intuibile che a valori più grandi di Tpr corrisponda, per un pilota reale, una minor precisione della stima del rollio futuro: l’equazione (4.3) verifica molto bene questa proprietà e può così rappresentare in modo sufficientemente realistico la limitazione delle capacità umane nella predizione del moto di rollio.

La (4.4) è soltanto una delle tante possibili soluzioni che permettono di controllare il moto di rollio. Nulla vieta, ad esempio, di utilizzare una legge di controllo che impieghi dei coefficienti generici per le derivate temporali prima e seconda dell’angolo di rollio:

(4.5)

[ ]

) . arctan (

) ( )

( )

(

) ( ) ( )

( )

( )

(

2 2

1 0

2 1

0

⎥⎥

⎢⎢

⎟⎟

⎜⎜

⎛ ⋅ +

⋅ +

⋅ +

=

= +

⋅ +

⋅ +

=

g T t C t u

K t K t K

T t t K t K t K t

pr t n pr r

φ φ

φ

φ φ φ

φ τ

&

&&

&

&&

In questo caso il controllore agisce applicando una coppia di sterzo che tende ad annullare il secondo membro dell’equazione. Le soluzioni che possono essere adottate, dunque, sono molteplici e non è possibile dire a priori quale tra queste sia la migliore. In futuro verrà utilizzato sempre il controllore espresso dalla (4.5), con opportune modifiche (come si vedrà in seguito) per compensare gli errori di traiettoria. Come si vedrà nei prossimi paragrafi, i valori dei coefficienti K0, K1 e K2, non saranno costanti durante la manovra, ma saranno funzione dell’angolo di rollio desiderato futuro.

(6)

4.2 Strategia di controllo per guidare il motociclo su una traiettoria imposta

Imporre un percorso da seguire, significa principalmente fare in modo che il punto N del motoveicolo (definito nel capitolo 3) compia una traiettoria il più possibile coincidente con il percorso in questione e quindi con errori di posizione ∆R(t) e di direzione ∆Ψ(t) sufficientemente piccoli (Figura 4.3).

∆R (t) N(t)

v

N

traiettoria imposta

∆Ψ(t)

P(t)

Figura 4.3 – Traiettoria imposta: errori di posizione e direzione

Le coordinate dei punti della traiettoria imposta sono esprimibili nel sistema di riferimento fisso (x,y,z,O) in funzione della coordinata curvilinea s:

(4.6)

⎩⎨

=

= (s) f y

(s) f x

y t

x

t .

La posizione del veicolo (punto N) varia nel tempo e ad essa corrisponderà, istante per istante, un valore di s(xN(t),yN(t)) che individui il punto P(t) più vicino ad N(t) fra tutti quelli appartenenti al percorso imposto. Gli errori di posizione e di direzione dovranno quindi essere calcolati come la distanza fra N e P e come l’angolo fra VN(t) e la tangente in P alla traiettoria da seguire. In definitiva si ha che gli errori ∆R(t) e ∆Ψ(t), e la curvatura del percorso imposto Ct(t) sono funzioni delle coordinate del punto N(t) e di ψv(t):

(4.7)

⎪⎩

⎪⎨

=

= ) (

∆Ψ

= ) (

)].

( ), ( [ ) (

)]

( ), ( ), ( [

)]

( ), ( [

t y t x f t C

t t y t x f t

t y t x f t R

N N Ct t

v N N

N N r

ψ ψ

(7)

Nei prossimi paragrafi sarà illustrato il procedimento usato per la determinazione degli errori dati dalle (4.7).

Qualora il veicolo si trovi, ad un dato istante t, con un R(t) e un ∆Ψ(t) non nulli, il pilota deve agire sullo sterzo per compiere delle traiettorie curvilinee al fine di azzerare detti errori, oltre a mantenere il veicolo in equilibrio. Questa operazione è meno banale di quanto sembri; supponiamo infatti, che la traiettoria imposta sia un rettilineo e al tempo t1 il veicolo si trovi sulla sinistra del rettilineo e in posizione verticale: il pilota, se sterzasse a destra per cercare di recuperare immediatamente l’errore di posizione, cadrebbe a sinistra a causa del momento generato dalla forza centrifuga (freccia blu di Figura 4.4). Per diminuire l’errore è necessario che il pilota prima sterzi a sinistra per inclinarsi a destra e poi sterzi a destra per arrestare la caduta e impostare una curva tale da diminuire l’errore di posizione.

R ∆R(t1)

N

F ∆R(t2)

il pilota sterza a sinistra, il motociclo si inclina a destra e curva a sinistra

il pilota sterza a destra, il motociclo si stabilizza con rollio verso destra e curva a destra

rettilineo imposto

vN

vN R

N F

Figura 4.4 - Manovra corretta per diminuire l’errore di traiettoria: vista dall’alto

È chiaro che una manovra di questo tipo dapprima porta ad un aumento dell’errore di traiettoria (R(t2)>R(t1)) e solo successivamente lo recupera; quanto appena detto è valido non solo nella marcia in rettifilo ma anche nel moto in curva.

Infine, bisogna precisare che non esiste un modo univoco per recuperare l’errore bensì ogni pilota può decidere di farlo in modo più o meno veloce, compiendo traiettorie con curvatura più o meno grande a seconda delle esigenze e del proprio stile di guida.

4.2.1 Realizzazione delle regole di controllo

Il controllore realizzato nel paragrafo 4.1 è di fondamentale importanza per regolare il moto di rollio del motociclo, ma può far seguire al veicolo una traiettoria imposta solo grossolanamente, imponendo l’angolo di rollio desiderato, senza però recuperare gli errori di posizione e di direzione che dunque si accumulerebbero sempre più al proseguire della manovra. Per poter seguire una traiettoria con sufficiente precisione, è necessario che il controllore si accorga anche dell’eventuale errore di posizione e di direzione del veicolo e agisca sullo sterzo nel modo descritto in Figura 4.4. Supponiamo ancora che il motociclo

(8)

debba seguire un percorso rettilineo, allora la curvatura imposta è identicamente nulla e dunque anche φr(t). Supponiamo poi che, a causa di un disturbo, il veicolo si ritrovi con rollio non nullo e con un certo ∆R(t) e ∆Ψ(t). Per recuperare tali errori, il veicolo deve seguire una traiettoria curvilinea (diversa da quella imposta) ma, per non far cadere il motociclo, il controllore deve calcolare e imporre a priori un “angolo di rollio desiderato”

non nullo (perciò differente da φr(t) e dipendente anche da R(t) e ∆Ψ(t) ) e necessario a mantenere l’equilibrio. Tanto più grande è l’angolo di rollio imposto dal controllore, tanto maggiore sarà la curvatura della traiettoria reale che il veicolo compie e tanto più velocemente verrà recuperato l’errore. La traiettoria che deve fare il veicolo per ridurre

R(t) e ∆Ψ(t) può quindi assumere varie forme (come si può vedere dalla Figura 4.5) a seconda che si voglia dare più importanza all’errore di posizione o all’errore di direzione.

N

rollio imposto dal controllo

Figura 4.5 - Esempio di possibili traiettorie per recuperare l’errore.

Un controllore di questo tipo può ancora utilizzare l’equazione (4.5), purché si imponga il seguente “angolo di rollio desiderato”:

(4.8)

[ ]

) ( )

( arctan

)

( 3 4

2

t K

t R g K

(t) (t),y x C

t un t N N

d ⎟⎟⎠+ ′⋅∆ + ′⋅∆Ψ

⎜⎜ ⎞

⎛ ⋅ φ =

ove K3’ e K4’ sono due coefficienti positivi se si suppongono positivi R(t) e ∆Ψ(t) quando si è nella situazione di Figura 4.3. La (4.8) esprime l’angolo di rollio desiderato non solo per traiettorie imposte rettilinee ma anche curvilinee; queste ultime hanno una Ct[xN(t),yN(t)] dipendente dal punto nel piano stradale in cui si trova il veicolo.

Eseguendo la suddetta sostituzione e indicando con K3 =K2K3′ e K4 =K2K4′, si ottiene l’equazione che regola il controllore:

(4.9)

[ ]

. ) ( )

(

arctan )

( )

( )

( )

(

4 3

2 2

1 0

t K

t R K

g

(t) (t),y x C t u

K t K t K

t n t N N

∆Ψ

⎥+

⎢ ⎤

⎡ ⎟⎟

⎜⎜ ⎞

⎛ ⋅

⋅ +

⋅ +

= φ φ φ

τ && &

(9)

Come è facile verificare se i termini relativi all’errore di traiettoria si annullano si ottiene esattamente la (4.5). Se invece sono positivi, il controllore sembra correggere lo sterzo solo per allontanarsi dal percorso imposto: nella realtà lo fa solo inizialmente e per inclinare il veicolo; infatti man mano che il termine K2⋅φ(t) cresce, dato che il suo contributo è di segno opposto rispetto ai termini −K3∆R(t)K4∆Ψ(t), ad un certo punto il valore di τ cambia segno e quindi il controllore comincia a correggere lo sterzo dalla parte opposta avvicinandosi al percorso imposto.

In pratica la (4.9) riesce a tradurre in termini matematici il comportamento del pilota nella manovra descritta ad inizio paragrafo e nella Figura 4.4. Variando poi i coefficienti K3

e K4, si varia l’importanza che il controllo dà rispettivamente all’errore di posizione e di direzione e dunque si possono far compiere al motociclo traiettorie di diversa forma così da simulare differenti stili di guida.

4.2.2 Controllo con previsione di traiettoria

Il controllo realizzato tramite la (4.9) è basato sull’errore di traiettoria istantaneo percepito dal pilota. In realtà, il guidatore può sfruttare le sue capacità di percezione dello stato del sistema e di previsione del moto futuro per calcolare l’errore di traiettoria che commetterebbe dopo un certo “tempo di previsione degli errori” Tpe (Figura 4.6).

∆Ψ(t)

∆R (t) P(t) N(t)

v

N

(t)

traiettoria imposta

∆Ψ (t+peT

)

∆R(t+T

pe)

P(t+Tpe)

N(t+Tpe)

v

N

(t+T

pe

)

Figura 4.6 - Previsione dell’errore di traiettoria.

Si possono determinare le coordinate future del punto N sviluppandole in serie di Taylor sino al secondo ordine:

(4.10)

2 . ) ( )

( ) ( ) (

2 , ) ( )

( ) ( ) (

2 2

pe N

pe N N

pe N

pe N

pe N N

pe N

t T y T t y t y T t y

t T x T t x t x T t x

⋅ +

⋅ +

= +

⋅ +

⋅ +

= +

&&

&

&&

&

(10)

Analogamente si può calcolare la direzione del veicolo al tempo t+Tpe, per cui, ricordando la (3.10), si ha che:

(4.11) ⎟⎟

⎜⎜

⋅ +

⋅ + +

⋅ +

⋅ +

= +

pe n

n

pe n

n pe

pe pe

v u t u t T

T t v t v t T

T t t T

t ( ) ( )

) ( ) arctan ( ) 2

( )

( ) ( ) (

2

&

&

&&

& ψ

ψ ψ ψ

Le equazioni (4.10) e (4.11) forniscono una stima della posizione e della direzione che il motociclo avrà al tempo t+Tpe con precisione tanto maggiore quanto minore è il valore di Tpe. E’ ora possibile stimare gli errori di posizione e direzione che il veicolo avrà all’istante t+Tpe: ricordando le equazioni (4.7) possiamo scrivere:

(4.12)

⎪⎩

⎪⎨

+ +

+

= ) + (

∆Ψ

+ +

= ) + (

)].

( ), (

), (

[

)]

( ), (

[

pe v pe N

pe N

pe

pe N

pe N

r pe

T t T

t y T t x f T t

T t y T t x f T t R

ψ ψ

Inoltre è possibile stimare la curvatura del percorso imposto che il veicolo dovrà seguire al tempo t+Tp_C:

(4.13) Ct(t+Tp_C)= fCt[xN(t+Tp_C),yN(t+Tp_C)].

Si noti che si sono tenuti distinti i tempi di previsione degli errori e della curvatura della traiettoria, Tpe e Tp_C rispettivamente. I loro effetti sul comportamento del controllore sono infatti diversi: in particolare Tpe rappresenta quanto lontano valutare gli errori di posizione e direzione, mentre Tp_C in pratica stabilisce l’anticipo con cui iniziare una manovra di inserimento in curva o di uscita da una curva. Dalle simulazioni effettuate si è visto che è possibile modificare il comportamento di guida, e dunque tarare il controllore, molto più rapidamente agendo sulle due suddette costanti separatamente.

Possiamo a questo punto riscrivere la regola di controllo data dalla (4.9) nel caso di previsione della traiettoria (tecnica Look-Ahead):

(4.14)

. ) ( )

(

) arctan (

) ( )

( )

( )

(

4 3

_ 2

2 1

0

pe pe

C p t n

T t K

T t R K

g T t C t u

K t K t K t

+

∆Ψ

− +

⎥+

⎢⎢

⎟⎟

⎜⎜

⎛ ⋅ +

⋅ +

⋅ +

= φ φ φ

τ && &

L’equazione (4.14) permette al controllore di agire con un certo anticipo per iniziare una manovra. Questo anticipo è dovuto sia ai termini contenenti l’errore futuro di traiettoria, sia al termine contenente la previsione di curvatura. Se il veicolo, ad esempio, deve affrontare il passaggio da rettilineo a curva, il controllore comincia a sterzare Tp_C secondi prima di incontrare l’inizio reale della curva: questo fatto è molto positivo in quanto dà al veicolo il

(11)

tempo di recuperare parzialmente l’errore dovuto al controsterzo iniziale e perciò consente un miglior inserimento in curva.

4.3 Variabilità dei coefficienti del controllore in funzione di φ

r

Nei paragrafi precedenti si è giunti alla realizzazione di un controllore, definito matematicamente dall’equazione (4.14), che valuta ad ogni passo della simulazione il valore della coppia da applicare allo sterzo. Nella (4.14) compaiono cinque coefficienti, K0, K1, K2, K3 e K4, il cui valore determina, assieme ai tempi di previsione della traiettoria, lo

“stile di guida” del pilota virtuale; in particolare, supponendo di variare i coefficienti uno alla volta, mantenendo fissi gli altri, si notano i seguenti effetti qualitativi:

• All’aumentare di K2 il sistema reagisce più velocemente alle variazioni di curvatura del percorso portandosi più velocemente all’angolo di rollio desiderato φr; la frequenza dell’oscillazione del moto di rollio aumenta, e così anche la sua ampiezza attorno alla posizione di equilibrio. Aumentando ancora K2 si osserva la nascita di una seconda onda di frequenza più elevata nell’oscillazione del moto di rollio; continuando ad aumentare K2 il sistema diventa instabile.

• All’aumentare di K1 si ha un maggiore smorzamento dell’oscillazione del moto di rollio attorno alla configurazione di equilibrio che rende più stabile il sistema.

• All’aumentare di K0 si ottiene un sistema più pronto nel reagire a perturbazioni del suo stato di equilibrio, cosa favorevole ad esempio nel caso di un disturbo laterale causato da un colpo di vento. Si ha però anche un aumento dell’oscillazione del moto di rollio attorno alla posizione di equilibrio, che risulta sfavorevole nella fase di raggiungimento dell’angolo di rollio necessario per impostare una determinata curva: in tal caso aumentando troppo K0 si supera l’angolo di rollio desiderato φr e questo può portare all’instabilità nel caso di curve piuttosto impegnative.

• All’aumentare di K3 e K4 il sistema è più sensibile alla correzione degli errori di posizione e di traiettoria rispettivamente.

Nel paragrafo 5.1.2 verrà illustrato quantitativamente l’effetto dei singoli coefficienti con l’ausilio dei risultati delle simulazioni relative al caso di marcia in rettilineo con disturbo laterale esterno.

(12)

Il problema fondamentale nella scelta dei coefficienti è che i loro effetti non sono indipendenti gli uni dagli altri, ed inoltre il loro valore ottimale dipende dalla manovra che si sta effettuando. In particolare possiamo distinguere due situazioni limite:

¾ veicolo in rettilineo;

¾ veicolo in curva con elevati angoli di rollio.

Dalle simulazioni effettuate si è trovato che in rettilineo si può adottare un valore basso per il coefficiente K2 (relativamente al moto in curva), che consente, a parità di K3 e K4, di recuperare velocemente gli errori di posizione e direzione; valori troppo alti per K2 infatti non consentirebbero al veicolo di inclinarsi per recuperare rapidamente gli errori, in quanto lo vincolerebbero troppo a rimanere in posizione verticale.

Al contrario, in curva, i valori dei coefficienti ottimali per il caso di rettilineo genererebbero eccessive oscillazioni causate dagli errori di traiettoria, che potrebbero portare all’instabilità nel caso di curve particolarmente impegnative. In tal caso occorrono dunque valori maggiori di K2 ed anche di K1, che garantiscano il raggiungimento del valore dell’angolo di rollio desiderato in modo sufficientemente rapido (K2 alto), ma al tempo stesso smorzato (K1 alto).

Per ottenere dunque un controllore che sia in grado di guidare in modo soddisfacente nelle diverse manovre affrontate, si sono adottati valori dei coefficienti variabili durante la manovra. La grandezza che si è scelta come rappresentativa per definire le leggi di variazione dei coefficienti è l’angolo di rollio desiderato φr: infatti la sua espressione (vedi equazione (4.1)) tiene conto sia della curvatura della traiettoria, distinguendo tra i casi di rettilineo e di curva, sia della velocità di avanzamento del veicolo, che indica, a parità di curvatura, il livello di “difficoltà” della curva.

Per semplificare il problema si è utilizzata per i coefficienti una legge di variazione lineare in funzione di φr: è quindi stato necessario scegliere il valore dei coefficienti per due valori di φr, in modo da definire la retta interpolante. Tali due valori sono il valore nullo, corrispondente al rettilineo, ed il valore φr = 36°, corrispondente al tratto di circonferenza definita nella manovra di “otto”; le relative simulazioni verranno illustrate nei prossimi capitoli.

Per la scelta dei coefficienti si sono inizialmente considerati non nulli solo K0, K1 e K2: in tal modo si è potuto valutare il comportamento a rollio del sistema, tarando i valori seguendo i criteri qualitativi prima esposti. Si osservi che nel caso della manovra di curva è

(13)

importante scegliere un adeguato valore di Tp_C, in modo da avere un inserimento in curva ottimale.

Dopo avere scelto i valori ottimali di K0, K1 e K2 nei due casi considerati è immediato interpolarli con legge lineare in funzione dell’angolo di rollio desiderato φr; in tal modo, ad ogni passo di simulazione, il controllore sceglierà i valori dei suddetti coefficienti in base al valore attuale di φr.

A questo punto si può introdurre l’errore di direzione introducendo valori non nulli per K4 e per il tempo di previsione degli errori Tpe; in modo analogo a prima si otterranno due valori per K4 grazie ai quali si potrà definire la retta interpolante. Si noti che mantenendo K3

nullo il controllore si disinteresserà dell’errore di posizione, e tenderà a seguire una traiettoria con direzione parallela a quella imposta ma leggermente traslata.

Infine si introducono valori non nulli anche per K3, sino ad ottenere un comportamento ottimale nelle due situazioni considerate, e si definisce la retta interpolante anche per l’ultimo coefficiente.

In conclusione possiamo riscrivere l’equazione (4.14) tenendo conto della variabilità dei coefficienti:

(4.15)

( ) ( ) ( )

( )

( )

( )

( ).

) arctan (

) ( )

( )

( )

(

4 3

_ 2

2 1

0

pe r

pe r

C p t n r

r r

T t K

T t R K

g T t C t u

K t K

t K

t

+

∆Ψ

− +

⎥+

⎢⎢

⎟⎟

⎜⎜

⎛ ⋅ +

⋅ +

⋅ +

=

φ φ

φ φ φ

φ φ

φ

τ && &

Si osservi che le scelte effettuate non sono le uniche possibili; nulla vieta ad esempio di adottare una legge non lineare per legare i coefficienti all’angolo φr: ciò comporterebbe però la necessità di considerare più di due manovre di ottimizzazione per la definizione della curva interpolante.

4.4 Strategia di controllo per regolare la velocità longitudinale

Al fine di regolare la velocità longitudinale del veicolo si vuole realizzare un semplicissimo controllore capace di agire sulla forza Ft. In particolare, fissata a priori la velocità desiderata, il controllore deve far sì che essa venga raggiunta e mantenuta dal motociclo.

Per ottenere un tale effetto si è ideato un controllore basato sulla seguente equazione:

(4.16) F&t(t)=−C1u&n(t)+C2

(

udes(t)−un(t)

)

.

(14)

ove C1 e C2 sono costanti positive e udes(t) è la velocità di avanzamento desiderata.

Il controllo realizzato dalla (4.16) agisce variando la forza di trazione/frenatura solo se istante per istante la velocità attuale del veicolo è diversa da quella desiderata o l’accelerazione di avanzamento è non nulla. Se il veicolo ha velocità inferiore a quella desiderata, il controllore agisce aumentando Ft(t) e viceversa. L’effetto del considerare anche l’accelerazione di avanzamento è quello di smorzare la risposta del sistema, evitando eccessive oscillazioni della velocità intorno al valore desiderato, e rendendo più veloce la compensazione di piccoli errori.

Questo controllore non tiene conto della caratteristica del motore, bensì presuppone di poter usufruire di una forza a terra qualsiasi. Lo scopo di questo controllo è però quello di mantenere una velocità circa costante durante tutta la durata delle varie simulazioni, il che presuppone piccole variazioni di Ft(t) dovute ai soli cambi di direzione del veicolo: non verrà quindi utilizzato per simulare manovre di accelerazione o di frenatura.

4.5 Implementazione del controllore in Simulink

Il sottosistema “Pilota virtuale” di Figura 4.1 risulta essere composto da ulteriori sottosistemi (Figura 4.7), ognuno dei quali ha una precisa funzione.

(15)

Il blocco “calcolo forza di trazione” (Figura 4.8) rappresenta l’equazione (4.16) per la regolazione della velocità longitudinale.

1 Ft 1

s

C2 C1

3 Un 2 Acc longit

1

Velocità_desiderata

Figura 4.8 - Diagramma a blocchi “calcolo forza di trazione”: equazione (4.16).

Il blocco denominato “calcolo coppia di sterzo” rappresenta l’equazione (4.15) ed il relativo schema a blocchi è riportato in Figura 4.9.

Figura 4.9 - Sottosistema “calcolo coppia di sterzo”: equazione (4.15).

(16)

Al suo interno si trova il blocco “scelta guadagni controllore”, che determina il valore dei coefficienti del controllore in funzione dell’angolo di rollio desiderato φr, come illustrato nel paragrafo 4.3; il relativo schema a blocchi è riportato in Figura 4.10.

Figura 4.10 – Sottosistema “scelta guadagni controllore”.

L’ultimo blocco del sistema “pilota” di Figura 4.7 è quello denominato “previsione traiettoria ed errori”; il suo interno è rappresentato in Figura 4.11. Esso è costituito dai sottosistemi “previsione traiettoria” e “calcolo errori e dati traiettoria”. Il blocco “previsione traiettoria” determina la posizione e la direzione future del veicolo secondo la tecnica del

“look ahead”: il suo interno è riportato in Figura 4.12 ed esprime le equazioni (4.10) e (4.11). Si noti che rispetto all’equazione (4.11) nell’implementazione in Simulink si è trascurata la derivata temporale della velocità di avanzamento in quanto si suppone di eseguire le manovre a velocità perfettamente costante.

Il blocco “calcolo errori e dati traiettoria” necessita di una descrizione più dettagliata e

(17)

Figura 4.11 – Sottosistema “previsione traiettoria ed errori”.

Figura 4.12 – Sottosistema “previsione traiettoria”.

(18)

4.6 Generazione traiettoria, calcolo errori previsti e curvatura da seguire

Per poter far compiere al veicolo una determinata manovra è necessario creare una rappresentazione analitica della traiettoria da seguire, in modo da poter determinare, ad ogni passo di simulazione, nota la posizione del veicolo (eventualmente prevista), i seguenti dati:

- posizione del punto della traiettoria più vicino al veicolo - direzione della tangente alla traiettoria nel suddetto punto - curvatura della traiettoria nel punto.

Essendo poi lo scopo del presente lavoro quello di realizzare un procedimento che consenta di simulare una manovra generica, si è implementata una procedura automatica che generi la traiettoria da seguire approssimando opportunamente una sequenza di punti data. Questo è stato realizzato in ambiente Matlab nel modo descritto nel seguente paragrafo.

Il passo successivo sarà quello di determinare, nota la cinematica del veicolo, gli errori di posizione e direzione e l’angolo di rollio necessario per compiere una determinata curva.

4.6.1 Generazione traiettoria per punti in ambiente Matlab

Dal requisito di generalità della manovra da compiere segue l’impossibilità di rappresentare analiticamente la traiettoria da seguire mediante una funzione in coordinate cartesiane o polari, data la non biunivocità tra i valori delle coppie di coordinate che si otterrebbero (basti pensare ad esempio alla manovra di otto); questo ha reso necessaria l’introduzione di un’ascissa curvilinea alla quale siano associate le coordinate cartesiane dei punti della curva.

Date le coordinate di un certo numero di punti del percorso da seguire fornite in input, Matlab genera tale ascissa curvilinea; questa viene poi utilizzata per creare una spline cubica che approssima i punti dati (Figura 4.13). E’ importante che al percorso non venga imposto il passaggio rigoroso nei punti assegnati, in modo che questi possano essere scelti con una certa approssimazione senza incorrere in problemi di scarsa regolarità della curva generata. La traiettoria viene poi discretizzata con un certo numero di punti scegliendo un determinato passo lungo la sua ascissa curvilinea, ed in ogni punto creato viene calcolata la direzione della tangente alla traiettoria e la sua curvatura.

Nel paragrafo seguente si descrive più in dettaglio il listato del file Matlab utilizzato a

(19)

Figura 4.13 – Generazione per punti della traiettoria da seguire.

4.6.2 File Matlab per la generazione della traiettoria

Il file di Matlab prende come unico dato in ingresso due vettori

{ }

x ed

{ }

y , contenenti le coordinate cartesiane degli n punti della traiettoria, mediante l’assegnazione:

].

,..., , [

];

,..., , [

2 1

2 1

Pn P

P

Pn P

P

y y y y

x x x x

=

=

Con i comandi

; ).' .' (

];

; [

xy diff df

y x xy

=

=

viene creata la matrice xy che ha per righe i due vettori

{ }

x e

{ }

y prima definiti e la matrice df che contiene gli incrementi delle ascisse e delle ordinate dei punti assegnati:

⎥⎦

⎢ ⎤

= ∆

⎥⎦

⎢ ⎤

= −

) 1 ( 2 1

) 1 ( 2 1 )

1 ( 2

3 1 2

) 1 ( 2

3 1 2

,..., ,

,..., ,

) (

),..., (

), (

) (

),..., (

), (

n n n

P Pn P

P P P

n P Pn P

P P P

y y

y

x x

x y

y y

y y y

x x x

x x

df x .

Viene poi definita l’ascissa curvilinea t della spezzata che unisce i punti dati mediante l’assegnazione

[ ] ( )

( )

[ ]

(

sqrt df df

)

cumsum

t= 0, 1 1 ∗ .∗ ,

che è equivalente a scrivere

⎟⎠

⎜ ⎞

⎝⎛ ∆ +∆ ∆ +∆ + ∆ +∆ ∆ +∆ + + ∆ +∆

= 0, x12 y12, x12 y12 x22 y22,..., x12 y12 ... x(n1)2 y(n1)2

t .

X s

Y

Pi

Pi-1

Pi+1

(20)

Viene dunque creata una spline cubica cv con il comando

(

t xy p

)

csaps

cv= , , ;

il comando csaps approssima i punti dati variando la forma della curva in funzione di un parametro p compreso tra 0 e 1; per p = 1 si ottiene la retta dei minimi quadrati, mentre per p = 0 si ha la spline cubica naturale. Nel presente studio il valore di p è stato scelto in modo da rendere il più regolare possibile l’andamento della curvatura della traiettoria, elemento molto importante perché da esso dipenderà l’angolo di rollio da far seguire al veicolo;

procedendo per tentativi si è scelto di utilizzare per p il valore di 0.6, che si è dimostrato soddisfacente in tutti i casi analizzati.

Si osservi che t si discosta dall’ascissa curvilinea della traiettoria da percorrere proporzionalmente a quanto la spezzata differisce dalla curva approssimante creata. Nei casi in cui vengano assegnati pochi punti per definire il percorso da seguire si potrebbero verificare problemi dovuti alla eccessiva differenza tra l'ascissa curvilinea relativa alla spezzata iniziale e quella relativa alla spline definitiva, nel senso che si assocerebbe ad un valore di t un punto della traiettoria in realtà leggermente spostato. Si definisce allora una sequenza di punti intermedia xy_inf “infittita” percorrendo l’ascissa curvilinea t con un certo passo d:

( )

( )

(

,

)

. inf

_

2 , :

: 0

r cv ppval xy

t size t d r

=

=

A questo punto possiamo ripetere la precedente sequenza di comandi per creare l’ascissa curvilinea discretizzata definitiva s, per la quale si è scelto un valore del passo pari a 0.1 metri:

( )

[ ] ( )

( )

[ ]

( )

( )

( ) (

,2

)

. :

1 . 0 : 0

; inf, _ , _

; inf _ . inf _ 1

1 , 0

; .' .' inf _ inf

_

n size n s

p xy

n csaps n

cv

df df

sqrt cumsum

n

xy diff df

=

=

=

=

L’ascissa s definisce la traiettoria discretizzata che servirà per la determinazione del punto della traiettoria più vicino al veicolo, come verrà illustrato nei prossimi paragrafi (Figura 4.14).

(21)

Figura 4.14 – Traiettoria discretizzata infittita.

Definiamo dunque una nuova matrice xy_dis che contiene nelle prime due righe le coordinate dei punti della traiettoria e nella terza riga il valore della relativa ascissa curvilinea:

( )

( )

3:, . _

; , _ _

s dis

xy

s n cv ppval dis

xy

=

=

A questo punto rimangono da calcolare i valori della direzione della tangente alla traiettoria e della sua curvatura in ogni punto. Definiamo una matrice ds che contiene nelle prime due righe i valori degli incrementi delle ascisse e delle ordinate dei punti della traiettoria discretizzata:

( )

(

:, _ ,2

) (

:,

(

_ ,2

)

1

)

.

; ).' .' _ (

=

=

dis xy size ds dis

xy size ds

dis xy diff ds

Creiamo poi il vettore v_atan, contenente i valori dell’arcotangente del rapporto incrementale della traiettoria:

, tan

,..., tan

, tan

tan _

) 1 (

) 1 ( 2

3 2 3 1

2 1 2

⎥⎥

⎢⎢

⎟⎟

⎜⎜

⎟⎟ −

⎜⎜ ⎞

⎟⎟ −

⎜⎜ ⎞

= −

n P Pn

n P Pn P

P P P P

P P P

x x

y a y

x x

y a y

x x

y a y

a v

dove con n indichiamo stavolta il numero dei punti della traiettoria discretizzata;

utilizziamo a tal scopo i comandi

( )

( ) ( ( ( ) ( ) ) )

( )

(

_ ,2

)

_ tan

( (

_ ,2

)

1

)

. tan

_

; , 1 / . , 2 tan tan

_

; 2 , :

1

=

=

=

dis xy size a

v dis xy size a

v

j ds j ds a j a v

ds size j

s

X Y

Pi Pi+1

∆s ∆θ

(22)

I termini di v_atan corrispondono all’angolo di imbardata vero da far seguire al veicolo ψv, dato dalla (3.10), per valori di ψv compresi tra

2

− e π 2

π . Infatti negli estremi del

suddetto intervallo, ovvero nei punti in cui la traiettoria ha tangente ortogonale all’asse x del sistema di riferimento assoluto, la funzione arcotangente cambia segno passando da

2 π a

2

− o viceversa. Per eliminare questo problema definiamo il vettore d_v_atan contenente π

gli incrementi degli elementi di v_atan, e determiniamo ψv sommando i vari incrementi: in tal modo possiamo correggere il cambiamento di segno negli elementi di v_atan. Questo si ottiene con un ciclo for che scorre il vettore d_v_atan e quando trova un elemento superiore in modulo ad 1 lo sostituisce con l’effettivo valore (infatti in corrispondenza del cambiamento di segno di si avrà un elemento di d_v_atan di modulo molto vicino a

π π

π =

⎟⎟⎠

⎜⎜ ⎞

⎛ ⎟

⎜ ⎞

⎝⎛−

− 2

2 ). Le relative istruzioni sono le seguenti:

( )

( )

( )

( )

( )

( )

( )

(

_ ,2

) ( (

_ ,2

)

1

)

.

; tan _ _ _____

; n(k)) sign(v_ata

* (k))) abs(v_atan -

(1.57 + _atan(k)) ____sign(v

__________

__________

* 1))) + (k abs(v_atan -

(1.57 tan

_ _ _ __________

1 tan

_ _ ___

_____

, 2 tan, _ _ :

1 __

; tan _ tan

_ _

=

=

=

>

=

=

dis xy size psi dis

xy size psi

a v d cumsum psi

end end

k a v d

k a v d abs if

a v d size k

for

a v diff a

v d

Ovviamente si commetteranno degli errori dovuti all’utilizzo di una traiettoria discretizzata che saranno tanto minori quanto più piccolo sarà il passo di discretizzazione scelto.

Si valuta infine la curvatura della traiettoria mediante la relazione

C s

=∆θ ,

ovvero come rapporto tra l’angolo individuato dalle tangenti alla traiettoria in due punti successivi ∆θ e la lunghezza dell’arco compreso tra i due punti stessi ∆s (Figura 4.14).

Questo si ottiene con i comandi:

(23)

( )

( ) ( ( ) ( ) ) ( )

( )

(

,2

) ( (

,2

)

1

)

.

; , 3 / . 1

; 1 2 , :

1

=

− +

=

=

psi size C psi

size C

m ds m psi m

psi m

C

psi size m

4.6.3 Determinazione punto della traiettoria più vicino al veicolo

Lanciando il file Matlab illustrato nel precedente paragrafo si rende disponibile la caratterizzazione della traiettoria da percorrere; contemporaneamente ad ogni passo di simulazione ADAMS fornisce a SIMULINK tutte le grandezze necessarie per l’individuazione delle posizione attuale del veicolo e per la previsione di quella futura. Si dispone dunque di tutti i dati occorrenti per il calcolo degli errori ∆R(t) e ∆Ψ(t) definiti nel paragrafo 4.2. Il blocco relativo al calcolo degli errori ∆R(t) e ∆Ψ(t) ed alla determinazione della curvatura della traiettoria è illustrato in Figura 4.15: questo prende in ingresso le coordinate del punto N(t+Tpe) e fornisce in uscita:

1. l’errore di posizione previsto ∆R(t+Tpe),

2. l’ascissa curvilinea del punto P(t+Tpe) appartenente alla traiettoria, 3. la curvatura C nel suddetto punto,

4. l’angolo di imbardata vero ψv che il veicolo deve seguire in modo da rendere parallele le direzioni della tangente alla traiettoria in P(t+Tpe) e del vettore velocità prevista del punto N(t+Tpe).

Figura 4.15 - Diagramma a blocchi per il calcolo degli errori e dei dati relativi alla traiettoria.

(24)

In Figura 4.16 è riportato l’interno del suddetto blocco: il nucleo è costituito dal ciclo for, implementato tramite un apposito sottosistema denominato for iterator subsystem. Con riferimento alla Figura 4.17, ipotizzando di essere all’i-esimo passo della simulazione, il compito di tale ciclo è di “scorrere” una certa porzione di traiettoria, evidenziata con colore rosso in figura, contenente il punto più vicino al veicolo determinato al precedente passo simulativo P(i-1), e per ogni punto della traiettoria discretizzata valutarne la distanza dal veicolo, memorizzando l’ascissa relativa al punto più vicino incontrato. Al termine del ciclo for dunque avremo determinato l’ascissa del punto P più vicino alla traiettoria.

Figura 4.16 – Interno del blocco per il calcolo degli errori e dei dati relativi alla traiettoria.

Nota l’ascissa del punto P è immediato ricavare le grandezze cercate utilizzando i blocchi look-up table disponibili in ambiente SIMULINK, che a loro volta leggono i dati dai vettori e dalle matrici definite nel workspace Matlab come descritto nel precedente paragrafo.

In Figura 4.18 è riportato l’interno del ciclo for, nel quale si può osservare il blocco if action subsystem, che fa passare il valore dell’ascissa del punto P se il blocco if gli comunica che tale punto dista da N meno del punto precedente.

(25)

Figura 4.17 – Distanze valutate dal ciclo for ad ogni passo di simulazione.

Figura 4.18 – Vista interna del sottosistema for iterator.

(26)

Un’ultima osservazione va fatta sulla determinazione del segno dell’errore di posizione ∆R, che è uguale solo in modulo alla distanza PN. Per convenzione si stabilisce che l’errore di posizione sia positivo se il veicolo si trova a sinistra della traiettoria. Per determinare la posizione del punto N si determina la componente verticale del prodotto vettoriale tra il vettore tangente alla traiettoria e il vettore errore PN (Figura 4.19): se tale componente ha segno positivo significa che il punto N sta alla sinistra della traiettoria e viceversa.

Figura 4.19 - Determinazione del segno dell’errore ∆R.

In formule, definiti i vettori

,

;

1 2

1 2

1 1

⎭⎬

⎩⎨

= −

⎭⎬

⎩⎨

= −

P P

P P

P N

P N

y y

x t x

y y

x PN x

r

possiamo scrivere:

( )

R sign

(

t PN

)

z sign

(

xN xP1

) (

yP2 yP1

) (

yN yP1

) (

xP2 xP1

)

sign ∆ = r× = − ⋅ − − − ⋅ − .

Riferimenti

Documenti correlati

corpo B, allora il corpo B esercita una forza –F sul corpo A, ovvero le forze sono uguali in. modulo e direzione e contrarie

Qual è il valore minimo del coefficiente di attrito statico fra seme e piatto che impedisce lo slittamento.. Supponendo che il giradischi, partendo da fermo, abbia raggiunto la sua

Quando il limite di velocità sull’autostrada di New York fu aumentata da 88,5 km/h a 105 km/h, quanto tempo fu risparmiato da un automobilista che percorreva a quella velocità

(a) Determinare la gittata e l'altezza massima del proiettile. Un giocatore dà un calcio ad un pallone imprimendogli una velocità di 23 m/s ad un angolo di 45° col terreno. Il

f Quanto vale la velocità della cometa nel punto più vicino al Sole, se il momento angolare della cometa si conserva. (Calcola il momento angola- re rispetto al centro

Quanti vertici e quanti spigoli possiede un tetraedro?. …… spigoli

Di questo percorso noi possiamo trovare quando è stato lungo cioè la lunghezza del moto. Possiamo indicare quanto tempo abbiamo impiegato cioè la durata

il feedforward non viene quasi mai usato da solo, ma in combinazione con una legge di controllo in feedback che garantisca la stabilità del sistema ad anello chiuso.. Azioni