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