• Non ci sono risultati.

6.3 Magazzino

6.4.1 Considerazioni

I dati analizzati, come già detto, sono una media di diverse simulazioni, per questo è importante fare anche una riessione sulla varianza (i cui valori sono riportati nelle tabelle) che non è stata ancora presa in considerazione. Si possono vedere infatti degli andamenti interessanti.

La varianza risulta molto bassa quando l'agente pianica senza incontrare ostacoli. Ciò avviene ad esempio per l'Ag1 che ha sempre la precedenza sugli altri robot. Oppure quando l'agente è in congurazione treno (eettiva). In tal caso infatti, ricevendo la priorità più alta può ripianicare con la sicurezza di avere la precedenza (dato che in treno gli agenti hanno tutti la stessa velocità, non troverà ostacoli dovuti neanche dagli agenti immediatamente precedenti).

Le cose cambiano notevolmente quando invece l'agente è costretto a dare precedenza e ripianica più volte in modo da evitare gli ostacoli, in tal caso infatti la varianza assume valori decisamente elevati. Si ricorda infatti che la pianicazione sfrutta un campionamento casuale rendendola sempre unica e irripetibile e soggetta a discostarsi anche notevolmente dal valore medio quando aumentano gli ostacoli e quindi gli intervalli temporali liberi disponibili sono più frastagliati.

In ultima analisi si può dire che, come ci si poteva aspettare, la congurazione treno peggiora in maniera signicativa le performance degli agenti costretti ad aspettare il treno (tanto più quanto la loro priorità è alta) mentre tende a migliorare quelle degli agenti facenti parte di tale treno. Biso- gna capire se questi miglioramenti compensano adeguatamente i peggioramenti indotti agli agenti isolati. Banalmente si può aermare che dipende dal problema particolare. Se le priorità infatti rappresentano una eettiva necessità di velocizzare il tragitto a determinati agenti, l'attivazione del treno è altamente sconsigliata perché c'è il rischio che uno degli agenti a priorità più alta venga penalizzato enormemente se incappa in un treno. Se invece le priorità sono utilizzate con l'unico scopo di denire le precedenze agli incroci per evitare scontri ma gli agenti sono visti tutti con la stessa importanza, allora l'utilizzo della congurazione può rivelarsi utile, ad esempio per liberare più velocemente una zona della mappa ed evitare congestioni di traco.

7 Costo di rotazione

Nel presente lavoro, come è già stato spiegato, è stato sviluppato un algoritmo che determina una traiettoria il cui cammino è, geometricamente, una linea spezzata. Il percorso calcolato infatti ri- specchia completamente il grafo utilizzato i cui archi sono appunto segmenti unenti due nodi. Si è poi reso il cammino più 00dolce00 sfruttando il controllore (5.4) in modo da far compiere all'agente

una curva in prossimità degli angoli.

Dato che il robot qui utilizzato ha una dinamica particolarmente semplice, in grado di raggiungere qualsiasi posizione e orientazione, non si è posta particolare attenzione al tipo e alla quantità di curve che questo deve compiere. Ovviamente angoli stretti necessitano di grande capacità di curva- tura e per l'agente si registrano picchi di velocità angolare abbastanza marcati (g. 58). Se infatti si considerano 3 diversi percorsi , ragurati in (a), con curvature dierenti dove, in particolare, l'agente può compiere un angolo: α = 0 (caso 1), α = 45◦ (caso 2) e α = 90(caso3), si osserva

come la velocità angolare raggiunga (nell'ultimo caso) abbia un picco di 1.5rad/s (b).

(a) (b)

Figura 58: Variazione velocità al variare dell'angolo di rotazione

Se invece si volesse utilizzare un veicolo di tipo diverso (ad esempio un car-like) ci saranno delle limitazioni maggiori sulla sua capacità di rotazione. Le caratteristiche del veicolo e i suoi vinco- li dovranno sicuramente essere presi in considerazione nella creazione della mappa. Sarebbe però opportuno (una volta denita una mappa adeguata) prediligere (se presente) un percorso più dol- ce (cioè caratterizzato da angoli meno stretti) a scapito, magari, dell'aumento della distanza da percorrere e/o del tempo necessario al raggiungimento dell'obiettivo. Questo signica, in sostanza, aggiungere alla funzione di costo (eq.6) un parametro a rappresentare la rotazione.

7.1 Problema

Nell'algoritmo di pianicazione si è utilizzata una funzione di costo (eq. 6) che tiene conto della distanza geometrica e del tempo di percorrenza.

C(σ) = n X i=0 τi+ n X i=0 di (13)

Come già accennato, si potrebbe modicare tale funzione per tenere conto della rotazione che il veicolo deve compiere per passare da un arco al successivo.

Figura 59: Angolo tra due archi

Più in particolare, con riferimento a g. 59, nel calcolo del costo per raggiungere B a partire da A bisognerà anche considerare il cambio di orientamento del veicolo, il quale deve eettuare una rotazione dell'angolo α. Questo aspetto si complica se si considera che ogni nodo può avere un stella entrante di dimensione maggiore o uguale a 1 (g. 60).

Nell'algoritmo si campiona il nodo B a partire dal nodo A indipendentemente dal genitore di A. L'unico elemento che tiene traccia del cammino percorso è la funzione di costo. Vale che:

C(B) = C(A) + CAB (14)

dove CAB, che è il costo incrementale da A a B, deve essere univoco: Se aggiungessimo il costo di

rotazione avremmo (g. 60) tre diversi CAB, uno per ogni angolo (α, β, γ) e di conseguenza tre

diversi C(B). Risulta facile capire come il numero di costi da memorizzare cresca velocemente al crescere del grafo. Qualsiasi nodo che parta da B avrà infatti 3 possibili costi di partenza a cui andranno aggiunti i costi incrementali che saranno tanti quanto la stella uscente da B.

Una soluzione quindi che preveda una memorizzazione online di tutti i costi possibili a seconda della rotazione eettuata risulta improponibile (tra l'altro sarebbe necessario tenere traccia anche del percorso associato ad ogni costo).

Obiettivo: Trovare una soluzione oine che permetta, durante le pianicazione, l'aggiornamento incrementale del costo associato ad un nodo e che tenga conto anche della rotazione eettuata.

Documenti correlati