+ All Categories
Home > Documents > RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro...

RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro...

Date post: 17-May-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
41
UNIVERSITA’ DEGLI STUDI DI PARMA FACOLTÀ DI INGEGNERIA Dipartimento di Ingegneria dell’informazione RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO AUTONOMO CON CONTROLLO A STERZATA PROGRESSIVA TESINA PRODOTTA NELL’AMBITO DEL LABORATORIO DI AUTOMATICA (A.A. 2003-2004) Redazione Oscar Gerelli Dario Lodi Rizzini Supervisione Prof. Ing. C. GUARINO LO BIANCO
Transcript
Page 1: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

UNIVERSITA’ DEGLI STUDI DI PARMA FACOLTÀ DI INGEGNERIA

Dipartimento di Ingegneria dell’informazione

RISULTATI SPERIMENTALI NELLA SIMULAZIONE

DI VEICOLO AUTONOMO CON

CONTROLLO A STERZATA PROGRESSIVA

TESINA PRODOTTA NELL’AMBITO DEL LABORATORIO DI AUTOMATICA (A.A. 2003-2004)

Redazione Oscar Gerelli

Dario Lodi Rizzini

Supervisione Prof. Ing. C. GUARINO LO BIANCO

Page 2: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

2

Capitolo 1 Introduzione all’attività svolta Questa breve introduzione si prefigge di illustrare lo scopo, gli obiettivi e gli strumenti utilizzati

nell’attività assegnata per il corso di ”Laboratorio di Automatica”. Si introdurranno inoltre i

concetti teorici e le personali scelte di progetto che saranno maggiormente dettagliate nei capitoli

successivi.

1.1 Scopo Obiettivo dell’attività di laboratorio è stata quella di implementare e simulare, mediante l’ausilio di un calcolatore e dello strumento software Matlab, il controllore a sterzata variabile di un sistema a guida autonoma. Si è inoltre eseguita una fase di tuning sperimentale dei parametri liberi che, come si vedrà dalla trattazione teorica, sono a disposizione del progettista per regolare il comportamento del veicolo su strada. Prima di giungere al sistema di simulazione complessivo, e che sarà dettagliatamente illustrato nel seguito, si è seguito un percorso di avvicinamento che riproponiamo nei seguenti punti schematici:

1. si è implementato il modello di un semplicistico veicolo autonomo caratterizzato dalla totale mancanza di qualsiasi riferimento alle forze che agiscono sui pneumatici del veicolo stesso e fonte di slittamento. Le relazioni matematiche associate a questo modello sono riportate al capitolo 2;

2. si è implementato una versione più sofisticata, e dunque più realistica, del modello dell’auto, prendendo in considerazione tutte le forze di interesse che vi agiscono. Il modello di stato complessivo, così ottenuto, è riportato al capitolo 3;

3. si è implementato per il modello di cui al punto 2 un semplice controllo proporzionale agente sulla variazione dell’angolo di sterzata impresso ai pneumatici in funzione della velocità raggiunta dal veicolo;

4. si è sofisticato il controllo del veicolo, fino a giungere alla sua versione definitiva, introducendo la simulazione di un sistema di visione artificiale in grado di restituire informazioni sulla strada utili per la pianificazione della traiettoria del moto, attraverso il ricorso al concetto teorico delle eta-spline. Le relazioni matematiche associate al controllore implementato sono riportate al capitolo 4.

Ogni fase precedentemente introdotta ha richiesto una correlata e accurata fase di simulazione dalla quale sono emersi pregi e difetti di ciascuna soluzione adottata.

Page 3: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

3

In particolare possiamo fare da subito i seguenti commenti, che saranno ripresi nella parte conclusiva di questa relazione:

1. il primo modello proposto, pur essendo matematicamente semplice da comprendere e da implementare, è frutto di molte approssimazioni, seppure ragionevoli, che lo rendono lontano dal rappresentare una situazione realistica. Infatti, attraverso le simulazioni numeriche si è evidenziato come, mantenendo fisso l’angolo di sterzata del veicolo e aumentandone a piacere la velocità di crociera, la traiettoria percorsa fosse perfettamente una circonferenza; questa condizione è assolutamente impensabile da riottenere nella realtà, soprattutto con velocità del mezzo significative;

2. il secondo modello matematico studiato, pur non rappresentando esattamente il comportamento del complesso sistema non lineare dell’autovettura, ne costituisce una buona approssimazione. In particolare sono introdotti concetti come le forze agenti sui pneumatici lungo la direttrice e l’ortogonale alla sterzata. Nel modello complessivo viene inoltre introdotto il concetto di attrito volvente che, dal punto di vista comportamentale, viene considerato una quantità semplicemente proporzionale, attraverso un coefficiente moltiplicativo K, al quadrato della velocità di crociera del mezzo;

3. il primo controllo implementato per il modello dell’auto di cui al punto 2, di tipo proporzionale, ha voluto essere elemento di successivo confronto con il controllore principale oggetto di questa trattazione. Il controllo di tipo proporzionale è stato inizialmente implementato dal team di ingegneri cooperanti per il progetto ARGO1. Tale tipologia di controllo ha però messo in evidenza, sia nell’esperienza reale, sia nella nostra simulata, come sia fonte di preoccupanti auto-oscillazioni attorno al punto di equilibrio (anche lungo un percorso rettilineo) che diventano progressivamente maggiori all’aumentare della velocità di spostamento. Comportamento, quest’ultimo, che ha suggerito la necessità di pensare a meccanismi di controllo e pianificazione della traiettoria più complessi;

4. il controllo implementato facendo ricorso alla pianificazione della traiettoria basata sull’utilizzo di funzioni matematiche spline del 5° ordine, ha da un lato risolto i problemi di stabilità legati alla precedente soluzione di controllo non lineare ma ha sicuramente introdotto anche alcuni aspetti negativi:

a. maggiore complessità legata alla definizione “ottimale” dei parametri di progetto; b. maggiore carico computazionale.

Questa in sintesi l’esperienza attuata. Iniziamo nei successivi capitoli ad illustrare direttamente le considerazioni associate al controllo complessivo nella sua versione ultima, lasciando alla curiosità del lettore la consultazione dei capitoli terminali per maggiori informazioni sugli altri argomenti qui brevemente introdotti.

1 ARGO è il progetto di costruzione di un veicolo a guida autonoma avviato dall’Università di Parma. Per maggiori informazioni consultare il relativo sito web http://argo.ce.unipr.it.

Page 4: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

4

Capitolo 2 Primo modello matematico dell’auto Obiettivo del capitolo è la definizione a livello matematico di un semplice modello

comportamentale di un veicolo su strada. In questa prima versione non si prendono in

considerazione tutte le forze coinvolte sui pneumatici e quindi si studia il tutto nell’ipotesi di

assenza di slittamento del veicolo.

Nel modello che andremo a formulare consideriamo il veicolo composto da 4 ruote. Tuttavia

accorpiamo le ruote anteriori e quelle posteriori in una ruota singola: questa semplificazione è

legata all’ipotesi di considerare il veicolo su strade caratterizzate da raggi di curvatura piuttosto

ampi.

Dobbiamo caratterizzare istante per istante lo stato

del moto del veicolo.

La posizione del veicolo la identifichiamo con

l’origine della terna sulla ruota posteriore.

La velocità vR,A è in asse con la ruota posteriore

poiché supponiamo che non ci sia scorrimento

relativo con l’asfalto.

L’angolo δF definisce l’angolo di sterzata del veicolo.

Ricaviamo a questo punto le equazioni di stato del

sistema studiando dapprima la velocità vR,A descritta

rispetto alla terna R (ovvero quella centrata sulla

parte posteriore del veicolo).

Chiamo vv AR =, . Allora:

=

00,

vv AR

R Quanto vale la velocità rispetto alla terna fissa?

Dobbiamo prendere in considerazione l’angolo θ che esiste fra le due terne di riferimento. Allora:

=

⋅⋅

=00

cos

, yx

senvv

v ARA &

&

θθ

(1)

L

xA

yA

yR xR vR,A

VF,A

(x,y)

θ

δF

Page 5: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

5

Occorre a questo punto ricavare l’ultima variabile necessaria per la definizione del modello: ovvero

θ&. Per la sua determinazione valutiamo la velocità rispetto alla terna definita sulla ruota anteriore.

Applichiamo il seguente principio:

CBA

BBAA

CBBA

BBAA

ACA pRvRvv ×++= ω,

Nel nostro caso particolare le terne R ed F sono solidali e dunque il termine che nell’espressione

precedente indica la velocita cb descritta rispetto a b assume valore nullo. Otteniamo allora:

CBA

BBAA

BAA

ACA pRvv ×+= ω, Ricalcoliamo il tutto non più sulla terna fissa ma

rispetto alla terna R. Applichiamo la matrice di

rotazione che descrive una terna rispetto all’altra.

Nel nostro caso specifico otteniamo:

FRA

RRARA

ARARA

ARAAF

ARA pRRRvRvR ×+= ω, cioè

FR

RAR

RAR

AFR pvv ×+= ω, (2)

Chiamo FAF vv =, e sviluppo l’espressione (2).

A B C

Page 6: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

6

×

+

=

000

0

00

0

cos lvsenv

v

FF

FF

θδδ

& Sviluppo il prodotto vettoriale ottenendo

⋅=

⋅+

=

00

0

00

0

cosl

vl

vsenv

v

FF

FF

θθδδ

&& (3)

Dalla relazione (3) è immediato ricavare l’ultimo elemento necessario alla definizione del modello.

Questo ultimo risulta dunque essere definito dalle seguenti tre relazioni matematiche.

Come prevedibile il modello è non lineare con ingressi dati dalla

velocità v e dall’angolo di sterzata δF.

⋅=

⋅=⋅=

Flv

senvyvx

δθ

θθ

tan

cos

&

&&

Page 7: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

7

Capitolo 3 Secondo modello dell’auto Obiettivo del capitolo è il perfezionamento del modello matematico analizzato al capitolo 2

mediante l’analisi delle forze agenti sul sistema auto.

Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si

viene a creare fra l’asse della macchina e il vettore velocità.

Per l’analisi delle forze si usano le equazioni di Newton e di Eulero.

ACAA vmF ,&⋅=

+⋅+⋅

=0

)()cos(

, ψβψβ

senvv

v ACA con vv AC =,

[ ][ ]

++⋅++⋅++⋅−+⋅

=0

)cos()()()cos(

, ψβψβψβψβψβψβ&&&&&&

& vsenvsenvv

v ACA

Cambiamo il riferimento: usiamo la terna baricentrica.

ACAC

AC

ACAA

CAC

A vRmFvRmFR ,, && ⋅⋅=⇒⋅⋅= Dobbiamo determinare la matrice di rotazione fra la terna C e la terna A. Ma questa matrice di rotazione coincide semplicemente con la rotazione rispetto all’asse z di un angolo pari a ψ. Ma allora

−=

10000

ψψψψ

cssc

RAC e da questa TA

CCA RR=

xA

yA

yR xR vR,A

VC,A

(x,y)

ψ

δF

β

Page 8: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

8

FyR

FyF

(x,y)

FxR

FxF

LR

LF

Sviluppando i calcoli si ottiene che:

⋅+⋅+⋅⋅+⋅−⋅

⋅=0

cos)()(cos

ββψβββψβ

&&&

&&&

vsenvsenvv

mFC (1)

Esprimiamo le forze che agiscono sul sistema, facendo riferimento al seguente schema concettuale.

Risulta allora evidente che: A questo punto dobbiamo ricavare l’espressione analitica delle variabili di stato, ovvero

βψ &&& ,,v . Uguaglio i due vettori che ho individuato relativi alle forze e:

1. moltiplico la 1a riga per cosβ, la 2a per senβ e sommo

vmsenFFFF

senmvsenvmsenFFsenmvvmFF

YFYRXFXR

YFYR

XFXR

&

&&&

&&&

=+++

++=++−=⋅+

ββ

βββψβββββψββ

)(cos)(

cos)()(cos)(coscos)( 2

da cui posso ricavare la prima variabile di stato del modello

( ) ( )[ ]ββ senFFFFm

v YFYRXFXR +++= cos1& (a)

++

=0

YFYR

XFXRC FF

FFF

Page 9: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

9

2. moltiplico la 1a riga per –senβ, la 2a per cosβ e sommo

)()(cos)(

cos)(coscos)()(cos)(

2

2

βψββ

ββψβββββψβββ

&&

&&&

&&&

+=+−+

++=⋅+++−=⋅+−

mvsenFFFF

mvsenvmFFsenmvsenvmsenFF

XFXRYFYR

YFYR

XFXR

da cui posso ricavare che

( ) ( )[ ]βββψ senFFFFmv XFXRYFYR +−+=+ cos1)( && (b)

Applichiamo ora l’equazione di Eulero, ovvero:

ACCC

ACC

ACCCC IIN ,,, ωωω ×+⋅= & che espansa diviene

×

+

=

CZC

CYC

CXC

C

CZC

CYC

CXC

CZC

CYC

CXC

ZZZYZX

YZYYYX

XZXYXX

ZC

YC

XC

IIIIIIIIII

NNN

ωωω

ωωω

ωωω

&&&

(c)

Noi supponiamo di considerare un veicolo rigido: non ci può dunque essere né beccheggio né rollio. L’unico movimento rotatorio ammesso è quello attorno all’asse z. Di conseguenza le coppie saranno bilanciate in modo automatico e l’unica componente che è di interesse per la nostra analisi sarà quella relativa all’asse z.

ψ&&JNZC = (d) Le uniche forze ammesse sono quelle dovute ai pneumatici. Dunque:

ψ&&JlFlFN RYRFYFZC =−= definisco ωψωψ =⇒= &&&& , allora dalla (d) ottengo

( )RYRFYF lFlFJ

−=1ω& (e)

Page 10: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

10

Usando le relazioni (b) ed (e) otteniamo il modello di stato del sistema.

( ) ( )[ ]

( ) ( )[ ]

( )

=

−=

+++=

−+−+=

ωψ

ω

ββ

ωβββ

&

&

&

&

RYRFYF

YFYRXFXR

XRXFYFYR

lFlFJ

senFFFFm

v

senFFFFmv

1

cos1

cos1

Procedendo con l’analisi delle relazioni matematiche esistente fra sterzata e forze agenti sui pneumatici, si completa il modello precedente come segue:

⋅−+=⋅++=

ψωψβψωψβ

cos)()cos(

R

R

lvsenysenlvx

&&

⋅⋅

−=

⋅⋅

+=

−=−=

−=

−=

βωββ

βωββ

βαβδα

αµαµ

αµαµ

cos

cos

1

1

2

2

vltgtg

vltgtg

CFCF

CFCF

RR

FF

RR

FFF

CR

XTRRRFYTR

C

XTFFFFYTF

==−=

+=−=

YTRYR

XTRFYTRRXTRXR

FYTFFXTFYF

FYTFFXTFXF

FFFsenFFF

FsenFFsenFsenFF

δδδδδδ

coscos

Page 11: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

11

Capitolo 4 Tecniche di controllo In questo capitolo si presenteranno le relazioni matematiche alla base del controllore implementato

allo scopo di ottenere un “ottimo” inseguimento della traiettoria stradale da parte dell’auto.

Riprendiamo le relazioni matematiche che esprimono il primo modello dell’auto presentato al capitolo 2. Avevamo ottenuto che:

Come uscita del nostro sistema prendiamo la curvatura istantanea dello sterzo.

Indichiamo con R

K 1= il raggio di curvatura.

Ricordiamo che le relazioni precedenti sono state ricavate nell’ipotesi che non vi sia nessun fenomeno di scorrimento da parte dell’auto: questo implica che analizzando la situazione dal punto di vista della ruota posteriore, questa si sta muovendo lungo un arco di circonferenza tangente al punto in cui è applicato il vettore della velocità vR. Allo stesso modo anche la ruota anteriore si sta muovendo lungo un arco di circonferenza, differente dal primo, tangente al vettore velocità istantanea vF. Tutta la macchina, nel suo complesso, sta ruotando rispetto ad un unico punto: tutti i centri delle circonferenze lungo cui ci stiamo muovendo sono coincidenti.

Fra tutte le circonferenze possibili andiamo a studiare quelle relative alla ruota posteriore.

⋅=

⋅=⋅=

ftglv

senvyvx

δθ

θθ

&

&& cos

R

R

l

α δf(x,y)

Page 12: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

12

2πδαπ ++= F da cui Fδππα −−=

2 (1)

2πβαπ ++= da cui sostituendo la (1) si ottiene

FF δδππππαππβ =++−−=−−=222

(2)

Ma allora Rltg F =δ da cui si ricava che

ltg

RK Fδ

==1

(3)

La relazione (3) è estremamente importante perché evidenzia come l’uscita del sistema che stiamo considerando venga a dipendere solamente dall’ingresso (l’angolo di sterzata) e non a anche dallo stato raggiunto. Si parla, in queste situazioni, di sistema flat. Dalla relazione (3) è immediato ricavare l’angolo di sterzata, elemento sul quale andremo ad agire con il nostro controllore. L’obiettivo finale della nostra trattazione è quello di pianificare una traiettoria da far seguire all’auto in modo tale che essa non arrivi al taglio della curva. Questo ultimo è il fenomeno più fastidioso legato ad un più semplice controllo di tipo proporzionale. Per la pianificazione della traiettoria dobbiamo imporre una serie di vincoli aggiuntivi rispetto a quelli fino a qui individuati. Utilizziamo allo scopo delle apposite funzioni spline del quinto ordine (le η-spline). Come è noto, le funzioni spline sono funzioni polinomiali individuate per mezzo della definizione di un certo numero di coefficienti che influenzano l’ordine della spline stessa. Nel nostro caso, la definizione generale sarà del tipo:

dove il parametro uε[0,1]. Il problema è il calcolo dei coefficienti associati alla spline. Abbiamo 4 coefficienti liberi che possono

essere scelti in modo arbitrario. Otterremmo delle spline tutte diverse ma che rispetteranno sempre le condizioni al contorno. Per ottenere delle funzioni spline abbastanza pulite, è sufficiente imporre η3=0; η4=0; η1=η2 e pari alla lunghezza della curva che vogliamo ottenere (rispettando queste condizioni la sterzata diventa la più dolce possibile). Il problema che si presenta, a questo punto della trattazione, è legato alla non conoscenza della lunghezza della curva che ci accingiamo ad inseguire: la traiettoria non è ancora stata pianificata. Porremo, allora, la seguente approssimazione: per lunghezza della curva considereremo la distanza euclidea dal punto finale rispetto al quale eseguire la pianificazione. E’ importante rispettare la condizione η1=η2 allo scopo di evitare comportamenti non convergenti dell’auto nella fase di inseguimento della traiettoria pianificata.

⋅+⋅+⋅+⋅+⋅+=⋅+⋅+⋅+⋅+⋅+=

55

44

33

2210

55

44

33

2210

)()(

uyuyuyuyuyyuyuxuxuxuxuxxux

Page 13: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

13

Page 14: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

14

Per effettuare il controllo dell’auto, sull’input rappresentato dall’angolo di sterzata, è necessario conoscere istante per istante la curvatura k(u) della traiettoria da seguire. Se questo valore fosse noto dalla relazione (3) otterrei immediatamente che:

))(( uKlarctgF ⋅=δ (4) con

[ ] 2322 )()(

)()()()()(uyux

uyuxuyuxuK&&

&&&&&&

+

−= (5)

Il problema del controllo si riconduce, a questo punto, alla determinazione del valore corrente di u. Questo può essere ottenuto seguendo la seguente catena:

v s u k δF

ovvero per mezzo dei seguenti passi analitici:

I. Calcolo dello spazio complessivamente percorso dal veicolo rispetto al punto di partenza iniziale, grazie alla conoscenza della velocità di crociera.

∫=t

dvts0

)()( ττ (6)

II. Dalla conoscenza dello spazio percorso, è possibile ricavare il valore corrente di u attraverso

l’inversa della seguente funzione:

∫ +==u

dyxufs0

22 )()()( ξξξ (7)

da cui

)(1 sfu −= (8)

Page 15: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

15

Nella implementazione Matlab, in realtà, non si costruirà l’inversa della relazione (7) ma si determinerà il valore di u attraverso una ricerca iterativa finalizzata alla ricerca degli zeri associati alla funzione d’errore (Metodo di Newton). Ovvero, lo schema a blocchi Matlab implementato è il seguente: Nella realizzazione Matlab, per una maggiore semplicità e chiarezza di analisi, si sono implementati numerosi SubSystem ciascuno dei quali ha la responsabilità di assolvere ad un compito specifico fra quelli evidenziati nella “catena” analitica evidenziata nella pagina precedente. Analizzando, infatti, il modello .mdl è possibile ritrovare i blocchi che permettono il passaggio dalla velocità allo spazio percorso, da questo al valore di u corrente, e quindi la determinazione di K e dell’angolo di sterzata. Nel modello si è inoltre inserito un controllo di velocità che permetta di mantenerne il valore ad un set-point prefissato indipendentemente dalla curva che il veicolo si trova a dover affrontare. In particolare tale controllo va ad agire sul modello simulativo del compartimento del veicolo agendo sui valori di accelerazione e decelerazione (espressi in N/m). Di tale controllo se ne sono implementate due distinte versioni:

a. regolazione per mezzo di un semplice regolatore PI, tarato per via sperimentale, con set-point di velocità fissato e costante;

b. regolazione per mezzo di un regolatore PI con set-point di ingresso variabile dinamicamente sulla base delle informazioni legate alla curvatura della strada ottenibili dal sistema di visione artificiale.

+ -

e 0)( == ufe

∫ +u

dyx0

22 )()( ξξξ &&

s(t)

s(u)

u

Page 16: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

16

Capitolo 5 Il controllo di velocità

In questo capitolo vengono discusse le diverse proposte inerenti al controllo di velocità. Dopo una breve introduzione presentato il basilare controllore proporzionale integrale. Successivamente verranno introdotte alcune possibili soluzioni euristiche per la determinazione del set point di velocità in funzione delle condizioni della strada. 5.1 Introduzione Nella fase di sviluppo del modello del sistema-automobile e del controllore gli aspetti inerenti al controllo della velocità hanno avuto un ruolo marginale rispetto all’attenzione dedicata alla pianificazione delle traiettorie. È pertanto opportuno ricordare che l’obiettivo finale del lavoro è la realizzazione di un sistema in grado di minimizzare la distanza tra la propria traiettoria intesa come immagine delle due variabili di stato x e y e la traiettoria di riferimento costituita dalla strada. Le simulazioni hanno messo in evidenza che, quando la curvatura della strada è non nulla o comunque non trascurabile, tale errore è fortemente dipendente dalla velocità: coerentemente con l’esperienza, quanto più velocità e curvatura sono elevate tanto più ne risentono le prestazioni. Non è quindi sufficiente definire l’angolo di sterzata per raggiungere buoni risultati. Per realizzare un controllore di velocità è necessario comprendere come far sì che la velocità del sistema assuma i valori desiderati e soprattutto quale sia il valore del set-point di velocità più opportuno e se esso debba dipendere da informazioni sulle condizioni esterne (la strada). Per rispondere ai due differenti quesiti il controllore è stato progettato in due parti distinte progettate separatamente:

1. il controllore proporzionale-integrale (PI) per la riduzione dell’errore di velocità rispetto al set point di riferimento;

2. lo scheduler della velocità che determina il set point di velocità opportuno in relazione alle informazioni sulla strada.

Esaminiamo ora separatamente le soluzioni introdotte per realizzare il controllore PI e lo scheduler di velocità.

Page 17: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

17

5.2 Il controllore PI Dall’analisi del modello fatta nei precedenti capitoli si deduce che il sistema che dobbiamo controllare è fortemente non lineare. Impiegare un controllore lineare come il proporzionale integrale (PI) e soprattutto tararlo può non sembrare la soluzione migliore. Si tratta inoltre un sistema a più ingressi e uscite: è possibile cercare di controllare l’andamento di una variabile di stato (la velocità) in modo indipendente dalle altre? In altri termini se un controllore è stato tarato in modo da garantire le prestazioni richieste mentre sussistono certe condizioni (per esempio le variabili di stato x e y descrivono un tratto rettilineo), non è detto che al variare di queste ultime il controllore dia i medesimi risultati. Ad ogni modo varie ragioni ci spingono a questa scelta. In primo luogo la semplicità del PI e la facilità con cui si può tararlo: procedere per tentativi nella determinazioni dei due parametri Kp e Ki non è una operazione complessa e permette di ignorare o almeno di approssimare la dinamica reale del sistema. Inoltre nel caso particolare dell’automobile è possibile trovare alcune condizioni particolari nelle quali effettuare il tuning dei parametri in modo che il risultato ottenuto rimanga valido per le altre configurazioni dello spazio degli stati in cui il sistema si verrà a trovare. Nella pratica le variabili di stato x e y del sistema percorreranno sempre tratti di traiettoria rettilinea o ad arco di circonferenza2. Prima di procedere e rendere conto delle scelte effettuate ci è sembrato corretto giustificare in modo analitico l’efficacia del proporzionale-integrale. Essendo il modello complesso introdurremo alcune approssimazioni e di conseguenza il valore delle nostre considerazioni avrà ragguardevoli limitazioni: la loro utilità consisterà soprattutto nella possibilità di interpretare i risultati delle simulazioni. Le prime ipotesi che facciamo riguardano l’angolo di sterzata δF e l’angolo tra la velocità lineare e l’asse dell’automobile β: ipotizzeremo che entrambe siano prossime a zero, ragion per cui

cos δF ≈ 1 e cos β ≈ 1 sin δF ≈ δF e sin β ≈ β

Inoltre, facendo riferimento alle equazioni di pagina 10, supporremo che αF ≈ 0 (in alternativa basta scegliere FxtF sufficientemente grande) e che quindi FytF sia pressochè trascurabile. Ipotizziamo inoltre di trovarci in condizioni di accelerazione e non di frenata, ragion per cui è assente il contributo delle ruote posteriori: FxR = FyR = 0. Questo ci porta a riscrivere le espressioni delle componenti della forza agente sulle ruote anteriori.

FxF = FxtF cos δF − FytF sin δF − Ka·v2·cos2 β ≈ FxtF − FytF · δF − Ka·v2 ≈ FxtF − Ka·v2 FyF = FxtF sin δF + FytF cos δF

≈ FxtF δF + FytF ≈ FxtF δF Sotto tutte queste ipotesi possiamo arrivare a riscrivere l’equazione di stato relativa alla velocità.

m·v’ = (FxF + FxR) cos β + (FyF + FyR) sin β ≈ FxtF − Ka·v2 + FxtF δF β = (1 + δF β) FxtF − Ka·v2

2 Potremmo osservare che nel modello completo da noi esaminato ci sono, oltre alla velocità, 5 variabili di stato. Alcune però variano di poco (per esempio β che nel seguito supporremo prossimo a 0) e le altre influiscono meno su di essa.

Page 18: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

18

Avendo ipotizzato che δF e β siano valori piccoli3 allora δF β << 1. Conseguentemente riscriviamo infine l’equazione di stato della velocità nella forma semplificata.

m·v’ = FxtF − Ka·v2 Introduciamo allora l’espressione del nuovo controllo FxtF in funzione dell’errore sulla velocità e = vd − v dove vd è un ingresso a gradino costante sull’intervallo di tempo che stiamo esaminando.

FxtF = Kp · e + Ki ∫ e·dt

Sostituendo l’espressione di FxtF, v = vd − e, v’ =− e’ e derivando l’equazione in modo da eliminare il termine integrale si ricava che

m·(−e + vd)’ = Kp · e + Ki ∫ e · dt − Ka·(−e + vd)2

m·(−e + vd)’ = Kp · e + Ki ∫ e · dt − Ka·(e2 −2vd e + vd2)

−m·e” = 2Ka·(−e + vd) e’ + Kp e’ + Ki e m·e” + [−2Ka·e + (Kp+ 2Ka vd)] e’ + Ki e = 0

Quella ottenuta è una equazione equazione differenziale ordinaria non lineare. Per evitare di risolverla (non è necessario per le conclusioni di nostro interesse) passiamo al modello di stato equivalente che si ottiene sostituendo x1 = e ed x2 = e’.

x1’ = x2 x2’ = −a x1 x2 − b x2 − c x1

Per comodità abbiamo posto a = −2Ka / m, b = (Kp + 2Ka·vd) / m, c = Ki / m. Se proviamo a linearizzare in un intorno dell’origine. La matrice del sistema linearizzato (saltiamo alcuni passaggi nei quali il contributo di a x1 x2 scompare) ha come polinomio caratteristico

t2 + b t + c = 0 Possiamo allora concludere che nei limiti fissati dalle ipotesi scegliendo opportunamente Kp e Ki (e quindi anche b e c) siamo in grado di imporre che il sistema linearizzato abbia autovalori a parte reale negativa e sia quindi asintoticamente stabile. In altri termini non solo l’errore, ma anche la derivata dell’errore tendono a 0 purchè e ed e’ siano inizialmente sufficientemente piccoli4.

3 In verità nulla ci vieterebbe di tenere conto di δF e β. Per semplicità però finiremo per ometterle. 4 Non siamo in grado di stimare il dominio di attrazione: il metodo indiretto di Lyapunov dà solo indicazioni sulla stabilità. Per analisi più fini occorrerebbe trovare una funzione di Lyapunov. Non ne vale però la pena: le approssimazioni fatte sono molte (la più grossolana è stata quella di supporre vd una costante indipendente dal tempo: ciò ci ha consentito di trattare il sistema come se fosse autonomo).

Page 19: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

19

Figura 1 − Implementazione Simulink del controllore proporzionale-integrale. Dopo aver discusso l’efficacia di un controllo PI per il controllo della velocità ne illustriamo la sua realizzazione concreta in ambiente Simulink. Come si può vedere in Figura 1 ciò che è stato implementato è potenzialmente un controllore proporzionale-integrale-derivativo. Le osservazioni sviluppate in precedenza e le simulazioni che avremo modo di discutere hanno però messo in evidenza che la componente derivativa non fosse necessaria ed anzi avrebbe introdotto un’ulteriore dinamica di cui tener conto. La costante Kd è stata pertanto posta uguale a 0. La variazione più significativa rispetto ad uno schema di PI canonico è data dallo switch che modifica i guadagni proporzionale e integrativo a seconda che sia necessario accelerare o decelerare. La distinzione è dovuta principalmente alla necessità di decelerare più rapidamente. In particolare si è fatto riferimento alla situazione ricorrente della frenata improvvisa5 e alla necessità di scaricare velocemente l’integratore. L’obiettivo primario del progetto rimane infatti la riduzione della distanza del veicolo rispetto alla strada: privilegiare la riduzione della velocità è un passo in questa direzione. La determinazione del valore dei parametri Kp e Ki è stata fatta procedendo per tentativi: non è infatti agevole lavorare con il modello matematico del veicolo, neppure in seguito alle semplificazioni illustrate.

5 Nel prossimo paragrafo si descriveranno le soluzioni adottate per evitare questa situazione anticipando per quanto possibile la frenata.

Page 20: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

20

Gli unici riferimenti utili nella scelta sono stati: • l’intervallo di variazione tipico delle velocità del veicolo di 10-40 m/s 6; • la forza massima che può essere applicata sulla ruota anteriore o posteriore, usando i valori

riportati nel capitolo 4, è pari rispettivamente a µFcFαC = 14183.36 N e µRcRαC = 29846.48 N.

Figura 2 − Andamento della velocità in risposta ad un set point di 30 m/s partendo da 20 m/s. Sono messe a confronto due diverse situazioni: un’accelerazione su un tratto rettilineo e su una curva con raggio 200 m. Volendo massimizzare la forza nel momento in cui viene rilevato l’errore massimo, ipotizzato di 30 m/s, supponendo che l’integratore sia ancora “scarico”, si è scelto Kp = 500 ( ≈ 14183.36/30). Varie prove ci hanno portato a ritenere ragionevole Ki = 50. In Figura 2 sono confrontati gli andamenti della velocità su un tratto di strada rettilineo ed una curva di raggio 200 m. Come si può vedere le prestazioni del controllo di velocità possono ritenersi soddisfacenti in entrambi i casi. Possiamo evidenziare che il “tempo di salita” sul tratto rettilineo è maggiore (8.1 sec) rispetto all’altra situazione (9.1 sec). In compenso nel primo caso si ha una lieve sovraelongazione dello 1.317 %7, mentre nell’ultimo è del tutto assente.

6 In realtà i 40 m/s non vengono mai raggiunti; è però un valore indicativo per valutare il caso peggiore, ossia quello prossimo ai valori non ammissibili per la forza applicata. 7 La sovraelongazione assoluta è di 0.1317 m/s. Se calcolata rispetto al valore finale è pari allo 0.439 %; se la si valuta rispetto all’incremento di 10 m/s è dell’1.317 %. Nel seguito viene discussa la distinzione.

Page 21: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

21

Complessivamente l’andamento della velocità sul tratto rettilineo ricorda quello di un sistema del 2° ordine con autovalori complessi coniugati, l’altro quello di un sistema del 1° ordine o del 2° ordine con autovalori reali; ciò sembra confermare la validità della precedente discussione teorica. Ci preme ricordare che la velocità iniziale del veicolo è di 20 m/s; questo poiché il modello bicycle adottato è valido solo per alte velocità (presenta infatti una singolarità con velocità nulla). In tutte le simulazioni ipotizzeremo che il sistema abbia una velocità iniziale di 20 m/s per avere un riferimento comune. I vari indicatori come la sovraelongazione vanno allora riferiti all’incremento rispetto a tale grandezza. Per verificare in maniera più dettagliata l’efficacia del controllore ne abbiamo esaminato le prestazioni al variare della curvatura e del set point di velocità. Abbiamo anche preso in esame anche le condizioni di decelerazione in curva che si sono dimostrate più critiche sia per il semplice controllo di velocità sia per lo scheduler della velocità. Nella Tabella 1 abbiamo riportato i tempi di assestamento rispetto ad una fascia del 1 % intorno al valore a regime al variare di velocità e curvatura della strada.

Velocità (m/s) Raggio 200 m Raggio 150 m Raggio 100 m Raggio 50 m

15 26.4 26.6 27.0 29.5

20 24.1 24.5 25.8 32.6

25 16.2 17.6 21.9 39.3

30 14.4 17.8 28.5 66.0

35 14.9 20.6 36.2 N.R.

Tabella 1 − Tempi di assestamento della velocità al variare del set point e delle curvatura della strada. I tempi sono espressi in secondi. L’aspetto più rilevante messo in evidenza dai dati è la difficoltà che si incontra nel correlare il tempo di assestamento con le altre grandezze. È comunque interessante notare, specialmente in relazione alla definizione del set point, che sembra possibile associare ad ogni curvatura una velocità che minimizza il tempo di assestamento.

Figura 3 − Andamenti della velocità su strada con raggio di curvatura di 150 m con set point di 15 m/s (a sinistra) e di 20 m/s (a destra).

Page 22: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

22

Inoltre occorre fare attenzione alle conseguenze della scelta della velocità iniziale di 20 m/s. Se il set point è minore o uguale a 20 si è riscontrato un comportamento diverso rispetto alle altre situazioni come messo in evidenza dalla Figura 3: abbiamo infatti una notevole sovraelongazione verso il basso. La cosa notevole è che quando il set point è di 20 l’errore iniziale è nullo e quindi la decelerazione è dovuta esclusivamente alla componente centripeta imposta dalla curva. Per controllare il veicolo in curva è conveniente ridurre la velocità prima di entrarvi e magari accelerare successivamente. Questa osservazione si rivelerà utile in seguito.

Figura 4 − Traiettoria del veicolo e andamento della sua velocità con set point di velocità di 35 m/s su di un percorso circolare di raggio 50 m. Merita una discussione a parte l’assenza del dato relativo ad un set point di 35 m/s e raggio di curvatura di 50 m. In queste condizioni si è perso il controllo del veicolo: ha cominciato infatti ad allontanarsi progressivamente dal tracciato e ad un certo punto la velocità ha cominciato a diminuire. Questo comportamento mette in evidenza i limiti del modello adottato, ma anche la necessità di adeguare la velocità al tracciato.

5.3 Velocity scheduler Con il termine velocity scheduler intendiamo indicare quella parte del controllore che definisce la velocità opportuna sulla base delle informazioni inerenti alla strada. Lo scopo principale rimane la massima riduzione possibile dell’errore di posizione rispetto alla strada; compatibilmente con il primo obiettivo, cercheremo inoltre di percorrere il tracciato alla massima velocità possibile. Per inquadrare più precisamente il problema osserviamo che su un tratto rettilineo percorso a qualsiasi velocità ragionevole (10-35 m/s) l’errore a regime sulla velocità è nullo. Lo mette bene in evidenza l’esempio in Figura 5: anche partendo da un errore di posizione iniziale di posizione elevato la riduzione è molto rapida.

Page 23: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

23

Figura 5 − Traiettoria del veicolo con distanza iniziale dalla strada di 7.07 m e relativo andamento della distanza. Completamente diversa è la situazione quando la curvatura della strada non è trascurabile. Se infatti non ci sono particolari problemi nell’inseguimento della velocità ciò che si nota è che l’errore a regime non è nullo ma dipende sia dalla velocità sia dalla curvatura. Un tipico andamento dell’errore è presentato in Figura 6. Nell’esempio in esame la condizione iniziale del veicolo è quella standard adottata nelle simulazioni del precedente paragrafo (velocità di 20 m/s ed errore iniziale nullo), la velocità di set point è di 30 m/s, il raggio di curvatura è di 150 m. Ciò che si nota immediatamente è che la distanza strada-traiettoria del veicolo ha inizialmente un andamento molto turbolento, raggiunge alcuni massimi locali, poi un minimo a partire dal quale la crescita è regolare sino all’assestamento su asintoto. Questo comportamento si può riscontrare praticamente in tutte le entrate in curva. Essendo interessati a stimare l’errore di posizione che si compie quando si percorre un tratto curvilineo in funzione della velocità e della curvatura, è sorto il problema di quale valore vada attribuito a questa variabile. Potremmo infatti pensare di stimare l’errore medio calcolato sul periodo compreso fra l’istante in cui il veicolo fa ingresso in curva e la fine della curva (per esempio il percorso sia un arco di circonferenza di lunghezza π·r dove r è il raggio). Questa è la soluzione adottata per le simulazioni del capitolo 6. Così facendo però la scelta del periodo su cui calcolare la media è convenzionale. Inoltre occorre ricordare che il nostro scopo è caratterizzare l’errore rispetto ad una certa velocità, non raccogliere dati relativi ad una situazione particolare.

Page 24: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

24

Figura 6 − Andamento dell’errore di posizione su un tracciato circolare di raggio 150 m con set point di velocità di 30 m/s. A regime l’errore è di 47.6 cm. Si badi che il tempo di assestamento della velocità entro un margine dell’1% è di 17.8 s (vd Tabella 1): in questo istante si rileva un errore di 45.3 cm, pari al 90.3 % del valore finale. Per questa ragione è stato impiegato il valore a regime dell’errore in corrispondenza del quale il sistema ha già raggiunto la velocità del set point. Il limite principale di questa scelta risiede nel fatto che il più delle volte per raggiungere i valori a regime il veicolo deve percorrere più volte il circuito circolare di test e nella realtà ben di rado i tracciati sono circuiti circolari. I risultati delle simulazioni sono riportati nella Tabella 2. Questi dati potrebbero essere impiegati per definire un unico set point di velocità che dia buoni risultati per tutte le curve possibili o comunque un valore medio per avvicinarsi alle prestazioni ottime. Indicativamente il valore medio della velocità dovrà essere compreso tra i 20 e i 25 m/s. I dati così ricavati hanno però una validità limitata poiché l’errore commesso in generale dipende dalle condizioni in cui si viene a trovare il sistema. Per esempio è diverso affrontare tre curve consecutivamente oppure intervallate da tratti rettilinei.

Page 25: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

25

Velocità (m/s) Raggio 200 m Raggio 150 m Raggio 100 m Raggio 50 m

15 2.2 ( 2.2) 3.0 ( 2.9) 4.6 ( 4.3) 9.1 ( 8.2)

20 13.1 (12.4) 17.7 (16.4) 26.5 ( 24.2) 52.7 ( 46.9)

25 34.2 (31.1) 45.5 (41.2) 68.1 ( 61.8) 134.8 (117.1)

30 35.6 (33.8) 47.6 ( 43.3) 72.4 ( 64.3) 174.7 (144.7)

35 71.1 (62.5) 95.8 (85.6) 148.6 (127.2) N.R.

Tabella 2 − Errore di posizione a regime al variare di velocità e raggio di curvatura. I valori sono espressi in cm. Tra parentesi sono indicati i valori medi dell’errore sul periodo di simulazione. Dopo questa analisi sulla tenuta di strada in funzione della velocità e della curvatura siamo pronti a discutere l’implementazione di uno scheduler di velocità. Vi sono essenzialmente due possibili approcci al problema. Il primo fa affidamento sulle sole informazioni di velocità e di curvatura della strada, che nell’ambito del progetto sono fornite dal sistema di visione artificiale; l’altro aggiunge a queste informazioni la misura dell’errore di posizione. Si tratta di una differenza sostanziale poiché in un caso impostiamo il set point senza conoscere la variabile in uscita che intendiamo controllare, ossia la distanza rispetto alla strada: è dunque un controllo feedforward. Nel secondo invece utilizziamo le informazioni sull’uscita per regolare il set point di velocità: dunque ciò che si otterrebbe è un controllo feedback. Nel seguito discutiamo separatamente i due approcci. 5.3.1 Scheduler basato sulla curvatura Questo scheduler di velocità definisce il proprio set point sulla base delle informazioni sul raggio di curvatura del tratto di strada che il veicolo si appresta a percorrere. Il primo aspetto da discutere riguarda allora le modalità di acquisizione di questo dato tramite il sistema di visione. Sappiamo che per pianificare le traiettorie tramite spline del 5° ordine vengono già acquisite informazioni sulle coordinate, sull’angolo e sulla curvatura nel punto di arrivo. Potremmo quindi banalmente riutilizzarle per quest’altro scopo. Vi è però una ragione che ci spinge a cercare un’altra soluzione. Infatti il raggio di visione per la pianificazione delle traiettorie è necessariamente limitato. Nel modello Simulink da noi implementato il raggio di visione è direttamente proporzionale alla velocità, Rvis = t·v dove t = 0.7 s. Questo significa che ad una velocità di 35 m/s il raggio di visione è pari a 24.5 m. Per un controllo della velocità si tratta di un valore chiaramente insufficiente. Per esempio se ad un lungo rettilineo segue una curva stretta è bene decelerare con il maggiore anticipo possibile, anche per evitare che la decelerazione più brusca avvenga proprio in curva (si veda in Figura 3 l’effetto di una decelerazione). Abbiamo pertanto impiegato due diverse funzioni di visione. In particolare nell’implementazione in Simulink abbiamo introdotto un blocco Matlab function che lavora in parallelo e che esegue lo script longVision.m e che si limita a determinare la curvatura con un raggio di visione più ampio (è calcolato usando un parametro long = 2).

Page 26: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

26

Implementare questa soluzione in un ambiente di simulazione non crea alcun problema; potrebbe invece non essere banale, per chi progetta la funzione di visione, estrarre parallelamente due informazioni. Ottenuta la curvatura della strada occorre specificare come impiegarla nella determinazione del set point di velocità. Purtroppo risulta difficile stabilire un insieme di regole esatte che assicurino il risultato ed entrano quindi in gioco soluzioni euristiche basate sull’osservazione delle simulazioni svolte su strade campione. La prima soluzione considerata è basata sulla raccolta di dati come quelli raccolti nella Tabella 2. Suddiviso il range dei valori della curvatura in intervalli e scelto un compromesso tra velocità e livello di errore si può allora associare a ciascuno di questi intervalli un set point specifico. Proprio questo approccio semplicistico ha suggerito l’uso del termine velocity scheduler in analogia con l’approccio gain scheduling. Per associare ad ogni curvatura una velocità in modo semplice e senza arrivare ad artificiali distinzioni di curvature, si è cercata una funzione continua che fornisse per ogni curvatura una velocità di riferimento. La relazione adottata è quella che lega accelerazione centripeta, velocità e raggio di curvatura.

ac = v2/R Scelta come accelerazione una porzione ac = b·amax dell’accelerazione massima che siamo in grado di fornire (calcolata come amax = µF·cF·αC/m dove i primi 3 parametri sono già stati discussi ed m è la massa), ricordando l’espressione della curvatura k = 1/R, allora la velocità verrà calcolata come segue: v = (b·amax/k)1/2. Chiariamo immediatamente che la relazione si affida più all’intuizione fisica che ad una rigorosa analisi del sistema: si ipotizza infatti che la velocità che siamo in grado di mantenere commettendo errori ridotti dipenda principalmente dalla massima accelerazione che siamo in grado di fornire. Una valutazione approssimativa delle prestazioni al variare della curvatura basata sui dati raccolti a priori è riportata in Figura 7. Per completare il modello abbiamo introdotto una ulteriore regola euristica: a fronte di un aumento della curvatura conviene decelerare prima dell’ingresso nel tratto a curvatura più stretta e accelerare leggermente in uscita dalla curva. Per poter applicare questa considerazione qualitativa al modello è stato introdotto un vettore di curvature roadK in grado di memorizzare le ultime n curvature rilevate in modo da poter valutare se c’è stato un aumento. Pesando diversamente gli incrementi di curvatura roadK(i) − roadK(i−1) si arriva a stimare sul periodo di acquisizione l’incremento/decremento globale della curvatura.

Page 27: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

27

Figura 7 − Il set point di velocità in funzione della curvatura. Per particolari valori della curvatura è riportata una stima a priori dell’errore commesso a regime. Gli accorgimenti euristici discussi sono infine stati implementati in un’unica funzione Matlab, velocity_scheduler.m che riportiamo qui di seguito omettendo alcuni commenti.

function [velocity_set] = velocity_scheduler(vsetpoint) global roadK; global acc_max; if isempty(roadK) % Controllo: attenzione all'inizializzazione! velocity_set = vsetpoint; return

end

lenK = length(roadK); deltaK = roadK(1:lenK-1) - roadK(2:lenK); % Variazione di curvatura % Pesiamo le variazioni di curvatura in modo tale che quelle più recenti % incidano di più sul set point finale coeff = (0.9).^(0:lenK-2); delta = sum(coeff.*deltaK)/sum(coeff); % Definizione del set point sulla base delle due regole euristiche if abs(roadK(1)) > 1e-4

Page 28: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

28

0 20 40 60 80 100 1200

0.5

1

1.5

2

2.5Distance error from road - 200 m radius

Time (sec)

Erro

r (m

)

velocity_set = sqrt( acc_max/(2*abs(roadK(1))) ) - 200*delta; else velocity_set = vsetpoint - 200*delta; end

La funzione discussa ha come in ingresso il set point di velocità desiderato ed applicato di fatto solo sul rettilineo o su curve di raggio molto ampio. La definizione dei parametri è stata svolta ancora una volta per tentativi. Per valutare effettivamente le prestazioni di questo tipo di controllo si è simulato il comportamento del sistema sul circuito di test illustrato nel capitolo 6 e riportato in Figura 8 insieme all’andamento della velocità. In Figura 9 è invece riportato l’andamento dell’errore di posizione.

0 20 40 60 80 100 12010

15

20

25

30

35

40Car velocity - 200 m radius

Time (sec)

Vel

ocity

(m/s

ec)

Figura 8 − Pianta del circuito di test (a sinistra) e relativo andamento della velocità (a destra).

Figura 9 − Andamento dell’errore di posizione. Lo si confronti con il ciruito: l’improvviso aumento dell’errore è riconducibile all’entrata o all’uscita da una curva.

Page 29: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

29

I dati riassuntivi inerenti alle prestazioni sono abbastanza soddisfacenti: l’errore medio di posizione è di 23.96 cm a fronte di una velocità media di 22.44 m/s. Possiamo però notare che l’errore massimo non è affatto contenuto: in corrispondenza della curva più stretta (e nelle immediate vicinanze) dell’intero circuito l’errore sale fino a 2 m. Ciò può essere attribuito al minor successo della decelerazione in curva ma anche al fatto che la curva è così stretta da poter essere difficilmente rilevata impedendo così al sistema di visione di segnalare in modo continuo il forte decremento di curvatura. Se si esclude questa uscita di strada per il resto l’errore rimane contenuto al di sotto di 1 m. A conclusione di questa discussione evidenziamo che sono possibili molti miglioramenti. Per esempio differenziando il comportamento in entrata ed in uscita da una curva distinguendo i casi in cui deltaF > 0 e deltaF < 0. La modifica potrebbe o favorire l’aumento della velocità media (se il risultato ottenuto è considerato troppo penalizzante per la velocità) o la sua diminuzione.

5.3.2 Scheduler basato sull’errore di posizione Lo scheduler basato sull’errore di posizione controlla il set point della velocità sulla base dell’errore di posizione commesso rispetto alla strada. Abbiamo già ampiamente evidenziato le difficoltà che la sua realizzazione comporta; abbiamo in particolar modo sottolineato che tale controllo richiede la presenza di un sensore il grado di stimare la distanza dalla strada non previsto dalle specifiche e quindi pone problemi che esulano da questa trattazione. L’esigenza di completezza ed il fatto che questo controllo preveda la retroazione e sia quindi in grado di superare l’arbitrarietà delle euristiche presentate sono ragioni sufficienti per analizzare questo schema alternativo. Ipotizziamo d’ora in avanti di poter acquisire periodicamente (per esempio in modo sincrono rispetto al trigger di visione) l’informazione relativa sulla distanza rispetto alla strada. Il quesito a cui occorre rispondere riguarda il modo di impiegarla. Impiegare un controllore proporzionale-integrale è probabilmente la soluzione più semplice cui si possa pensare. Vista però la natura della grandezza considerata si è pensato di utilizzare l’errore come una sorta di dato di correzione rispetto ad una velocità di set point di riferimento. Lo schema considerato è in sostanza quello riportato in Figura 10. Le prestazioni in termini di errore di posizione di questo controllo in condizioni di strada lentamente variabili sono decisamente positive. Lo si può verificare osservando gli andamenti della velocità e della distanza da un percorso rettilineo di raggio 200 m, con velocità di riferimento pari a 25 m/s e set point dell’errore di 20 cm in Figura 11. Il limite principale consiste però nella lentezza con cui l’errore arriva al valore a regime, spesso molto prima della fine di una curva. Inoltre visto il tipico andamento dell’errore che si riscontra all’entrata di una curva (si veda la Figura 6) tale maniera di controllare potrebbe risultare troppo penalizzante per la velocità.

Page 30: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

30

Figura 10 − Schema del controllore basato sull’errore di posizione.

Figura 11 − Andamento dell’errore di posizione (a sinistra) e della velocità (a destra) per il controllo di posizione.

Page 31: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

31

Capitolo 6 Simulazioni per il tuning dei parametri

I parametri su cui si è operato allo scopo di ottenere pianificazioni della traiettoria del veicolo che comportassero il minimo errore di inseguimento della strada sono stati quelli denominati, nelle relazioni matematiche presentate, con η1 ed η2. In particolare, dalle simulazioni matematiche condotte, si è notato che le migliori prestazioni sono ottenibili agganciando tali valori nell’intorno del raggio di interpolating distance del sistema di visione artificiale. In particolare il significato assunto da questi due parametri liberi è il seguente:

η1 influisce sul comportamento del veicolo nell’entrata della curva; η2 influisce sul comportamento del veicolo nella fase di uscita dalla curva.

Si è inoltre osservato come il comportamento del veicolo venga modificato secondo le successive considerazioni8:

valore η Comportamento veicolo

η > actualID la macchina tende a tagliare la curva: c’è una situazione di sovrasterzo.

η < actualID la macchina tende ad allargare rispetto alla traiettoria della curva: c’è una situazione di sottosterzo.

Tabella 3- Comportamento del veicolo in funzione dei parametri η Nella versione del controllo da noi prodotta si è deciso di assegnare staticamente il valore di η2 al valore corrente dell’interpolating distance mentre il comportamento del veicolo in entrata alla curva è stato più finemente tarato secondo le seguenti regole. Si tenga sempre presente che il valore del raggio di visione risulta essere funzione della velocità con la quale il veicolo si sta muovendo: più alta è la velocità e maggiore risulterà essere il raggio di visione corrente.

Se il raggio di visione è maggiore di una certa soglia, configurabile, vuol dire che ci stiamo muovendo ad elevata velocità. Allora fissiamo il valore di η1 leggermente inferiore al valore del raggio di visione in quanto non possiamo tollerare di allargare la curva. Data l’elevata velocità si rischia, infatti, di introdurre un errore significativo rispetto alla traiettoria della strada;

8 actualID rappresenta il nome della variabile Matlab che memorizza il valore corrente dell’interpolating distance.

Page 32: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

32

Se il raggio di visione è minore della soglia precedente, allora vuol dire che ci stiamo

muovendo con velocità non particolarmente elevate. Fissiamo, quindi, un valore di η1 leggermente superiore al raggio di visione tendendo dunque ad evitare di tagliare il più possibile la curva.

Si è allora resa necessaria una fase di affinamento legata alla scelta di quanto maggiore o quanto minore dovesse essere settato il parametro η1 in modo da rispettare al meglio le considerazioni precedenti. Le scelte di progetto fatte sono state le seguenti:

Per valori del raggio di visione superiori alla soglia fissata, si è deciso di eseguire una prima campagna di test sul valore di η1, con due punti di incremento percentuale, da 0.45 a 0.55, ossia assegnando i valori compresi dal 45% al 55% del valore del raggio di visione;

Per valori del raggio di visione inferiori alla soglia fissata, si è deciso di eseguire campagne di test sul valore di η1, con due punti di incremento percentuale, da 1.15 a 1.25 ossia considerando un incremento del valore del raggio di visione compreso fra il 15% e il 25%.

Per meglio valutare le ripercussione delle scelte fatte sul comportamento del veicolo, si è deciso di utilizzare i seguenti parametri simulativi:

Strada Strada circolare di raggio pari a 200m (che si è detto essere la curva più stretta da prendere in considerazione per le simulazioni) e lunghezza pari a 200*π.

Set-point velocità iniziale 20 m/sec

Tabella 4 - Parametri usati per la fase di tuning

Si sono inoltre implementate classi associate agli elementi costitutivi della strada (segmenti e curve) che permettessero di valutare in modo analitico gli errori commessi nell’ inseguimento della strada. I risultati delle simulazioni sono riportati nei grafici seguenti.

Page 33: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

33

Per ogni simulazione sono evidenziati gli errori di inseguimento, massimi e medi, espressi in metri. La notazione usata per l’identificazione dei grafici è la seguente: num1-num2 dove:

<∗=

>∗=

15 actualID se 100

21

15 actualID se 100

11

actualIDnum

actualIDnum

η

η

I. TUNING DI NUM1 Come prima campagna di test si è cercata la taratura ottimale del coefficiente che influenza l’aggiornamento di η1 nell’ipotesi di raggio di visione superiore alla soglia fissata. Nelle simulazioni che sono state condotte si è imposto 35m/s quale set-point finale di velocità. Tale set-point, per la dinamica di accelerazione dell’auto, garantisce che la curva di test sia percorsa quasi totalmente ad una velocità associata ad un valore di actualID costantemente superiore a 15. La prima serie di analisi è stata condotta facendo variare num1 nel range da 0.45 a 0.55. Ci si è però accorti come l’errore di inseguimento stradale, medio ed assoluto, fosse una funzione monotona crescente nell’intervallo specificato. Si è allora deciso di allargare la fascia di indagine arrivando ad individuare un punto di minimo errore per num1 = 0.25. Il seguente grafico riassuntivo evidenzia i vari test eseguiti:

Legenda:

num1 = 0.52

num1 = 0.50

num1 = 0.48

num1 = 0.30

num1 = 0.20

num1 = 0.25

Page 34: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

34

In particolare, dall’analisi statistica sui dati d’errore, relativa alla condizione ottimale sperimentalmente determinata, si sono ottenuti i seguenti dati:

x y

Valore massimo 18.51 0.7144

Valore medio 9.26 0.5

Con la scelta effettuata si riesce, dunque, a contenere l’errore di inseguimento su una curva di raggio pari a 200m con set-point di velocità pari a 35 m/s (circa 130 Km/h) entro i 70 centimetri. II. TUNING DI NUM2

La seconda campagna di test è stata invece finalizzata alla determinazione del valore ottimale relativo a NUM2. Allo scopo di ottenere una dipendenza comportamentale del veicolo funzione del solo parametro num2 si è imposto come set-point finale di velocità 20 m/s. Anche in questo caso, in una prima fase di analisi, si sono effettuate simulazioni nel range di valori compresi fra 1,16 e 1,24. Notando che la funzione d’errore così ottenuta, risultava essere monotona crescente, si è deciso di allargare lo spettro di indagine anche a valori più bassi. Si è così potuto ottenere il valore ottimale pari a 0.80. Il seguente grafico riassuntivo evidenza i vari test eseguiti.

Legenda:

num2 = 1.20

num2 = 1.16

num2 = 1.10

num2 = 1.05

num2 = 1.00

num2 = 0.90

num2 = 0.80

Page 35: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

35

In particolare, dall’analisi statistica sui dati d’errore, relativa alla condizione ottimale sperimentalmente determinata, si sono ottenuti i seguenti dati:

x y

Valore massimo 31.01 0.1212

Valore medio 15.51 0.06

Con la scelta effettuata si riesce, dunque, a contenere l’errore di inseguimento su una curva di raggio pari a 200m con set-point di velocità pari a 20 m/s (circa 72 Km/h) entro i 12 centimetri considerando la situazione di caso peggiore.

Allo scopo di verificare il comportamento complessivo in una simulazione più completa rispetto a quelle utilizzate nelle fasi di taratura, si è “lanciato” il veicolo sul circuito che sarà utilizzato per la prova di valutazione. Tale circuito presenta un elemento di configurazione denominato lmin introdotto per permetterne il ridimensionamento preservandone le proporzioni. Il risultato della simulazione, condotta con set-point finale di velocità pari a 25 m/s, è stato il seguente:

Dall’analisi statistica sui dati di simulazione è emerso che il massimo errore commesso è di 1,106 m (ottenuto in A), l’errore medio di 0,1834 m con un tempo di percorrenza complessivo pari a 97 sec.

A

Page 36: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

36

Capitolo 7 Appendice − La funzione per il calcolo della distanza di un punto dalla strada

Nella relazione si è fatto continuo ricorso alla funzione per il calcolo della distanza di un punto dalla strada: anzi questa variabile è stata impiegata come principale parametro di valutazione delle performance del controllore. Per questo ci è sembrato opportuno discutere nel dettaglio gli elementari algoritmi geometrici impiegati. Nel seguito discuteremo le ipotesi fatte sugli oggetti geometrici, le implementazioni del metodo distance per i vari oggetti Matlab e le conclusioni. 7.1 Ipotesi Il primo problema cui occorre dare una risposta è come debba essere definita la distanza tra la strada ed il veicolo che la insegue. Infatti quest’ultimo è un oggetto, che anche in seguito alle semplificazioni del modello bicycle, non è puntiforme. La prima ipotesi semplificativa che facciamo è proprio scegliere un punto convenzionale del veicolo da usare nel calcolo. Si è allora scelto il centro del sistema di riferimento dell’automobile principalmente perché le sue coordinate sono immediatamente disponibili sotto forma di variabili di stato x e y. Il modello usato per rappresentare la strada introduce ulteriori semplificazioni. Per strada intendiamo qui una collezione di oggetti geometrici di tipo segmento o circonferenza disposti in modo che ciascuno sia consecutivo all’altro. In altri termini la strada non ha superficie, è una curva semplice. In particolare l’implementazione tramite oggetti Matlab prevede oggetti di classe road tra i cui attributi figura un vettore di oggetti di classe segment oppure di classe circle. Fatte queste premesse definiamo la distanza. Siano data una strada r costituita dall’unione di elementi ei, r = ∩i ei, P il punto rispetto al quale calcolare la distanza; allora la distanza di P rispetto ad r è la quantità

distance(r,P) = min { distance(ei,P) } = min { minRε ei | P − R | } Il calcolo della distanza è demandato in altri termini agli oggetti che compongono la strada. Essendoci due tipi ammissibili di oggetti elementari occorrono due diverse implementazioni del metodo distance. Nel seguito le discuteremo.

Page 37: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

37

7.2 Distanza di un punto rispetto ad un segmento È noto che in spazi normati euclidei la distanza tra un punto P (individuato da un vettore) ed una retta r è uguale alla norma della differenza dei vettori P e T, dove T è la proiezione ortogonale di P su r. Esiste una semplice relazione per calcolare questa distanza una volta che sia stata data l’equazione della retta e le coordinate del punto P = (xP, yP) che qui riportiamo nella forma che ci risulta più comoda:

distance = | sin α (xP−x0) − cos α (yP-y0) | dove α è l’angolo tra la retta r e l’asse delle ascisse e (x0, y0) sono le coordinate di un punto qualsiasi della retta r. Questa forma risulta particolarmente comoda poiché l’oggetto segment ha fra i suoi attributi proprio α e le coordinate del punto iniziale (il segmento è infatti orientato).

Figura 12 − Distanza di un punto da un segmento quando la proiezione del punto appartiene al segmento (punto P1) e quando è invece esterna (P2).

Page 38: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

38

Poiché ciò che dobbiamo calcolare è la distanza di un punto da un segmento, la relazione valida per la retta è valida anche per il segmento se la proiezione T di P su r, retta che si ottiene prolungando il segmento, appartiene al segmento stesso. Diversamente la distanza è uguale alla distanza tra P e il più vicino degli estremi del segmento (S0 oppure S1). In Figura 12 sono rappresentate entrambi i casi. Per discriminare i due casi si può procedere in questo modo:

1. costruire le rette t0 e t1 passanti per S0 ed S1 e ortogonali ad r; 2. calcolare la distanza di P rispetto a t0 e t1:

d0 = | sin(α + π/2) (xP−x0) − cos(α + π/2) (yP-y0) | d1 = | sin(α + π/2) (xP−x1) − cos(α + π/2) (yP-y1) |

3. è ora possibile discriminare i tre casi nota la lunghezza length del segmento: if d1 < length AND d0 < length then dist = dist(r,P) else

if d0 < d1 then dist = dist(S0, P) else dist = dist(S1, P)

Riportiamo infine il codice Matlab della funzione omettendo i commenti.

function [d,in]=distance(s,x,y) t = s.alpha; t2 = s.alpha+pi/2; a = abs( sin(t)*(x-s.x0) - cos(t)*(y-s.y0) ); a1 = abs( sin(t2)*(x-s.x0) - cos(t2)*(y-s.y0) ); a2 = abs( sin(t2)*(x-s.x1) - cos(t2)*(y-s.y1) ); if (a1<=s.length && a2<=s.length) d = a; in = 1; elseif (a1<s.length && a2>s.length) d = sqrt((x-s.x0)^2+(y-s.y0)^2); in = 0; else d = sqrt((x-s.y1)^2+(y-s.y1)^2); in = 0; end

7.3 Distanza di un punto rispetto ad un arco di circonferenza Per il calcolo della distanza tra un punto ed una circonferenza sussiste una relazione semplice:

distance(circ,P) = | R − dist(P,C) | dove C è il centro della circonferenza, R è il raggio del cerchio. È facile convincersi della veridicità della relazione esaminando la Figura 13.

Page 39: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

39

La dimostrazione geometrica è semplice ed è una conseguenza della disuguaglianza triangolare per le metriche. In generale però gli elementi della strada non sono circonferenze ma archi di circonferenze. In questo caso infatti la relazione esaminata può essere impiegata solo se la retta che congiunge P con il centro C interseca l’arco in T in modo tale che dist(P,T) = | R − dist(P,C) |9. Diversamente la distanza è pari a min{ dist(Q0,P), dist(Q1,P) } dove Q0 e Q1 sono gli estremi dell’arco. Per discriminare i vari casi occorre determinare i diversi angoli formati dalle rette PC, PQ0 e PQ1. rispetto all’asse delle ascisse. Denominiamo con θ, θ0 e θ1 la misura dei tre angoli. A seconda che l’arco sia orientato in senso orario o antiorario la condizione per cui il punto T cade all’interno dell’arco sarà data da θ0<θ<θ1 oppure da θ1<θ<θ0.

Figura 13 − Dimostrazione dell’espressione della distanza tra il punto P e la circonferenza nel caso in cui P sia esterno o interno. Si dimostra in particolare che per ogni punto Q della circonferenza, quello più vicino a P è T, ossia il punto individuato dall’intersezione della retta CP con la circonferenza dalla parte di P (in pratica tra i due punti di intersezione della retta si sceglie quello più vicino a P).

9 Intersecando la retta PC con la circonferenza completa si ottengono in generale due punti di intersezione: uno che dista | R − dist(P,C) |, l’altro dalla parte opposta | R + dist(P,C) |.

Page 40: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

40

La complicazione maggiore deriva dal fatto che se il calcolo viene fatto con la funzione atan2 la misura dell’angolo sarà compresa tra −π e π e ciò può non andare sempre bene. La casistica è rappresentata in Figura 14. Per risolvere il problema nei 4 casi problematici, ossia quando la relazione θ0<θ<θ1 sussisterebbe se la misura degli angoli fosse espressa convenientemente, basta sommare un fattore 2π a θ1 ed eventualmente a θ. Nel caso completamente orario completamente duale sarà necessario invece sommare 2π a θ0. Per concludere riportiamo l’implementazione tramite una funzione Matlab.

function [d,in]=distance(c,x,y) verso = sign(c.R); % positivo se antiorario, altrimenti negativo teta = atan2(y-c.yr,x-c.xr); % angolo asse x-punto (x,y) teta0 = atan2(c.y0-c.yr,c.x0-c.xr); % angolo asse x-punto inizio arco teta1 = atan2(c.y1-c.yr,c.x1-c.xr); % angolo asse x-punto fine arco if c.length > abs(2*pi*c.R) % l’arco di circonferenza è in realtà una circonferenza!

d = abs( abs(c.R) - sqrt((x-c.xr)^2+(y-c.yr)^2) ); in = 1; return end

if verso > 0 && teta0 > teta1 teta1 = teta1 + 2*pi; if teta < 0 || teta1 > 2*pi teta = teta + 2*pi; end end if verso < 0 && teta0 < teta1 teta0 = teta0 + 2*pi; if teta < 0 || teta0 > 2*pi teta = teta + 2*pi; end end

if ((verso > 0 && teta0 < teta && teta < teta1) || ... (verso < 0 && teta1 < teta && teta < teta0)) d = abs( abs(c.R) - sqrt((x-c.xr)^2+(y-c.yr)^2) ); in = 1; else d = min([sqrt((x-c.x0)^2+(y-c.y0)^2) sqrt((x-c.x1)^2+(y-c.y1)^2)]); in = 0; end

Page 41: RISULTATI SPERIMENTALI NELLA SIMULAZIONE DI VEICOLO ... · Iniziamo con l’introdurre nel mostro modello il punto di baricentro, indicando con β l’angolo che si viene a creare

Laboratorio di Automatica Università degli Studi di Parma Facoltà di Ingegneria

41

Figura 14 − Discussione degli 8 casi possibili che si presentano per l’arco orientato in senso antiorario (da θ0 a θ1). Del tutto analoga la situazione per l’orientamento orario (basta scamibiare θ0 e θ1).

Capitolo 8 Conclusione Costruite le funzioni per il calcolo della distanza tra un punto e un segmento o un arco di circonferenza risulta semplice calcolare la distanza complessiva cercando quella minima. Se gli elementi della strada sono molti e sono memorizzati dentro un vettore può essere computazionalmente oneroso effettuare frequentemente il calcolo. Si potrebbe allora pensare di ottimizzarlo ricorrendo ad una struttura dati più complessa, per esempio ad albero, che sulla base delle sole coordinate del punto P sia in grado di individuare gli elementi della strada più vicini a quel punto in modo da risparmiare il calcolo della distanza da quegli elementi che si trovano in un’altra “zona” della strada. Algoritmi di questo tipo esistono già per la determinazione del punto più vicino tra quelli appartenenti ad un certo insieme di punti. Oppure si potrebbe pensare di costruire una sorta di diagramma di Voronoi. Per una discussione più approfondita rimandiamo per esempio a R. Sedgewick,”Algorithms in C++”, Addison Wesley. Uno sviluppo in questo senso esula dagli scopi di questa trattazione.


Recommended