1 / 20

Model Drive

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

taran
Télécharger la présentation

Model Drive

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Model Drive Corso di Laurea Specialistica in Ingegneria Informatica Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali LSProf. Enrico DentiProgetto di Maria Teresa Roccia Model Drive

  2. Quali obiettivi e come raggiungerli 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. Definizione di Grammatica Analisi lessicale e sintattica Analisi semantica Model Drive

  3. Up Approccio al problema:Spazio d'azione e possibili movimenti TYPE DIRECTION 2D 3D Backward Left Right Left Right Forward Forward Down Quale grammatica per quale linguaggio? Model Drive

  4. Grammatica BNF: l’idea di partenza (1/1) 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> <LP>::=( <RP>::=) <END_CMD>::=; <DOT>::=. <DDOT>::=: <PLUS>::=+ <MINUS>::=- <STOP>::=OFF <START>::=ON Model Drive

  5. Grammatica BNF: l’idea di partenza (1/2) Grammatica Context-Free (Tipo 2)Secondo Chomsky Quale grammatica? 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-EMBEDDING Quale linguaggio? Linguaggio regolare <LP>::=( <RP>::=) <END_CMD>::=; <DOT>::=. <DDOT>::=: <PLUS>::=+ <MINUS>::=- <STOP>::=OFF Model Drive

  6. Grammatica BNF: l’idea di partenza (1/3) Grammatica LL(K)? 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> LL(1) Controllo a livello sintattico:- Troppo vincolante: grammatica con scarsa possibilità di riuso- Inutile: il controllo a livello semantico è comunque necessario Model Drive

  7. Grammatica BNF: l’idea di partenza (1/4) 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> DIST: mt.cmoppure km.mtoppure cm.mm … <INTEGER_DIST> ::= <DIGIT> <DIGIT> <DECIMAL_DIST> ::= <DIGIT> <DIGIT> <DIGIT> ::=0 | 1 |2 |3 | 4 | 5 | 6 | 7 | 8 | 9 Model Drive

  8. Grammatica utilizzata EBNF Grammatica Context-Free (Tipo 2)Secondo Chomsky 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 LL(1) Linguaggio regolare <LP>::=( <RP>::=) <END_CMD>::=; <DOT>::=. <DDOT>::=: <PLUS>::=+ <MINUS>::=- Model Drive

  9. 2D Backward Left Right Forward Analisi Sintattica: limiti 2D_Drive Car_Red: ON; forward(21.15)+5; OFF. 2D_Drive Car_Red: 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_Drive Car_Red: ON; forward(21.15)+0; OFF. La frase è sintatticamente corretta, ma il modello si muoverà? Model Drive

  10. Analisi Semantica: il calcolo del significato In 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! Model Drive

  11. Alcune classi sintattiche: esempio • Interpretare 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,… Model Drive

  12. Analisi Semantica: il calcolo del significato In 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! Model Drive

  13. Analisi Semantica: il calcolo del significato In 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) Model Drive

  14. Generazione automatica del riconoscitore LL: Classi sintattiche e Visitor vengono create in modo automatico Le azioni semantiche riguardano solo il Visitor Documento per la grammatica Strumenti utilizzati • Java 1.6.0_03 • NetBeans 6.1 • JavaCC 4.1 • JavaCC “companion tools”: • Java Tree Builder 1.2.2 • JJDoc Model Drive

  15. Analisi Semantica: pattern Visitor e double-dispatch Interpretare i movimenti di un nuovo tipo di modellino significa semplicemente introdurre un nuovo oggetto Visitor Create in automatico (JavaTreeBuilder) Model Drive

  16. Analisi Semantica: pattern Visitor e double-dispatch Anche espandere la grammatica fornendo nuove funzionalià all’applicazione non è un più un problema! Create in automatico (JavaTreeBuilder) Model Drive

  17. 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>} . . . . . . Model Drive

  18. Analisi Semantica: esplicitazione del significato • Esplicitazione semantica: • Descrizione verbale, sì ma… • Rappresentazione grafica (mediante la classe ActionSpace) Model Drive

  19. 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, … Model Drive

  20. DRIVE a MODEL Model Drive

More Related