Visao computacional aplicada em um braco robotico didatico
Upcoming SlideShare
Loading in...5
×
 

Visao computacional aplicada em um braco robotico didatico

on

  • 911 views

 

Statistics

Views

Total Views
911
Views on SlideShare
911
Embed Views
0

Actions

Likes
0
Downloads
24
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Visao computacional aplicada em um braco robotico didatico Visao computacional aplicada em um braco robotico didatico Document Transcript

  • FACULDADE ASSIS GURGAGZ DJEILY TAMARA BECKER VISÃO COMPUTACIONAL APLICADA EM UM BRAÇO ROBÓTICO ANTROPOMÓRFICO DIDÁTICO CASCAVEL 2013
  • FACULDADE ASSIS GURGAGZ DJEILY TAMARA BECKER VISÃO COMPUTACIONAL APLICADA EM UM BRAÇO ROBÓTICO ANTROPOMÓRFICO DIDÁTICO Projeto de pesquisa apresentado ao curso de graduação em Engenharia de Controle e Automação da Faculdade Assis Gurgacz para elaboração do Trabalho de Conclusão de Curso. Orientador: Prof. Esp. Arthur Schuler da Igreja Co-orientador: Maikon Lucian Lenz CASCAVEL 2013
  • FACULDADE ASSIS GURGACZ DJEILY TAMARA BECKER VISÃO COMPUTACIONAL APLICADA EM UM BRAÇO ROBÓTICO ANTROPOMÓRFICO DIDÁTICO Trabalho apresentado no Curso de Engenharia de Controle e Automação, da Faculdade Assis Gurgacz, como requisito parcial para obtenção do título de Bacharel em Engenharia de Controle e Automação, sob orientação do Professor Especialista Arthur Schuler da Igreja e co-orientação do Engenheiro Maikon Lucian Lenz. BANCA AVALIADORA ____________________________ Arthur Schuller da Igreja Faculdade Assis Gurgacz ____________________________ Vânio da Maia Faculdade Assis Gurgacz ____________________________ Ederson Zanchet Faculdade Assis Gurgacz Cascavel, 04 de Dezembro de 2013.
  • DEDICATÓRIA Dedico este trabalho a Deus que sempre foi meu guia e minha fortaleza em meio às provações. A minha mãe e minha irmã que sempre estiveram comigo ao longo desta caminhada e acreditaram em minha determinação e coragem e a todas as pessoas que de forma direta ou indireta estiveram presentes na realização deste projeto.
  • AGRADECIMENTOS Primeiramente a Deus que me proporcionou sabedoria durante toda minha formação, principalmente no desenvolvimento deste projeto. Aos meus familiares, especialmente a minha mãe Maria, por ter me incentivado a dar inicio a esta graduação e por estar sempre ao meu lado nos momentos que mais precisei. A minha irmã com quem pude contar em todas as horas e aos meus avós, que foram sempre compreensíveis nos momentos que estive ausente. A meus colegas e amigos, Felipe Holz, Maycon Gasoto, Esequiel Leite e Fabio Rangel, por sempre me ajudarem nos momentos de dúvida e pelo incentivo que sempre proporcionaram. A todos os professores que contribuíram em meu processo de formação. Em especial ao professor Arthur, por ter aceitado fazer parte deste projeto e me incentivar em solucionar os problemas da melhor maneira. Ao engenheiro Maikon por ter me orientado e estar sempre disposto a esclarecer as dúvidas que surgiram no desenvolvimento do projeto. Também ao professor Ederson Zanchet, por ser atencioso e estar sempre disposto em ajudar toda turma ao longo do curso.
  • RESUMO A Robótica é uma área que se encontra em ascensão, a atual demanda econômica requer linhas de produção cada vez mais eficientes com elevada percepção sensorial, certamente um dos principais e mais completos sentidos é a visão, pela riqueza de informação que uma imagem pode conter. Neste contexto, a visão computacional se torna uma ferramenta chave na área da robótica, todas as tomadas de decisão do manipulador são baseadas nos detalhes das imagens. O presente projeto de pesquisa trata da implementação de um sistema de controle de trajetória de um braço robótico orientado por visão computacional. A aquisição da imagem ocorre através de uma webcam comum, o objetivo é coletar a mesma e identificar o objeto desejado pelo usuário, com base nestas informações o manipulador é orientado até a peça. Para tanto, os dados da imagem são processados e enviados ao manipulador através da ferramenta de computação Matlab®. Palavras chave: Robótica, Visão computacional, Matlab®.
  • ABSTRACT Robotics is an area in ascension, the actual economic demanding requires more efficient production lines with highly sensorial perception, vision is certainly one of the most principal and complete sense, because of the richness of information that an image can hold. On this context, computational vision becomes a key source in robotics, all the decisions of the manipulator are based on image details. The present research project is about the implementation of a control system of trajectory for a robotic arm oriented by computational sight. The acquisition of image occurs through a regular webcam, the objective is to collect an image and identify the object desired by the user, based on these informations the manipulator is oriented to grab the piece. For this, the image data are processed and send to the manipulator using the software Matlab®. Keywords: Robotics, Computational Vision, Matlab®.
  • “O sucesso não se atinge somente com qualidades especiais. É principalmente um trabalho de constância, de método e de organização.” (J. P. Sergent)
  • LISTA DE ABREVIAÇÕES IFR Federação Internacional de Robótica - (International Federation of Robotics); VDMA Federação Alemã de Engenharia - (Verband Deutscher Maschinen und Anlagenbau); RGB Vermelho, Verde e Azul - (Red, Green and Blue); YIQ Luminosidade e Cromaticidade; CCD Dispositivo de Carga acoplado - (Charge Coupled Device); CMOS Semicondutor de Óxido Metálico Complementar - (Complementary Metal Oxide Semicondutor); D-H Jacques Denavit e Richard Hartenberg; Nm Nanômetro; Pixel Picture Element ; Voxel Volumetric Picture Element; N/m Newton Metro; kΩ Kilo Ohms; GND Filtro Graduado de Densidade Neutra (Graduated Neutral DensityFilter); V Volt; A Ampere; m Metros; cm Centímetros; kg.cm Kilograma Centímetro.
  • LISTA DE FIGURAS Figura 1 – Passos da visão computacional. ............................................................. 16 Figura 2 – Comprimento de onda no espectro eletromagnético. .............................. 18 Figura 3 – Representação da cor. ............................................................................ 18 Figura 4 – Representação do Modelo RGB. ............................................................. 19 Figura 5 – Matriz de conversão do modelo RGB para YIQ....................................... 20 Figura 6 – Processo de discretização da imagem. ................................................... 23 Figura 7 – Imagens com mesmo tamanho e resolução diferente. ............................ 24 Figura 8 – Imagens com tamanho diferentes e resolução igual. .............................. 24 Figura 9 – Representação de vizinhança. ................................................................ 25 Figura 10 – Representação de vizinhança tridimensional. ....................................... 26 Figura 11 – (a) Distribuição de pixels. (b) 8-conectividade. (c) m-conectividade ...... 26 Figura 12 – Histograma de imagens. ........................................................................ 28 Figura 13 – Técnica de detecção de limiares simples. (a) Imagem limiar. (b) Histograma e limiar. (c) Imagem binarizada. ............................................................. 29 Figura 14 – Transformações Geométricas – Translação. ......................................... 30 Figura 15 – Transformações Geométricas – Escala................................................. 31 Figura 16 – Transformações Geométricas – Rotação. ............................................. 31 Figura 17 – Exemplos de Técnica de Iluminação. .................................................... 33 Figura 18 – Representação de elos e juntas de um robô. ........................................ 34 Figura 19 – Volume de trabalho de robôs industriais. (a) Robô antropomórfico. (b) Robô cartesiano. (c) Robô de coordenadas cilíndricas. (d) Robô de coordenadas esféricas. (e) Robô SCARA. ...................................................................................... 36 Figura 20 – Notação de Denavit-Hartenberg. ........................................................... 37 Figura 21 – Potenciômetros rotativos. ...................................................................... 40 Figura 22 – Tipos de motores de passo. .................................................................. 41 Figura 23 – Fluxograma do processo ....................................................................... 42 Figura 24 – Vista frontal do braço robótico com os motores do cotovelo (1) e ombro (2). ............................................................................................................................. 44 Figura 25 – Motor responsável pelo giro da base..................................................... 44 Figura 26 – Nova estrutura do braço robótico. ......................................................... 45 Figura 27 – Potenciômetros...................................................................................... 46 Figura 28 – Média das entradas analógicas. ............................................................ 48
  • Figura 29 – Sentido de giro e velocidade do motor. ................................................. 48 Figura 30 – Criação da serial.................................................................................... 49 Figura 31 – Comunicação serial Matlab®.................................................................. 50 Figura 32 – Circuito de acionamento da bobina. ...................................................... 51 Figura 33 – Código para acionamento da bobina. .................................................... 52 Figura 34 – Aquisição da imagem em formato RGB. ............................................... 53 Figura 35 – Detecção de limiares da imagem em formato RGB............................... 53 Figura 36 – Imagem dos objetos de interesse. (a) Imagem no formato RGB. (b) Imagem binarizada. ................................................................................................... 54 Figura 37 – Localização do centroide do objeto. ...................................................... 54 Figura 38 – Conversão do modelo de cores RGB para YIQ. .................................... 55 Figura 39 – Escolha do objeto. ................................................................................. 55 Figura 40 – Sistema de coordenas para o procedimento de D-H. ............................ 56 Figura 41 – Configuração da trajetória do braço robótico. ........................................ 57 Figura 42 – Modelo robô plotado no espaço. ........................................................... 58 Figura 43 – Posição dos links em radianos. ............................................................. 58 Figura 44 – Modelo robô nas posições x=30 cm, y=20 cm e z=20 cm. .................... 59 Figura 45 – Posição da câmera (Webcam). ............................................................. 60 Figura 46 – Referência de pixels por cm. ................................................................. 61 Figura 47 – Distância em X e Y até a área de trabalho. ........................................... 63 Figura 48 – Simulação virtual do braço robótico....................................................... 66 Figura 49 – Identificação do centroide. (a) – Objeto vermelho. (b) – Objeto azul. .... 67 Figura 50 – Representação de Precisão e Repetibilidade. ....................................... 68 Figura 51 – Vista superior do objeto vermelho. (a) – Ilustração em formato RGB. (b) – Identificação do centroide....................................................................................... 69 Figura 52 – Posicionamento do braço robótico sobre a peça. .................................. 70
  • LISTA DE TABELAS Tabela 1 – Tópicos para processamento de imagens. ............................................. 21 Tabela 2 – Relação da porta paralela e as saídas digitais do Arduino®. ................... 47 Tabela 3 – Parâmetros de Denavit-Hartenberg. ....................................................... 56 Tabela 4 – Movimento do braço robótico por coordenadas absolutas. ..................... 66 Tabela 5 – Resultado dos testes de Precisão e Repetibilidade por coordenadas absolutas. .................................................................................................................. 67 Tabela 6 – Resultados dos testes de Precisão e Repetibilidade por visão computacional. .......................................................................................................... 71
  • SUMÁRIO 1 INTRODUÇÃO ............................................................................................... 14 2 FUNDAMENTAÇÃO TEÓRICA ..................................................................... 16 2.1 VISÃO COMPUTACIONAL ............................................................................ 16 2.2 COR ............................................................................................................... 17 2.2.1 O Modelo RGB ............................................................................................... 19 2.2.2 O Modelo YIQ ................................................................................................. 19 2.2.3 O Modelo HSI ................................................................................................. 20 2.3 PROCESSAMENTO DE IMAGENS DIGITAIS ............................................... 20 2.3.1 Aquisição de imagens .................................................................................... 22 2.3.2 Amostragem e Quantização ........................................................................... 22 2.3.3 Resolução espacial de imagens ..................................................................... 23 2.3.4 Vizinhança e Conectividade ........................................................................... 25 2.3.5 Histograma ..................................................................................................... 27 2.3.6 Limiarização ................................................................................................... 28 2.4 TRANSFORMAÇÕES GEOMÉTRICAS ......................................................... 29 2.5 CALIBRAÇÃO ................................................................................................ 32 2.6 ILUMINAÇÃO ................................................................................................. 32 2.7 COMPONENTES DE UM ROBÔ INDUSTRIAL .............................................. 34 2.8 CLASSIFICAÇÃO GEOMÉTRICA DE ROBÔS INDUSTRIAIS ....................... 35 2.9 CINEMÁTICA DE UM BRAÇO ROBÓTICO .................................................... 36 2.9.1 Cinemática Direta ........................................................................................... 37 2.9.2 Cinemática Inversa ......................................................................................... 39 2.10 POTENCIÔMETRO ........................................................................................ 39 2.11 MOTOR DE PASSO ....................................................................................... 40 3 METODOLOGIA ............................................................................................ 42 3.1 ESTRUTURA DO BRAÇO ROBÓTICO .......................................................... 43 3.2 INTERFACE ................................................................................................... 47 3.2.1 Comunicação Serial ....................................................................................... 49 3.3 ACIONAMENTO DA BOBINA......................................................................... 51 3.4 PROCESSAMENTO DE IMAGENS ............................................................... 52 3.5 MODELAGEM CINEMÁTICA ......................................................................... 56 3.6 CONVERSÃO VALORES DE POTENCIÔMETRO ......................................... 58 3.7 LOCALIZAÇÃO OBJETO ............................................................................... 60
  • 4 RESULTADOS OBTIDOS ............................................................................. 65 4.1 MOVIMENTOS DO BRAÇO ROBÓTICO POR COORDENADAS .................. 65 ABSOLUTAS ............................................................................................................. 65 4.2 LOCALIZAÇÃO DO OBJETO ......................................................................... 67 4.3 MOVIMENTOS DO BRAÇO ROBÓTICO POR IMAGEM................................ 68 4.4 TRABALHOS FUTUROS................................................................................ 72 5 CONCLUSÃO ................................................................................................ 73 REFERÊNCIAS ................................................. ERRO! INDICADOR NÃO DEFINIDO. APÊNDICE A ............................................................................................................ 77 APÊNDICE B ............................................................................................................ 81 APÊNDICE C ............................................................................................................ 82
  • 14 1 INTRODUÇÃO O progresso da robótica em segmentos industriais foi justificado principalmente pela agilidade e confiabilidade em processos produtivos. Segundo dados da IFR (International Federation of Robotics – Federação Internacional de Robótica), o aumento de vendas de robôs em 2011 em relação aos outros anos foi de 38%, sendo vendidas 166.028 unidades em todo o mundo, principalmente na indústria automobilística e metalúrgica. Se configurado corretamente, um robô é capaz de realizar com grande precisão tarefas que envolvem confiabilidade, repetição e alta periculosidade e por se tratar de um manipulador reprogramável a necessidade de dispositivos que forneçam percepção sensorial fica evidente. Neste contexto, a riqueza de informações que uma imagem pode conter torna a visão um dos mais complexos e importantes sentidos, permitindo que um manipulador ganhe percepção sensorial de forma ampla. As aplicações que envolvem o uso de imagens estão presentes em vários cenários, como: ambientes industriais, sistemas de segurança para transporte, tecnologia médica, entre outros. Desta maneira, a integração de um sistema de visão computacional através de mecanismos robóticos resulta em linhas de produção mais eficientes e velozes. Uma definição apropriada para a técnica de visão artificial ou visão computacional, é que pode ser classificada como a ação de um determinado atuador em função de imagens coletadas em tempo real e devidamente processadas. A implantação desse tipo de sistema requer estudo e aplicação de técnicas que abrangem desde a estrutura do local, principalmente no que se refere à iluminação, aquisição e processamento de imagens, até o controle do atuador final. Segundo a VDMA (Verband Deutscher Maschinen und Anlagenbau), os continentes Americano e Asiático em 2011 apresentaram um aumento significativo nos negócios de visão computacional em relação à Alemanha e o continente Europeu, que são as maiores potências neste segmento atualmente. Mesmo com aumento de produtividade e com uma gama maior de produtos industrializados, é comum ver pessoas em indústrias realizando tarefas de diversos tipos, como é o caso da inspeção industrial, [1]. A visão humana tem alta capacidade de adaptação ao meio e facilidade de interação em ambientes não estruturados,
  • 15 reagindo rapidamente às variações do ambiente. Porém, os humanos possuem limitações físicas e psicológicas, como por exemplo, fadiga e falta de atenção, além dos riscos elevados que alguns processos podem causar às vidas humanas. Enquanto sistemas de visão computacional avaliam múltiplas características em alta velocidade e podem ser inseridos em ambientes de risco, necessitando apenas de um ambiente com condições controladas. Outro grande desafio enfrentado em ambientes industriais é a quantidade de sensores utilizados para um único processo. O uso de vários sensores para o posicionamento correto do produto acaba gerando uma quantidade elevada de variáveis a serem analisadas. Este trabalho apresenta um sistema capaz de capturar imagens com o uso de uma webcam comum instalada em um ambiente estruturado, as informações destas serão processadas em tempo real de maneira que seja possível extrair as informações pertinentes ao objeto. Baseado nessas informações será feita a integração do sistema da imagem com o controle de trajetória de um manipulador robótico antropomórfico didático com três graus de liberdade. Para tanto, serão utilizadas ferramentas incorporadas ao ambiente de computação Matlab®, que auxiliarão no desenvolvimento da estrutura do processamento de imagens, de maneira a identificar objetos de cor azul ou vermelha e no cálculo da cinemática inversa, que irá guiar o manipulador robótico até a peça.
  • 16 2 FUNDAMENTAÇÃO TEÓRICA 2.1 VISÃO COMPUTACIONAL Visão computacional, também conhecida como visão de máquina é responsável por extrair informações e características importantes de uma imagem que tem como principal objetivo auxiliar na tomada de decisões inteligentes feitas por uma máquina. Esse tipo de processamento de imagens está enquadrado no nível alto. Visão de alto nível se refere a processos que tendem simular o raciocínio, utilizando-se de métodos de inteligência artificial. Por outro lado, visão de baixo nível não necessita de inteligência, reage de forma automática ao processo [12]. Segundo [10], o sistema de visão computacional pode ser dividido em cinco partes, conforme é apresentado no fluxograma (Figura 1). Fonte: [10] Figura 1 – Passos da visão computacional.
  • 17 A. Sistema óptico: Direciona e dimensiona os feixes luminosos emitidos pelo objeto para o sensor óptico; B. Sistema de Iluminação: Desempenha papel muito importante, pois será responsável por projetar luz sobre o objeto, que em geral não emitem luz própria necessária para sensibilizar o sensor óptico; C. Sistema de Aquisição: Responde pela tradução do sinal luminoso do objeto para um sinal elétrico que possa ser identificado pelo processamento; D. Sistema de Processamento: Toma as decisões baseado nos sinais recebidos do sensor; E. Sistema de Atuação: Faz a atuação sobre o ambiente que se encontra o objeto de estudo, baseado em informações fornecidas pelo sistema de processamento; F. Sistema de Transmissão: Transferência dos dados capturados do sistema de aquisição para o sistema do processador, bem como os sinais de comando do sistema processador para o sistema óptico, de iluminação, aquisição e atuação. 2.2 COR A cor é a luz que percorre o espaço, a natureza dual da luz é definida como um comportamento de onda e de partícula. O comportamento da luz como onda é uma radiação eletromagnética que possui uma distribuição espectral de potência para cada comprimento de onda, [23]. O olho humano é caracterizado por dois sensores, os Bastonetes, sensíveis a todos os comprimentos de onda ponderados, não possibilitando a distinção de cores, sendo estes responsáveis por enviar a informação de luminância ao cérebro, e os Cones que são menos sensíveis à luz, mas permitem a distinção de cores. Este último é responsável por enviar ao cérebro informação de crominância. Os humanos percebem luz entre aproximadamente 380nm e 780nm. Luz de 380nm até 500nm parece azul, de 500nm a 600nm parece verde, e de 600nm a 780nm parece vermelho, [23].
  • 18 Fonte: [23] Figura 2 – Comprimento de onda no espectro eletromagnético. A cor monocromática ideal possui apenas um único comprimento de onda. A cor púrpura não é uma cor espectral, contém comprimentos de onda bem próximos a 380nm e outros bem próximos a 780nm. A luz branca possui todos os comprimentos de onda com energia máxima, [23]. A cor pode ser representada em quatro universos distintos, conforme indica a Figura 3. Fonte: [23] Figura 3 – Representação da cor. A codificação da cor é representada por 1 byte para cada componente permitindo 28 bits resultando em 256 possibilidades, assumindo valores de 0 a 255. Desta forma as três componentes fundamentais das cores totalizam em 2 24 bits, ou 16 milhões de possibilidades. A capacidade humana de percepção é de aproximadamente 400 mil cores diferentes ou 219 bits, [23].
  • 19 2.2.1 O Modelo RGB Todos os objetos que emitem luz visível são percebidos pelo olho humano através da soma das cores espectrais emitidas, esse processo é a combinação variável em proporção de componentes monocromáticos nas faixas espectrais associadas às sensações de cor verde, vermelha e azul, que são responsáveis pela formação de todas as demais cores, [16]. As cores verde, vermelha e azul formam o modelo RGB que é baseado em um sistema de coordenadas cartesianas. Segundo [15], o modelo RGB pode ser representado por um cubo como mostra a Figura 4, onde três vértices são as cores primárias e os outros três as cores secundárias, o vértice junto à origem é preto e o mais afastado da origem representa a cor branca. Fonte: [15] Figura 4 – Representação do Modelo RGB. Os níveis de cinza se estendem através de uma linha diagonal do cubo que sai da origem até o vértice mais distante. A faixa de valores de níveis de cinza geralmente é representada de 0 a 1 ou de 0 a 255, para cada cor do modelo RGB. 2.2.2 O Modelo YIQ O modelo YIQ se baseia na separação dos sinais de cor RGB em uma componente de luminosidade (Y) e duas componentes de cromaticidade (I e Q). A
  • 20 transformação do modelo RGB para o sistema YIQ é dada pela multiplicação das matrizes ilustradas pela Figura 5. Fonte: [15] Figura 5 – Matriz de conversão do modelo RGB para YIQ. O sistema YIQ é usado em transmissão de vídeo, que são representados por 95% de luminância e 5% de crominância. Isso é possível devido à menor sensibilidade do olho a variações de crominância. 2.2.3 O Modelo HSI No modelo HSI de cores a componente de intensidade I é retirada da informação de cor da imagem e as componentes de matiz e saturação são relacionados com a percepção que os humanos têm das cores, sendo a matiz responsável por descrever a cor pura e a saturação apresenta um grau de diluição de uma cor pura por luz branca. Segundo [11], o modelo HSI é uma ferramenta muito indicada para o desenvolvimento de algoritmos de processamento de imagens baseado em algumas propriedades do sistema visual humano, como por exemplo, fazer a detecção automática do amadurecimento de frutas e vegetais por imagem e inspeção de qualidade de produtos coloridos. 2.3 PROCESSAMENTO DE IMAGENS DIGITAIS O processamento digital de imagens é responsável por fazer operações do tipo restauração e realce em uma determinada cena, procedimentos estes que geralmente são expressos por meio de algoritmos. Segundo [11], o processamento de imagens é caracterizado por soluções específicas, assim, técnicas que funcionem
  • 21 bem em uma área podem se mostrar totalmente inadequadas em outra. O que a disponibilidade de hardware e software faz é fornecer um ponto de partida muito mais avançado que há alguns anos atrás. Quando uma imagem é processada as informações podem ser extraídas mais facilmente, podendo ser dividida em dois tipos de informação, a visual que, compreende aquilo que pode ser visualizado na tela de um computador e descritiva que é a referência matemática dos objetos visualizados. O sistema visual humano é extremamente desenvolvido, processa e extrai informações de imagens a todo o momento e ao inserir máquinas neste contexto o nível de complexidade é elevado, tornando um sistema totalmente dependente da aplicação envolvida, não existindo soluções generalistas, [22] [23]. O processamento de imagens utiliza uma matriz de dados para armazenar a informação de cor em cada ponto da imagem, o sistema de coordenadas pode ser uma grade de números inteiros que descrevem a posição na matriz, podendo ser realizado no domínio do espaço ou frequência, [23]. A técnica de detecção de limiares que será abordada posteriormente é umas das principais para segmentação de informação, onde a parte de interesse da imagem é realçada. A Tabela 1 apresenta os tópicos que devem ser abordados na compreensão de tratamento de imagens digitais. Tabela 1 – Tópicos para processamento de imagens. ETAPAS PARA PROCESSAMENTO DE IMAGENS Aquisição da Imagem Amostragem e Armazenamento Melhoramento Pré-tratamento digital da imagem Segmentação da informação Identificação do objeto de interesse Parametrização Determinação da grandeza dos objetos Reconhecimento Análise quantitativa e aplicação de ferramenta a outras áreas da ciência Classificação dos objetos Associação das grandezas medidas ao problema Fonte: do Autor
  • 22 2.3.1 Aquisição de imagens O processo de conversão de uma cena real tridimensional para uma imagem analógica denomina-se aquisição de imagens. Os sensores mais difundidos atualmente para aquisição de imagens são o CCD (Charge Coupled Device – Dispositivo de Carga acoplado) e o CMOS (Complementary Metal Oxide Semicondutor – Semicondutor de Óxido Metálico Complementar). O sensor CCD consiste em uma matriz de células semicondutoras fotossensíveis (matriz de sensores) que atuam como capacitores, armazenando carga elétrica proporcional à energia luminosa incidente. O sinal elétrico produzido é captado por circuitos eletrônicos que produzem um Sinal Composto de Vídeo (SCV) analógico e monocromático, [9]. Por outro lado, o sensor CMOS faz a leitura digital diretamente com um único sensor, estes são fabricados em processo semelhante ao de microprocessadores. Os elementos fotossensíveis dos sensores CMOS estão diretamente acoplados em resistores, permitindo uma contínua transformação da quantidade luminosa recebida em um sinal elétrico proporcional, [10]. A tecnologia do CMOS tem evoluído rapidamente, por isso alguns equipamentos profissionais compensam a menor sensibilidade do CMOS. 2.3.2 Amostragem e Quantização Para que uma imagem possa ser processada de forma digital ela precisa ter sua função digitalizada tanto espacialmente quanto em amplitude. A digitalização das coordenadas espaciais é denominada amostragem da imagem e a digitalização da amplitude é chamada de quantização, [11]. A amostragem consiste em tomar a informação contínua e analógica do sinal a distâncias equidistantes ao longo dos eixos vertical e horizontal da imagem, uma vez amostrado o plano têm se uma matriz de valores que representa a cor, enquanto a quantização extrai os valores de intensidade luminosa identificados nos pontos amostrados. O processo de amostragem e quantização de uma imagem está intimamente ligado à resolução da imagem produzida. Quanto maior o número de pontos
  • 23 amostrados na imagem, maior será a resolução espacial desta. Do mesmo modo que, quanto maior o número de níveis de intensidade luminosa considerados na imagem para representar a tonalidade de um ponto amostrado, maior será a resolução de tonalidades da imagem. Assim a organização de uma imagem pode ser representada facilmente por uma estrutura matricial, onde o número de pixels das linhas e colunas da matriz é determinado pela amostragem do sinal, e o valor numérico dos elementos é extraído da quantização, [10]. Fonte: [23] Figura 6 – Processo de discretização da imagem. 2.3.3 Resolução espacial de imagens Quando a imagem é digitalizada se torna adimensional, em pixels, sua qualidade pode ser medida conhecendo-se a razão entre o número destes. A Figura 7 apresenta duas imagens com tamanhos reais iguais e com resoluções (pixels) diferentes, como o número de pixels é diferente, na tela também aparecerão com tamanhos diferentes, [23].
  • 24 Fonte: [23] Figura 7 – Imagens com mesmo tamanho e resolução diferente. Se duas imagens diferentes em tamanhos reais são capturadas com resoluções diferentes de tal forma que gerem imagens digitais com o mesmo número de pixels, quando visualizadas no monitor aparecerão com o mesmo tamanho. A Figura 8 apresenta as imagens proporcionais ao seu tamanho original capturadas em resoluções diferentes. Fonte: [23] Figura 8 – Imagens com tamanho diferentes e resolução igual. Para realizar alguma medida sobre os objetos contidos na imagem surge outro parâmetro, a escala. Pode-se defini-la matematicamente idêntica a resolução, só que as unidades serão as mais variadas possíveis. Medem-se algumas distâncias reais na imagem digital e calcula-se a média das razões entre distância e número de pixels, obtendo-se a escala. A partir desse momento outras distâncias podem ser feitas na imagem com qualidade aceitável. Se os objetos não estão em um mesmo plano, as medidas são muito mais complexas e envolvem transformações projetivas, [23].
  • 25 2.3.4 Vizinhança e Conectividade O pixel é geralmente representado como um quadrado preenchido com uma cor que está ao seu centro, é também um elemento de dimensões finitas na representação de uma imagem digital. Semelhante a um tabuleiro de xadrez a organização de uma imagem sob a forma de uma matriz é feita em uma simetria quadrada, facilitando a implementação eletrônica, [23] [24]. Contudo este tipo de organização provoca dificuldade nas técnicas de processamento, um pixel não apresenta as mesmas propriedades em todas as direções, possui 4 vizinhos de borda e 4 vizinhos de diagonal, forçando definir o tipo de conectividade que será trabalhada. A conectividade entre pixels estabelece quando possuem a mesma propriedade para pertencer à mesma região ou ao mesmo objeto. O método coordenadas utilizado para definir uma entre pixels de é usar uma sub-imagem quadrada ou retangular centrada em , [12]. Um pixel qualquer denominado verticais com coordenadas , chamada 4-vizinhança. As coordenadas e vizinhança possui vizinhos horizontais e , e , representam os quatro vizinhos diagonais de para a , . A união da 4- vizinhança com os vizinhos diagonais formam o conjunto 8-vizinhança que engloba todos os pixels vizinhos de “p”, como mostra a Figura 9, onde . Fonte: [10] Figura 9 – Representação de vizinhança. O conceito de vizinhança também pode ser aplicado em imagens tridimensionais, onde os elementos da matriz são chamados de “voxel”. A definição
  • 26 de vizinhos é dada de acordo com os “voxels” que compartilham fases, arestas ou vértices, correspondendo a vizinhanças de 6, 18 e 26 (Figura 10). Fonte: [25] Figura 10 – Representação de vizinhança tridimensional. Para estabelecer se dois pixels estão conectados é preciso detectar se eles são adjacentes e se seus níveis de cinza satisfazem critérios de similaridade, [11] [12]. A conectividade pode ser estabelecida por meio de três critérios: A. 4-conectividade: Um par de pixels vizinhos é dito 4-conectado se eles possuem um lado em comum; B. 8-conectividade: Um par de pixels vizinhos é dito 8-conectado se eles possuem um lado ou um canto em comum; C. m-conectividade: Abreviação de conectividade mista. Consiste em uma modificação da 8-conectividade, visando eliminar possíveis duplicidades de conexão entre dois pixels. Na Figura 11 é apresentada a conectividade entre os pixels, as linhas representam o caminho entre aquele pixel e os seus vizinhos. Fonte: [11] Figura 11 – (a) Distribuição de pixels. (b) 8-conectividade. (c) m-conectividade
  • 27 2.3.5 Histograma As informações estatísticas da distribuição de cores de uma imagem podem ser demonstradas através de manipulação de histogramas, uma das técnicas mais conhecidas para tais análises, [10]. Através de um histograma é possível visualizar o percentual de pixels em uma imagem que apresentam um determinado nível de cinza, valores que normalmente são representados por gráficos, que fornecem para cada nível de cinza o percentual de pixels correspondentes à imagem, desta forma é possível obter informações quanto à qualidade da imagem, como contraste e brilho médio, [15]. Para análise de um histograma é necessário avaliar três parâmetros, a tendência central que é a distribuição de frequências de brilho da imagem, a variabilidade da distribuição de frequências de uma variável e a forma do histograma, que informa a concentração dos dados. A distribuição é o valor mais frequente da variável, chamado de moda, que corresponde à barra mais alta e do valor da média da variável amostrada. A média está relacionada com uma grandeza que indica algo sobre o nível de refletância dos alvos presentes na cena. Se os valores digitais estão concentrados, a imagem mostra pouca variabilidade de brilho. Estatisticamente, a variabilidade é a medida da variância, a qual dá uma ideia de qual é o contraste da imagem. O contraste depende do comportamento espectral dos alvos, e varia com o comprimento de onda, [25]. A classificação de histogramas nas bandas, unimodal, bimodal, simétrico e assimétrico são definidos pelos parâmetros citados acima. Na Figura 12, em (a), o histograma apresenta uma forma simétrica com média baixa; em (b), a média é alta; (c) apresenta uma imagem com uma distribuição mais equilibrada de tons de cinza escuros e claros em relação à média centrada próxima a 128. No caso (d), o histograma tem uma forma bimodal e em (e), o histograma apresenta uma forma assimétrica.
  • 28 Fonte: [25] Figura 12 – Histograma de imagens. 2.3.6 Limiarização A técnica de detecção de limiares é responsável por separar o objeto de interesse do restante da imagem baseado em uma análise da similaridade de níveis de cinza ou níveis de intensidade luminosa. Operações de limiarização simples correspondem à bipartição do histograma, fazendo a conversão de pixel cujo tom de cinza é maior ou igual a um determinado range de valores limiar brancos e os demais em pretos, tendo assim o nível de intensidade luminosa ao qual se deseja realizar o ponto de corte, também conhecido como binarização, [10] [15]. Em um modelo RGB existe um range de valores de 0 a 255 tons de cinza, para cada componente. Tomando como exemplo a componente azul, se um limiar “T” for definido entre 100 e 150 todas as tonalidades abaixo de 100 e acima de 150 tornam-se informações de fundo da imagem, enquanto os valores entre 100 e 150 se tornam a informação correspondente ao objeto de cor azul, podendo definir o valor “0” para o fundo da imagem e “1” para o objeto azul, preto e branco respectivamente. A Figura 13 ilustra a técnica de detecção de limiares simples, como descrito acima.
  • 29 Fonte: [10] Figura 13 – Técnica de detecção de limiares simples. (a) Imagem limiar. (b) Histograma e limiar. (c) Imagem binarizada. Em imageamento colorido todos os níveis de intensidade podem estar presentes. Para fazer a detecção dos múltiplos limiares é necessário definir uma faixa de valores de intensidade luminosa para cada entidade da imagem. Uma que contém dois valores de limiar (azul e vermelho), define-se que correspondem ao fundo da imagem, valores em que azul > correspondem a um determinado objeto e < azul > vermelho > vermelho outro objeto da cena. Mais valores de limiar podem ser definidos em uma mesma cena, sendo as técnicas de segmentação baseadas em regiões mais adequadas, [10] [11]. 2.4 TRANSFORMAÇÕES GEOMÉTRICAS O principal efeito da transformação geométrica é alterar a posição espacial dos pixels que compõe a imagem, [28]. De maneira resumida consiste em operações matemáticas realizadas através de vetores, permitindo alterar uniformemente o aspecto de um modelo já armazenado no computador. Sendo estas alterações responsáveis por alterar os aspectos que a figura irá assumir e não a estrutura do mesmo, [29]. As transformações geométricas podem ser definidas em três tipos fundamentais: translação, rotação e escala. A translação é utilizada para definir a posição de um objeto ou cena. Matematicamente, esta operação consiste em adicionar constantes de deslocamento a todos os pontos, ou seja, trocando o objeto ou cena de lugar (Figura 14).
  • 30 Fonte: [28] Figura 14 – Transformações Geométricas – Translação. Um ponto de coordenadas (X, Y e Z) para um nova posição usando-se o deslocamento (X’, Y’ e Z’) pode ser representada pelo uso da Equação 2.1, sendo (X”, Y” e Z”), as coordenadas do novo ponto. (2.1) Para deslocar a imagem no plano, basta somar as coordenadas cartesianas de cada um de seus pontos em um mesmo vetor (X”, Y”), conforme Equação 2.2, [28] [29]. (2.2) A transformação geométrica de escala é utilizada para definir a escala exibida do objeto ou cena. A operação consiste em multiplicar um valor de escala por todos os pontos do objeto que terá seu tamanho ampliado ou reduzido. No caso de se aplicar um fator de escala negativo, o objeto terá os sinais de suas coordenadas invertidos, gerando como resultado o seu “espelhamento” no eixo que teve o fator de escala negativo, [29]. A ampliação dos pixels consiste em duplicar os valores destes na direção X e Y ou em ambas. Ao expandir a imagem por um fator 2 cada pixel é copiado 4 vezes, resultando em 3 vizinhos (Figura 15). Para reduzir as dimensões da imagem de um fator de 2 deve-se aplicar o processo inverso, [28].
  • 31 Fonte: [28] Figura 15 – Transformações Geométricas – Escala. O espelhamento inverte o sentido dos ângulos preservando seu valor absoluto. O objetivo é refletir a imagem em torno do eixo X ou Y(Equação 2.3), [28]. (2.3) Uma imagem pode ser rotacional de um ângulo arbitrário, tanto no sentido horário quanto no anti-horário (Figura 16). O resultado é um deslocamento que preserva a distância entre o ponto e o referencial. A operação matemática é realizada por uma composição de cálculos utilizando o seno e cosseno do ângulo de rotação a todas as coordenadas de cada ponto que compõem o objeto ou cena. Fonte: [28] Figura 16 – Transformações Geométricas – Rotação. A rotação de cada ponto (X, Y) de uma imagem por um ângulo arbitrário mapeará este ponto na localidade de coordenadas (X”, Y”), através da equação 2.4. (2.4)
  • 32 2.5 CALIBRAÇÃO A calibração de um sistema de visão computacional determina elementos que correlacionam medidas dos objetos do mundo real que contém informações tridimensionais com medidas atuais na imagem bidimensional. Fazendo a tradução dos pixels de uma imagem para uma unidade de medição padrão conhecida, [10] [13]. A calibração pode ser classificada como intrínseca e extrínseca. Segundo [13] pode-se dizer que a calibração intrínseca é feita a partir das características geométricas internas da câmera tais como, distância focal, coordenadas do centro da imagem, tamanho do pixel e coeficientes de distorção radial, tangencial, entre outros. Enquanto a calibração extrínseca é caracterizada pelas informações geométricas externas como, posição e orientação tridimensional do sistema da câmera em relação a um sistema de coordenadas fixo, tomado como referência. Quando a calibração é retratada para sistemas de visão aplicado na robótica o objetivo é determinar a relação entre o sistema de coordenadas da câmera e o sistema de coordenadas do manipulador robótico. 2.6 ILUMINAÇÃO A iluminação é fundamental para que a cena capturada pela câmera tenha qualidade o suficiente para o processamento, uma vez que o objeto não emite luz própria e que, a câmera captura luz refletida sobre a cena observada. Existem muitas soluções de visão que requerem inclusive a aplicação de luz incidente em faixas não visíveis do espectro luminoso, como por exemplo, as imagens de tomografia médica, algumas imagens astronômicas e imagens infra-vermelho de curvas de calor, [10]. Existem diversas técnicas de iluminação, direcional, multidirecional, luz de fundo, difusa, estruturada, entre outras. O emprego de cada uma destas irá depender do grau de realce que precisa ser obtido no objeto. Segundo [10], um projeto de iluminação de um sistema de visão é composto do tamanho exato do campo de visão, fonte luminosa e a geometria, que diz respeito à posição da fonte
  • 33 em relação ao objeto e sensor, eficácia e características necessárias para realçar as partes desejáveis do objeto de forma homogênea e constantes ao longo do tempo. Fonte: [12] Figura 17 – Exemplos de Técnica de Iluminação. A. Multidirecional: Emissão de diversos feixes luminosos provindos de diferentes pontos em relação ao centro do objeto, gerando uma iluminação mais uniforme de toda sua superfície, as vantagens estão na redução de sombras, intensidade e uniformidade, em contrapartida pode gerar muito brilho e os custos são elevados; B. Luz de Fundo: O posicionamento da fonte luminosa está atrás do objeto. Útil para aplicações em metrologia e análise de objetos translúcidos. Propicia ótimo contraste para detecção de bordas e análise de objetos translúcidos. Como desvantagem elimina os detalhes superficiais do objeto, por não serem iluminados; C. Difusa: Consiste em projetar iluminação perpendicularmente ao eixo óptico através de um difusor. Suas vantagens estão na redução de sombras e brilho, apresentação de iluminação uniforme das superfícies planas e desvantagens, na limitação a pequenas distâncias de trabalho, produz pouca intensidade luminosa, além de ser de difícil instalação e ter custos mais elevados; D. Estruturada: Produz uma linha luminosa sobre a superfície do objeto, possibilitando uma análise das características geométricas da superfície do objeto ao movimentar esta linha sobre o mesmo. Vantagens: Destaca informações de
  • 34 relevo e geometria das superfícies, muito usada em aplicações em 3D. Desvantagens: Requer fontes potentes de iluminação, de difícil calibração e complexo sistema de movimentação do feixe luminoso, [10]. 2.7 COMPONENTES DE UM ROBÔ INDUSTRIAL Segundo [21], um robô industrial é formado pela integração dos seguintes itens: A. Manipulador Mecânico: O manipulador mecânico é constituído de elos conectados entre si por meio de juntas. As juntas são responsáveis por permitir flexibilidade ao robô, com movimentos lineares ou rotacionais. O número de juntas define quantos graus de liberdade o robô possui. Fonte: [21] Figura 18 – Representação de elos e juntas de um robô. B. Atuadores: São componentes responsáveis por converter energia do tipo hidráulica, pneumática e eletromagnética em potência mecânica; C. Sensores: São responsáveis por enviar informações como posição e velocidade dos elos em função do tempo e informações de torque, força e visão computacional como meio de interação do robô e o ambiente; D. Efetuador: Elemento do tipo garra ou ferramenta conectado ao robô e ao meio que o cerca.
  • 35 2.8 CLASSIFICAÇÃO GEOMÉTRICA DE ROBÔS INDUSTRIAIS A classificação geométrica dos robôs descreve o movimento que ele executa, definidas quanto ao tipo de junta (rotação, translação) que são comumente denominados sistemas geométricos coordenados, [19]. A. Robô Antropomórfico: Tipo de configuração que permite maior flexibilidade ao robô é composto de no mínimo três juntas de rotação; B. Robô de Coordenadas Cartesianas: Constituído de três juntas prismáticas com movimentos de translação. O volume de trabalho gerado é retangular; C. Robô de Coordenadas Cilíndricas: Formado por duas juntas prismáticas e uma de rotação, movimentos de duas translações e uma rotação. O volume de trabalho gerado é cilíndrico; D. Robô de Coordenadas Esféricas: Uma junta prismática e duas de rotação constituem o robô, movimentos de uma translação e duas rotações. O volume de trabalho gerado é aproximadamente uma esfera; E. Robô SCARA: Muito usado na montagem de placa de circuitos eletrônicos, formado por duas juntas de rotação dispostas em paralelo para se ter movimento num plano e uma junta prismática perpendicular a este plano, com movimentos de uma translação e duas rotações. O volume de trabalho gerado é aproximadamente cilíndrico; F. Robô Paralelo: Configuração tipo plataforma e mecanismos em forma de cadeia cinemática fechada. Seu volume de trabalho é semi-esférico, [21].
  • 36 Fonte: [21] Figura 19 – Volume de trabalho de robôs industriais. (a) Robô antropomórfico. (b) Robô cartesiano. (c) Robô de coordenadas cilíndricas. (d) Robô de coordenadas esféricas. (e) Robô SCARA. 2.9 CINEMÁTICA DE UM BRAÇO ROBÓTICO O movimento de um corpo ou conjunto de corpos levando em consideração a ausência de sua massa e forças atuantes sobre estes, pode ser definido como cinemática, [19]. O modelo geométrico de um robô expressa a posição e orientação de um elemento terminal em relação a um sistema de coordenadas fixo, em relação à base [20], em outras palavras, uma das extremidades (base) é fixa, enquanto a outra é livre para se movimentar no espaço. Um manipulador é formado por um conjunto de elos conectados por articulações, sendo que cada elo possui um grau de liberdade, translação ou rotação. Em 1955 Jacques Denavit e Richard Hartenberg propuseram uma forma sistemática de descrever a geometria de um conjunto de elos com “N” graus de liberdade.
  • 37 Fonte: [20] Figura 20 – Notação de Denavit-Hartenberg. Na Figura 20 é possível notar que um eixo de uma junta estabelece a conexão de dois elos. Estes eixos de juntas devem ter duas normais conectadas neles, uma para cada um dos elos. A posição relativa destes dois elos conectados (elo j-1 e elo j) é dada por “dj”, que é a distância medida ao longo do eixo da junta entre suas normais. O ângulo de junta “θj” entre as normais é medido em um plano normal ao eixo da junta. Um elo “j” só pode estar conectado a dois elos no máximo. Do ponto de vista cinemático estes mantêm uma configuração fixa entre suas juntas que podem ser definidos por dois parâmetros “aj” e “αj”, chamados respectivamente, comprimento e ângulo de torção do elo “j”. Desta forma (aj, αj) determinam a estrutura dos elos e os parâmetros da junta, enquanto (dj, θj) definem a posição relativa de elos vizinhos [21]. 2.9.1 Cinemática Direta A posição de um manipulador no espaço onde se encontra é descrita pela cinemática direta. A posição e velocidade podem ser obtidas a partir da matriz de transformação homogênea que por sua vez é estabelecida a partir dos parâmetros de DH (Denavit – Hartenberg).
  • 38 Segundo [19], um ponto qualquer “P” expresso ao coordenadas, pode ser expresso no sistema de sistema de coordenadas como com os seguintes itens: A. eixo Rotação no eixo de um ângulo alinhando o eixo com o ; B. eixos Translação de uma distância de ai ao longo do eixo e C. na coincidência; Translação ao longo do eixo duas origens com o eixo D. trazendo os a uma distância de trazendo as na coincidência; Rotação no eixo de um ângulo de para trazer os dois sistemas de coordenadas na coincidência; As operações citadas acima podem ser descritas por uma matriz de transformação homogênea de rotação – translação sendo o produto das quatro matrizes o resultado da matriz homogênea composta, também conhecida como matriz de transformação de DH, conforme é apresentado na Equação 2.5. [ ][ ][ ][ ] (2.5) [ ] Onde: e = Constantes; = Variável de junta para uma junta rotativa. As juntas prismáticas possuem uma característica diferente, portanto sua matriz de transformação é representada pela Equação 2.6.
  • 39 [ ] (2.6) Onde: e α = Constantes; = Junta prismática variável; 2.9.2 Cinemática Inversa As juntas de um robô precisam ter um movimento de referência (angular) para um dado movimento de referência do elemento terminal, em outras palavras, encontrar os ângulos de juntas partindo das referências do objeto a ser capturado pelo manipulador. Os métodos analíticos e numéricos iterativos trazem soluções para obtenção da inversão do modelo geométrico. Quando a definição do modelo de DH traz a maioria de seus resultados nulos, ou seja, quando se tem um robô simples, o método analítico é mais indicado, pois apresenta todas as soluções possíveis. O método numérico iterativo conduz para uma solução entre todas as existentes. Dentre os métodos numéricos iterativos tem-se o método recursivo, que faz uso do cálculo do modelo geométrico direto da matriz jacobiana inversa, [19]. 2.10 POTENCIÔMETRO O potenciômetro é uma resistência elétrica com precisão elevada que possui três terminais, sendo dois destes ligados a duas entradas de tensão do circuito elétrico e o terceiro terminal, ligado à saída do circuito, é ajustável ao longo de um elemento da resistência situado entre os dois terminais fixos, dividindo deste modo a resistência em duas componentes (Figura 21). O potenciômetro é utilizado para variar a tensão aplicada no circuito, uma vez que a posição do terminal móvel determina qual a porcentagem da tensão de entrada que é aplicada neste.
  • 40 Fonte: [30] Figura 21 – Potenciômetros rotativos. O eixo indicado na Figura 21 corresponde ao cursor móvel do potenciômetro. Neste caso, o potenciômetro possui uma volta, o que significa que 100% da resistência correspondem a variar o cursor em 270 graus. Existem outros potenciômetros rotativos que permitem que seja dada mais de uma volta, [30]. 2.11 MOTOR DE PASSO O motor de passo é um dispositivo eletromecânico que tem por objetivo converter pulsos elétricos em movimentos mecânicos gerando variações angulares discretas. A rotação dos motores é diretamente relacionada aos impulsos elétricos que são recebidos. A velocidade de giro do motor é dada pela frequência de pulsos recebidos e o tamanho do ângulo rotacionado é diretamente relacionado com o número de pulsos aplicados, [31]. Este tipo de motor é recomendado para tarefas que necessitem de precisão, podendo ser usado em aplicações onde é necessário controlar fatores tais como: ângulo de rotação, velocidade, posição e sincronismo. Ao contrário da maioria dos motores elétricos, este não exerce torque elevado, é indicado principalmente para impressoras, scanners, robôs, câmeras de vídeo, automação industrial entre outros dispositivos eletrônicos que requerem precisão, [31]. Os motores de passo possuem um número fixo de polos magnéticos que determinam o número de passos por revolução, os mais comuns possuem de 3 a 72 passos, significando que ele leva de 3 a 72 passos/revolução para completar uma volta. Quanto a sua estrutura, podem ser apresentados alguns tipos:
  • 41 A. Relutância Variável: Possui um motor de ferro com múltiplos dentes e um rotor com enrolamentos. A rotação é iniciada quando os dentes do estator são atraídos para os polos deste energizado; B. Imã Permanente: Baixo custo e resolução, este motor possui 48-24 passos/revolução, seu rotor não possui dentes e é construído com imãs permanentes. Se comparado ao motor de relutância variável este motor possui uma melhor característica de torque; C. Híbrido: O custo deste motor é mais alto que do motor de imã permanente por possuir maior desempenho no que se trata de resolução de passo, torque e velocidade. O rotor é multi-dentado e contem um imã permanente ao redor de seu eixo. Este possui 100-400 passos por volta, [31]. Fonte: [31] Figura 22 – Tipos de motores de passo.
  • 42 3 METODOLOGIA O Fluxograma apresentado na Figura 23 exemplifica os passos que serão descritos na metodologia proposta neste trabalho. INÍCIO . Colocar o robô Escolha do objeto Inicializa a câmera na posição inicial (azul ou vermelho) para captura da pré-definida. via teclado. imagem. Capturar o objeto e Processar a imagem direciona-lo a uma baseada na técnica de posição pré-definida. identificação de limiares Objeto certo Enviar os valores de mensagem sonora potenciômetros para ou na tela = referência dos motores e “OBJETO OK” consequente posicionamento do robô ao objeto. Encontrar o centroide do objeto identificado Fazer a conversão de radianos fornecida pela cinemática inversa para Realizar a transformação graus e referência dos dos pixels da imagem potenciômetros. para unidade conhecida pelo robô (métrica). Determinar os ângulos de junta através da cinemática inversa dada à referência do objeto no volume de trabalho. Fazer a conversão da porta Realizar a cinemática paralela existente para direta para obter a serial. Realizar a posição do robô no comunicação do Arduino espaço. com Matlab . Fonte: do Autor Figura 23 – Fluxograma do processo ®
  • 43 3.1 ESTRUTURA DO BRAÇO ROBÓTICO A estrutura física do manipulador robótico bem como sua interface de acionamento já estavam disponíveis para implementação da visão computacional, resultado de um trabalho anterior [27], onde seu objetivo principal foi a construção física do braço robótico, este trabalho leva como titulo Robô Didático Antropomórfico Controlado via Matlab®. O manipulador robótico possui uma estrutura com três eixos, o deslocamento de cada um destes é realizado por motores de passo e sua referência de posição é dada por potenciômetros. Através do cálculo de momento, de acordo com as forças exercidas nas extremidades do braço, foi calculado o torque necessário dos motores que ficariam acoplados ao ombro e ao cotovelo do mesmo [27]. O torque necessário para o motor acoplado ao ombro foi elevado, pois o mesmo precisa exercer força suficiente para suportar os dois eixos (ombro e cotovelo), necessitando de um torque de 6.606 N/m, enquanto o cotovelo de 1.314 N/m. Todos os cálculos de momento podem ser visualizados em [27]. Para o cotovelo foi adquirido um motor de passo que suporta até 30 Kg.cm, ou 2.94 N/m, o suficiente para trabalhar com a primeira parte do braço. Enquanto para o motor do ombro que possui um torque de 6,606 N/m, foi adquirido um motor reduzido, devido ao tamanho e custo. Este fornece 40 Kg.cm ou 3.922 N/m, podendo operar em pequenos intervalos até 60 Kg.cm ou 6 N/m. A Figura 24 apresenta os eixos com os motores acoplados, ombro a direita e cotovelo a esquerda.
  • 44 2 1 Fonte: [27] Figura 24 – Vista frontal do braço robótico com os motores do cotovelo (1) e ombro (2). O motor responsável pelo giro da base foi acoplado à uma polia de alumínio ao eixo da base e sua transmissão foi feita por uma correia. Este motor está fixado na parte inferior da mesa (Figura 25). A relação polia do motor x polia do eixo, foi de 2:1 para aumentar e garantir a força do motor no giro da base e também para melhorar a precisão dos movimentos [27]. Fonte: [27] Figura 25 – Motor responsável pelo giro da base. Por se tratar de uma estrutura que passou por diversos testes de movimento, a caixa de transmissão do segundo eixo foi danificada, sem reparação. Como mencionado no trabalho [27] o peso que o segundo eixo teria que suportar era elevado, sobrecarregando tanto o motor como o sistema de transmissão.
  • 45 Segundo [27], É (sic) importante frisar, que a redução deste motor opera em seu limite máximo, já que está sendo submetido a cargas mais elevadas que o indicado, e talvez por conta disto a vida útil do mecanismo seja reduzida em grandes proporções. Devido a este problema uma nova estrutura foi elaborada a fim de dar continuidade à metodologia proposta. Para tanto, foi desenvolvido um sistema de transmissão com parafuso rosca sem fim, que é um tipo de engrenagem, onde o movimento circular gerado pelo parafuso movimenta uma coroa ou um pinhão teoricamente sem fim, também foi trocado a estrutura do elo do cotovelo por uma de acrílico, a fim de reduzir o peso. Na Figura 26 é apresentada a nova estrutura. Fonte: do Autor Figura 26 – Nova estrutura do braço robótico. Foram utilizados potenciômetros comuns lineares com resistência de 10KΩ para posicionamento dos motores, estes foram montados em chapa de alumínio e fixados a estrutura de cada eixo (Figura 27).
  • 46 Fonte: [27] Figura 27 – Potenciômetros. A placa que controla os motores do braço robótico é da marca Toshiba® e modelo TB6560AHQ, responsável por fazer o acionamento dos três motores de forma simultânea via porta paralela do computador. Atualmente o controle de acionamento, direção e movimento dos motores estão sendo feitos por este drive e o Matlab®. Inicialmente o controle dos motores era realizado através dos pinos da porta paralela, Passo (STEP), Direção e Habilita. A placa drive utilizada para fazer o controle dos motores não permite comunicação de outra maneira. No projeto citado anteriormente foram descritos problemas em relação à velocidade de processamento alcançada, devido ao uso de computadores com menor capacidade para processar os dados executados no Matlab ®, não usando por completo o desempenho dos motores. Neste contexto, o presente projeto utilizou de comunicação via porta serial, onde o Arduino® ficou como interface entre a placa drive de acionamento e o Matlab, por meio de sua comunicação serial. Para tanto, foram utilizadas nove saídas digitais e o pino de aterramento deste, cada motor utiliza três saídas digitais, (Step, Direção e Habilita). A Tabela 2 estabelece a relação entre porta paralela e as saídas digitais do Arduino®.
  • 47 ® Tabela 2 – Relação da porta paralela e as saídas digitais do Arduino . FUNÇÃO Step Y Direção X Habilita Z Step Z Direção Z Direção Y Habilita Y Step X Habilita X GND CONVERSÃO PORTA PARALELA PARA SERIAL PORTA DIGITAIS PARALELA ARDUINO PINO 1 9 PINO 2 4 PINO 3 7 PINO 4 8 PINO 5 11 PINO 6 5 PINO 7 6 PINO 8 10 PINO 14 3 PINO 24 GND Fonte: do Autor. 3.2 INTERFACE Com as saídas digitais da placa de prototipagem Arduino® conectadas aos respectivos pinos da porta paralela, foi possível estabelecer um protocolo de comunicação serial, para realização desta tarefa foi utilizado o ambiente de computação Matlab® e o ambiente de programação Arduino®. Através do Arduino® e de seu ambiente de programação foram realizadas as leituras das entradas analógicas, que recebe o valor dos três potenciômetros e envia o comando para as saídas digitais, como finalidade de acionamento dos motores. Uma média das entradas analógicas foi executada, a fim de trazer maior confiabilidade da leitura. A Figura 28 ilustra a condição estabelecida para realizar a média das entradas analógicas.
  • 48 Fonte: do Autor Figura 28 – Média das entradas analógicas. A referência obtida pelo potenciômetro resultará no posicionamento do motor, desta forma é preciso estabelecer uma condição que receba a leitura da posição do potenciômetro e envie a posição desejada. Na Figura 29 é apresentada a rotina responsável por acionar um dos motores em sentido horário e anti-horário, conforme o posicionamento do potenciômetro no respectivo eixo. Fonte: do Autor Figura 29 – Sentido de giro e velocidade do motor. Sendo RX: Referência para fazer o sentido do giro; DX: Direção do giro do motor; SX: Velocidade do motor;
  • 49 Se AX que é a leitura do potenciômetro no respectivo eixo for menor que a referência fornecida, o motor faz o giro para um lado, senão para o outro lado. O mesmo procedimento realizado para o eixo X é realizado no eixo Y e Z. 3.2.1 Comunicação Serial Foi necessário criar dois bytes para receber e enviar os valores de cada potenciômetro, que pode variar de 0 a 1023 (Figura 30). Fonte: do Autor Figura 30 – Criação da serial. O código que recebe os valores desejados dos potenciômetros para posicionamento do braço robótico está no ambiente de programação Matlab®, conforme indicado na Figura 31.
  • 50 Fonte: do Autor ® Figura 31 – Comunicação serial Matlab . Sendo: XA, YA e ZA: Envia valores desejados para posicionamento do braço robótico, com base nos valores dos potenciômetros; “b” e “c”: Formam 2 bytes para enviar os valores de XA para a serial; “d” e “e”: Formam 2 bytes para enviar os valores de YA para a serial; “f” e “g”: Formam 2 bytes para enviar os valores de ZA para a serial; XR, YR e ZR: Recebe a leitura das analógicas com o valor da posição dos potenciômetros.
  • 51 3.3 ACIONAMENTO DA BOBINA Como a estrutura atual do braço robótico não possui efetuador final foi necessário colocar uma bobina na extremidade do cotovelo a fim de imantar a peça que já foi construída com uma chapa de ferro na parte superior. A bobina utilizada possui 700 voltas de enrolamento e a corrente que esta suportada é de aproximadamente 3A, [33]. Desta forma foi elaborado um circuito de acionamento, onde foi utilizado um TIP 120, um resistor de 1KΩ e um diodo roda livre, foi utilizada uma fonte de alimentação 5V/2,5A. A Figura 32 apresenta o circuito responsável por fazer o acionamento. Fonte: do Autor Figura 32 – Circuito de acionamento da bobina. Para acionamento foi feito uso da saída digital 12 do Arduino® e o pino de GND. O comando responsável por ligar e desligar a bobina está incorporado ao código de comando dos motores e comunicação serial (Figura 33).
  • 52 Fonte: do Autor Figura 33 – Código para acionamento da bobina. 3.4 PROCESSAMENTO DE IMAGENS Para a aquisição e processamento de imagens foi desenvolvido um sistema que captura uma foto e faz a sua detecção de limiares. A técnica de limiarização é responsável por agrupar diferentes objetos e regiões da imagem conforme a similaridade de tonalidades entre os mesmos. Através de uma amostra de imagem de cor vermelha e outra de cor azul, foi possível identificar a intensidade luminosa (níveis de cinza) de cada elemento RGB por meio do comando Imtool da toolbox Image Processing do Matlab®, então foi elaborado um range de valores para intensidade luminosa de cada cor e através da varredura de linhas e colunas da matriz que compõe a imagem capturada foi possível identificar o exato local do objeto desejado. Os comandos utilizados para realizar este procedimento são os mesmos para ambas as cores, exceto pelo range de valores, que foi encontrado através da intensidade luminosa de cada cor. Com o comando getsnapshop do Matlab® foi feito a aquisição da imagem em formato RGB, a partir da entrada vid (Figura 34).
  • 53 Fonte: do Autor Figura 34 – Aquisição da imagem em formato RGB. A Figura 35 apresenta a rotina utilizada para fazer a detecção de limiares da imagem. Quando encontrados valores de interesse na imagem capturada, que são definidos pela intensidade luminosa de cada componente RGB, estes são preenchidos com número “1” e o restante da imagem com o número “0”, branco e preto respectivamente. Fonte: do Autor Figura 35 – Detecção de limiares da imagem em formato RGB. Com o comando graythresh seguido de im2bw, da toolbox Image Processing do Matlab® é possível obter os mesmo resultados da rotina citada acima, porém este transforma a imagem em escala de cinza para depois fazer a limiarização, fugindo de um dos objetivos do trabalho, que é fazer o reconhecimento das cores vermelho e azul.
  • 54 A imagem no modelo RGB é apresentada na Figura 36 – a, enquanto b apresenta o resultado obtido pela rotina que faz a detecção de limiares da imagem, transformando esta em binarizada. Fonte: do Autor Figura 36 – Imagem dos objetos de interesse. (a) Imagem no formato RGB. (b) Imagem binarizada. Com o objeto de interesse identificado do restante da imagem, o próximo passo foi encontrar o seu centro geométrico. Para tanto, foi realizado o preenchimento de buracos na imagem binária, através do comando imfill do Matlab®. O centroide do objeto foi encontrado através do comando regionprops, que é responsável por encontrar diversas propriedades de uma imagem, tais como: área, perímetro, centroide, orientação, entre outros. Neste trabalho foi utilizada somente a propriedade que identifica o centroide (Centroid, 1-por-Q vector), descrito por dois elementos, coordenada horizontal (x) e a coordenada vertical (y) do centroide. A Figura 37 apresenta a rotina capaz de identificar o centroide através da imagem binarizada. Fonte: do Autor Figura 37 – Localização do centroide do objeto.
  • 55 As variações da iluminação no ambiente tornam os níveis de intensidade luminosa das componentes RGB instáveis, variando conforme a intensidade de luz no ambiente. A fim de minimizar tais perdas foi realizada a conversão do formato RGB para YIQ, este modelo se baseia na separação dos sinais de cor RGB em um sinal de luminosidade (Y), e dois sinais de cromaticidade ou diferença de cor (I Q). A conversão foi realizada por meio do comando NTSC do Matlab®. Com a conversão do formato é possível trabalhar com um range de valores diferente para cada objeto, agora com as características de luminosidade e cromaticidade separadas em três canais distintos. A rotina que realiza o procedimento é a mesma usada para o modelo RBG, diferenciando apenas na conversão para YIQ e no range de valores para cada cor (Figura 38). Fonte: do Autor Figura 38 – Conversão do modelo de cores RGB para YIQ. A escolha do objeto foi feita via teclado, o usuário deve pressionar (1) para escolher o objeto vermelho e (2) para escolher o objeto azul, conforme ilustra a Figura 39. Fonte: do Autor Figura 39 – Escolha do objeto.
  • 56 3.5 MODELAGEM CINEMÁTICA A evolução no tempo das coordenadas das juntas de um robô representa o modelo cinemático de um sistema articulado no espaço tridimensional. Para facilitar a definição dos parâmetros associados a cada elo, ou também chamado de link, o primeiro passo foi definir os sistemas de coordenadas para cada um destes. A Figura 40 apresenta os sistemas de coordenadas referentes a cada junta de 1 a 3. Fonte: [do Autor] Figura 40 – Sistema de coordenadas para o procedimento de D-H. A simulação da trajetória de movimentos do braço robótico, foi feita através da Toolbox Robotics do Matlab®. Considerando estes sistemas de coordenadas de acordo com a análise de posicionamento e seguindo o algoritmo proposto por Denavit-Hartenberg obtêm-se os parâmetros cinemáticos para cada link, como ilustrado na Tabela 3. Tabela 3 – Parâmetros de Denavit-Hartenberg. LINK1 LINK2 LINK3 Fonte: Do autor THETA 0 0 0 DI 0.47 0 0 AI 0 0.375 0.300 ALPHA pi/2 0 0 R/P 0 0 0 Nome BASE OMBRO COTOVELO
  • 57 A rotina que permite obter a posição do objeto desejado no espaço é apresentada na Figura 41. O comando ikine da toolbox Robotics fornece a posição dentro do volume de trabalho para cada link do braço robótico, com base nas informações das coordenadas X, Y e Z fornecidas em unidade métrica. Fonte: [do Autor] Figura 41 – Configuração da trajetória do braço robótico. A função “Link” é responsável por criar cada elo do braço robótico. Cada Link é composto dos parâmetros definidos no algoritmo de DH. Onde: Theta: Ângulo de junta; Di: Deslocamento do elo; Ai: Comprimento do elo; Alpha: Torção do elo; R/P: Tipo de junta, “0” para rotativa e “1” para prismática; A função “SerialLink” cria o robô com base nos parâmetros definidos para cada link. Para criar a matriz de transformação homogênea (cinemática direta), foi utilizada a função “Transl”, enquanto a cinemática inversa foi definida pela função “R.ikine” com base nos parâmetros da cinemática direta. O modelo robô é plotado no espaço pelo comando “R.plot” (Figura 42).
  • 58 1 Z 0.5 3 2 y x z 0 robot 1 -0.5 -1 1 0.5 1 0.5 0 0 -0.5 Y -1 -0.5 -1 X Fonte: [do Autor] Figura 42 – Modelo robô plotado no espaço. 3.6 CONVERSÃO VALORES DE POTENCIÔMETRO Ao simular a cinemática inversa são retornados valores em radianos da posição que cada link deve assumir no espaço, representados pela variável “qi”, sendo -0.5880 a posição para base, 0.2017 posição para o ombro e 1.4042 do cotovelo. O robô físico deve assumir as distâncias correspondentes ao solicitado nas coordenadas X, Y e Z. Os valores devem ser fornecidos em metros (Figura 43). Fonte: [do Autor] Figura 43 – Posição dos links em radianos. O efetuador final do braço deve parar nas posições solicitadas 30, 20 e 20 cm para X, Y e Z respectivamente. A Figura 44 apresenta a simulação virtual do braço
  • 59 robótico para os valores solicitados, o robô físico deve assumir uma posição semelhante a esta representada na Figura 44. 1 0.5 Z 3 2 x y z 0 robot 1 -0.5 -1 1 0.5 1 0.5 0 0 -0.5 Y -0.5 -1 -1 X .; Fonte: do Autor Figura 44 – Modelo robô nas posições x=30 cm, y=20 cm e z=20 cm. Como a referência para posicionamento do robô foi fornecida pelos valores dos potenciômetros em cada link, foi necessário fazer a conversão de radianos recebidos pelo comando Ikine para graus e em seguida para valor adequado no potenciômetro. A conversão de radianos para graus foi feita pela relação de regra de três, sendo a equação 3.1 realizada para os três links com seus valores respectivos. ( ) 3.1 Onde: kx = Valor recebido do comando Ikine em radiano; 180/π = Relação de conversão de radianos para graus; convradgrX = Recebe o valor da conversão em graus. Para realizar a conversão de graus para os valores de potenciômetro, foi necessário realizar leituras nos três potenciômetros, resgatando o valor em 0º e 90º, para que possa ser feita uma relação de graus e um determinado valor de potenciômetro, por exemplo, se a leitura realizada em 0º for de 700 em valor de potenciômetro e a leitura realizada em 90º for de 378 também em valor de
  • 60 potenciômetro, então a diferença entre estes que foi de 322 fornece o parâmetro de conversão de graus pra valores de potenciômetros, conforme indicado na Equação 3.2. ( ) 3.2 Onde: convradgrX = Recebe o valor da conversão em graus; 322/90 = Relação para transformar graus em valores de potenciômetro; convgrpotX = Recebe o valor da conversão em valores de potenciômetros. 3.7 LOCALIZAÇÃO OBJETO Com o objeto identificado do restante da imagem e com a referência do centroide é possível fornecer parâmetros para identificação da peça em relação à base do braço robótico. O primeiro passo foi fixar a câmera em direção ao volume de trabalho do robô, a Figura 45 apresenta o ponto em que a webcam foi alocada. Ao fixar a câmera neste ponto foi realizada a captura de uma foto a fim de fazer a relação de pixels por unidade métrica. Fonte: do Autor Figura 45 – Posição da câmera (Webcam).
  • 61 A webcam utilizada possui uma resolução de 240 x 320pixels. Do ponto fixo da câmera para esta resolução, foi encontrado o valor de 33 cm em 240pixels, que representa o eixo Y do sistema de coordenadas da câmera e 44 cm em 320 pixels, representando o eixo X (Figura 46). Fonte: do Autor Figura 46 – Referência de pixels por cm. Essa relação permitiu estabelecer o exato ponto do centroide em referência métrica. Se para 320 pixels a referência métrica é de 44 cm, quantos cm serão estabelecidos ao encontrar o centroide. A equação 3.3 expressa a coordenada X da imagem. Será tomado como exemplo o centroide na coordenada X com 50 pixels. ( ) ( ) 3.3 Sendo: Centroids(1) = O centroide do objeto identificado na coordenada X da imagem; 44/320 = Relação de transformação em unidade métrica; 100 = Conversão para valor em metros; ConvertcoordX = Recebe valor em metros do centroide.
  • 62 Centroide na coordenada Y com 103 pixels (Equação 3.4). ( ) 3.4 ( ) Sendo: Centroids(2) = O centroide do objeto identificado na coordenada Y da imagem; 33/240 = Relação de transformação em unidade métrica; 100 = Conversão para valor em metros; ConvertcoordY = Recebe valor em metros do centroide. Após converter os valores em pixels para unidade métrica conhecida pelo braço robótico é necessário cruzar os sistemas de coordenadas deste e da imagem coletada. O braço robótico possui um sistema de coordenadas no plano 3D, sendo necessário trabalhar em X, Y e Z para seu posicionamento. Enquanto a imagem possui um sistema de coordenadas somente no plano 2D, X e Y.
  • 63 Fonte: do Autor Figura 47 – Distância em X e Y até a área de trabalho. A Figura 47 apresenta a distância da base do braço robótico que será tomada como referência para que seja feito a integração dos dois sistemas de coordenadas, até o inicio da área de trabalho, em X e Y. Devido ao posicionamento adotado para realizar a tarefa os sistemas de coordenadas ficaram invertidos (Equação 3.5). – – (3.5) Onde: ConvertcoordY = Recebe valor em metros do centroide em Y; -0.20 = Distância da base do braço robótico até a área de trabalho em Y; coordimgX = Recebe valor que será a referência da coordenada X do braço robótico; ConvertcoordX = Recebe valor em metros do centroide em X; -0.38 = Distância da base do braço robótico até a área de trabalho em X;
  • 64 coordimgY = Recebe valor que será a referência da coordenada Y do braço robótico. Para coordenada Z foi estabelecida uma distância fixa de 10cm, que é a altura do objeto desejado. Como a câmera é fixa e a área de trabalho é estruturada em relação à base do robô, não foi necessário estabelecer relação com o sistema de coordenadas da imagem para esta coordenada.
  • 65 4 RESULTADOS OBTIDOS Os resultados obtidos foram coletados com base na metodologia proposta. Foram realizados diversos testes de movimento do braço robótico por coordenadas absolutas, através da ferramenta Robotics Toolbox do Matlab®, posteriormente foram realizados testes de localização do centroide do objeto, que permitiu validar o funcionamento do processamento de imagens, com os resultados das duas partes de interesse, finalmente foi possível estabelecer uma relação de precisão e repetibilidade dos movimentos do braço robótico baseado em visão computacional. 4.1 MOVIMENTOS DO BRAÇO ROBÓTICO POR COORDENADAS ABSOLUTAS A modelagem do robô foi realizada por meio da ferramenta RoboticsToolbox. Com o auxílio desta é possível criar um modelo robô virtual que é plotado no espaço através do comando teach, este comando possibilita realizar todos os movimentos dentro do volume de trabalho do braço robótico, permitindo variar cada eixo do braço, sendo a base representada por q1, o ombro por q2 e o cotovelo por q3 (Figura 48). O modelo do robô é definido pelos parâmetros de D-H, conforme descrito na metodologia deste trabalho. O robô virtual foi gerado em um ponto inicial referenciado na extremidade do braço, onde foram obtidos os valores de 0.675, 0 e 0.470 para as coordenadas X, Y e Z respectivamente. Esta condição foi adotada no modelo físico, possibilitando obter o correto posicionamento dos eixos.
  • 66 Fonte: do Autor Figura 48 – Simulação virtual do braço robótico. Foram realizados 10 movimentos por coordenadas absolutas. Ao término do movimento foi possível perceber que o gráfico representado pela Figura 48 do modelo robô ficava muito semelhante ao físico. A tabela 4 apresenta os valores coletados nos testes. Tabela 4 – Movimento do braço robótico por coordenadas absolutas. Movimentos 1 2 3 4 5 6 7 8 9 Posição Desejada (cm) X Y Z -40,2 -20,5 10,9 -25 36,9 35,8 30,5 -40,8 40,8 -11,5 24,5 69,8 39,5 29 50,9 -17,8 35 85,8 -9 -35 90 -26,8 -11 91 -15,6 34,7 80,5 Posição Final (cm) X -39,5 -23 31 12,8 38,3 -16,2 -10,1 -27,7 -16,9 Y -18,9 -35 -42 -26,1 27,1 36,2 -36,1 -10,3 33,2 Z 12,3 38 42,5 71 52 85,1 91 89,7 81,4 Erro (cm) X 0,7 2 0,5 1,3 1,2 1,6 1,1 0,9 1,3 Y 1,6 1,9 1,2 1,6 1,9 1,2 1,1 0,7 1,5 Z 1,4 2,2 1,7 1,2 1,1 0,7 1 1,3 0,9
  • 67 10 30,6 28,7 34,5 31,2 29,9 34,7 0,6 1,2 0,2 Fonte: do Autor Tabela 5 – Resultado dos testes de Precisão e Repetibilidade por coordenadas absolutas. PRECISÃO REPETIBILIDADE 85% 90% Fonte: do Autor Como apresentado na Tabela 5 à posição final do braço robótico não teve um resultado perfeito, alcançando aproximadamente 85% de precisão em seu posicionamento final. Os testes realizados sem o uso da visão neste tópico fornecem informações importantes na validação que será realizada posteriormente, na qual a referência das coordenadas X, Y e Z para posicionamento do braço robótico é fornecida pela imagem. 4.2 LOCALIZAÇÃO DO OBJETO Para validar a parte do processamento de imagens, foram coletadas imagens da peça em vários pontos da cena. O objetivo é identificar o objeto pelo método de detecção de limiares e encontrar o seu centroide, conforme descrito na metodologia. A Figura 49 representa a identificação dos objetos vermelho e azul. (a) (b) Fonte: do Autor Figura 49 – Identificação do centroide. (a) – Objeto vermelho. (b) – Objeto azul. Como é possível perceber o ponto centroide é localizado em diversos pontos da imagem para ambos os objetos, alcançando o objetivo proposto na etapa que contempla o processamento de imagens e localização do centroide no objeto.
  • 68 4.3 MOVIMENTOS DO BRAÇO ROBÓTICO POR IMAGEM Os testes de controle de trajetória do braço robótico foram realizados com base na metodologia a fim de medir a repetibilidade e precisão alcançada por este em conjunto com o sistema de visão computacional. A repetibilidade é a capacidade de o efetuador terminal atingir um ponto previamente determinado diversas vezes seguido. Um manipulador robótico com baixa repetibilidade terá como consequência problemas de precisão no posicionamento de sua extremidade. Enquanto a precisão indica o grau de aproximação do órgão terminal com relação a um determinado ponto dentro do volume de trabalho (Figura 50), [32]. Fonte: [32] Figura 50 – Representação de Precisão e Repetibilidade. Os resultados encontrados nos métodos anteriores forneceram parâmetros importantes para realizar os testes de controle de trajetória do braço robótico referenciado por visão computacional. Como foi possível analisar, os resultados de posição por coordenadas absolutas apresentaram alguns erros, devido à baixa precisão dos sensores, enquanto os resultados do processamento de imagens e
  • 69 localização do centroide alcançaram o objetivo de forma satisfatória. Neste contexto, é possível validar as partes que compõe o processo com eficácia. O teste consiste em colocar o objeto de cor vermelha em seis pontos diferentes da área de trabalho, isso possibilitou validar a precisão do sistema. Enquanto a repetibilidade foi analisada executando o movimento quatro vezes para cada ponto. A Figura 51 apresenta a vista superior com o objeto de cor vermelha nos seis pontos que foram testados na área de trabalho. Fonte: do Autor Figura 51 – Vista superior do objeto vermelho. (a) – Ilustração em formato RGB. (b) – Identificação do centroide.
  • 70 Fonte: do Autor Figura 52 – Posicionamento do braço robótico sobre a peça. O processamento de imagens mostrou-se satisfatório e cumpriu o proposto neste projeto, que consistia em encontrar o objeto em qualquer ponto da área de trabalho e detectar o centroide. O posicionamento do braço robótico, não teve perfeição ao término do movimento, apresentando alguns erros, devido aos sensores potenciômetros lineares que foram utilizados. Estes sensores não são os mais indicados para esta finalidade, onde a precisão e repetibilidade do efetuador final devem possuir um índice alto de confiabilidade, [32]. As variações de posicionamento do braço robótico não permitiram que a pega da peça fosse efetuada com sucesso, como os erros variam de 0.5 a 2 cm (Tabela 4) nas três coordenas e a bobina que está acoplada ao efetuador final não possui uma área grande de contato, não foi possível realizar a captura do objeto para todos os casos. Desta forma os resultados coletados foram com base no posicionamento do efetuador final e não na captura da peça. Na Tabela 6 são apresentados os
  • 71 resultados de precisão e repetibilidade do posicionamento do braço robótico por visão computacional. Tabela 6 – Resultados dos testes de Precisão e Repetibilidade por visão computacional. POSIÇÃO PRECISÃO REPETIBILIDADE 1 60% 90% 2 90% 100% 3 90% 100% 4 75% 85% 5 92% 100% 6 90% 95% Fonte: do Autor Os objetivos propostos neste trabalho foram alcançados e os resultados considerados satisfatórios. O objeto para ambas as cores foi encontrado com sucesso na imagem coletada, enquanto o posicionamento do braço referenciado por visão computacional alcançou em alguns casos 100% de repetibilidade.
  • 72 4.4 TRABALHOS FUTUROS Ao longo do desenvolvimento deste projeto foram enfrentadas dificuldades quanto à estrutura física do braço robótico, com isso surge necessidade de melhorias ou até mesmo troca de partes que compõe a estrutura deste, enquanto na parte de tratamento de imagens é possível aprimorar os métodos utilizados. Quanto à estrutura do braço robótico pode-se sugerir a substituição do motor do segundo eixo (ombro) por um motor com maior capacidade de torque, tendo em vista que este já foi dimensionado para suportar uma carga no limite de sua capacidade. Realizar a troca dos sensores potenciômetros por encoders, minimizando os erros no posicionamento do braço. Ainda em sua estrutura sugerese colocar um efetuar final tipo garra. No que diz respeito ao controle de posicionamento do braço robótico a implementação de uma sintonia PID traria mais qualidade aos movimentos. A parte que contempla a visão computacional pode ser aperfeiçoada tanto na estrutura do local quanto no reconhecimento dos objetos. Neste projeto a câmera utilizada foi fixada em um ponto dentro do volume de trabalho do braço robótico, em alguns ambientes que fazem uso de visão computacional existe a necessidade de ter um ambiente estruturado para a aquisição das imagens, como é o caso da inspeção industrial, porém em alguns locais a câmera precisa acompanhar a estrutura que está executando as tarefas. Neste contexto sugere-se trabalhar com a câmera em qualquer ponto da cena ou colocá-la na extremidade do robô. No que se refere ao reconhecimento do objeto pode ser elaborado um sistema que seja capaz de reconhecer formas ou tamanhos deste. Por fim, sugere-se fazer uso da placa Beagle Bone, que é uma plataforma de prototipagem, para executar a leitura dos sensores, processamento de dados e controle dos motores.
  • 73 5 CONCLUSÃO As estatísticas apresentadas ao longo deste trabalho evidenciam que as aplicações que envolvem o uso de imagens tiveram um crescimento acentuado nos últimos anos. A informação que uma única matriz de dados é capaz de fornecer torna os sistemas artificiais de visão uma ferramenta revolucionária em processos industriais, capazes de informar os detalhes ínfimos de uma cena, daí a importância deste segmento na robótica industrial. No decorrer deste projeto foi possível discutir amplamente sobre as duas áreas propostas. Na visão computacional foram abordados assuntos que compreendem desde o princípio construtivo das cores até o processamento de imagens, que apesar de difícil tratamento permitiu a identificação dos pontos de interesse na imagem, avaliados pela cor do objeto desejado. No segmento da robótica foi discutida a importância dos componentes usados para o modelo físico do robô. A escolha das partes que o compõe a estrutura deste deve ser feita criteriosamente, a fim de evitar problemas quanto à precisão, conforme pode ser visto no decorrer deste trabalho. Outro ponto importante, foi a implementação da modelagem cinemática na estrutura física do braço robótico, fazendo a comparação do posicionamento da simulação virtual com o da estrutura real. Do mesmo modo que foi possível mensurar a integração dos sistemas de coordenadas da câmera e do braço robótico. Acrescentam-se ainda as vantagens em utilizar o software de computação Matlab®. Com uma linguagem de fácil entendimento permitiu que o desenvolvedor deste projeto interagisse rapidamente com as suas funcionalidades, além de possuir as ferramentas de auxílio para o processamento de imagens e modelagem cinemática do braço robótico. De uma forma geral os objetivos propostos neste trabalho foram alcançados com sucesso. A aquisição e processamento de imagens foram avaliados pela detecção e binarização do objeto de desejo na cena, ao passo que todas as tomadas de decisão do braço robótico foram referenciadas pela imagem. Por fim, a área da visão computacional aplicada à robótica permitiu um grande aprendizado ao longo do desenvolvimento deste projeto de pesquisa, e certamente abre novas oportunidades para futuros trabalhos.
  • 74 REFERÊNCIAS [1] STIVANELLO, M. E. Inspeção Industrial Através de Visão Computacional. 2004. Dissertação (Bacharelado em Ciência da Computação) – Universidade Regional de Blumenau Centro de Ciências Exatas e Naturais, Blumenau. [2] Imatic Sistemas industriais de Visão. <www.imatic.com.br/svisao.htm> acesso em: 24 mar. 2013. Disponível em [3] VIECILI, E, B; ALCANTRA, M, F; ROMÃO, A; HOUNSELL, M, S; PILLON, M, A; HEINEN, M, R. Desenvolvimento de um Robô Móvel com Visão para Propósitos Educacionais. 2012. Dissertação (Universidade do Estado de Santa Catarina) – Departamento de Ciência da Computação, Joinville. [4] Siemens. Disponível em <www.siemens.com/innovation/en/publikationen/publications_pof/pof_fall_2006/susta inable_city_development/facts_and_forecasts.htm> acesso em 30 mar. 2013. [5] Verband Deutscher Maschinen und em<www.vdma.org> acesso em: 24 mar. 2013. Anlagenbeu [6] European Machine Vision Association <www.emva.org> acesso em: 24 mar. 2013. EMVA. VDMA. Disponível Disponível em [7] Packagers Choose Machine Vision Quality Inspection to Red Waste and Boost ROI. 2010, São Paulo. [8] International Federation Robotics. Disponível em <www.ifr.org> acesso em: 07 abr. 2013. [9] FOREST, R, L. Sistema de Visão Robótica para Reconhecimento de Contornos de Componentes na Aplicação de Processos Industriais. 2006. Dissertação (Universidade Federal do Rio Grande do Sul) – Programa de Pós Graduação em Engenharia Mecânica, Porto Alegre. [10] STEMMER, M, R; ORTH, A; ROLOFF, M, L; DESCHAMPS, F; PAVIM, A, X. Apostila de Sistema de Visão. 2005. Sistemas Industriais Inteligentes, Florianópolis. [11] GONZALEZ, R, C; WOODS, R, E. Processamento de Imagens Digitais. São Paulo: Edgard Blucher Ltda, 2000. [12] GRASSI, M, V. Desenvolvimento e Aplicação de Sistema de Visão para Robô Industrial de Manipulação. 2005. Dissertação (Universidade Federal do Rio Grande do Sul) – Programa de Pós Graduação em Engenharia Mecânica, Porto Alegre. [13] RODRIGUES, D, L. Procedimento Automático para calibração de Sistemas de Visão Robótica para Operações Pick-and-Place. 1997. Dissertação (Divisão de Pós graduação do Instituto Tecnológico de Aeronáutica) – Engenharia Mecânica Aeronáutica, São José dos Campos.
  • 75 [14] Campos, M, F; NETO, V, F. Visão Computacional Calibração de Câmeras. 2007. (Universidade Federal de Minas Gerais) – Departamento de Ciência da Computação, Minas Gerais. [15] FILHO, O, M; NETO, H, V. Processamento Digital de Imagens. Rio de Janeiro: Brasport, 1999. [16] QUEIROZ, J, E; GOMES, H, M. Introdução ao processamento Digital de Imagens. 2001. Artigo (Universidade Federal de Campina Grande) – Departamento de Sistemas da Computação, Campina Grande. [17] Amalgama.blog.br. Disponível em <www.amalgama.blog.br/02/2013/custo-damao-de-obra-crescimento-do-brasil/> acesso em: 31 mai. 2013. [18] A4TECH. Disponível em <www.a4tech.com> acesso em: 27 abr. 2013. [19] ROSÁRIO, J, M. Princípios de Mecatrônica. São Paulo: Pearson, 2006. [20] CORKE, P. Robotics, Vision and Control Fundamental Algorithms in MATLAB®. Brisbane: Springer, 2011. [21] ROMANO, V, F. Robótica Industrial: Aplicação na Indústria da Manufatura e de Processos. Rio de Janeiro: Edgard Blucher, 2002. [22] RODRIGUES, E. Aplicação de Visão Computacional para Extração de Características em Imagem do Olho Humano. 2007. Artigo (Escola de Engenharia de São Carlos, da Universidade de São Paulo) – Curso de Engenharia de Computação com ênfase em Sistemas Embarcados, São Carlos. [23] SCURI, A, E. Fundamentos de Imagens Digitais. 2002. Artigo. (Tecgraf/ PUC – Rio), Rio de Janeiro. [24] ALBUQUERQUE, M, P. Processamento de Imagens: Métodos e Análises. Artigo. Centro Brasileiro de Pesquisas Físicas – CBPF/MCT, Rio de Janeiro. [25] MENDES, R. A Tomografia Computadorizada de Raios X Como Método não Destrutivo de Análise Volumétrica de Concreto: Estudo de Caso em Testemunho de Concreto da Usina Hidroelétrica Mourão. 2010. Artigo. (Universidade Federal do Paraná) - Setor de Tecnologia, Curitiba. [26] MENESES, P, M; ALMEIDA, T. Introdução ao Processamento de Imagens de Sensoriamento Remoto. Brasília: UNB, 2012. [27] BELINI, D, R, T. Robô Didático Antropomórfico Controlado Via MATLAB® 2012. Dissertação. (Faculdade Assis Gurgacz) - Engenharia de Controle e Automação, Cascavel. [28] SILVA, A. C. Algoritmos para Diagnóstico Assistido de Nódulos Pulmonares Solitários em Imagens de Tomografia Computadorizada. PUC – RIO, 2004.
  • 76 [29] MANSSOUR, H, I; COHEN, M. Introdução a Computação Gráfica. Artigo. 2006. Pontifícia Universidade Católica do Paraná - Faculdade de Informática, Porto Alegre. [30] Drexel University Electrical & Computer Engineering. Disponível em <http://www.ece.drexel.edu/courses/ECE-E432/Lab2_Sources.html> acesso em 23 out. 2013. [31] BRITES, G, F; SANTOS, A, P, V. Motor de passo. Artigo. 2008. (Universidade Federal Fluminense) - Centro Tecnológico, Niterói. [32] CARRARA, V. Apostila de Robótica. Precisão e Repetibilidade. 2006. Universidade Braz Cubas, Mogi das Cruzes. [33] LENZ, M, L; ADUR, M. Levitador Magnético. 2012. Faculdade Assis Gurgacz Engenharia de Controle e Automação, Cascavel.
  • 77 APÊNDICE A – Processamento de imagens, cinemática inversa, conversão de valores e envio de comandos para a comunicação serial. Function Mestre = IntegSistema () clearall; clc; closeall; disp('BEM VINDO AO CONTROLE DO BRAÇO ROBÓTICO'); %BRAÇO ROBÓTICO NA POSIÇÃO INICIAL; XA=435; YA=260; ZA=645; disp('funcao'); [XR, YR, ZR] = ComiArdu(XA, YA, ZA, 3); disp('BRAÇO ROBÓTICO NA POSIÇÃO INICIAL') %SELEÇÃO DO OBJETO DE COR VERMELHA OU AZUL; select = input('Digite (1) para escolher objeto vermelho ou (2) para escolher objeto azul: '); closeall; %CAPTURA A FOTO; functionsaida = foto() vid=videoinput('winvideo',1); preview(vid); pause(2); saida=getsnapshot(vid) closepreview(vid); end % LOCALIZAÇÃO OBJETO DE COR AZUL function saida1 = Azul(bimage) saida1=0; image(bimage); rgb2ntsc(bimage);%Converte imagem do formato RGB para formato YIQ. a = rgb2ntsc(bimage); L=240; % Declara linhas da matriz que compõe a imagem; C=320; % Declara colunas da matriz que compõe a imagem; bin= zeros(L,C); % Preenche todas as linhas e colunas com zero; for linha = 1:L % Faz a varredura das linhas que compõe a matriz da imagem; for coluna = 1:C % Faz a varredura das colunas que compõe a matriz da imagem; ca1=alinha,coluna,1); % Separa as linhas e colunas do canal 1 da imagem em formato YIQ; ca2=a(linha,coluna,2); % Separa as linhas e colunas do canal 2 da imagem em formato YIQ; ca3=a(linha,coluna,3); % Separa as linhas e colunas do canal 3 da imagem em formato YIQ; if 0.20 <ca1 && ca1<0.25 && ca2==0 && 0 <ca3 && ca3<0.10 % Range de valoresque compõe o objeto de cor azul em formato YIQ; bin (linha, coluna) = 1; %Preenche o que foi encontrado dentro do range de valores declarado com o número 1. end end end
  • 78 % LOCALIZAÇÃO DO CENTROIDE DO OBJETO AZUL; imtool(bin);% Mostra a imagem com as coordenadas x e y; cent = imfill(bin,'holes'); % Preencheburacosnaimagem; cent1 =regionprops(cent, 'centroid'); centroids = cat(1, cent1.Centroid); imtool(bin); hold(imgca,'on'); plot(imgca,centroids(:,1), centroids(:,2), 'r*'); % Preenche com um ponto vermelho onde foi localizado o conetroide; hold(imgca,'off'); end % LOCALIZAÇÃO DO OBJETO VERMELHO; function saida1 = Vermelho(rimage) saida1=0; image(rimage); rgb2ntsc(rimage); a = rgb2ntsc(rimage); L=240; C=320; bin=zeros(L,C); for linha = 1:L for coluna = 1:C ca1=a(linha,coluna,1); ca2=a(linha,coluna,2); ca3=a(linha,coluna,3); if 0.20 <ca1 && ca1<0.45 && 0.07 <ca2 && ca2<0.45 && 0 <ca3 && ca3<0.12 bin (linha, coluna)=1; end end end % LOCALIZAÇÃO DO CENTROIDE DO OBJETO VERMELHO; imtool(bin); cent = imfill(bin,'holes'); cent1 =regionprops(cent, 'centroid'); centroids = cat(1, cent1.Centroid) imtool(bin); hold(imgca,'on') plot(imgca,centroids(:,1), centroids(:,2), 'r*') hold(imgca,'off') tempimg = foto(); if (select == 1) bincent = Vermelho(tempimg); % Reprodução do áudio; [y, Fs] = wavread('c:vermelho.wav');% Leitura do áudio; sound(y, Fs);% Reprodução do áudio; elseif (select == 2) bincent = Azul(tempimg); % Reprodução do áudio; [y, Fs] = wavread('c:azul.wav'); sound(y, Fs); else disp ('############ cor selecionada inválida ############')
  • 79 end % CONVERSÃO DE PIXELS PARA UNIDADE MÉTRICA convertcoordX= ((centroids(1)*44)/320); % Encontra uma relação entre os 44 cm em X na imagem e os 320 pixels também em X; convertcoordY= ((centroids(2)*33)/240);% Encontra uma relação entre os 33 cm em Y na imagem e os 240 pixels também em Y; % FAZ A RELAÇÃO DOS SISTEMAS DE COORDENADAS; coordimgX= (- convertcoordY - 20)/100;% Relação para coordena Y da imagem e X do braço robótico; coordimgY= (convertcoordX - 38)/100;% Relação para coordena X da imagem e Y do braço robótico; % CINEMÁTICA INVERSA ROBOTICS TOOLBOX; % THETA D A ALPHA L1=Link([0 0.47 0 pi/2 0],'standard'); %BASE L2=Link([0 0 -0.375 0 0],'standard'); %OMBRO L3=Link([0 0 -0.300 0 0],'standard'); %COTOVELO r=SerialLink([L1 L2 L3]); T = transl(coordimgX, coordimgY, 0.074)*trotx(0)*troty(0)*trotz(0); qi = r.ikine(T, [0.775 0 0.47], [1 1 1 0 0 0]); r.plot(qi); qi' %CONVERSÃO DE VALORES EM RADIANOS PARA VALORES EM GRAUS E POSTERIORMENTE EMPOTENCIÔMETROS; k=qi';% Transpor matriz; k(3,:,:);%Separa terceira posição da matriz qi transposta; kx=k(3,:,:); convradgrX=((kx*180)/pi);% Converte radianos para graus; convgrpotX=((convradgrX*322)/90);% Converte graus para valores de potenciômetro; convgrpotX= round(convgrpotX);% Arredonda valor; XA=(645 - convgrpotX)% Desconta valor da posição inicial em potenciômetro; k(2,:,:); ky=k(2,:,:); convradgrY=((ky*180)/pi); convgrpotY=((convradgrY*344)/90); convgrpotY= round(convgrpotY); YA=(260 - convgrpotY) k(1,:,:); kz=k(1,:,:); convradgrZ=((kz*180)/pi); convgrpotZ=((convradgrZ*344)/90); convgrpotZ= round(convgrpotZ); ZA=(310 - convgrpotZ) %LIMITA POSICIONAMENTO DO BRAÇO ROBÓTICO if (XA < 600 && XA > 250) if (YA < 285 && YA > 110) if (ZA < 750 && ZA > 100) disp('funcao'); [XR, YR, ZR] = ComiArduLiga(XA, YA, ZA, 3); % Comunicação serial e acionamento da bobina; else
  • 80 disp('ERRO NA COORDENADA Z (BASE)') end else disp('ERRO NA COORDENADA Y (OMBRO)') end else disp('ERRO NA COORDENADA X (COTOVELO)') end %CAPTURA A PEÇA; pause(15); % Aguarda posicionamento; % Manda para posição que será largado o objeto e mantém bobina acionada; XA=400; YA=250; ZA=785; [XR, YR, ZR] = ComiArduLiga(XA, YA, ZA, 3); pause(10)% Aguarda posicionamento; [XR, YR, ZR] = ComiArduDesliga(XA, YA, ZA, 3); % Desliga a bobina; disp('FIM DA COMUNICAÇÃO') end
  • 81 APÊNDICE B – Comunicação serial function [XR, YR, ZR] = ComiArdu(XA, YA, ZA, WR) %configurando a porta serial s=serial('COM9','Timeout',0.01,'BaudRate',9600); fclose(instrfind); fopen(s); pause(2); %indicandor para arduino que vai escrever depois ler a porta serial fwrite(s, WR); %preparando os pacotes para envio da porta serial com tamanho de 8 bytes XA=num2str(XA); b=str2num(XA(1)); c=str2num(XA(2:3)); YA=num2str(YA); d=str2num(YA(1)); e=str2num(YA(2:3)); ZA=num2str(ZA); f=str2num(ZA(1)); g=str2num(ZA(2:3)); %enviando os pacotes fwrite(s, b); fwrite(s, c); fwrite(s, d); fwrite(s, e); fwrite(s, f); fwrite(s, g); if (WR==3) pause(2); %recebendo os valores das entradas analógicas do arduino e verificando se valores de referencia chegara corretamente R=fscanf(s) XR=str2num(R(2:4))%COTOVELO YR=str2num(R(6:8))%OMBRO ZR=str2num(R(10:12))%BASE end end
  • 82 APÊNDICE C – Controle dos motores, comunicação serial e acionamento da bobina via Arduino®. // Variaveis int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int HX = 3 ; //habilita motor x HY = 4 ; //habilita motor y HZ = 5 ; //habilita motor z DX = 6 ; //direção motor x DY = 7 ; //direção motor y DZ = 8 ; //direção motor z SX = 9 ; //passo motor x SY = 10 ;//passo motor y SZ = 11 ;//passo motor z BOB = 12; AX = 0 ; //pot AY = 0 ; AZ = 0 ; a = 0 ; b = 0 ; c = 0 ; d = 0 ; e = 0 ; f = 0 ; g = 0 ; h = 0 ; j = 0 ; v = 0; RB = 0; RX = 300; RY = 300; RZ = 500; X1 = 0 ; X2 = 0 ; Y1 = 0 ; Y2 = 0 ; Z1 = 0 ; Z2 = 0 ; // Iniciando configurações da rotina void setup() { // Iniciar Saidas Digitais pinMode(HX, OUTPUT); pinMode(HY, OUTPUT); pinMode(HZ, OUTPUT); pinMode(DX, OUTPUT); pinMode(DY, OUTPUT); pinMode(DZ, OUTPUT); pinMode(SX, OUTPUT); pinMode(SY, OUTPUT); pinMode(SZ, OUTPUT); pinMode(BOB, OUTPUT); // Serial Serial.begin(9600); Serial.setTimeout(10);
  • 83 // Iniciarsaidas digitalWrite(HX, HIGH); digitalWrite(HY, HIGH); digitalWrite(HZ, HIGH); digitalWrite(DX, HIGH); digitalWrite(DY, HIGH); digitalWrite(DZ, HIGH); digitalWrite(SX, HIGH); digitalWrite(SY, HIGH); digitalWrite(SZ, HIGH); digitalWrite(BOB, HIGH); } // Rotina em loop void loop() { // Media das portas analogicas AX=0; AY=0; AZ=0; for(h=1;h<21;h++){ AX=AX+analogRead(5); AY=AY+analogRead(3); AZ=AZ+analogRead(0); } b=0; AX=AX/20; AY=AY/20; AZ=AZ/20; // Malha eixo X X1 = RX + 2 ; X2 = RX - 2 ; if (((AX<X2)||(AX>X1))) { if (AX<X2){ digitalWrite(DX, HIGH); } else if (AX>X1){ digitalWrite(DX, LOW); } digitalWrite(SX, LOW); delay(1); digitalWrite(SX, HIGH); } // Malha eixo Y Y1 = RY + 2 ; Y2 = RY - 2 ; if ((AY<Y2)||(AY>Y1)) { if (AY<Y2){ digitalWrite(DY, HIGH); } else if (AY>Y1){ digitalWrite(DY, LOW); } digitalWrite(SY, LOW); delay(1); digitalWrite(SY, HIGH); }
  • 84 // Malha eixo Z Z1 = RZ + 10 ; Z2 = RZ - 10 ; if ((AZ<Z2)||(AZ>Z1)) { if (AZ<Z2){ digitalWrite(DZ, LOW); } else if (AZ>X1){ digitalWrite(DZ, HIGH); } digitalWrite(SZ, LOW); delay(1); digitalWrite(SZ, HIGH); } // AcionamentoBobina if (RB==1){ digitalWrite(BOB, HIGH); } if (RB==3){ digitalWrite(BOB, LOW); } // Serial if (Serial.available()>0) { a = Serial.read(); delay(1000); b = Serial.read(); c = Serial.read(); d = Serial.read(); e = Serial.read(); f = Serial.read(); g = Serial.read(); v = Serial.read(); RB = v; RX = b*100+c; RY = d*100+e; RZ = f*100+g; j= RX+RY+RZ; if (a==3){ // Serial.print(0,DEC); Serial.print('a'); Serial.print(AX,DEC); //Serial.print(0,DEC); Serial.print('a'); Serial.print(AY,DEC); //Serial.print(0,DEC); Serial.print('a'); Serial.print(AZ,DEC); //Serial.print(0,DEC); Serial.print('a'); Serial.print(RX,DEC); //Serial.print(0,DEC); Serial.print('a'); Serial.print(RY,DEC); //Serial.print(0,DEC); Serial.print('a'); Serial.print(RZ,DEC); Serial.print('n'); }
  • 85 if (a==8){ } } }