• Non ci sono risultati.

3 Architettura del sistema

3.2 Architettura generale

3.2.2 Modulo di campionamento

Quasi tutte le logiche di protocollo implementate per il sistema utilizzano in maniera estensiva le informazioni di posizione, velocità e direzione introdotte nel ca- pitolo 2 e prodotte al livello più basso dell’architettura della parte dedicata ai proto- colli dell’applicazione iTETRIS dal componente NodeSampler. Compito di quest’ultimo è quello di effettuare una serie di campionamenti ad intervalli regolari nel tempo, introdurre degli errori casuali per simulare varie imprecisioni negli stru- menti di rilevazione e di effettuare una media dei campionamenti più recenti per re- stituire valori meno sensibili ai disturbi ed ai cambiamenti di direzione poco marcati.

Al momento del singolo campionamento, i valori ottenuti da SUMO attraverso una sottoscrizione specifica di iCS consistono nei vettori di posizione e velocità. La

54

posizione corrente del nodo viene alterata sommandovi un vettore di errore caratteriz- zato da una direzione con distribuzione uniforme nell’intero angolo giro e da un mo- dulo con distribuzione normale (gaussiana) a valore medio pari a zero ed un raggio massimo configurabile. L’errore sulla velocità viene invece ottenuto in due fasi: som- mando al modulo un valore ricavato attraverso un errore costante alterato da una di- stribuzione normale con valore medio pari a zero; ruotando il vettore di velocità di un angolo distribuito normalmente e con valore medio pari a zero, scegliendo un valore di varianza molto basso per garantire che valori ottenuti dalla distribuzione si man- tengano sufficientemente prossimi allo zero. In letteratura esistono dei modelli di er- rore estremamente più sofisticati [Ran94] che consentono di simulare in maniera molto più realistica le imprecisioni dovute ai sensori di geolocalizzazione più utiliz- zati. L’adozione di tali tecniche avrebbe tuttavia introdotto una complessità eccessiva ed i risultati forniti dal semplice modello appena descritto sono apparsi adeguati per gli scopi del presente lavoro di tesi. È possibile modificare l’incidenza di questi errori sui valori reali tramite opportuni parametri di configurazione che consentono di asse- gnare ad ogni classe1 di veicoli una differente precisione dei sensori installati.

Terminata l’introduzione di errori, i valori di posizione e velocità vengono ulte- riormente processati prima della loro memorizzazione. In questa fase, attraverso sem- plici calcoli trigonometrici, si procede all’estrazione dell’informazione relativa alla direzione a partire dal vettore di velocità appena ottenuto. Viene inoltre verificato che lo spostamento compiuto dal nodo tra il campionamento attuale e quello precedente sia superiore in modulo a una soglia minima prefissata. Nel caso di nodo fermo o con velocità prossima allo zero si avrebbero infatti campionamenti molto vicini nello spa- zio ed il loro contributo risulterebbe poco utile. Un vettore di velocità nullo non con- sentirebbe inoltre di calcolare la direzione corrente del nodo. Questo accorgimento consente quindi di mantenere una distanza spaziale minima tra due campionamenti successivi. Come conseguenza, negli intervalli di tempo in cui il veicolo si mantiene fermo, le informazioni relative a posizione, direzione e velocità non vengono aggior- nate ed esso mantiene lo stato più recente da lui memorizzato.

Terminati tutti i calcoli e le verifiche sul campione corrente, questo viene me- morizzato all’interno di un buffer circolare di dimensione configurabile. Quando il modulo è a regime, l’inserimento di un valore recente comporta l’eliminazione di quello più vecchio. Le informazioni messe a disposizione da NodeSampler ai livelli

55

superiori consistono in una media aritmetica2 di tutti i valori precedentemente memo-

rizzati. La dimensione del buffer determina quindi in maniera indiretta quanto il mo- dulo risulta sensibile ai cambiamenti di stato sulla guida del veicolo e, soprattutto, con quale ritardo essi vengono avvertiti ai livelli più alti dell’architettura. Una memoria di grandi dimensioni si comporta inoltre come una sorta di filtro sui disturbi di breve durata in quanto questi vengono successivamente mediati tra più campioni.

Il percorso che le informazioni di posizione e velocità seguono all’interno del componente NodeSampler e le operazioni ad esse applicate vengono riassunte ed illustrate nella Figura 3.8 dove viene anche riportata l’interfaccia offerta alle logiche di protocollo. Occorre ricordare che i nodi di tipo RSU non sono dotati di mobilità e non prevedono pertanto il modulo per il campionamento di tali valori. Per questi nodi il controllore è consapevole dell’assenza di questo componente e provvede personal- mente a fornire dei valori nulli per velocità e direzione ed a restituire direttamente la posizione, senza aggiungervi alcun errore.

2 Le grandezze angolari vengono calcolate come medie circolari.

Figura 3.8: Schema di funzionamento del componente NodeSampler: i valori di

posizione e velocità ottenuti da iCS tramite sottoscrizione sono ricevuti dal nodo cor- rente che li fornisce a questo componente, vengono perturbati con degli errori, viene calcolata la direzione e memorizzati all’interno dei buffer. Il valore della posizione, velocità e direzione è disponibile facendo la media dei valori memorizzati nel buffer.

56

Il comportamento del modulo NodeSampler è progettato per offrire la mas- sima flessibilità sui diversi aspetti delle operazioni di campionamento sopra descritte. Sia la generazione degli errori sia il comportamento del buffer circolare sono intera- mente parametrizzabili attraverso i molteplici attributi predisposti dalla classe ed elen- cati nell’Appendice A. Per caratterizzare meglio le differenti classi di veicoli intro- dotti nel paragrafo 2.4, con l’ovvia eccezione del tipo shadow, è possibile configurarle in modo differente per riflettere le differenti capacità e precisioni dei dispositivi uti- lizzati.