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
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
Cascavel, 04 de Dezembro de 2013.
____________________________ Ederson Zanchet
Faculdade Assis Gurgacz
____________________________ Vânio da Maia
Faculdade Assis Gurgacz
____________________________ Arthur Schuller da Igreja
Faculdade Assis Gurgacz
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
kg.cm
Centímetros;
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 224 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 Classificação dos objetos
Análise quantitativa e aplicação de ferramenta a outras áreas da ciência
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 utilizado para definir uma vizinhança entre pixels de
coordenadas é usar uma sub-imagem quadrada ou retangular centrada em
, [12]. Um pixel qualquer denominado possui vizinhos horizontais e
verticais com coordenadas , , e para a
chamada 4-vizinhança. As coordenadas , ,
e representam os quatro vizinhos diagonais de . 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 < azul
correspondem ao fundo da imagem, valores em que azul > > vermelho
correspondem a um determinado objeto e > 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.
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].
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].
(2.1)
(2.2)
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].
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.3)
(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
(2.5)
Segundo [19], um ponto qualquer “P” expresso ao sistema de
coordenadas, pode ser expresso no sistema de coordenadas como
com os seguintes itens:
A. Rotação no eixo de um ângulo alinhando o eixo com o
eixo ;
B. Translação de uma distância de ai ao longo do eixo trazendo os
eixos e na coincidência;
C. Translação ao longo do eixo a uma distância de trazendo as
duas origens com o eixo na coincidência;
D. 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.
[
] [
] [
] [
]
[
]
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.
.
Fonte: do Autor
Figura 23 – Fluxograma do processo
Colocar o robô
na posição inicial
pré-definida.
Processar a imagem
baseada na técnica de
identificação de
limiares
Fazer a conversão de
radianos fornecida pela
cinemática inversa para
graus e referência dos
potenciômetros.
Encontrar o
centroide do objeto
identificado
Realizar a transformação
dos pixels da imagem
para unidade conhecida
pelo robô (métrica).
Realizar a cinemática
direta para obter a
posição do robô no
espaço.
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
paralela existente para
serial. Realizar a
comunicação do Arduino
com Matlab®.
Enviar os valores de
potenciômetros para
referência dos motores e
consequente
posicionamento do robô
ao objeto.
Capturar o objeto e
direciona-lo a uma
posição pré-definida.
Escolha do objeto
(azul ou vermelho)
via teclado.
Inicializa a câmera
para captura da
imagem.
Objeto certo
mensagem sonora
ou na tela =
“OBJETO OK”
INÍCIO
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
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.
2
1
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®.
CONVERSÃO PORTA PARALELA PARA SERIAL
FUNÇÃO PORTA
PARALELA DIGITAIS ARDUINO
Step Y PINO 1 9
Direção X PINO 2 4
Habilita Z PINO 3 7
Step Z PINO 4 8
Direção Z PINO 5 11 Direção Y PINO 6 5
Habilita Y PINO 7 6
Step X PINO 8 10
Habilita X PINO 14 3
GND 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.
THETA DI AI ALPHA R/P Nome
LINK1 0 0.47 0 pi/2 0 BASE LINK2 0 0 0.375 0 0 OMBRO LINK3 0 0 0.300 0 0 COTOVELO
Fonte: Do autor
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
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
-1-0.5
00.5
1
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
xz
X
y3
robot1
2
Y
Z
59
robótico para os valores solicitados, o robô físico deve assumir uma posição
semelhante a esta representada na Figura 44.
.; 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.
(
)
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
-1-0.5
0
0.5
1
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
X
robot1
2
zx
3
y
Y
Z
3.1
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.
(
)
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).
3.2
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.
(
)
(
)
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.
3.3
62
Centroide na coordenada Y com 103 pixels (Equação 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.
3.4
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).
– –
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;
(3.5)
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 Posição Desejada (cm)
Posição Final (cm) Erro (cm)
X Y Z X Y Z X Y Z
1 -40,2 -20,5 10,9 -39,5 -18,9 12,3 0,7 1,6 1,4 2 -25 36,9 35,8 -23 -35 38 2 1,9 2,2 3 30,5 -40,8 40,8 31 -42 42,5 0,5 1,2 1,7 4 -11,5 24,5 69,8 12,8 -26,1 71 1,3 1,6 1,2 5 39,5 29 50,9 38,3 27,1 52 1,2 1,9 1,1 6 -17,8 35 85,8 -16,2 36,2 85,1 1,6 1,2 0,7 7 -9 -35 90 -10,1 -36,1 91 1,1 1,1 1 8 -26,8 -11 91 -27,7 -10,3 89,7 0,9 0,7 1,3 9 -15,6 34,7 80,5 -16,9 33,2 81,4 1,3 1,5 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 sugere-
se 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. Disponível em <www.imatic.com.br/svisao.htm> acesso em: 24 mar. 2013. [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/sustainable_city_development/facts_and_forecasts.htm> acesso em 30 mar. 2013. [5] Verband Deutscher Maschinen und Anlagenbeu VDMA. Disponível em<www.vdma.org> acesso em: 24 mar. 2013. [6] European Machine Vision Association EMVA. Disponível em <www.emva.org> acesso em: 24 mar. 2013. [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-da-mao-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 HX = 3 ; //habilita motor x
int HY = 4 ; //habilita motor y
int HZ = 5 ; //habilita motor z
int DX = 6 ; //direção motor x
int DY = 7 ; //direção motor y
int DZ = 8 ; //direção motor z
int SX = 9 ; //passo motor x
int SY = 10 ;//passo motor y
int SZ = 11 ;//passo motor z
int BOB = 12;
int AX = 0 ; //pot
int AY = 0 ;
int AZ = 0 ;
int a = 0 ;
int b = 0 ;
int c = 0 ;
int d = 0 ;
int e = 0 ;
int f = 0 ;
int g = 0 ;
int h = 0 ;
int j = 0 ;
int v = 0;
int RB = 0;
int RX = 300;
int RY = 300;
int RZ = 500;
int X1 = 0 ;
int X2 = 0 ;
int Y1 = 0 ;
int Y2 = 0 ;
int Z1 = 0 ;
int 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)