6.2 M´ etodo de teste
6.4.3 Dete¸ c˜ ao de bolhas de cor
Como j´a mencionado, este processamento foi dividido em dois subprocessos, procurando isolar, por um lado, a complexidade associada ao processamento das Runs e suas eventuais vizinhan¸cas e, por outro lado, o processamento e c´alculo das caracter´ısticas dos eventuais objetos encontrados. Seguidamente, apresentaremos os resultados dos diferentes processa- mentos.
M´odulo ProcRunUnit
Com o objetivo de testar o m´odulo ProcRunUnit e `a semelhan¸ca do m´odulo de compress˜ao de dados RLE8, entre outros testes menores, foi utilizada a imagem correspondente `a figura 6.2. Apesar da sua reduzida escala, esta imagem serve o prop´osito de testar todas as funci- onalidades presentes por este m´odulo, validando corretamente a informa¸c˜ao de sa´ıda e, por conseguinte, as opera¸c˜oes de c´alculo e processamento das caracter´ısticas de cada objeto. O Anexo B, p´agina 103, ilustra o resultado obtido para o teste referido.
M´odulo PipelineUnit
Apesar de corretamente testado em ambiente de simula¸c˜ao e validado em termos compor- tamentais, o teste deste m´odulo sobre a FPGA Atlys revelou alguns problemas de opera¸c˜ao
Figura 6.2: Exemplo de imagem codificada usando RLE8 (fonte [Rle]).
com dados incorretos. O problema surge sempre que uma dada instru¸c˜ao gerada pelo an- terior m´odulo necessita de dados que hajam sido atualizados pela instru¸c˜ao imediatamente anterior (tipicamente instru¸c˜oes upd e mrg). Nestes casos, os dados de um dos objetos ne- cess´arios encontram-se dispon´ıveis nos registos da fase 4, sendo que a unidade de controlo determina que um dos multiplexers presentes na fase 3, encaminhe estes dados e os alimente `
a unidade de c´alculo das caracter´ısticas. Contudo, parece haver um problema temporal no acesso a esta informa¸c˜ao que, apesar dos elevados esfor¸cos, ainda n˜ao foi poss´ıvel resolver. Testes individuais, realizados sobre a FPGA, a cada multiplexer, unidade de c´alculo e registos n˜ao revelam problemas; no entanto, quando interligados, os sinais aparentam instabilidade, o que pode justificar o facto de os dados utilizados n˜ao serem corretos. Para instru¸c˜oes que operam sobre dados contidos na pr´opria instru¸c˜ao (instru¸c˜oes new e upd, esta ´ultima sobre um objeto diferente do atualizado por outra instru¸c˜ao anterior), s˜ao executadas corretamente e validados os seus resultados. Tamb´em o acesso aos dados dos objetos contidos em mem´oria foi corretamente verificado para objetos cujas caracter´ısticas haviam sido previamente bem calculadas. Tanto quanto poss´ıvel e porque este problema limita grandemente a valida¸c˜ao de todo o trabalho e a apresenta¸c˜ao dos resultados, tal como disponibilizados ao sistema de processamento principal, ser˜ao movidos esfor¸cos para resolver o presente problema.
A figura D.1 inclu´ıda no Anexo D (p´agina 109) ilustra a simula¸c˜ao e valida¸c˜ao em termos comportamentais. Os dados apresentados referem-se `a segunda instru¸c˜ao considerada para a imagem de teste “B”, a qual determinada a atualiza¸c˜ao dos dados do objeto 0 (zero) com os dados da atual run (UPD objnumber(0) color(255) start(0) end(1) lineNumber(1)). Como se pode observar, a unidade de c´alculo determina corretamente as v´arias caracter´ısticas. Contudo, como ilustrado no Anexo C, p´agina 107, quando executado o mesmo m´etodo sobre a Atlys, o objeto possui os dados incorretos.
Cap´ıtulo 7
Conclus˜ao e trabalho futuro
7.1
Conclus˜ao
O presente projeto visa a redu¸c˜ao do peso computacional da vis˜ao por computador da equipa CAMBADA, atualmente implementada no computador principal de cada robˆo, atrav´es da implementa¸c˜ao de parte dos algoritmos de vis˜ao em hardware reconfigur´avel. No sistema desenvolvido, o hardware reconfigur´avel, baseado em FPGA, assume-se como um coproces- sador, libertando deste modo, o computador principal de cada robˆo, das tarefas computaci- onalmente intensivas, explorando quer o paralelismo, quer os recursos e as demais t´ecnicas associadas `as FPGAs.
Para a elabora¸c˜ao de uma solu¸c˜ao, foram estudados os diversos sistemas de vis˜ao com- putacional, nomeadamente, o sistema omnidirecional, um dos sistemas mais presentes na competi¸c˜ao RoboCup MSL (onde se insere a equipa CAMBADA), bem como as suas carac- ter´ısticas. Complementarmente a este estudo, foram avaliados tanto os diversos sistemas de vis˜ao adotados pelas principais equipas presentes na competi¸c˜ao, como a sua implementa¸c˜ao ou os m´etodos utilizados para a resolu¸c˜ao de determinado problema. Foram igualmente pes- quisados e analisados diversos artigos, teses e trabalhos sobre processamento de imagem e, quando existentes, m´etodos j´a explorados para a sua implementa¸c˜ao sobre hardware reconfi- gur´avel.
Simultaneamente e de uma forma mais pr´atica, foram igualmente testados o m´odulo de aquisi¸c˜ao de imagem VmodCAM e a sua interliga¸c˜ao com a FPGA Atlys. O projeto disponi- bilizado pelo fabricante Digilent, depois de devidamente modificado e comentado, foi adotado como projeto base, sobre o qual foi implementado e testado o m´odulo de segmenta¸c˜ao de cor. Os restantes m´odulos de compress˜ao de imagem e an´alise e dete¸c˜ao de bolhas de cor, devido `a sua complexidade de processamento e `a necessidade de efetuar debug, a fim de resolver diver- sos problemas, foram implementados e testados sobre um projeto auxiliar, o qual, atrav´es de um processo de leitura e de uma imagem pr´e-carregada em mem´oria, se encarrega de alimen- tar os dados necess´arios ao consequente processamento. De todos os m´odulos implementados e testados, a parte final do processamento do m´odulo de dete¸c˜ao de bolhas de cor apresenta- se como o ´unico problema de implementa¸c˜ao conhecido e ainda n˜ao resolvido. Embora em ambiente de simula¸c˜ao e em termos comportamentais, a sua funcionalidade tenha sido verifi- cada e validada, o referido m´odulo, quando sintetizado e programado sobre a FPGA, revela problemas de c´alculo das caracter´ısticas dos objetos, gerando resultados incorretos. Dado que a funcionalidade no presente momento, ainda n˜ao ´e totalmente correta, uma avalia¸c˜ao de de-
sempenho ou de recursos utilizados, torna-se prec´aria, sendo que pequenas altera¸c˜oes poder˜ao afetar estas medidas. Deste modo, teceremos somente algumas considera¸c˜oes relativamente ao desempenho esperado.
Uma an´alise informal ao m´odulo de segmenta¸c˜ao de cor permite perceber que este, por adotar um processamento raster scan, possibilita o resultado de processamento de um de- terminado p´ıxel no ciclo de rel´ogio imediatamente seguinte ao da sua disponibilidade como dado de entrada. No caso do m´odulo de compress˜ao de dados, ainda que o seu processamento adote igualmente uma pol´ıtica raster scan, uma vez que este analisa sequˆencias repetidas de uma mesma cor, nem sempre teremos dados `a sua sa´ıda de forma cont´ınua. Contudo, esta situa¸c˜ao n˜ao afeta o seu processamento interno, pois do seu ponto de vista, cada p´ıxel que fi- que dispon´ıvel `a entrada, ´e processado sincronamente e o seu resultado (ainda que n˜ao vis´ıvel ao exterior por meio da porta de sa´ıda) encontra-se dispon´ıvel no ciclo seguinte. No caso concreto do m´odulo de dete¸c˜ao de bolhas de cor, nomeadamente do m´odulo ProcRunUnit, considerando um determinado conjunto de dados `a sua entrada, o resultado do seu processa- mento somente estar´a dispon´ıvel 5 ciclos de rel´ogio depois. Contudo, para o mesmo conjunto de dados de entrada, este m´odulo poder´a necessitar de mais ciclos de rel´ogio para processar outros resultados. Esta situa¸c˜ao acontece no caso de serem detetadas v´arias vizinhan¸cas para um mesmo objeto, sendo que a primeira ´e entendida como o objeto a atualizar e as restantes, como objetos tidos at´e ao momento como diferentes, mas que afinal pertencem ao mesmo ob- jeto considerado. Se o n´umero de vizinhan¸cas detetado for superior a 2, o n´umero de ciclos de rel´ogio necess´arios ao processamento aumenta consoante o n´umero de vizinhan¸cas adicionais encontradas. No entanto, para que esta situa¸c˜ao n˜ao comprometa todo o processamento, este m´odulo utiliza o triplo da frequˆencia do m´odulo de compress˜ao de dados (cujo resultado ´e alimentado como entrada de dados do atual m´odulo). Esta abordagem, conjuntamente com o facto de nem sempre termos dados `a sa´ıda do RLE8 (e portanto, dispon´ıveis para processar neste m´odulo), dever˜ao assegurar um n´ıvel de desempenho assinal´avel. A segunda parte do processamento adota um mecanismo de pipelining, pelo que, considerando que todas as fases se encontrem a processar um conjunto diferente de dados, o m´aximo d´ebito encontra-se asse- gurado. N˜ao sendo o caso, precisamos considerar que cada objeto a ser processado necessita de 4 ciclos de rel´ogio. Necessariamente, importa ainda considerar outros tempos, como os as- sociados aos FIFOS interm´edios que permitem guardar e mediar a informa¸c˜ao entre diferentes processos.
Relativamente ao m´odulo VmodCAM e `a FPGA Atlys, importa ainda considerar os pro- blemas enunciados quanto a estes. O problema de aquecimento merece uma especial aten¸c˜ao, sobretudo pelos danos f´ısicos que poder˜ao advir para o hardware. O problema da ilumina¸c˜ao e consequente afeta¸c˜ao da qualidade de imagem poder´a igualmente mostrar-se como limita- tivo aos posteriores m´odulos de processamento de imagem. Contudo, este ´ultimo poder´a ser contornado implementando um processo de configura¸c˜ao dos diversos parˆametros da cˆamara, com base na an´alise peri´odica de uma imagem recolhida (`a semelhan¸ca do que j´a acontece com a atual solu¸c˜ao adotada pela equipa CAMBADA).
No que `a implementa¸c˜ao diz respeito, um problema detetado e at´e ao presente momento, ainda n˜ao resolvido, prende-se com a segunda parte do processamento da dete¸c˜ao de bolhas de cor, nomeadamente, com o c´alculo das caracter´ısticas dos objetos sobre a pipeline. Tal como j´a mencionado anteriormente, ainda que corretamente validado em simula¸c˜ao e em ter- mos comportamentais, o c´alculo e atualiza¸c˜ao de dados de objetos revela dados incorretos, para instru¸c˜oes upd ou mrg que referenciem objetos atualizados pela instru¸c˜ao imediatamente anterior. Este problema limita a avalia¸c˜ao de desempenho da presente implementa¸c˜ao, uma
vez que, quase todos os objetos ter˜ao as suas caracter´ısticas calculadas erradamente.
Embora testes e medidas de desempenho efetivas n˜ao possam ser apresentados de momento e, sob o ponto de vista de funcionalidade, o presente projeto apresente ainda o problema de dados calculados incorretamente, a solu¸c˜ao, na sua globalidade, e para os m´odulos testados e validados, permite demonstrar a aplicabilidade e a supremacia da implementa¸c˜ao de tarefas computacionalmente intensivas sobre hardware reconfigur´avel, tirando m´aximo partido dos mecanismos de paralelismo e pipelining. De igual forma, quer o trabalho desenvolvido, quer as sugest˜oes e considera¸c˜oes de trabalho futuro, poder˜ao ser uma mais valia para futuras solu¸c˜oes que visem o desenvolvimento de um sistema de vis˜ao mais avan¸cado.