Francesco Trucchia: Rapid Application Developement con strumenti Open Source
Sviluppo di tool di gestione ed analisi di un simulatore Neuro-Fuzzy
1. Sviluppo di tool di gestione ed analisi di un
simulatore Neuro-Fuzzy di prestazioni per
veicoli da competizione
Università degli Studi di Camerino
Facoltà di Scienze e Tecnologie
Corso di Laurea Specialistica in Informatica – Classe 23/S
Dipartimento di Matematica e Informatica
Tesi di Laurea Sperimentale
in Ingegneria del Software 2
Anno Accademico 2008-2009
Laureando: Dott. Stefano Ficcadenti
Relatore: Prof. Flavio Corradini
Correlatore: Ing. Pierluigi Antonini
Camerino, 15 Dicembre 2009
2. 2
Ambiente MATLAB
FuNN RaCE
Sviluppo del Tool
VRML e Virtual Reality Toolbox
Modulo Neuro-Fuzzy
Conclusioni
Sommario
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
3. 3
Argomento di Ricerca
Interfaccia del sistema di simulazione Neuro-Fuzzy
1. Studio del linguaggio di programmazione
2. Analisi del software
3. Modifica della struttura ad oggetti
4. Modifica dell’interfaccia di inserimento dati
5. Modifica dell’interfaccia di analisi dei dati
6. Implementazione della visualizzazione tridimensionale
mediante VRML
7. Modifica del sistema di gestione e generazione delle regole
Neuro-Fuzzy
Attività salienti
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
4. 4
Linguaggio di alto livello per il calcolo tecnico
Ambiente di sviluppo per la gestione di codice, file e dati
Strumenti interattivi per la risoluzione di problemi e la
progettazione
Set di funzioni matematiche
Funzioni grafiche 2D e 3D
Strumenti per la creazione di interfacce grafiche
Funzioni di integrazione con altri linguaggi
Elemento base -> array
Estensioni:
Application-specific -> toolboxes
Ambiente MATLAB
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
5. 5
Per definire una nuova Classe (due metodi):
singolo M-File
diversi M-File in una @ClassName directory
Metodi standard (di base):
costruttore
display
set e get
subsref e subsasgn
Ci sono 2 tipi di Proprietà:
di archivio
dipendenti
Object Oriented Programming in MATLAB
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
Tipi di metodi:
Ordinary methods
Constructor methods
Destructor methods
Property access methods
Static methods
Abstract methods
6. 6
Strumento GUIDE: Layout Editor, Figure Resize Tab, Menu Editor,
Align Objects, Tab Order Editor, Property Inspector, Object
Browser, Run e M-File Editor.
1. Progettazione della GUI (FIG)
2. Programmazione della GUI (M-File)
Graphical User Interface in MATLAB
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
7. 7
Fuzzy Neural Network Race Car Evaluation System
Utilizza:
MATLAB (versione R2007a)
Simulink
Fuzzy Logic
Neural Network
Virtual Reality
FuNN RaCE
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
8. 8
Il modello della vettura è suddiviso in sistemi e sottosistemi e
preleva i dati dall’esterno per poterli elaborare eseguendo delle
integrazioni delle equazioni di moto.
Modello Simulink della vettura
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
9. 9
Avvicinare la logica classica al pensiero umano
…“verità parziali”…
Definizione: Un insieme fuzzy è definito da una funzione di
appartenenza
Di conseguenza si definisce:
Un esempio di sistema di inferenza è il modello di Takagi-Sugeno-
Kang
Logica Fuzzy
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
10. 10
E’ un modello matematico/informatico di calcolo basato sulle reti
neurali biologiche
Esempio: ANFIS (Adaptive Neuro-Fuzzy Inference System)
Neural Network
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
12. 12
Intefaccia Grafica
Modalità di utilizzo Esempio – Lancio di una Simulazione
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
Command Window
picchio = load('picchio.car.mat');
tra = load('magione_chiuso_pulito_09.track.mat');
d = driver;
car = auto;
car.chassis = picchio.chassis_picchio;
car.frontsusp = picchio.frontsusp_picchio;
car.rearsusp = picchio.rearsusp_picchio;
car.frontwheels = picchio.ruotaAnt_picchio;
car.rearwheels = picchio.ruotaPost_picchio;
car.brake = picchio.brake_picchio;
car.engine = picchio.engine_picchio;
car.driveline = picchio.driveline_picchio;
t = track;
t.road = tra.trac.road;
t.roughness = tra.trac.roughness;
t.ref = tra.trac.ref;
sim_prova = FRsim;
sim_prova.auto = car;
sim_prova.track = t;
sim_prova.driver = d;
sim_prova.compute = 1;
sim_prova.results;
sim_prova.save;
13. 13
Correzione del software “iniziale”
Struttura ad oggetti
Interfaccia di inserimento dati
Ottimizzazione del codice
findobj -> handles
plot -> line
Procedura di installazione
setup_fun
Revisione dell’interfaccia di analisi dei dati
Revisione dell’interfaccia principale
log
Menù FuNN
Menù Help
Sviluppo del Tool
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
14. 14
Slow Ramp
Handles:
loadcount
plotcount
directoryname
nomi
legenda
data
plotdata
Visualizzazione dei risultati (Result Manager)
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
15. 15
Necessita di strumenti di sviluppo e di editing (editor testuali,
editor visuali e players)
Nodo transform (translation, rotation,scale, ecc.)
Oggetti complessi: nodi IndexLineSet e IndexFaceSet
Gestione Luci: nodi DirectionalLight, SpotLight e
PointLight
Textures (GIF, JPG e PNG)
Elementi base della navigazione: nodi Viewpoint,
NavigationInfo, Collision, Anchor, Inline
Strutture complesse: nodo ElevationGrid e comandi DEF,USE
e PROTO
Mondi animati: nodo TimeSensor, fields (field, exposedField,
eventIn e eventOut), Interpolatori e comando ROUTE
Nodo Sound (MIDI e WAV)
VRML Virtual Reality Modeling Language
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
16. 16
Virtual Reality Toolbox (VRML Viewer , VRML Editor)
Simulink Interface MATLAB Interface
L’interazione tra .wrl e MATLAB
avviene tramite:
Function reference
vrworld Objects
vrnode Objects
17. 17
1. Elaborazione dati in input
Dati presi in input: scale, freq, simulation, avi
simulation.results: Sospesa_pos, omega_ruote, steer,
Z_nonSosp
Campionamento in base al parametro “freq”
2. Creazione dell’ambiente virtuale
Caricamento Ambiente 3D (file .wrl)
Inserimento Nodi Car e Wheels
Posizionamento iniziale del telaio e delle 4 ruote
Animazione in VRML AnimCarVRML
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
18. 18
Vengono utilizzati i campi translation e rotation dei nodi Transform
translation [x y z]
rotation [x y z a]
Iterazione ad ogni ciclo:
Traslazione vettura
Traslazione di ciascuna ruota (compreso Z_nonsosp)
Rotazione della vettura secondo gli angoli roll, pitch e yaw (Angoli di Eulero)
Rotazione di ciascuna ruota secondo gli angoli di sterzata
Rotazione di ciascuna ruota intorno al proprio centro
Traslazione dei nodi Viewpoint (usati come Camera Car)
3 Ciclo che realizza l’animazione 3D
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
sdr MATLAB sdr VRML
19. 19
Processo di sviluppo:
1. Inizializzare le variabili per creare il
setup di base
2. Eventualmente applicare uno
scostamento random per creare un
set di valori distinti
3. Determinare la prova sperimentale
4. Avviare la simulazione
5. Post-processing per elaborare i
risultati
6. Addestramento della rete
7. Analisi dell’indice di prestazione scelto
(es. UG o Kus)
Modulo Neuro-Fuzzy
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
20. 20
Struttura setup:
.int
.range
.assetti
.dati
Sottomenù di FuNN:
New setup
Load setup
Chassis
Front Suspension
Rear Suspension
Generate Datafile
Menù FuNN
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
21. 21
Tools per l’addestramento (Fuzzy Logic Toolbox)
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
22. 22
Risultati raggiunti:
Stabilità
Completezza (interfaccia grafica + linea di comando)
Possibili sviluppi futuri:
Classe Driver
Migliorare le prestazioni del simulatore
Migliorare il piano dell’animazione 3D
Completare integrazione del modulo neuro-fuzzy
Conclusioni
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2
23. 23
FuNN RaCE – Tesi di Laurea Sperimentale in Ingegneria del Software 2