Utilização de um Sistema de Visão Computacional para o Controle de um Robô Móvel Pedro Luiz de Paula Filho 1, Cleverson Junior Soares 2, Ângelo Marcelo Tusset 3 1 Universidade Federal do Paraná - UFPR, Curitiba, Brasil, [email protected] Universidade do Contestado - UnC, Canoinhas, Brasil, [email protected] 3 Universidade Tecnológica Federal do Paraná - UTFPR, Ponta Grossa, Brasil, [email protected] 2 Resumo: Mesmo com o avanço nas áreas de automação e programação, fazer com que os robôs autônomos executem uma ou mais tarefas de maneira conjunta é ainda um dos grandes desafios da robótica. Neste trabalho é abordada a interação com um robô autônomo, envolvendo Processamento de Imagens, Linguagens de Programação, Projeto Assistido por Computador, Otimização, Eletrônica, etc. Os resultados demonstram a utilização da visão computacional no controle de um robô móvel, onde imagens são capturadas de uma câmera e processadas, possibilitando a identificação de obstáculos e o ponto a ser alcançado e utilizando-se a comunicação através de rádio frequência guiando o robô até seu destino. Palavras Chave: Reconhecimento de Padrão, Robô Móvel, Visão Computacional. 1. INTRODUÇÃO Com o grande crescimento tecnológico, os robôs tornaram-se elementos fundamentais na manufatura automatizada. Em função do rápido avanço da automação nas diversas áreas das atividades humanas, a utilização de robôs tem se tornando cada vez mais comum, principalmente em áreas que exigem elevado grau de precisão, confiabilidade e velocidade. Assim o estudo em desenvolvimento nos sistemas de controle dos robôs tem crescido vertiginosamente nos últimos anos, devido a quanto mais complexa a tarefa executada pelo robô, mais complexos são os algoritmos de controle. Através do crescimento dos recursos computacionais que surgiram nas últimas décadas foi possível desenvolver robôs capazes de executar tarefas com grau de complexidade superior que os robôs anteriores, que eram restritos apenas a sistemas mecânicos [1]. Neste contexto, o desenvolvimento de robôs móveis é de extrema importância tanto para pequenas como grandes tarefas, como por exemplo, na exploração espacial, marítima ou mesmo ambientes desconhecidos que oferecem riscos a vida de seres humanos [2] [3]. Existem duas vertentes para definir robôs móveis, uma considera o robô completo, auto-contido, autônomo, que necessita de instruções apenas ocasionalmente, enquanto que a segunda define robô como sendo qualquer equipamento que se mova por seus próprios meios, com o objetivo de executar tarefas próximas as humanas [4]. De acordo com [5] as duas definições levam a aceitar que um robô móvel é capaz de manobrar livremente em seu ambiente, alcançando metas enquanto desvia de outros obstáculos. Conforme [6] o primeiro robô móvel construído e reconhecido na bibliografia é o Shakey, desenvolvido pelo Stanford Research Institute, em 1968, e possuía uma variedade enorme de sensores, incluindo uma câmara de vídeo e sensores de toque, binários, e navegava entre as salas do laboratório, enviando sinais de rádio a um computador DEC PDP-10, que permitia efetuar algumas tarefas como, por exemplo, empurrar caixas e evitar obstáculos. O interesse no desenvolvimento de pesquisas voltadas para a área de automação de processos através de sistemas robóticos tem o objetivo de melhorar a qualidade de produtos com redução de tempo [3]. Porém, para que isso ocorra é necessário que estes sistemas tenham a capacidade de tomar decisões através de informações extraídas do ambiente, garantindo uma autonomia. Para tanto a visão computacional passa a ser uma grande aliada a tais sistemas. Segundo [7] a visão computacional é um assunto complexo, pois comparando um sistema técnico, com um sistema biológico, pode-se dividi-la em vários módulos como visualização, formação da imagem, controle da irradiação, entre outros. Assim seu objetivo principal é prover ao computador as capacidades de percepção do sistema visual humano em relação ao ambiente [8]. A visão computacional tem evoluído rapidamente, produzindo ferramentas que permitem o entendimento das informações visuais, especialmente em cenas com estruturas bem definidas [8]. Ela pode ser dividida em dois níveis de abstração, processamento digital de imagens (PDI) e análise de imagens. O PDI busca técnicas para capturar, representar e transformar imagens, permitindo extrair e identificar informações e melhorar a qualidade visual de certos aspectos, melhorando a extração de características que serão usadas posteriormente. A análise de imagens envolve técnicas como segmentação da imagem em regiões de interesse (ROI), descrições dos objetos, reconhecimento e classificação, usando imagens como entrada e produzindo outro tipo de saída [9][10][11]. Neste trabalho os dois níveis de abstração serão empregados, onde o primeiro (PDI) será útil para captura e segmentação da imagem e a analise das imagens permitirá o reconhecimento dos objetos (robô, obstáculos e destino). 2. PROCESSAMENTO DIGITAL DE IMAGENS (PDI) 1 Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications Serra Negra, SP - ISSN 2178-3667 817 Utilização de um Sistema de Visão Computacional para o Controle de um Robô Móvel Pedro Luiz de Paula Filho, Cleverson Junior Soares, Ângelo Marcelo Tusset O desenho do modelo de cor HSI reflete a forma em que os humanos vêem a cor, e isso passa a oferecer vantagens para seu uso em processamento digital de imagens [15]. O Matiz representa qual cor do modelo é a predominante, já a saturação representa a pureza da cor, o quanto existe de adição de branco a matiz e o valor representa a quantidade de brilho presente na cor [12]. Segundo [9] PDI representa um conjunto de técnicas voltadas para a análise de dados adquiridos por diversos tipos de sensores. Ou ainda, é a manipulação de uma imagem por computador de modo onde a entrada e a saída do processo são imagens. Através dele, pode-se analisar e modificar imagens com o objetivo de extrair informações, reconhecer, comparar e classificar elementos que a compõem. Transformar uma imagem buscando aumentar seu contraste, realçar bordas e corrigir imperfeições, como ruído, por exemplo, são aplicações que tem como objetivo fornecer subsídios para interpretações em visão computacional. Uma imagem pode ser representada por uma função bidimensional z F ( x, y ) definida em uma determinada região de um plano. Ela é representada através de um conjunto de valores, onde cada valor é um número que descreve os atributos de um pixel na imagem. Um sistema de PDI pode ser dividido em seis etapas: aquisição, pré-processamento, segmentação, representação e descrição, reconhecimento e interpretação e resultado [9]. O pré-processamento refere-se ao processamento inicial dos dados brutos, correção de distorções geométricas e remoção de ruído. Sua principal função é melhorar a imagem para que possa ser usada com sucesso nos processos seguintes. O pré-processamento envolve técnicas para o realce de contrastes, remoção de ruído e isolamento de regiões [9][10][11]. A segmentação é a responsável por dividir uma imagem de entrada em partes. No caso deste projeto é a separação do robô, meta e obstáculos do fundo da imagem. A representação e descrição é apenas parte da solução para transformar os dados iniciais numa forma adequada para o próximo passo do processamento computacional. O processo de descrição procura extrair características que resultem em alguma informação de interesse para o melhor processamento da imagem. O processo de reconhecimento é o responsável por atribuir um nome a um objeto, baseado na informação fornecida pelo seu descritor. A identificação envolve a atribuição de significado a um conjunto de objetos reconhecidos [9][10][11]. Segundo [11], no momento da aquisição, uma cena real tridimensional é convertida por um dispositivo de aquisição em uma representação 2D levando-se em conta uma função f(x,y) que descreve a energia luminosa em uma coordenada espacial (x,y). O dispositivo de aquisição mais usado atualmente é a câmera CCD (Charge Couple Device) e através de um conjunto de prismas e filtros, decompõe a imagem em componentes de R (red), G (green) e B (blue). A junção desses componentes gera o sistema de cor RGB que é um dos espaços mais comuns, de formação aditiva, utilizado em câmeras e monitores de vídeo, e baseado na teoria de visão colorida tricromática de YoungHelmholtz [12]. Porém este não é o único dos canais de cores, e outro canal bastante usado em visão computacional é o HSI (Hue, Saturation and Intensity) [13], sendo normalmente vinculado a pintores por utilizar três componentes presentes em diversas técnicas de pintura: Matiz, Saturação e Iluminação [12]. Apesar de não ser perceptualmente uniforme seu uso é interessante por conter informações que são perceptíveis e discriminantes para um observador [14]. 3. METODOLOGIA Para realização prática foi desenvolvido um protótipo de robô móvel (Fig. 1a), a partir de imagens capturadas por uma câmera e processadas por um software utilizando técnicas de processamento de imagens, onde os comandos são transmitidos do computador para o robô móvel através de rádio frequência. O software foi desenvolvido em linguagem de programação C++, através do ambiente CBuilder e uma biblioteca denominada OpenCV. A alimentação do robô foi realizada através de duas baterias 6V de 4,5 A, ligadas em série. Para a movimentação foi utilizado um circuito Ponte H para controlar os motores do robô, sendo utilizado na construção da ponte H 4 relés 12V de 15A, 4 transistores BD 137, 4 capacitores de 10KΩ, e 4 diodos IN4007 (Fig 1b), que acionam os dois motores DC com redução de tensão nominal de 12V, com rotação de 44 rpm, consumo de corrente de 0,41. (a) Robô construído. (b) Ponte H. Fig. 1. Protótipo utilizado nas simulações: (a) Robô construído; (b) Ponte H O sistema de comunicação sem fio por rádio freqüência tem transmissão de quatro canais com freqüência de operação de 27 MHz. O receptor funciona com alimentação de tensão de 6V, já o transmissor funciona com tensão de 9V. Para o circuito de interface do receptor RF com o circuito Ponte H foram utilizados 4 relés de 5V 2A. 2 Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications Serra Negra, SP - ISSN 2178-3667 818 Quando a imagem foi capturada em um ambiente com excesso de claridade o processamento da imagem ficou comprometido, surgindo muitos ruídos nos objetos a ser analisados. Nos testes realizados, o sistema demonstrou bons resultados comportando-se de forma satisfatória a partir do canal HSV, principalmente com o canal da saturação que alcançou melhor resultado no reconhecimento dos objetos da imagem e nas correções das imagens e correções de ruído, mesmo utilizando uma câmera comum de baixa resolução. Em função disso, a imagem capturada recebida no formato RGB é convertida para o canal HSV, e desta nova imagem foi utilizado somente o canal S (saturação) (Fig. 5 a,b,c,d,e). A etapa seguinte foi binarizar a imagem para facilitar a identificação dos elementos relevantes da cena (robô, obstáculos e alvo). Na binarização a resultante é composta por apenas duas cores, sendo a cor de interesse representada pela cor preta, e as demais cores representadas pela cor branca. Na Fig. 5f mostra-se a imagem resultante obtida através do processo de binarização, na qual observa-se que apenas os pixels que representam o objeto de interesse (cor de interesse), aparecem como preto na imagem segmentada, e todos os demais pixels presentes na imagem são convertidos para o branco. Na interface da porta paralela com o controle remoto sem fio, foi utilizado um CI 2803 com capacidade de aumentar a tensão de saída da porta paralela e assim acionar um relé 12V, sem a necessidade de aumentar a corrente e por conseqüência queimar a porta paralela do microcomputador. Sendo utilizado 4 relés 12V 7A, um para cada canal de transmissão do transmissor RF. Para a captura da imagem usou-se uma webcam normal, posicionada sobre o ambiente onde o robô deveria circular, provendo uma visão panorâmica do cenário (Fig. 2). A partir destas imagens capturadas pela câmera, o sistema de visão computacional mapeia o ambiente no qual o robô deve se mover desviando dos obstáculos até atingir o destino final. Este mapeamento provê à identificação do robô e seu posicionamento, a localização dos obstáculos e a identificação do local de destino (Fig. 3). Assim, a partir do mapeamento feito pelo sistema de visão, o trajeto é calculado por um algoritmo de busca usando diferentes funções a serem realizadas pelo robô. Fig. 2. Metodologia de captura imagens. Fig.4. Comunicação entre o computador e o robô. Fig. 3. Cenário do projeto. Após a captura das imagens, estas são segmentadas, avaliam-se as alternativas de rotas e se comunica com o robô através de um controle remoto que está interligado a uma porta paralela do computador usando-se rádio freqüência (Fig. 4). (a) 3 Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications Serra Negra, SP - ISSN 2178-3667 819 Utilização de um Sistema de Visão Computacional para o Controle de um Robô Móvel Pedro Luiz de Paula Filho, Cleverson Junior Soares, Ângelo Marcelo Tusset (e) (b) (f) (c) Fig. 5. Transformações desde a imagem original até a binarização: (a) Imagem Original (RGB); (b) Imagem no canal HSV; (c) Canal H (Matiz); (d) Canal S (Saturação); (e) Canal V (Intensidade); (f) Imagem Binarizada; Essa seqüência atende bem para o trabalho com imagens estáticas (fotos), porém quando da captura de imagens em movimento adquiridas por vídeo tem-se ruídos inerentes à iluminação ou pequenas imperfeições. Para sanar isso, foram usadas técnicas de morfologia matemática, que enfocam a estrutura geométrica de uma imagem, fazendo transformações através de diferentes padrões de formatos conhecidos como elementos estruturantes (EE). Estes são formas geométricas simples e menores que a imagem original, que são movidos sobre a imagem bidimensional e conforme seu ajuste tem-se o resultado final [13][5]. Dentre as técnicas de morfologia matemática destacam-se a erosão e a dilatação. A erosão, denotada por AB (onde A é a imagem a ser erodida e B o elemento estruturante), tem como objetivo eliminar dados em uma imagem que não são semelhantes a um tipo padrão, ou seja, elimina picos positivos mais finos e expande os picos negativos, reduzindo os objetos da imagem. Em uma imagem binária os pontos pretos irão crescer sobre os pontos brancos de sua vizinhança, realçando contornos. Já a dilatação, denotada por A B , elimina picos negativos mais finos e expande os picos positivos, ou seja, em uma imagem de fundo branco, a técnica irá eliminar os ruídos [9][10]. Segundo [10], o fechamento, denotado por A B , tende a eliminar pequenos buracos e preencher fendas em regiões (d) 4 Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications Serra Negra, SP - ISSN 2178-3667 820 imagem, ou seja, o robô, os obstáculos e o alvo. Para tanto uma forma de identificar objetos em uma imagem binária é a rotulação, onde a cada região ou componente conexo é atribuído um valor único na imagem [11]. A rotulação foi feita, percorrendo-se a imagem binária pixel a píxel, quando se encontra um elemento preto, a este é rodado um algoritmo de preenchimento (flood fill), que irá marcar todos os pixels conexos com uma cor randômica. A partir do agrupamento dos objetos encontrados na imagem, busca-se identificar a qual classe estes elementos pertencem (Fig. 7). Sendo que se considera que o robô é o maior objeto encontrado (aproximadamente 1500 pixels) e os obstáculos tem uma área mínima de 400 pixels, áreas menores que 100 pixels são descartadas como ruído (Fig. 7b). Um vetor para armazenamento dos objetos foi criado para armazenar a área total, a cor e o retângulo englobante, ou seja, as coordenadas (x, y) mínimas que correspondem ao canto superior esquerdo do objeto e as coordenadas máximas (canto inferior direito). de contorno. Sua formação matemática é definida como A B ( A B )B . Na Figura 6 tem-se uma amostra da imagem binária com ruídos (Fig. 6a), o resultado após a aplicação do operador de fechamento (Fig. 6b) e a subtração das duas imagens que enfatiza os ruídos retirados da imagem (Fig. 6c). (a) (a) (b) (c) Fig. 6. Morfologia Matemática: (a) Imagem Binarizada; (b) Fechamento; (c) Ruído (b) Fig. 7. Objetos encontrados na imagem após pré-processadas: (a) Imagem Original Binarizada; (b) Imagem rotulada Com isso conclui-se a etapa de pré-processamento, e passa-se a buscar o reconhecimento dos elementos dentro da 5 Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications Serra Negra, SP - ISSN 2178-3667 821 Utilização de um Sistema de Visão Computacional para o Controle de um Robô Móvel Pedro Luiz de Paula Filho, Cleverson Junior Soares, Ângelo Marcelo Tusset Com os objetos identificados e registrados, pode-se comandar o robô. Assim, a comunicação se dá através da porta paralela e RF, onde os comandos são enviados através dos pinos de 2 a 5 da porta paralela e através de relês é feito o chaveamento dos sinais para adaptar-se ao padrão do controle remoto (no detalhe, onde os fios do circuito de interface são adaptados) (Fig. 8a e 8b). Este envia sinais ao robô, que são adquiridos pelo receptor de RF e então os reles da ponte H são acionados, movimentando o robô nos sentidos: frente, trás, direita e esquerda. Fig. 9 – Fluxograma de execução A Fig. 10 mostra a tela de execução do software, quando da inserção de quatro obstáculos obstruindo a passagem do robô (Fig. 7), onde a cada meio segundo, uma leitura foi realizada na intenção de fazer com que o robô de movimentasse. Nesse caso, no entanto, o mesmo ficou parado. (a) 4. CONCLUSÃO Apesar da complexidade da união de várias áreas distintas, dentre elas, eletrônica, computação e mecânica, o objetivo foi atingido, a construção de um protótipo que permita o funcionamento de um robô, através da porta paralela e RF, comandados por um computador que analisa uma cena dada por uma câmera simples. (b) Fig. 8. Comunicação entre porta paralela e o robô: (a) Circuito de interface da Porta Paralela; (b) Comunicação com o robô O software, antes de qualquer coisa, através da identificação das coordenadas de borda dos objetos (robô e obstáculos) identifica onde há obstáculo, e faz o planejamento de movimento para evitar colisões, caso a proximidade seja inferior a um limiar em pixel informado pelo usuário. Caso não tenha obstáculos ao redor, o algoritmo identifica o alvo, faz uma correção de rota para atingir a meta e faz um movimento a frente para se aproximar do alvo, repetindo o processo continuamente. Caso algum objeto esteja no caminho, o robô tenta uma manobra de esquiva, executando, se possível, uma ré, rotacionando-se 90 graus à direita, movimentando-se à frente e rotacionando novamente à esquerda. Todos os passos podem ser seguidos através do fluxograma apresentado na Fig. 9. Fig. 10 – Software em execução O software se mostrou eficiente na execução de tarefas básicas de movimentação e desvio de obstáculos, mesmo com pequenas mudanças de luminosidade. Como o objetivo não era determinar o melhor caminho, em algumas situações, o robô acabou andando em círculos. Nesse sentido algumas técnicas de inteligência artificial poderiam ser usadas para melhor o encontro do melhor caminho. 6 Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications Serra Negra, SP - ISSN 2178-3667 822 REFERÊNCIAS [1] PEDROSA, D. P. F., MEDEIROS, A. A D., ALSINA, P. J. (2002). Geração de Caminhos Ponto-a-Ponto para Robôs Móveis com Rodas. Anais do XIV Congresso Brasileiro de Automática. [2] AMBROSE, R., ASKEW, R. S. (1995). An Experimental Investigation of Actuators for Space Robots. IEEE Internarional Conference on Robotics and Automation, pp. 2625 – 2630. [3] PASSOS, F. (2002). Automação de Sistemas & Robótica. Axcel Books do Brasil Editora Ltda. [4] MCCOMB, Gordon. The robot builder’s bonanza: 99 inexpensive robotics projects. New York: TAB Books, 1987. 326p. [5] SPENCE, Rob, HUTCHINSON, Seth. An integrated architecture for robot motion planning and control in the presence of obstacles with unknown trajectories. IEEE trans. on systems, man, and cybernetics, v.25, n.1, p.100-110, jan., 1995. [6] GROOVER, Mikell P., WEISS, Mitchell, NAGEL, Roger N. et al. Robótica: tecnologia e programação. São Paulo: McGraw-Hill, 1988. 401p. [7] JAHNE, B.; HAUBECKER, H. Computer Vision and Applications. Academic Press, 2000. [8] SEBE, N.; COHEN, I.; GARG, A.; HUANG, T. S. Machine Learning in Computer Vision. Springer, 2005. [9] GONZALEZ, R. C. WOODS, R. E. Processamento de Imagens Digitais. Edgard Blucher, 2000. [10 PEDRINI, H., SCHWARTZ, W. R. “Análise de Imagens Digitais – Princípios, Algoritmos e Aplicações”. Ed. Thomson. São Paulo, 2008. [11] CONCI, A., AZEVEDO, E., LETA, F. R. “Computação Gráfica: Teoria e Prática – Volume 2”. Ed. Elsevier. Rio de Janeiro, 2008. [12] RUSS, John. C. - The Image Processing Handbook The Fifth edition. CRC Ed. Boca Raton, FL, 2007 [13] VUYLSTEKER, Pascal. HSV, HLS and HIS. Material de aula da disciplina de Computação Gráfica da Faculty of Engineering and Information Technology, na The Australian National University. Disponível em: <http;//escience.anu.edu.au/lecture/cg/color/>. Acesso em: 07 de set de 2009. [14] BENDER, Túlio Cleber. Classificação e recuperação de imagens por cor utilizando técnicas de inteligência artificial. Dissertação em Computação Aplicada: Universidade do Vale dos Sinos. São Leopoldo / RS, 2003. [15] AL-OTUM, Hazem. SHAHAB, Walid. Smadi, MAMOON. Colour Image Compression Using A Modified Angular Vector Quantization Algorithm. Journal of Electrical Engineering, vol. 57, no. 4. Slovak University of Technology. Bratislava, 2006. 7 Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications Serra Negra, SP - ISSN 2178-3667 823