Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio...

20
Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Model Drive Applicazione per il Applicazione per il pilotaggio pilotaggio di veicoli di veicoli Esame di Linguaggi e Modelli computazionali LS Prof. Enrico Denti Progetto di Maria Teresa Roccia Model Drive

Transcript of Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio...

Page 1: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Corso di Laurea Specialistica in Ingegneria Informatica

Model DriveModel DriveApplicazione per il pilotaggio Applicazione per il pilotaggio

di veicolidi veicoli

Esame di Linguaggi e Modelli computazionali LS

Prof. Enrico Denti

Progetto di Maria Teresa Roccia

Model Drive

Page 2: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Requisiti di base dell’applicazione:

- Controllare la correttezza di sequenze di comandi per il pilotaggio di diversi modellini di macchine, elicotteri o barche.

- Esplicitare l’effetto prodotto dall’eventuale esecuzione sul modello del veicolo scelto della particolare sequenza immessa.

- I comandi devono poter essere forniti mediante il supporto di un’interfaccia.

- Sul modellino è possibile settare 10 differenti valori di accelerazione, da 0 (accelerazione nulla) a 9 (accelerazione massima), che modificano la velocità con cui il modello si muove.

- I modellini si differenziano fra loro per il colore (rosso, nero, verde, grigio, blu e giallo).

- La portata massima del radio comando è pari a 30 mt.

Occorre disporre di:

Un linguaggio specifico per il pilotaggio di modelli di veicolo.

Un interprete per

Controllo della correttezza delle frasi del linguaggio immesse

Descrizione dei movimenti del veicolo a seguito della sequenza delle frasi corrette immesse dall'utente.

Model Drive

Quali obiettivi e come raggiungerli

Definizione di Grammatica

Analisi lessicale e sintattica

Analisi semantica

Page 3: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Up

Model Drive

Approccio al problema:Spazio d'azione e possibili movimenti

3D

2D

Forward

Left

Right

Forward

Left

Right

Down

Backward

TYPE

DIRECTION

Quale grammatica per quale linguaggio?

Page 4: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

S ::= <DRIVE>

<DRIVE> ::= <TYPE> <INSTRUCTIONS><DOT>

<TYPE> ::= <DIMENSION> <MODEL> <DDOT>

<DIMENSION> := 2D_Drive | 3D_Drive

<MODEL> ::= Car_ | Boat_ | Helicopter_

<ID> ::= Red | Green | Black | Yellow | Blue | Grey

<INSTRUCTIONS> ::= <START_CMD> <CMDS>

<START_CMD> ::= <START> <END_CMD>

<CMDS> ::= <CMD> <CMDS> | <STOP_CMD>

<CMD> ::= <DIR> <DIST> < SPEEDUP > <END_CMD>

<DIR> ::= forward | left | right | backward | up | down

<DIST> ::= <LP><MT> <DOT> <CM> <RP>

< SPEEDUP > ::= <PLUS> <DIGIT> | <MINUS> <DIGIT>

<MT> ::= <ZERO_TWO><DIGIT>

<CM> ::= <DIGIT><DIGIT>

<DIGIT> ::= <ZERO_TWO> | <THREE_NINE>

<ZERO_TWO> ::= 0 | 1 | 2

<THREE_NINE> ::= 3 | 4 | 5 | 6 | 7 | 8 | 9

<STOP_CMD> ::= <STOP> <DOT>

Model Drive

Grammatica BNF: l’idea di partenza (1/1)

<LP> ::= (

<RP> ::= )

<END_CMD> ::= ;

<DOT> ::= .

<DDOT> ::= :

<PLUS> ::= +

<MINUS> ::= -

<STOP> ::= OFF

<START> ::= ON

Page 5: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

S ::= <DRIVE>

<DRIVE> ::= <TYPE> <INSTRUCTIONS><DOT>

<TYPE> ::= <DIMENSION> <MODEL> <DDOT>

<DIMENSION> := 2D_Drive | 3D_Drive

<MODEL> ::= Car_ | Boat_ | Helicopter_

<ID> ::= Red | Green | Black | Yellow | Blue | Grey

<INSTRUCTIONS> ::= <START_CMD><CMDS>

<START_CMD> ::= <START> <END_CMD>

<CMDS> ::= <CMD> <CMDS> | <STOP_CMD>

<CMD> ::= <DIR> <DIST> < SPEEDUP > <END_CMD>

<DIR> ::= forward | left | right | backward | up | down

<DIST> ::= <LP><MT> <DOT> <CM> <RP>

< SPEEDUP > ::= <PLUS> <DIGIT> | <MINUS> <DIGIT>

<MT> ::= <ZERO_TWO><DIGIT>

<CM> ::= <DIGIT><DIGIT>

<DIGIT> ::= <ZERO_TWO> | <THREE_NINE>

<ZERO_TWO> ::= 0 | 1 | 2

<THREE_NINE> ::= 3 | 4 | 5 | 6 | 7 | 8 | 9

<STOP_CMD> ::= <STOP> <DOT>

Ricorsione, NO SELF-EMBEDDINGQuale linguaggio?

Model Drive

Grammatica Context-Free

(Tipo 2)Secondo Chomsky

Linguaggio Linguaggio regolareregolare

Quale grammatica?

<LP> ::= (

<RP> ::= )

<END_CMD> ::= ;

<DOT> ::= .

<DDOT> ::= :

<PLUS> ::= +

<MINUS> ::= -

<STOP> ::= OFF

Grammatica BNF: l’idea di partenza (1/2)

Page 6: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

S ::= <DRIVE>

<DRIVE> ::= <TYPE> <INSTRUCTIONS><DOT>

<TYPE> ::= <DIMENSION> <MODEL> <DDOT>

<DIMENSION> := 2D_Drive | 3D_Drive

<MODEL> ::= Car_ | Boat_ | Helicopter_

<ID> ::= Red | Green | Black | Yellow| Blue | Grey

<INSTRUCTIONS> ::= <START_CMD><CMDS>

<START_CMD> ::= <START> <END_CMD>

<CMDS> ::= <CMD> <CMDS> | <STOP_CMD>

<CMD> ::= <DIR> <DIST> <SPEEDUP> <END_CMD>

<DIR> ::= forward | left | right | backward | up | down

<DIST> ::= <LP><MT> <DOT> <CM> <RP>

<SPEEDUP> ::= <PLUS> <DIGIT> | <MINUS> <DIGIT>

<MT> ::= <ZERO_TWO><DIGIT>

<CM> ::= <DIGIT><DIGIT>

<DIGIT> ::= <ZERO_TWO> | <THREE_NINE>

<ZERO_TWO> ::= 0 | 1 | 2

<THREE_NINE> ::= 3 | 4 | 5 | 6 | 7 | 8 | 9

<STOP_CMD> ::= <STOP> <DOT>

Model Drive

Grammatica BNF: l’idea di partenza (1/3)

Controllo a livello sintattico:

- Troppo vincolante: grammatica con scarsa possibilità di riuso- Inutile: il controllo a livello semantico è comunque necessario

LL(1)LL(1)

Grammatica LL(K)?

Page 7: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

S ::= <DRIVE>

<DRIVE> ::= <TYPE> <INSTRUCTIONS><DOT>

<TYPE> ::= <DIMENSION> <MODEL> <DDOT>

<DIMENSION> := 2D_Drive | 3D_Drive

<MODEL> ::= Car_ | Boat_ | Helicopter_

<ID> ::= Red | Green | Black | Yellow | Blue | Grey

<INSTRUCTIONS> ::= <START_CMD><CMDS>

<START_CMD> ::= <START> <END_CMD>

<CMDS> ::= <CMD> <CMDS> | <STOP_CMD>

<CMD> ::= <DIR> <DIST> <SPEEDUP> <END_CMD>

<DIR> ::= forward | left | right | backward | up | down

<DIST> ::= <LP><MT> <DOT> <CM> <RP>

<SPEEDUP> ::= <PLUS> <DIGIT> | <MINUS> <DIGIT>

<MT> ::= <ZERO_TWO><DIGIT>

<CM> ::= <DIGIT><DIGIT>

<DIGIT> ::= <ZERO_TWO> | <THREE_NINE>

<ZERO_TWO> ::= 0 | 1 | 2

<THREE_NINE> ::= 3 | 4 | 5 | 6 | 7 | 8 | 9

<STOP_CMD> ::= <STOP> <DOT>

Model Drive

Grammatica BNF: l’idea di partenza (1/4)

<INTEGER_DIST> ::= <DIGIT> <DIGIT>

<DECIMAL_DIST> ::= <DIGIT> <DIGIT>

<DIGIT> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

DIST: mt.cmoppure km.mtoppure cm.mm …

Page 8: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

S ::= <DRIVE>

<DRIVE> ::= <TYPE> <INSTRUCTIONS><DOT>

<TYPE> ::= <DIMENSION> <MODEL> <ID> <DDOT>

<DIMENSION> := 2D_Drive | 3D_Drive

<MODEL> ::= Car_ | Boat_ | Helicopter_

<ID> ::= Red | Green | Black | Yellow| Blue | Grey

<INSTRUCTIONS> ::= <START_CMD><CMDS>

<START_CMD> ::= <START> <END_CMD>

<CMDS> ::= {<CMD>} <STOP_CM>

<CMD> ::= <DIR> <DIST> < SPEEDUP > <END_CMD>

<DIR> ::= forward | left | right | backward | up | down

<DIST> ::= <LP><INTEGER_DIST> <DOT> <DECIMAL_DIST> <RP>

<SPEEDUP> ::= (<PLUS> | <DIGIT>) <DIGIT>

<INTEGER_DIST> ::= <DIGIT> <DIGIT>

<DECIMAL_DIST> ::= <DIGIT> <DIGIT>

<DIGIT> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<STOP_CMD> ::= <STOP> <DOT>

<START> ::= ON

<STOP> ::= OFF

Model Drive

Grammatica utilizzata EBNF

<LP> ::= (

<RP> ::= )

<END_CMD> ::= ;

<DOT> ::= .

<DDOT> ::= :

<PLUS> ::= +

<MINUS> ::= -

Grammatica Context-Grammatica Context-Free Free

(Tipo 2)(Tipo 2)Secondo ChomskySecondo ChomskyLL(1)LL(1)

Linguaggio Linguaggio regolareregolare

Page 9: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Analisi Sintattica: limiti

2D_Drive Car_Red:

forward(21.15)+5;

OFF.

2D_Drive Car_Red:

ON;

forward(21.15)+5;

OFF.

Il modello deve essere acceso e poi

pilotato!

2D_Drive Car_Red:

ON;

up(21.15)+5;

OFF.

La frase è sintatticamente corretta, ma il

modello non può volare!

2D

Forward

Left

Right

Backward

2D_Drive Car_Red:

ON;

forward(21.15)+0;

OFF.

La frase è sintatticamente corretta, ma il

modello si muoverà?

Page 10: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Analisi Semantica: il calcolo del significatoIn generale

Che significato si attribuisce ad una frase sintatticamente corretta di un linguaggio?

In particolare:

Come si muoverà il modellino scelto a seguito dell’eventuale esecuzione di una corretta sequenza di comandi?

Dipende dai valori settati come distanza ed accelerazione, ma soprattutto

dal particolare modellino in uso Ho bisogno di una funzione di valutazione per ogni modellino!

Possibili metodologie risolutive:

Metodologia object-oriented:

Metodo di interpretazione interno alle classi

Ma nuova interpretazione => Definizione del nuovo

metodo in tutte le classi!

Page 11: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Alcune classi sintattiche: esempioInterpretare i movimenti di un aereo:

Possibilità di decollare solo

- Dopo aver raggiunto una certa accelerazione

- Se ha a disposizione una certa distanza

- Con un determinato comando di direzione,…

Page 12: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Analisi Semantica: il calcolo del significatoIn generale

Che significato si attribuisce ad una frase sintatticamente corretta di un linguaggio?

In particolare:

Come si muoverà il modellino scelto a seguito dell’eventuale esecuzione di una corretta sequenza di comandi?

Dipende dai valori settati come distanza ed accelerazione, ma soprattutto

dal particolare modellino in uso Ho bisogno di una funzione di valutazione per ogni modellino!

Possibili metodologie risolutive:

Metodologia funzionale:

Funzione di interpretazione esterna alle classi

Ma nuova produzione => Modifica di tutte le

funzioni di interpretazione!

Metodologia object-oriented:

Metodo di interpretazione interno alle classi

Ma nuova interpretazione => Definizione del nuovo

metodo in tutte le classi!

Page 13: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Analisi Semantica: il calcolo del significatoIn generale

Che significato si attribuisce ad una frase sintatticamente corretta di un linguaggio?

In particolare:

Come si muoverà il modellino scelto a seguito dell’eventuale esecuzione di una corretta sequenza di comandi?

Dipende dai valori settati come distanza ed accelerazione, ma soprattutto

dal particolare modellino in uso Ho bisogno di una funzione di valutazione per ogni modellino!

Il punto di incontro:

Pattern Visitor e tecnica del double dispatch

Un oggetto Visitor localizza la funzione di valutazione seguendo l’approccio funzionale e fornendo l’operazione chiamata di solito visit

Sono possibili tante versioni della stessa funzione di valutazione quante le classi della tassonomia, seguendo l’approccio object-oriented (oveloading visit)

Page 14: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Strumenti utilizzati

• Java 1.6.0_03• NetBeans 6.1• JavaCC 4.1• JavaCC “companion tools”:

- Java Tree Builder 1.2.2- JJDoc

Le azioni semantiche riguardano solo il

VisitorDocumento per la grammatica

Generazione automatica del riconoscitore LL:

Classi sintattiche e Visitor

vengono create in modo

automatico

Page 15: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Analisi Semantica: pattern Visitor e double-dispatch

Create in automatico (JavaTreeBuilder)

Interpretare i movimenti di un

nuovo tipo di modellino significa

semplicemente introdurre un nuovo

oggetto Visitor

Page 16: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Analisi Semantica: pattern Visitor e double-dispatch

Create in automatico (JavaTreeBuilder)

Anche espandere la grammatica

fornendo nuove funzionalià

all’applicazione non è un più un problema!

Page 17: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Un esempio

L’utente decide che vuole avere la possibilità di stabilire fra due o più veicoli qual è quello

programmato in modo migliore per raggiungere una determinata destinazione, dato un certo

punto di partenza!

S ::= <DRIVE> | <BEST_DRIVERS>

<BEST_DRIVERS> ::= <SET_START_POS> <SET_STOP_POS> <DRIVERS>

. . .

<DRIVERS> ::= <DRIVE> {<DRIVE>}

. . .

. . .

Page 18: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Analisi Semantica: esplicitazione del significato

Esplicitazione semantica:

- Descrizione verbale, sì ma…

- Rappresentazione grafica (mediante

la classe ActionSpace)

Page 19: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

Sviluppi possibili Migliorare l’esplicitazione semantica mediante rappresentazione

grafica tridimensionale dei movimenti (ad esempio utilizzando java3d)

Pilotaggio di altri tipi di modellini oltre a quelli inseriti, ad esempio- Aereo: si può muovere quasi come una macchina, ma anche come un

elicottero, ponendo attenzione alle fasi di atterraggio e di decollo che sono più complesse

- Sottomarino: si può muovere come una barca, ma anche su e giù come un elicottero, …

Pilotaggio di più modellini contemporaneamente- Per gare di velocità lungo un prefissato percorso- Per individuare il percorso più breve date le coordinate di partenza e di

arrivo, … Descrizione più precisa dello spazio d’azione (oltre le sole

coordinate e la portata massima), ad esempio- Tenendo conto di inclinazioni e pendenze (che modificano le fasi di

atterraggio o le velocità dei veicoli)- Per fissare percorsi o ostacoli, …

Immaginare diversi possibili scenari applicativi andando oltre i modellini

- Movimento di nastri o bracci meccanici sincronizzati- Movimento di un veicolo-aspirapolvere automatico programmato in base ad

una precisa planimetria, …

Page 20: Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.

Model Drive

DRIVE a MODEL DRIVE a MODEL