Tesi Robotica Analisi, progettazione e implementazione... | Page 148
i
i
“LP_Tesi” — 2013/10/17 — 18:27 — page 148 — #148
i
148
i
6. SECONDA RELEASE
• INPUT:
– Method put: in entrata si hanno le direzioni calcolate precedentemente nel modulo tracking, tali direzioni sono corredate dalla
posizione in cui sono state trovate.
• OUTPUT:
– Method get: una volta che la disparità è stata calcolata può essere
mandata all’esterno con questo metodo.
Implementazione
Sono pochissime le strutture utilizzate, nel codice possono essere notate esclusivamente due FIFO una di entrata e una di uscita che consentono l’asincronicità
del modulo (Alg:6.22).
Algoritmo 6.22 Variabili di Disparity
1
2
FIFO#(DirAddr) fin <- mkSizedFIFO(3);
FIFO#(DispColor) fout <- mkSizedFIFO(3);
È presente inoltre una sola regola che consente il calcolo della disparità a partire
dalla direzione e la posizioni calcolate nella fase di Backtrack (Alg:6.24). Prima
di tutto viene letta la FIFO fin e successivamente dequata, l’elemento preso
da questa FIFO viene analizzato, se la direzione presente è BLUE (direzione
diagonale) la disparità viene calcolata in base all’indice di colonna e quello di
riga, se la direzione invece è GREEN (direzione north) la disparità equivarrà
ad un gap. Il valore di disparità così calcolato viene introdotto nella FIFO di
uscita fout.
Come detto nella descrizione l’interfaccia espone solo due metodi, tra l’altro
questi sono stati implementati usando le funzioni toGet e toPut del Package
GetPut (Alg:6.23).
Algoritmo 6.23 Metodi di Disparity
1
2
interface put = toPut(fin);
interface get = toGet(fout);
i
i
i
i