visao computacional aplicada em um braco robotico didatico

86
FACULDADE ASSIS GURGAGZ DJEILY TAMARA BECKER VISÃO COMPUTACIONAL APLICADA EM UM BRAÇO ROBÓTICO ANTROPOMÓRFICO DIDÁTICO CASCAVEL 2013

Upload: djeily

Post on 24-May-2015

1.340 views

Category:

Education


6 download

TRANSCRIPT

Page 1: Visao computacional aplicada em um braco robotico didatico

FACULDADE ASSIS GURGAGZ

DJEILY TAMARA BECKER

VISÃO COMPUTACIONAL APLICADA EM UM BRAÇO ROBÓTICO ANTROPOMÓRFICO DIDÁTICO

CASCAVEL

2013

Page 2: Visao computacional aplicada em um braco robotico didatico

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

Page 3: Visao computacional aplicada em um braco robotico didatico

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

Page 4: Visao computacional aplicada em um braco robotico didatico

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.

Page 5: Visao computacional aplicada em um braco robotico didatico

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.

Page 6: Visao computacional aplicada em um braco robotico didatico

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®.

Page 7: Visao computacional aplicada em um braco robotico didatico

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®.

Page 8: Visao computacional aplicada em um braco robotico didatico

“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)

Page 9: Visao computacional aplicada em um braco robotico didatico

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.

Page 10: Visao computacional aplicada em um braco robotico didatico

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

Page 11: Visao computacional aplicada em um braco robotico didatico

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

Page 12: Visao computacional aplicada em um braco robotico didatico

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

Page 13: Visao computacional aplicada em um braco robotico didatico

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

Page 14: Visao computacional aplicada em um braco robotico didatico

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

Page 15: Visao computacional aplicada em um braco robotico didatico

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,

Page 16: Visao computacional aplicada em um braco robotico didatico

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.

Page 17: Visao computacional aplicada em um braco robotico didatico

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.

Page 18: Visao computacional aplicada em um braco robotico didatico

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].

Page 19: Visao computacional aplicada em um braco robotico didatico

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].

Page 20: Visao computacional aplicada em um braco robotico didatico

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

Page 21: Visao computacional aplicada em um braco robotico didatico

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

Page 22: Visao computacional aplicada em um braco robotico didatico

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

Page 23: Visao computacional aplicada em um braco robotico didatico

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

Page 24: Visao computacional aplicada em um braco robotico didatico

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].

Page 25: Visao computacional aplicada em um braco robotico didatico

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].

Page 26: Visao computacional aplicada em um braco robotico didatico

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

Page 27: Visao computacional aplicada em um braco robotico didatico

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

Page 28: Visao computacional aplicada em um braco robotico didatico

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.

Page 29: Visao computacional aplicada em um braco robotico didatico

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.

Page 30: Visao computacional aplicada em um braco robotico didatico

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).

Page 31: Visao computacional aplicada em um braco robotico didatico

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)

Page 32: Visao computacional aplicada em um braco robotico didatico

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)

Page 33: Visao computacional aplicada em um braco robotico didatico

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

Page 34: Visao computacional aplicada em um braco robotico didatico

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

Page 35: Visao computacional aplicada em um braco robotico didatico

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.

Page 36: Visao computacional aplicada em um braco robotico didatico

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].

Page 37: Visao computacional aplicada em um braco robotico didatico

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.

Page 38: Visao computacional aplicada em um braco robotico didatico

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).

Page 39: Visao computacional aplicada em um braco robotico didatico

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.

Page 40: Visao computacional aplicada em um braco robotico didatico

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.

Page 41: Visao computacional aplicada em um braco robotico didatico

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:

Page 42: Visao computacional aplicada em um braco robotico didatico

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.

Page 43: Visao computacional aplicada em um braco robotico didatico

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

Page 44: Visao computacional aplicada em um braco robotico didatico

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.

Page 45: Visao computacional aplicada em um braco robotico didatico

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

Page 46: Visao computacional aplicada em um braco robotico didatico

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).

Page 47: Visao computacional aplicada em um braco robotico didatico

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®.

Page 48: Visao computacional aplicada em um braco robotico didatico

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.

Page 49: Visao computacional aplicada em um braco robotico didatico

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;

Page 50: Visao computacional aplicada em um braco robotico didatico

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.

Page 51: Visao computacional aplicada em um braco robotico didatico

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.

Page 52: Visao computacional aplicada em um braco robotico didatico

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).

Page 53: Visao computacional aplicada em um braco robotico didatico

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).

Page 54: Visao computacional aplicada em um braco robotico didatico

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.

Page 55: Visao computacional aplicada em um braco robotico didatico

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.

Page 56: Visao computacional aplicada em um braco robotico didatico

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.

Page 57: Visao computacional aplicada em um braco robotico didatico

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

Page 58: Visao computacional aplicada em um braco robotico didatico

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).

Page 59: Visao computacional aplicada em um braco robotico didatico

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

Page 60: Visao computacional aplicada em um braco robotico didatico

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

Page 61: Visao computacional aplicada em um braco robotico didatico

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

Page 62: Visao computacional aplicada em um braco robotico didatico

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

Page 63: Visao computacional aplicada em um braco robotico didatico

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

Page 64: Visao computacional aplicada em um braco robotico didatico

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)

Page 65: Visao computacional aplicada em um braco robotico didatico

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.

Page 66: Visao computacional aplicada em um braco robotico didatico

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.

Page 67: Visao computacional aplicada em um braco robotico didatico

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

Page 68: Visao computacional aplicada em um braco robotico didatico

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.

Page 69: Visao computacional aplicada em um braco robotico didatico

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

Page 70: Visao computacional aplicada em um braco robotico didatico

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.

Page 71: Visao computacional aplicada em um braco robotico didatico

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

Page 72: Visao computacional aplicada em um braco robotico didatico

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.

Page 73: Visao computacional aplicada em um braco robotico didatico

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.

Page 74: Visao computacional aplicada em um braco robotico didatico

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.

Page 75: Visao computacional aplicada em um braco robotico didatico

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.

Page 76: Visao computacional aplicada em um braco robotico didatico

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.

Page 77: Visao computacional aplicada em um braco robotico didatico

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.

Page 78: Visao computacional aplicada em um braco robotico didatico

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

Page 79: Visao computacional aplicada em um braco robotico didatico

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 ############')

Page 80: Visao computacional aplicada em um braco robotico didatico

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

Page 81: Visao computacional aplicada em um braco robotico didatico

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

Page 82: Visao computacional aplicada em um braco robotico didatico

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

Page 83: Visao computacional aplicada em um braco robotico didatico

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);

Page 84: Visao computacional aplicada em um braco robotico didatico

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);

Page 85: Visao computacional aplicada em um braco robotico didatico

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');

Page 86: Visao computacional aplicada em um braco robotico didatico

85

if (a==8)