92
1 FACULDADE ASSIS GURGACZ HAMILTON JOSE DA SILVA SENA CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIONAL UTILIZANDO O KINECT® CASCAVEL 2011

Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

1

FACULDADE ASSIS GURGACZ

HAMILTON JOSE DA SILVA SENA

CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIONAL UTILIZANDO O KINECT®

CASCAVEL 2011

Page 2: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

2

FACULDADE ASSIS GURGACZ

HAMILTON JOSE DA SILVA SENA

CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIONAL UTILIZANDO O KINECT®

Trabalho apresentado como requisito para obtenção do título de bacharel em Engenharia de Controle e Automação da Faculdade Assis Gurgacz.

Orientador: Arthur Schuler da Igreja

CASCAVEL 2011

Page 3: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

3

FACULDADE ASSIS GURGACZ

HAMILTON JOSE DA SILVA SENA

CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIONAL UTILIZANDO O KINECT®

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.

BANCA EXAMINADORA

____________________________

Arthur Schuler da Igreja Faculdade Assis Gurgacz

____________________________

Ederson Zanchet Faculdade Assis Gurgacz

____________________________

Vânio da Maia Faculdade Assis Gurgacz

Cascavel, ___ de _______________ de 2011

Page 4: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

4

DEDICATÓRIA

Primeiramente dedico este trabalho

a Deus, que me deu forças e

iluminou meu caminho; A minha

esposa Francielli que espera pelo

nosso primeiro filho, por toda a

paciência, compreensão e apoio

incondicional, a minha mãe Sandra

e meus irmãos Alisson, Milene e

Fabio que fazem parte dessa

trajetória e a meus avós Francisca

e Dermeval que hoje estão ao lado

do Pai todo poderoso.

Page 5: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

5

AGRADECIMENTOS

Agradeço em primeiro lugar a Deus que iluminou o meu caminho durante esta

caminhada. Agradeço também a toda minha família em especial a minha mãe, meus

irmãos e minha esposa, que de forma especial e carinhosa me deu força e coragem,

me apoiando nos momentos de dificuldades, quero agradecer também ao Mauricio

Celestino Sena e João Carlos de Souza que acreditaram em mim e me deram a

oportunidade de estar hoje realizando um sonho.

Não posso deixar também de agradecer a todos os professores e em especial ao

meu orientador Arthur Schuler da Igreja de ter aceitado o convite para essa

empreitada e ao coordenador do curso Vânio da Maia que sempre teve um

relacionamento diferenciado com nossa turma.

Não posso deixar de citar também os companheiros de turma e em especial os

amigos Robson Molgaro, Augusto Peruffo, Darlan Dariva e o filhão Andre Fazioni

que sempre estiveram de prontidão nos momentos de dificuldade e alegrias.

Agradecer também a todos os membros da igreja Evangélica Livre que não

deixaram de orar por mim e minha família em especial ao amigo e pastor Sergio. E

não deixando de agradecer de forma grata e grandiosa minhas outras duas mães,

Sonia Dalbosco Sena e Edna Xavier Rego que cuidam de mim como se fosse o

próprio filho delas.

Page 6: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

6

"Através da sabedoria uma casa é construída, e pelo entendimento é estabelecida; através do conhecimento, seus cômodos cheios com tesouros raros e bonitos."

PROV. 24:3-4

Page 7: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

7

RESUMO A robótica, segundo estudos realizados no Japão e EUA, deve ser uma das 10

linhas de pesquisa com mais trabalhos, a nível mundial, nas próximas décadas. O

avanço tecnológico tem permitido a realização de cálculos computacionais

necessários em tempo real, e este fato tem possibilitado que novas descobertas e

aplicações possam ser feitas em sistemas de robótica, tornando essa área uma

fonte quase que inesgotável de pesquisa. Nesse contexto surge a necessidade de

ambientes de testes e simulação onde as ferramentas propiciem potencializar o

conhecimento e a difusão da pesquisa no âmbito da robótica, é nesse âmbito que o

atual trabalho se dedica. Integrando os conhecimentos de robótica com visão

computacional utilizando o Kinect®, considerado por muitos um dos acessórios mais

revolucionário da historia dos videogames.

Palavras chaves: robótica, Kinect®, visão computacional.

Page 8: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

8

ABSTRACT

Robotics, according to studies conducted in Japan and the USA, must be one of the

10 research lines with more published papers worldwide in the coming decades.

Technological advances have allowed the execution of computations required in real

time, and this fact has enabled new discoveries and applications can be made in

robotic systems, making this area an almost inexhaustible source of research. In this

context arises the need for testing and simulation environments where tools

conducive to knowledge leverage and dissemination of research in the field of

robotics, it is in this context that the present study is dedicated. Integrating the

knowledge in robotics with computer vision using the Kinect®, considered by many

one of the most revolutionary accessories in the history of video games.

Keywords: robotics, Kinect ®, computer vision.

Page 9: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

9

LISTA DE ILUSTRAÇÕES Figura 1: Célula de trabalho robotizada .................................................................... 16

Figura 2: Robô Articulado ou Antropomórfico com seu respectivo volume de trabalho. .................................................................................................................................. 18

Figura 3: Relação dos problemas da cinemática direta e inversa. ............................ 20

Figura 4: Braço robô ED-7220C ................................................................................ 25

Figura 5: Os 5 graus de liberdade do Ed-7220C. ...................................................... 25

Figura 6: Vista superior do volume de trabalho do ED-7220C. ................................. 26

Figura 7: Vista lateral do volume de trabalho do ED-7220C. .................................... 26

Figura 9: Unidade controladora ED-MK4, da empresa ED-Laboratory. .................... 28

Figura 10: Bombardeiro Tupolev Tu-4 ....................................................................... 31

Figura 11: Imagem digital e sua matriz correspondente ............................................ 34

Figura 12: Cálculo do centro de área de uma determinada região ............................ 38

Figura 13: Arquitetura básica do Kinect® ................................................................... 42

Figura 14: Resumo da arquitetura básica ................................................................. 42

Figura 15: Campo de visão alcançado pelo Kinect® ................................................. 43

Figura 16: Holograma projetado pelo Kinect® para leitura de profundidade. ............ 44

Figura 17: Método de identificação 3D por luz estruturada. ...................................... 44

Figura 18: Arquitetura da API OpenNI ....................................................................... 47

Figura 19: Arquitetura montada para identificação dos comandos de comunicação do controlador ED-MK4® com o RoboTalk® . ................................................................ 49

Figura 20: Código de comunicação serial do MATLAB com o ED-MK4 .................... 51

Figura 21: Código de inserção do comando "0D" no final de cada instrução de execução. .................................................................................................................. 52

Figura 22: Código de recebimento de dados serial via Matlab .................................. 52

Figura 23: Representação vetorial das juntas do robô ED-7220C ............................ 53

Figura 24: Configuração dos parâmetros de D-H na Robotics Toolbox .................... 54

Figura 25: Representação gráfica do robô ED-7220C via Robotics Toolbox ............ 55

Figura 26: Área de trabalho definida no laboratório de robótica para execução de testes ......................................................................................................................... 56

Figura 27: Cenário de testes completo ...................................................................... 57

Figura 28: Código de captura da imagem RGB e matriz de profundidade. ............... 57

Figura 29: Distancia do Kinect® até área de trabalho do robô .................................. 58

Figura 30: Pré-processamento da imagem vista pelo Kinect® .................................. 59

Figura 31: Comando para corte da figura RGB e de profundidade via Matlab® ....... 60

Figura 32: Código que efetua o espelhamento da imagem RGB e o da matriz de profundidade. ............................................................................................................ 61

Figura 33: Código de identificação do objeto vermelho. ............................................ 61

Figura 34: Identificação do centróide de um objeto. .................................................. 62

Figura 35: Medidas da área de trabalho e distância da base do robô até área de trabalho. .................................................................................................................... 63

Figura 36: Comprimento da área de trabalho ............................................................ 64

Figura 37: Distancia entre o Kinect® e a área de trabalho em visão lateral. ............. 64

Figura 38: Código de controle do eixo da base ......................................................... 67

Figura 39: Tela de controle de busca dos objetos. .................................................... 68

Figura 40: Script de comando para conexão via serial e transpor o sistema de controle do ED-MK4® para modo HOST. ................................................................. 69

Figura 41: Robô virtual criado via Robotic Toolbox atravês do drivebot. ................... 70

Figura 42: Robô ED-7220C® efetuado a pega do objeto. ......................................... 71

Page 10: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

10

Figura 43: Imagem gerada pela câmera RGB do Kinect®. ....................................... 72

Figura 44: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização inferior. ............................................................................ 73

Figura 45: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização central. ............................................................................ 74

Figura 46: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização superior. .......................................................................... 74

Page 11: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

11

SUMÁRIO

1 INTRODUÇÃO ................................................................................................... 12

2 FUNDAMENTAÇÃO TEÓRICA ............................. ............................................ 15

2.1 ROBÓTICA .................................................................................................. 15

2.1.1. Robótica Industrial........................................................................................ 15

2.1.2. Classificação dos robôs ............................................................................... 17

2.1.3. Modelagem Cinemática ................................................................................ 18

2.1.4. Cinemática direta ......................................................................................... 20

2.1.5. Cinemática inversa ....................................................................................... 20

2.1.6. Notação de Denavit-Hartenberg ................................................................... 21

2.1.7. Níveis de Controle Robótico ......................................................................... 22

2.1.8. ED-7220C® .................................................................................................. 24

2.2 ENGENHARIA REVERSA ........................................................................... 30

2.3 VISÃO COMPUTACIONAL .......................................................................... 32

2.3.1. Imagem Digital ............................................................................................. 33

2.3.2. Processamento de Imagem Digital............................................................... 34

2.3.3. Limiarização (Threholding) ........................................................................... 35

2.3.4. Reconhecimento de Objetos ........................................................................ 37

2.3.5. Luz Estruturada ............................................................................................ 39

2.4. KINECT® ...................................................................................................... 41

2.5 MATLAB® ..................................................................................................... 45

2.6 ROBOTICS TOOLBOX ................................................................................ 46

2.7 OPENNI ....................................................................................................... 46

3 METODOLOGIA ....................................... .......................................................... 48

3.1 ENGENHARIA REVERSA DA COMUNICAÇÃO ......................................... 48

3.2 ROBOTICS TOOLBOX ................................................................................ 53

3.3 KINECT® ..................................................................................................... 55

3.4 PROCESSAMENTO DA IMAGEM ............................................................... 59

3.5 REFERENCIA DO PONTO DE VISÃO ........................................................ 63

3.6 CONTROLE DO ROBÔ ED-7220C® ........................................................... 66

4 RESULTADOS E DISCUSSÕES ........................................................................ 69

4.1 COMUNICAÇÃO SERIAL ............................................................................ 69

4.2 ROBOTICS TOOLBOX ................................................................................ 70

4.3 RECONHECIMENTO DO OBJETO ............................................................. 71

5 CONCLUSÃO ......................................... ............................................................ 76

6 REFERÊNCIAS .................................................................................................. 77

ANEXOS ................................................................................................................... 80

Page 12: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

12

1 INTRODUÇÃO

A disciplina de robótica tem o objetivo de prover o conhecimento no

desenvolvimento e análise de modelos de robôs industriais e a programação de

robôs manipuladores, com esse intuito a Faculdade Assis Gurgacz disponibiliza em

seu laboratório de robótica um robô didático, porém esse robô didático desenvolvido

pela empresa coreana ED-Laboratory fornece um software proprietário para

controle, simulação e testes, tendo limitadas opções de integração a outros meios de

controle via software, impedindo assim a interação do robô a projetos criados em

diversas outras disciplinas correlatas.

Esse impedimento estende-se também a própria disciplina de robótica, onde o

ensino da interação do robô com o ambiente é de extrema importância,

principalmente pela concepção de utilização de robôs, onde há a necessidade de ser

flexível na atuação em ambientes dinâmicos de forma robusta e versátil mantendo-

se operacional diante de mudanças em ambientes não estruturados.

Outro problema é a falta de uma plataforma que propicie desenvolvimentos

integrados entre robótica e visão computacional, onde geralmente o ensino fica

restrito a simulações via software, impedindo assim, um modelo que poderia

potencializar a elaboração de trabalhos mais sofisticados na área robótica e no

campo da visão computacional.

A robótica, segundo estudos realizados no Japão e EUA, deve ser uma das

10 linhas de pesquisa com mais trabalhos, a nível mundial, nas próximas décadas.

O avanço tecnológico tem permitido a realização de cálculos computacionais

necessários em tempo real, e este fato tem possibilitado que novas descobertas e

aplicações possam ser feitas em sistemas de robótica, tornando essa área uma

fonte quase que inesgotável de pesquisa.

Page 13: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

13

Nesse contexto surge a necessidade de ambientes de testes e simulação

onde as ferramentas propiciem potencializar o conhecimento e a difusão da

pesquisa no âmbito da robótica, principalmente pelo fato de áreas como a da

inteligência artificial, sistema de controles avançados, sensores e atuadores,

controle de processo, programação, redes, micro controladores, identificação de

sistemas, entre outras, possam unir-se para como foi dito anteriormente propiciar

trabalhos mais sofisticados.

Para permitir a utilização desse trabalho para futuros projetos, serão

disponibilizados comandos via MATLAB® para controle do robô, pois o controle atual

é feito pelo software do fabricante do robô.

Outro ponto que justifica o desenvolvimento desse trabalho é o uso do Kinect®

enquanto sensor (sendo este um sensor por sistema de visão computacional

comercializado como controle para videogames pela empresa Microsoft®), pois para

referenciar um robô, são utilizados inúmeros sensores que em ambientes não

estruturados podem não ser efetivos, e que o Kinect pelo sensoriamento de

profundidade é um passo além dos sistemas de visão computacional que tem esta

restrição.

Com isso, o tema escolhido para esse trabalho, baseia-se na grande

relevância tanto para o ambiente industrial como acadêmico na atual conjuntura

mundial.

O trabalho tem como objetivo desenvolver um sistema que controle o robô

didático ED-7220C através do software MATLAB® efetuando o reconhecimento de

objetos de forma referenciada a partir do Kinect®. Para que o trabalho se conclua

será necessário estabelecer a comunicação com o controlador do robô via software

MATLAB®, elaborando o controle de cinemática inversa do sistema, identificando e

Page 14: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

14

obtendo o posicionamento de objetos através de visão computacional, integrando

assim o sistema de visão computacional com o controle do robô.

Page 15: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

15

2 FUNDAMENTAÇÃO TEÓRICA

2.1 ROBÓTICA

2.1.1. Robótica Industrial

O termo robô foi originalmente utilizado em 1921 pelo dramaturgo tcheco

Karen Capek, na peça teatral “Os Robôs Universais de Russum (R.U.R.)” como

referência a um autômato que acaba rebelando-se contra o ser humano. Robô

deriva da palavra "robota" de origem eslava, que significa "trabalho forçado". Na

década de 40, o escritor Isaac Asimov tornou popular o conceito de robô como uma

máquina de aparência humana não possuidora de sentimentos, onde seu

comportamento seria definido a partir de programação feita por seres humanos, de

forma a cumprir determinadas regras éticas de conduta. O termo robótica foi criado

por Asimov para designar a ciência que se dedica ao estudo dos robôs e que se

fundamenta pela observação de três leis básicas:

– Um robô não pode fazer mal a um ser humano e nem consentir,

permanecendo inoperante, que um ser humano se exponha a situação de

perigo;

– Um robô deve obedecer sempre às ordens de seres humanos, exceto em

circunstâncias em que estas ordens entrem em conflito com a primeira lei;

– Um robô deve proteger a sua própria existência, exceto em circunstâncias

que entrem em conflito com a primeira e a segunda lei [1].

Segundo a Robotic Industries Association (RIA), robô industrial é definido

como um "manipulador multifuncional reprogramável projetado para movimentar

Page 16: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

16

materiais, partes, ferramentas ou peças especiais, através de diversos movimentos

programados, para o desempenho de uma variedade de tarefas” [2].

Uma definição mais ampla é apresentada pela norma ISO (International

Organization for Standardization) 10218, como sendo: "uma máquina manipuladora

com vários graus de liberdade controlada automaticamente, reprogramável,

multifuncional, que pode ter base fixa ou móvel para utilização em aplicações de

automação industrial" [1], conforme é mostrado na Figura 1.

Um robô industrial é formado pela integração dos seguintes componentes:

Manipulador mecânico: refere-se ao aspecto mecânico e estrutural do robô.

– Elos;

– Juntas;

– Sistema de transmissão;

Fonte [15] Figura 1: Célula de trabalho robotizada

Page 17: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

17

Atuadores: São componentes que convertem energia elétrica, hidráulica ou

pneumática, em potência mecânica.

– Atuadores hidráulicos e pneumáticos;

– Atuadores eletromagnéticos;

Sensores: Fornecem parâmetros sobre o comportamento do manipulador.

Unidade de controle: Responsável pelo gerenciamento e monitoração dos

parâmetros operacionais do robô.

Unidade de potência: É responsável pelo fornecimento de potência

necessária à movimentação dos atuadores.

Efetuador: É o elemento de ligação entre o robô e o meio que o cerca.

2.1.2. Classificação dos robôs

Os robôs industriais podem ser classificados de acordo com o numero de

juntas, o tipo de controle, o tipo de acionamento, e a geometria. É usual classificar

os robôs de acordo como o tipo de junta, ou, mais exatamente, pelas 3 juntas mais

próximas da base do robô. Também pode ser classificada em relação ao espaço de

trabalho, ao grau de rigidez, a extensão de controle sobre o curso do movimento e

de acordo com as aplicações adequadas ou inadequadas a eles.

– Robô de Coordenadas Cartesianas;

– Robô de Coordenadas Cilíndricas;

– Robô de Coordenadas Esféricas;

– Robô SCARA;

– Robô Paralelo;

– E o robô Articulado ou Antropomórfico (caso de estudo desse trabalho);

Page 18: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de

rotação que são simétricas entre si. Este tipo de

mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais

complexa em relação à

tipo de robô e a sua representação do volume de trabalho.

2.1.3.

prismáticas ou rotacionais. Cada par

para um manipulador com N

primeiro elo é

fixados

conhecimento completo das variáveis articulares de um robô

Fonte [16]

Na configuração

eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de

rotação que são simétricas entre si. Este tipo de

mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais

complexa em relação à

tipo de robô e a sua representação do volume de trabalho.

.1.3. Modelagem C

Um manipulador mecânico consiste de elos, conectados por juntas

prismáticas ou rotacionais. Cada par

para um manipulador com N

primeiro elo é

fixados) e no seu último elo é incorporada a sua ferramenta de trabalho. O

conhecimento completo das variáveis articulares de um robô

Fonte [16] Figura 2 :

configuração antropomórfica, existem ao menos três juntas de rotação. O

eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de

rotação que são simétricas entre si. Este tipo de

mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais

complexa em relação às outras

tipo de robô e a sua representação do volume de trabalho.

Modelagem Cinemática

Um manipulador mecânico consiste de elos, conectados por juntas

prismáticas ou rotacionais. Cada par

para um manipulador com N

primeiro elo é à base de sustentação do robô (sistema de coordenadas

) e no seu último elo é incorporada a sua ferramenta de trabalho. O

conhecimento completo das variáveis articulares de um robô

: Robô Articulado ou Antropomórfico com seu res

antropomórfica, existem ao menos três juntas de rotação. O

eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de

rotação que são simétricas entre si. Este tipo de

mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais

s outras configurações

tipo de robô e a sua representação do volume de trabalho.

inemática

Um manipulador mecânico consiste de elos, conectados por juntas

prismáticas ou rotacionais. Cada par

para um manipulador com N graus de liberdade têm

base de sustentação do robô (sistema de coordenadas

) e no seu último elo é incorporada a sua ferramenta de trabalho. O

conhecimento completo das variáveis articulares de um robô

Robô Articulado ou Antropomórfico com seu res

antropomórfica, existem ao menos três juntas de rotação. O

eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de

rotação que são simétricas entre si. Este tipo de

mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais

configurações

tipo de robô e a sua representação do volume de trabalho.

Um manipulador mecânico consiste de elos, conectados por juntas

prismáticas ou rotacionais. Cada par junta-elo

graus de liberdade têm

base de sustentação do robô (sistema de coordenadas

) e no seu último elo é incorporada a sua ferramenta de trabalho. O

conhecimento completo das variáveis articulares de um robô

Robô Articulado ou Antropomórfico com seu res

antropomórfica, existem ao menos três juntas de rotação. O

eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de

rotação que são simétricas entre si. Este tipo de configuraçã

mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais

configurações [3]. Na

tipo de robô e a sua representação do volume de trabalho.

Um manipulador mecânico consiste de elos, conectados por juntas

elo constitui um grau de liberdade. Assim,

graus de liberdade têm-se N pares

base de sustentação do robô (sistema de coordenadas

) e no seu último elo é incorporada a sua ferramenta de trabalho. O

conhecimento completo das variáveis articulares de um robô

Robô Articulado ou Antropomórfico com seu res

antropomórfica, existem ao menos três juntas de rotação. O

eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de

configuração é o que permite maior

mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais

]. Na Figura 2 é

tipo de robô e a sua representação do volume de trabalho.

Um manipulador mecânico consiste de elos, conectados por juntas

constitui um grau de liberdade. Assim,

se N pares

base de sustentação do robô (sistema de coordenadas

) e no seu último elo é incorporada a sua ferramenta de trabalho. O

conhecimento completo das variáveis articulares de um robô

Robô Articulado ou Antropomórfico com seu respectivo volume de trabalho.

antropomórfica, existem ao menos três juntas de rotação. O

eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de

é o que permite maior

mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais

é demonstrado

Um manipulador mecânico consiste de elos, conectados por juntas

constitui um grau de liberdade. Assim,

se N pares juntas-elos, onde o

base de sustentação do robô (sistema de coordenadas

) e no seu último elo é incorporada a sua ferramenta de trabalho. O

conhecimento completo das variáveis articulares de um robô q i , determina o

pectivo volume de trabalho.

18

antropomórfica, existem ao menos três juntas de rotação. O

eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de

é o que permite maior

mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais

demonstrado esse

Um manipulador mecânico consiste de elos, conectados por juntas

constitui um grau de liberdade. Assim,

elos, onde o

base de sustentação do robô (sistema de coordenadas inerciais

) e no seu último elo é incorporada a sua ferramenta de trabalho. O

, determina o

pectivo volume de trabalho.

18

antropomórfica, existem ao menos três juntas de rotação. O

eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de

é o que permite maior

mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais

esse

Um manipulador mecânico consiste de elos, conectados por juntas

constitui um grau de liberdade. Assim,

elos, onde o

inerciais

) e no seu último elo é incorporada a sua ferramenta de trabalho. O

, determina o

Page 19: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

19

posicionamento de sua ferramenta no sistema de coordenadas de trabalho. De um

modo geral, os três primeiros graus de liberdade de um robô são responsáveis pelo

posicionamento de sua ferramenta no espaço de tarefas e os restantes pela sua

orientação. Na maioria das aplicações industriais, a programação de tarefas de

robôs, é realizada por aprendizagem, consistindo no movimento individual de cada

junta.

Assim sendo, a programação de trajetórias de um robô torna-se muito fácil,

não necessitando de um conhecimento do modelo, sendo a fase de aprendizagem

basicamente uma operação de armazenamento de uma seqüência de incrementos

necessários para que o conjunto de variáveis articulares determine um

posicionamento final X i , especificado a partir de um perfil de trajetórias fornecido

(robô controlado a partir do sistema de coordenadas de juntas).

Como um robô é controlado através de suas variáveis articulares, a realização

do controle de posição em relação ao sistema de coordenadas cartesianas implicará

no desenvolvimento de metodologias para transformação de coordenadas. A

transformação de coordenadas articulares para cartesianas é normalmente realizada

em tempo real, onde a partir do conjunto de variáveis articulares serão obtidas a

posição e orientação de sua ferramenta [4].

A cinemática de robô manipulador pode ser dividida em dois tipos de

cinemática a cinemática direta e a inversa.

Page 20: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

20

Fonte [7] Figura 3: Relação dos problemas da cinemática direta e inversa.

2.1.4. Cinemática direta

Na cinemática direta deseja-se obter a posição e velocidade do efetuador,

para uma dada posição das articulações, ou seja, programar a cinemática direta de

um manipulador é determinar as relações que exprimem um ponto no espaço

cartesiano, em função de um ponto no espaço das juntas.

2.1.5. Cinemática inversa

Enquanto a cinemática direta resulta no desenvolvimento imediato das

expressões do manipulador, a cinemática inversa procura determinar o conjunto de

valores das juntas que se adéquam a uma dada configuração do espaço operacional

ou cartesiano. A cinemática inversa pode ser vista com o conjunto de processos

para determinar as funções inversas do sistema das expressões da cinemática

direta. [4]

O problema da cinemática inversa é mais difícil que o problema da cinemática

direta, pois não há um procedimento sistemático explícito como o algoritmo DH

conforme [7]. Um resultado disto é que cada robô, ou classe de robôs, tem que ser

Page 21: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

21

tratados separadamente. No entanto, a solução para o problema da cinemática

inversa é mais útil do que da cinemática direta, pois no controle da trajetória do robô

a cinemática inversa se faz necessária para escolha da melhor configuração das

juntas para um movimento de um ponto a outro com o mínimo de esforço, ou seja,

com o movimento de menos juntas possíveis. Além disso, a chave para fazer robôs

mais versáteis implica em usar feedbacks de sensores externos tais como o de

visão. Sensores externos alimentam informações sobre a localização e orientação

de objetos em termos de variáveis do espaço de configuração.

Estas informações são necessárias na determinação dos valores apropriados

das juntas do robô, para que o robô possa realizar determinada tarefa em

locais sujeitos a interferência de outros equipamentos no espaço de trabalho do

robô. Portanto deve-se encontrar o mapeamento da especificação de entrada do

espaço de configuração da ferramenta dentro de uma especificação de saída do

espaço das juntas. Resume-se desta forma o problema da cinemática inversa.

2.1.6. Notação de Denavit-Hartenberg

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. A notação de

Denavit-Hartenberg (DH) é uma ferramenta utilizada para sistematizar a descrição

cinemática de sistemas mecânicos articulados com N graus de liberdade [3].

Aplicadas, as juntas têm de estar numeradas por ordem crescente,

começando pela base do manipulador. Pode ser dividido em 4 etapas fundamentais

que se subdividem em vários passos elementares repetidos parcialmente em ciclos,

consoante o numero de elos do manipulador. Na Tabela 1, é descrito o algoritmo,

Page 22: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

22

admite-se que o manipulador tem n juntas e para ele se definirão n+1 sistemas de

coordenadas, sendo o último associado à mão ou garra. [4]

Tabela 1: Algoritmo de Denavit-Hartenberg para um manipulador com n juntas.

Fonte [4]

2.1.7. Níveis de Controle Robótico

O Controlador é a parte do robô que opera o braço mecânico e mantém

contato com seu ambiente. O dispositivo em si é composto por hardware e software,

combinados para possibilitar ao robô executar suas tarefas.

O controle do robô pode ser dividido em três níveis:

- Controle do acionador: ou controle de cada eixo do robô separadamente;

- Controle da trajetória: ou controle do braço do robô com coordenação entre

os eixos para percorrer a trajetória especificada subdividindo-se em controle ponto-

a-ponto (método utilizado nesse trabalho) e controle continuo;

Page 23: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

23

- Controle de coordenação com o ambiente: é o controle do braço em

coordenação com o ambiente.

Esses níveis podem ser descritos como baixo, intermediário e alto,

respectivamente.

Nesse trabalho foi utilizado o controle de trajetória ponto-a-ponto onde neste

método, o caminho pelo qual o robô precisará passar, até um dado ponto final, é

definido como um conjunto de pontos intermediários. Estes pontos são enviados à

memória do sistema de controle pelo usuário como parte do processo de

aprendizado do robô. O curso de um ponto intermediário a outro não é pré-

determinado e não afeta a implementação da operação principal. Muitos sistemas de

controle de robôs industriais presentes no mercado são deste tipo.

O controle ponto-a-ponto é recomendado para robôs planejados para

executar tarefas em pontos pré-determinados (por exemplo, verter misturas em

moldes, carregar e descarregar partes, ou pontos de soldagem). Onde é necessário

ultrapassar obstáculos em movimento, o operador deve planejar antecipadamente a

introdução de pontos intermediários. Uma modificação mais sofisticada do controle

ponto-a-ponto possibilita a introdução de pontos proibidos no controle de

programação. O programa irá então ser capaz de assegurar que o robô evitará estes

pontos.

O robô pode ser ensinado sobre os pontos de seu trajeto de duas maneiras:

Movendo o robô manualmente para um ponto desejado, gravando este ponto

na memória do robô, e passando para o próximo ponto a ser ensinado - método por

aprendizagem (teach in). Definindo as coordenadas de cada ponto desejado e

gravando-as na memória do robô, sem que este tenha que ser movido fisicamente

para que os pontos sejam aprendidos - método de programação off-line.

Page 24: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

24

Uma vez aprendidos os pontos do trajeto, programas podem ser escritos

direcionando o braço do robô para estes pontos, na ordem desejada,

indiferentemente da ordem em que foram ensinados.

O controle ponto-a-ponto é muito mais barato que o controle por

procedimento contínuo. No entanto, só é apropriado em operações em que o trajeto

entre os pontos definidos não é importante. Para executar caminhos mais

complicados, onde é necessário existir precisão do começo ao fim, o controle por

trajetória contínua deve ser usado.

2.1.8. ED-7220C®

O manipulador robótico ED-7220C ilustrado pela Figura 4 foi desenvolvido

pela empresa coreana ED-Laboratory com fins exclusivamente didáticos. Dentre os

fatores que contribuem para limitação de suas aplicações industriais estão

principalmente às limitações mecânicas de seu volume de trabalho, a baixa

velocidade proporcionada por seus atuadores e reduzida capacidade de carga do

robô.

Page 25: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

25

Fonte [do Autor] Figura 4: Braço robô ED-7220C

Fonte [6]

Figura 5: Os 5 graus de liberdade do Ed-7220C.

O ED-7220C é um robô de orientação vertical e possui cinco graus de

liberdade, ilustrados na Figura 5, sendo três deles reservados para o

posicionamento e dois para a orientação de seu manipulador.

Page 26: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

26

Fonte [6]

Figura 6: Vista superior do volume de trabalho do ED-7220C.

Esta posição refere-se à localização final do manipulador no interior de seu

volume de trabalho, Figuras 6 e 7, após a execução de um movimento e é

determinada através do cálculo cinemático resultante do acionamento dos motores

da base, ombro (shoulder) e cotovelo (elbow).

Fonte [6]

Figura 7: Vista lateral do volume de trabalho do ED-7220C.

As juntas são acionadas através de cinco servo motores de corrente contínua,

sendo o sentido da revolução determinado pela polaridade da voltagem de

operação. Cada motor apresenta um encoder acoplado ao eixo para prover as

informações de posição e velocidade para o efetivo controle em malha fechada. A

Page 27: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

27

movimentação do eixo dos motores faz com que o encoder gere sinais de freqüência

que indicam a duração e o sentido do movimento. A unidade controladora do robô, o

ED-MK4, efetua a leitura destes sinais e calcula a trajetória a ser seguida.

Os encoders do projeto possuem uma resolução que permite o retorno de

valores de -32767 a 32767 posições diferentes, entretanto a construção mecânica

do ED-7220C permite apenas rotações completas na junta do “pulso” do robô,

referentes aos motores B e C. Todas as outras juntas têm limitações mecânicas de

movimento, impedindo a utilização da faixa completa de valores de encoder no

comando de um movimento para os motores do cotovelo, ombro e base, conforme

descrito na Tabela 2.

Tabela 2: Especificações do braço robótico ED-7220C

Fonte [6]

A detecção de sua limitação mecânica nos movimentos está associada

primeiramente há microinterruptores ou microswitches, encontrados juntos aos elos

do robô, entretanto, a unidade controladora é capaz de detectar uma eventual

sobrecarga nos motores.

A estrutura do robô carece de uma proteção externa, tendo suas conexões

das juntas e elos, engrenagens, sensores e motores expostos ao acadêmico. Sua

Número de articulações 5 articulações + garra

Construção Braço articulado na vertical

Transmissão Engrenagens, correia dentada e sem fim

Peso 25kg

Precisão (posição) +/- 0,5mm

Velocidade do movimento Aprox. 100mm/s máximo

Capacidade de carga 1kg

Atuador Servomotor DC (com encoder ótico)

Articulação da base +/- 150 graus

Articulação do ombro +130 graus/ -35 graus

Articulação do cotovelo +/- 130 graus

Rotação da garra 360 graus

Raio máximo de operação 610mm (24,4")

Abertura da garra 65mm (sem borracha: 75mm)

Proteção Sobrecarga de um atuador

Faixa de movimento

Page 28: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

28

mecânica permite também a movimentação de suas juntas enquanto a garra

mantém-se fechada.

2.1.9. ED-MK4

A ED-MK4, Figura 8, é a unidade controladora desenvolvida pela ED-

Labotatory para controlar a movimentação do robô manipulador didático ED-7220C.

Fonte [6]

Figura 8: Unidade controladora ED-MK4, da empresa ED-Laboratory.

Dentre outros componentes, a controladora dispõe de elementos de potência,

terminais de entrada (para sensores), terminais de saída (para atuadores), o IHM

(Interface Homem-Máquina) Teach-Pendant, processadores e circuitos integrados

de memória, permitindo-a armazenar, executar e monitorar rotinas de programação

através das leituras de tensão, velocidade de revolução e aceleração dos servo

motores do robô. As especificações gerais da unidade controladora e seus

componentes são descritos na Tabela 3.

Tabela 3: Especificações da unidade controladora ED-MK4.

Fonte [6]

Terminal de entrada 8 portas e LEDs

Chave de entrada 8 chaves liga/desliga

Terminal de saída 8 portas e LEDs

Processador Processador de 16 bits, controlador do motor de 8 bits, programador manual de 8 bits

Software ED-72C Robo Talk

Page 29: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

29

A programação do robô pode ser feita através de um protocolo de

comunicação serial próprio, onde o usuário utiliza o software RoboTalk no

computador conectado para gerar arquivos “.dat”, contendo as coordenadas

espaciais de cada ponto, e arquivos com extensão “.rt” no qual emprega-se a

linguagem de programação do robô, comandando-o para os pontos no espaço

gravados no arquivo “.dat”, de acordo com a tarefa desejada.

Estas rotinas são executadas através de uma comunicação serial, efetuada

através da interface RS-232 do PC, possibilitando o envio de informações para a

unidade controladora ED-MK4. Alternativamente, a programação pode ser efetuada

diretamente através do Teach-Pendant (controle remoto do robô ED-7220C), no

modo de aprendizado, sendo que a programação é enviada diretamente para a ED-

MK4, não necessitando de um interfaceamento com o computador.

A unidade controladora dispõe de dois modos de comando para efetuar a

movimentação e programação do ED-7220C, sendo eles: o modo de movimentação

livre que, quando selecionado, apresenta a palavra “PLAY” no display do Teach-

Pendant; e o modo de movimentação por software, que apresenta no display a

palavra “HOST”.

Uma das maiores motivações do desenvolvimento deste trabalho foram as

limitações de hardware (do Teach-Pendant) e software (RoboTalk) que impedem a

implementação de projetos como a visão de máquina, o comando via web, controle

com um joystick, geração de trajetórias senoidais, controle através de um software

de simulação, entre outros.

Page 30: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

30

2.2 ENGENHARIA REVERSA

A engenharia reversa é uma atividade que trabalha com um produto existente

(um software, uma peça mecânica, uma placa de computador, entre outros)

tentando entender como este produto funciona, o que ele faz exatamente e como ele

se comporta em todas as circunstâncias. É executada a engenharia reversa quando

é necessário a trocar, modificação de uma peça (ou um software) por outro, com as

mesmas características ou entender como esta funciona no caso de não haver

documentação.

Não há um registro inicial de utilização da engenharia reversa, mas sabe-se

que quando ela surgiu, suas primeiras aplicações foram em equipamentos militares,

para que se alcançasse a superioridade militar, e até mesmo como método de

espionagem. Um exemplo do uso da engenharia reversa ocorreu em 1945, durante

a segunda guerra mundial, três bombardeiros americanos modelo B-29 foram

forçados a aterrissar em território russo. Os soviéticos os desmontaram e estudaram.

Usaram a engenharia reversa para copiar o bombardeiro nos mínimos detalhes. O

resultado foi o bombardeiro Tupolev Tu-4 demonstrado na Figura 9 que voou pela

primeira vez em 19 de maio de 1947. A produção em série do bombardeiro começou

neste mesmo ano.

Page 31: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

31

Fonte [16]

Figura 9: Bombardeiro Tupolev Tu-4

A engenharia reversa por si própria não envolve modificar o sistema analisado

ou criar um novo sistema baseado no sistema analisado. A engenharia reversa é um

processo de exame apenas e não um processo de mudança ou de replicação [5].

É importante destacar que a engenharia reversa pode ser aplicada à qualquer

processo ou sistema sem caracterizar-se ilícita, entretanto, a divulgação de algumas

das informações adquiridas por esta técnica podem estar sujeitas à proteções

autorais e patentes, nestes casos a reprodução ou divulgação das informações

obtidas podem ferir as leis que a protegem.

Por haver o consentimento da empresa acerca das atividades e pesquisas

desenvolvidas, e por não objetivar nada além de atividades de caráter estritamente

disciplinar e educacional, a aplicação da engenharia reversa na comunicação do

robô manipulador didático ED-7220C não se caracteriza como ilícito.

Page 32: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

32

A engenharia reversa também pode ser aplicada para efetuar a detecção de

avarias de sistemas ou ainda no aprendizado de um determinado protocolo de

comunicação [8].

2.3 VISÃO COMPUTACIONAL

Visão se mostra como um dos sentidos mais importantes para a interação de

um agente (humano ou robótico) com o mundo. Visão computacional, também

chamada de entendimento de imagens ou visão de máquinas, descreve a

determinação automática da estrutura e propriedades do ambiente tridimensional no

qual o agente está inserido, ambiente este possivelmente dinâmico, a partir de uma

única ou múltiplas imagens bidimensionais do ambiente. As imagens podem ser

monocromáticas ou coloridas, capturadas por uma ou múltiplas câmaras que, por

sua vez, podem ser estacionárias ou móveis [9].

A estrutura e propriedades a serem extraídas do ambiente podem ser

geométricas (formas, dimensões, localizações de objetos, por exemplo) ou materiais

(cores, texturas, por exemplo). Além disso, se o ambiente estiver mudando durante o

processo de imageamento, deseja-se também inferir a natureza desta mudança,

assim como fazer inferências acerca do futuro. Visão não é uma tarefa simples, uma

vez que o processo de formação de imagens consiste num mapeamento muitos -

para-um: uma grande variedade de superfícies, com diferentes materiais e

condições de iluminação, pode produzir imagens idênticas [10].

De certa forma, pode-se pensar em visão computacional como a tentativa de

“desfazer” parcialmente o processo de formação da imagem, em função disso é

considerado um problema inverso.

Page 33: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

33

Infelizmente, não existe uma inversão própria e correta. No entanto, algumas

restrições podem ser impostas para resolver satisfatoriamente a ambigüidade

inerente ao processo visual. Além disso, o agente não precisa saber “tudo” acerca

do ambiente para poder atuar com sucesso.

Dependendo da aplicação, somente alguns aspectos tornam-se necessários.

Por exemplo, em tarefas de manipulação, as ações de segurar peças, encaixar,

inserir que são realizadas, necessitando somente de informações de forma e

localização das peças a serem manipuladas; em tarefas de navegação, ações como

encontrar caminho livre, evitar obstáculos, calcular velocidade e orientação, que são

necessárias, e assim por diante. Nenhuma destas tarefas requer a determinação da

descrição completa do ambiente para ser realizada com sucesso.

2.3.1. Imagem Digital

Um sinal que tenha um domínio contínuo e uma faixa de variação contínua é

chamado de sinal analógico; já um sinal que tenha um domínio discreto e uma faixa

de variação também discreta é chamado de sinal digital. Imagem Digital é uma

matriz de inteiros, onde cada inteiro representa o brilho da imagem num tempo

discreto e num ponto discreto do plano da imagem [9]. Um ponto desta matriz é

denominado pixel.

A transformação da imagem elétrica numa imagem digital envolve um

processo de amostragem e um de quantização. A amostragem discretiza o domínio

da função imagem, fornecendo a cada ponto discreto o valor da função naquele

ponto. A quantização discretiza a faixa de variação da função, mapeando o valor da

função em cada ponto a um valor dentre vários valores discretos. Tipicamente os

Page 34: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

34

valores discretos assumidos pelos pontos numa imagem monocromática variam de 0

(preto) a 255 (branco). A Figura 10 mostra uma imagem e sua matriz

correspondente.

Fonte [1] Figura 10: Imagem digital e sua matriz correspondente

2.3.2. Processamento de Imagem Digital

O processo de imageamento introduz diversos ruídos e deformações na

informação contida nas imagens digitais. No entanto, esta informação não está

completamente perdida devida à grande redundância espacial existente, isto é,

pixels vizinhos numa imagem apresentam os mesmos (ou quase os mesmos)

parâmetros físicos. Um grande conjunto de técnicas explora esta redundância para

recuperar a informação contida na imagem. Estas técnicas executam

transformações na imagem, procurando extrair parâmetros intrínsecos tais como

descontinuidades de superfícies, distância, orientação de superfícies, entre outros.

Um dos objetivos mais comuns no processamento de imagens consiste em

eliminar ruídos e extrair as bordas (“edges”) contidas numa imagem. Bordas são

curvas no plano de imagem através das quais existe uma “significante” mudança no

brilho [11]. O interesse nas bordas de uma imagem consiste no fato de que elas

correspondem a importantes contornos da cena.

Page 35: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

35

Caso a imagem seja colorida a mesma terá três dimensões onde cada

dimensão da matriz representará uma cor, dentre as cores primarias RGB (

vermelho, verde e azul ).

2.3.3. Limiarização (Threholding)

A limiarização é uma das mais importantes técnicas de segmentação de

imagem. É através dela que se consegue separar os objetos do fundo de uma

determinada imagem. Em uma imagem monocromática, por exemplo, com dois

conjuntos representando a conectividade entre os pixels, facilmente pode-se dizer

que um grupo representa o objeto na imagem e outro grupo, representa o fundo. O

dois grupos foram separados por um limiar T, fazendo com que o conjunto de

conectividade assuma um novo valor, tornando a imagem monocromática em uma

imagem binária. O limiar T pode ser facilmente entendido pela equação 1.

(1)

Onde: ),( yxf é a função que representa a intensidade luminosa na imagem, e

),( yxg , a nova função de luminosidade depois da separação do limiar T.

2.3.4 Método de Otsu

O método de Otsu elege o limiar ótimo maximizando a variância entre classes

Page 36: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

36

(between - class variance) mediante uma busca exaustiva. Há diferentes métodos

para achar o limiar, a maioria deles não dá bons resultados quando se trabalha com

imagens do mundo real devido a presença de ruído, histogramas planos ou uma

iluminação inadequada [26]. Pelo contrário, o método de Otsu foi um dos melhores

métodos de seleção do limiar para imagens do mundo real. No entanto, este método

usa uma busca exaustiva para avaliar o critério para maximizar a variância entre

classes. Á medida que o número de classes de uma imagem aumenta, o método de

Otsu precisa de bem mais tempo para selecionar o limiar multi-nível adequado [2].

A importância do método de Otsu está na forma automática de encontrar o

limiar, isto é, não precisa supervisão humana nem informação prévia da imagem

antes de seu processamento.

O método Otsu, como foi dito, se baseia na escolha do valor de corte que maximize

a medida de variância entre duas partes do histograma separadas por um mínimo

local, ou seja, encontrar T que minimize a função:

(2)

onde:

- )(1 Tq é o número de pixels cuja intensidade é menor que T;

- )(2 Tq o número de pixels com intensidade superior a T;

- )(21 Tδ variância dos pixels cuja intensidade é menor que T;

- )(22 Tδ variância dos pixels cuja intensidade é maior que T;

Page 37: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

37

2.3.4. Reconhecimento de Objetos

Reconhecimento consiste em identificar e determinar a posição e orientação

de cada objeto na cena em relação à câmera e, com as informações adquiridas na

fase de calibração, determinar sua localização em relação a um sistema de

coordenadas do ambiente (ou do robô), para tarefas de manipulação, por exemplo.

Com determinadas técnicas de processamento de imagem regiões podem ser

extraídas da imagem correspondem a objetos de interesse. Assim, propriedades

como área da região, perímetro, compactividade, centróide, distâncias mínima e

máxima, entre outras, são importantes na identificação e na determinação da

posição e orientação dos objetos.

A área A de uma região consiste na somatória dos pixels de um mesmo

rótulo. Para comparar a área da região com a área do objeto imageado num

determinado posicionamento, deve-se ter conhecimento da calibração da câmera,

que dá a relação (unidade de medida da imagem)/(unidade de medida real), além de

relacionar a posição da câmara com a posição do objeto na cena. O perímetro P

pode ser calculado pela somatória dos pixels pertencentes à borda de interesse. A

compactividade C de uma região é definida como sendo a relação:

A

PC

π4

2

= (2)

O centróide, que no caso corresponde ao centro de área, é usado para

determinar a posição dos objetos e é dado por:

A

yxfyX x y

C

),(..∑ ∑= ; (3)

A

yxfyY x y

C

),(...∑ ∑= (4)

Page 38: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

38

sendo A a área, e as somatórias aplicadas à região de interesse. A Figura 11

ilustra este procedimento numa imagem 10x10, com quina superior esquerda sendo

(0,0). A região de interesse encontra-se de (1,2) a (5,8).

Fonte [1] Figura 11: Cálculo do centro de área de uma determinada região

Após a extração dos atributos da imagem, o próximo passo consiste em

corresponder os atributos e informações extraídos da imagem àqueles previamente

armazenados como modelos, numa fase de treinamento do sistema de visão.

A correspondência entre dados extraídos e modelos pode se dar

simplesmente através do uso de um classificador estatístico, permitindo certas

variações estatísticas no processo de comparação. Neste caso, o conjunto de

atributos (do modelo e o extraído da imagem) deve conter elementos em número e

importância significativa para identificar e localizar corretamente cada objeto,

evitando falsos positivos (classificando um objeto como sendo de uma classe

incorreta - diz que é um parafuso quando na verdade trata-se de uma caneta, por

exemplo) e falsos negativos (negando a classe correta na classificação do objeto -

diz que não é um parafuso, quando na verdade trata -se de um parafuso). Pode-se

também realizar um reconhecedor sintático de configuração, onde relações

estruturais são utilizadas, tais como relações entre atributos e/ou segmentos de

bordas.

Page 39: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

39

A fase de treinamento dos sistemas de visão baseados em modelos

normalmente se dá através de treinamento supervisionado, onde objetos conhecidos

são apresentados ao sistema, que extrai automaticamente os atributos e relações e

armazena-os em modelos de cada objeto. Estes modelos também podem ser

fornecidos pelo usuário. No entanto, o melhor seria que o sistema os extraísse

automaticamente, para que se tenha uma garantia maior de que os mesmos

procedimentos serão executados para determinar dados dos modelos e da imagem

da cena, durante a fase de execução. O treinamento do sistema de visão deve ser

realizado sob condições mais próximo possível das condições de operação.

2.3.5. Luz Estruturada

Uma técnica para a obtenção de imagens em 3 dimensões é a reconstrução

com luz estruturada. Um sistema de reconstrução deste é composto por dois

conjuntos de ferramentas principais: um coletor de imagens e um conjunto de

programas computacionais. O coletor de imagens é construído baseado em uma

câmara digital de pequeno formato e um projetor de padrões de luz estruturada.

Estes padrões são projetados sobre a superfície do objeto a ser reconstruído e

capturado pela câmara digital que é solidária ao projetor. O cálculo das coordenadas

3D de pontos da superfície do objeto depende de dois conjuntos de elementos que

devem ser conhecidos: as coordenadas de imagem dos alvos projetados e os

vetores diretores destes padrões, ambos no referencial da imagem.

Na modelagem tridimensional por luz estruturada padrões de luz com

características conhecidas são projetados sobre a superfície do objeto e um

instrumento sensor captura a imagem dos padrões que são distorcidos pela

Page 40: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

40

superfície de projeção. Pela medição desta distorção e pelo conhecimento das

características geométricas (e/ou radiométrica) dos padrões que são projetados

se faz a determinação das coordenadas de pontos que compõem a superfície do

objeto. Para isto, as relações geométricas existentes entre o sensor e os feixes

de raios luminosos do padrão projetado devem ser determinadas. Diferentes

padrões de luz podem ser usados (linhas, grades, círculos, senoidais). O projetor de

padrões simula uma segunda câmera, e torna a reconstrução 3D mais rápida que

no processo fotogramétrico convencional. Um programa computacional específico

processa estes dados e extrai as coordenadas 3D dos padrões projetados.[27]

Page 41: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

41

2.4. KINECT®

Em novembro de 2010 a empresa Microsoft® lançou um acessório para o

videogame Xbox 360® acessório esse, batizado de Kinect® onde o objetivo do

produto é fazer com que o jogador seja capaz de controlar os jogos apenas como o

próprio corpo.

O Kinect® em seu lançamento chegou a marca de 8 milhões de peças

vendidas, entretanto até março de 2011, 10 milhões de exemplares já foram

vendidos no valor de USD 150,00.

A arquitetura básica do Kinect® é formada por um projetor de luz

infravermelha (invisível ao olho humano), uma câmera infravermelha, uma câmera

RGB comum, um conjunto de microfones e um motor, conforme indica a Figura 12.

Sendo a sua interface de dados via USB. Um dos pontos que se destaca no Kinect®

é que esta interface não está criptografada [14], fato que facilitou desde o início sua

utilização fora do XBOX®.

Page 42: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

42

Fonte [17] Figura 12: Arquitetura básica do Kinect®

O Kinect® fornece três informações mediante os seus sensores, são eles:

Fonte [18] Figura 13: Resumo da arquitetura básica

- Image Stream (imagens): cada pixel representando uma cor, resolução de

640x480 pixels em 30 frames por segundo (fps) ou 1280x1024 em um máximo

de 15 fps. É possível obter tanto a imagem da câmera RGB quanto a da câmera

infravermelha;

- Depth Stream (informação de profundidade): cada pixel indicando a

distância do objeto em relação ao aparelho. O aparelho detecta cerca de 2000

Page 43: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

níveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5

aparelho

Fonte [18]

Além da informação de profundidade

pixel faz parte do corpo de um ser humano. O Kinect

corpos humanos em sua visada.

anulação

reconhecimento da fala em inglês.

uma luz infravermelha é projetada

espalhada por pela superfície com rugosidades da ordem do comprimento de onda

incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é

dado o nome de

Figura 1

níveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5

aparelho, conforme é mostrado na Figur

Fonte [18]

m da informação de profundidade

pixel faz parte do corpo de um ser humano. O Kinect

corpos humanos em sua visada.

- Audio

anulação de ruído e eco, o Kinect

reconhecimento da fala em inglês.

Para o mapeamento 3D o

uma luz infravermelha é projetada

espalhada por pela superfície com rugosidades da ordem do comprimento de onda

incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é

dado o nome de

ura 15.

níveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5

conforme é mostrado na Figur

Figura

m da informação de profundidade

pixel faz parte do corpo de um ser humano. O Kinect

corpos humanos em sua visada.

Audio Stream (fluxo de

de ruído e eco, o Kinect

reconhecimento da fala em inglês.

Para o mapeamento 3D o

uma luz infravermelha é projetada

espalhada por pela superfície com rugosidades da ordem do comprimento de onda

incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é

dado o nome de speckle

níveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5

conforme é mostrado na Figur

Figura 14: Campo de visão alcançado pelo Kinect®

m da informação de profundidade

pixel faz parte do corpo de um ser humano. O Kinect

corpos humanos em sua visada.

(fluxo de

de ruído e eco, o Kinect

reconhecimento da fala em inglês.

Para o mapeamento 3D o Kinect

uma luz infravermelha é projetada

espalhada por pela superfície com rugosidades da ordem do comprimento de onda

incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é

speckle. O formato com essa luz é projeta pode ser visualizada pela

níveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5

conforme é mostrado na Figura 14

Campo de visão alcançado pelo Kinect®

m da informação de profundidade também é

pixel faz parte do corpo de um ser humano. O Kinect

áudio): com um conjunto de 4

de ruído e eco, o Kinect® permite a gravação de áudio e o

Kinect® utiliza a tecnologia de luz estruturada onde

uma luz infravermelha é projetada na superfície dos objetos, sendo e

espalhada por pela superfície com rugosidades da ordem do comprimento de onda

incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é

O formato com essa luz é projeta pode ser visualizada pela

níveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5

.

Campo de visão alcançado pelo Kinect®

também é possível retornar

pixel faz parte do corpo de um ser humano. O Kinect

): com um conjunto de 4

permite a gravação de áudio e o

utiliza a tecnologia de luz estruturada onde

na superfície dos objetos, sendo e

espalhada por pela superfície com rugosidades da ordem do comprimento de onda

incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é

O formato com essa luz é projeta pode ser visualizada pela

níveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5

Campo de visão alcançado pelo Kinect®

possível retornar

pixel faz parte do corpo de um ser humano. O Kinect® consegue diferenciar até 6

): com um conjunto de 4

permite a gravação de áudio e o

utiliza a tecnologia de luz estruturada onde

na superfície dos objetos, sendo e

espalhada por pela superfície com rugosidades da ordem do comprimento de onda

incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é

O formato com essa luz é projeta pode ser visualizada pela

níveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5 metros à frente do

possível retornar com exatidão se o

consegue diferenciar até 6

): com um conjunto de 4 microfones e a

permite a gravação de áudio e o

utiliza a tecnologia de luz estruturada onde

na superfície dos objetos, sendo e

espalhada por pela superfície com rugosidades da ordem do comprimento de onda

incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é

O formato com essa luz é projeta pode ser visualizada pela

43

à frente do

com exatidão se o

consegue diferenciar até 6

microfones e a

permite a gravação de áudio e o

utiliza a tecnologia de luz estruturada onde

na superfície dos objetos, sendo essa luz

espalhada por pela superfície com rugosidades da ordem do comprimento de onda

incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é

O formato com essa luz é projeta pode ser visualizada pela

43

à frente do

com exatidão se o

consegue diferenciar até 6

microfones e a

permite a gravação de áudio e o

utiliza a tecnologia de luz estruturada onde

ssa luz

espalhada por pela superfície com rugosidades da ordem do comprimento de onda

incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é

O formato com essa luz é projeta pode ser visualizada pela

Page 44: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

Fonte [do Autor]

Fonte [do Autor]

Fonte [do Autor] Figura

Na Figura

Fonte [do Autor]

Figura 15: Holograma projetado pelo Kinect® para leitura de profundidade.

igura 16 é mostrado com se dá esse método de identificação.

Figura 16

Holograma projetado pelo Kinect® para leitura de profundidade.

é mostrado com se dá esse método de identificação.

16: Método de

Holograma projetado pelo Kinect® para leitura de profundidade.

é mostrado com se dá esse método de identificação.

Método de identificação 3D por luz estruturada.

Holograma projetado pelo Kinect® para leitura de profundidade.

é mostrado com se dá esse método de identificação.

identificação 3D por luz estruturada.

Holograma projetado pelo Kinect® para leitura de profundidade.

é mostrado com se dá esse método de identificação.

identificação 3D por luz estruturada.

Holograma projetado pelo Kinect® para leitura de profundidade.

é mostrado com se dá esse método de identificação.

identificação 3D por luz estruturada.

44

44

Page 45: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

45

2.5 MATLAB®

O Matlab® (MATrix LABoratory) é um poderoso software de computação

numérica, de análise e de visualização de dados, com um propósito bem mais amplo

que o original “laboratório de matrizes”. O Matlab® é um sistema interativo e uma

linguagem de programação para computação técnica e científica em geral [19].

Devido a esses fatores o Matlab® da empresa Mathworks permite a resolução

de vários problemas numéricos, utilizando uma linguagem de alto nível para o

desenvolvimento de algoritmos. Possui diversas funções de tratamento numérico de

alto desempenho, capazes de resolver problemas computacionais de forma mais

eficiente que as tradicionais linguagens de programação, para aumentar a

vantagem, as soluções do Matlab® são expressas de uma forma muito parecida de

como são escritas matematicamente, disponibilizando várias ferramentas que

facilitam e agilizam todo o processo de programação, obtenção de dados e

manipulação dos mesmos, estando totalmente integrado com suas Toolboxes que

fornecem uma enorme variedade de soluções para muitos problemas da engenharia.

Além do ambiente interativo, outra facilidade do Matlab® é a possibilidade de

execução de arquivos texto contendo uma seqüência de instruções definidas pelo

usuário. Esses arquivos texto, que têm extensão '.m', podem ser criados e editados

dentro ou fora do seu ambiente [20].

Page 46: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

46

2.6 ROBOTICS TOOLBOX

A Robotics Toolbox é uma ferramenta computacional de modelagem e

controle de robôs industriais desenvolvida por Peter Corke e disponível sob licença

LGPL.

A Robotics Toolbox proporciona muitas funções úteis para o estudo e

simulação com braço robótico, por exemplo, cinemática, dinâmica e geração de

trajetória. O Toolbox é baseado em um método generalista para representar a

cinemática e a dinâmica dos elos dos manipuladores.

Estes parâmetros são encapsulados em objetos no MATLAB®, onde o objeto

robô pode ser criado pelo usuário para representar qualquer elo do manipulador,

sendo também fornecida uma série de exemplos para estudo de robôs, como o

Puma 560 e o braço de Stanford, entre outros. O Toolbox também fornece funções

para a manipulação e conversão entre tipos de dados, tais como vetores,

transformações homogêneas e unidades geométricas que são necessários para

representação tridimensional tanto para a posição quanto orientação [21].

2.7 OPENNI

OpenNI (Interação Natural Open) é uma multi-linguagem, framework multi-

plataforma que define APIs (Interface de Programação de Aplicativos) para escrever

aplicações utilizando Interação Natural.

O principal objetivo do OpenNI é formar uma API padrão que permite a

integração de diversos sensores, entre eles os de audio e de visão. Com esse

Page 47: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

framework é possivel efetuar a integração com o Matlab

poderosa ferramenta

“APLICAÇÃO” pode ser substituido por MATLAB

Fonte [

framework é possivel efetuar a integração com o Matlab

oderosa ferramenta

Na Figura

“APLICAÇÃO” pode ser substituido por MATLAB

Fonte [22]

framework é possivel efetuar a integração com o Matlab

oderosa ferramenta para controle de sistemas roboticos.

Na Figura 17 é demostrado a arquitetura básica da API, onde a informação de

“APLICAÇÃO” pode ser substituido por MATLAB

framework é possivel efetuar a integração com o Matlab

para controle de sistemas roboticos.

é demostrado a arquitetura básica da API, onde a informação de

“APLICAÇÃO” pode ser substituido por MATLAB

Figura 17 : Arquitetura da API OpenNI

framework é possivel efetuar a integração com o Matlab

para controle de sistemas roboticos.

é demostrado a arquitetura básica da API, onde a informação de

“APLICAÇÃO” pode ser substituido por MATLAB

: Arquitetura da API OpenNI

framework é possivel efetuar a integração com o Matlab

para controle de sistemas roboticos.

é demostrado a arquitetura básica da API, onde a informação de

“APLICAÇÃO” pode ser substituido por MATLAB®.

: Arquitetura da API OpenNI

framework é possivel efetuar a integração com o Matlab® tornando essa junção uma

para controle de sistemas roboticos.

é demostrado a arquitetura básica da API, onde a informação de

: Arquitetura da API OpenNI

tornando essa junção uma

é demostrado a arquitetura básica da API, onde a informação de

47

tornando essa junção uma

é demostrado a arquitetura básica da API, onde a informação de

47

tornando essa junção uma

é demostrado a arquitetura básica da API, onde a informação de

Page 48: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

48

3 METODOLOGIA

3.1 ENGENHARIA REVERSA DA COMUNICAÇÃO

Devido as características da comunicação serial, fez-se necessário o

conhecimento do protocolo utilizado originalmente na comunicação entre o software

RoboTalk e a unidade controladora do robô. Segundo [23] e [24], os parâmetros

dessa comunicação equivalem aos valores listados na Tabela 4.

Tabela 4: Parâmetros de configuração da comunicação serial

Baudrate 9600

Databits 7

Stopbit 2

Parity Odd

RTS On Fonte: [23] e [24].

Entretanto, houve discrepância em alguns parâmetros listados pelas

bibliografias consultadas. Desta forma, a fim de comprovar o correto funcionamento

da comunicação serial envolvida no controle do robô, foram utilizadas técnicas de

engenharia reversa.

A compreensão, por parte da unidade controladora ED-MK4®, dos comandos

que seriam enviados através do Matlab® posteriormente, depende diretamente da

configuração da comunicação estar de acordo com a configuração do protocolo

original, uma vez que, se um parâmetro como o baudrate fosse erroneamente

configurado, acabaria por alterar completamente as características da informação,

invalidando o comando enviado.

Neste trabalho, esta técnica foi aplicada objetivando analisar a formatação e a

seqüência de comandos enviados à ED-MK4® durante o comando do robô e para

monitorar o tráfego da comunicação serial entre a unidade controladora e o

computador conectado foi utilizado o software Free Serial Port Monitor (FSPM) a

Figura 18 demonstra a forma completa de como foi efetuado a identificação dos

comandos.

Page 49: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

49

Fonte: [do Autor] Figura 18: Arquitetura montada para identificação dos comandos de comunicação do controlador ED-

MK4® com o RoboTalk® .

Page 50: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

50

Conforme identificação dos comandos uma tabela (Tabela 5) de códigos pode

ser gerada para utilização no script de controle via Matlab®.

Tabela 5: Comandos do controlador ED-MK4® Comando Descrição Retorno Parâmetro

AS Retorna qual motor está se movendo.

Valor decimal correspondente.

CG Habilita ou desabilita a garra

0 desabilita 1 habilita

TH Coloca o robô em modo HOST

GS Verifica status da garra 1 se fechada 0 se aberta

PA,m Verifica posição atual do motor

Retorna a posição em pulsos do encoder

M=A,B,C,D,E,F

HH Posiciona o robô na posição inicial

MA Movimenta todos os

motores de forma interpolada

MC Move os motores para posição de destino

MS,m Move o motor m para a posição armazenada no

registrador.

M=A,B,C,D,E,F

VC,m,d Seta a velocidade do motor

M = A,B,C,D,E,F – 100 <= d <= 100

GO Abre a garra GC Fecha a garra

Fonte [do Autor]

Após a identificação dos comandos de controle, o próximo passo foi identificar

a configuração correta da serial para controlar o robô via MATLAB. Configuração

essa que é mostrada na Tabela 6.

Page 51: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

51

Tabela 6: Parâmetros de configuração da comunicação serial no MATLAB

Baudrate 9600

Databits 7

Stopbit 2

Parity Odd

Timeout 1000

Requesttosend On

Terminator CR/LF

FlowControl Hardware

DataTerminalReady Off

Fonte: do Autor.

A partir da obtenção dessas informações o script de controle pode ser criado.

Fonte [do Autor] Figura 19: Código de comunicação serial do MATLAB com o ED-MK4

Conforme a Figura 19 observa-se a configuração da serial via script Matlab,

onde caso a conexão não seja bem sucedida o sistema informa o erro e fecha todas

as portas seriais conectada no momento. Conforme o comentário do código, as flags

“Terminator” e “FlowControl” tiveram que ser configuradas para possibilitar a leitura

não só enviar comandos para execução, como também receber informação do

status do robô.

Foi necessário também efetuar a concatenação do código “0D” (onde na

tabela ASCII significa “\r” Carrier return ) no final de cada comando , pois esse

Page 52: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

52

comando informa a controladora que a instrução a ser executada está terminada. Na

Figura 20 pode ser visto esse processo.

Fonte [do Autor] Figura 20: Código de inserção do comando "0D" no final de cada instrução de execução.

Outro ponto importante no script de comunicação é o sistema de leitura, onde

o script aguarda alguma resposta da controladora. Nesse ponto foi necessário

efetuar a leitura como o comando “fread”, pois era necessário definir a quantidade

de bytes a serem lidos para que o script não ficasse em um loop infinito lendo sujeira

da serial. Mesmo com essa técnica foi necessário utilizar o comando “flushinput”

para a cada leitura efetuar a limpeza do canal serial. Na figura 21 é demonstrado o

código de leitura para dois bytes.

Fonte [do Autor] Figura 21: Código de recebimento de dados serial via Matlab

Durante o processo de desenvolvimento do algoritmo percebeu-se a

necessidade de um intervalo de tempo entre os comandos, intervalo esse

encontrado via testes empíricos, onde o valor de 300 milissegundos foi suficiente

para deixar o código robusto para envio de comandos em serie.

Page 53: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

53

3.2 ROBOTICS TOOLBOX

Após definir a comunicação como o robô, o passo subseqüente foi a utilização

do Toolbox Robotics para modelagem e geração de trajetória do robô.

Primeiramente foi definido o modelado cinemático do robô ED-7220C via

parâmetros de modelagem de Denavit-Hanterberg. Na Figura 22 é demonstrada a

vista do robô em forma de vetores de orientação, técnica utilizada para facilitar a

identificação do modelo de D-H.

Fonte [do Autor]

Figura 22: Representação vetorial das juntas do robô ED-7220C

Page 54: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

54

Após aplicar o algoritmo de D-H os parâmetros do modelo cinemático do robô

ficaram da seguinte forma:

Tabela 7: Parâmetros de Denavit-Hartenberg

Links (elos)

(Ângulo de

torção)

ia

(comprimento do

elo em mm)

iθ (Ângulo

de rotação)

id (Deslocamento

da junta em mm)

Nome

1 -90º 0.02 0 0.37 Base

2 0 0.22 0 0 Ombro

3 0 0.22 0 0 Cotovelo

4 -90º 0 0 0 Punho

5 0 0 0 0.080 Rotação

Fonte [do Autor]

Adicionando esses valores na Toolbox é possível verificar a forma como o

robô ficou configurado, na Figura 23 segue os comando executados para geração do

modelo no Robotics Toolbox.

Fonte [do Autor] Figura 23: Configuração dos parâmetros de D-H na Robotics Toolbox

Onde:

Page 55: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

55

A utilização do comando “SerialLink” serve para criação do objeto “robo”, o

comando “transl” executa a matriz homogenia da cinemática direta, o comando

“robo.ikine” executa a cinemática inversa do robô, para as seguintes orientações da

cinemática direta e o comando “robo.plot” gera o gráfico do robô, conforme a Figura

24.

Fonte [do Autor] Figura 24: Representação gráfica do robô ED-7220C via Robotics Toolbox

3.3 KINECT®

Após a definição cinemática do robô, partiu-se para o sistema de

reconhecimento de imagem com o Kinect®.

Page 56: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

56

Inicialmente foi definida a área de trabalho para posicionamento do Kinect®,

na Figura 25 é demonstrada a área de trabalho do robô defina no laboratório de

robótica da faculdade.

Fonte [do Autor] Figura 25: Área de trabalho definida no laboratório de robótica para execução de testes

Page 57: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

57

Na Figura 26 demonstra todo o cenário, especialmente com a posição do Kinect®.

Fonte [do Autor] Figura 26: Cenário de testes completo

Antes de iniciar o trabalho com o Kinect®, foi necessário efetuar a instalação

dos drivers da OpenNI, como também a instalação e configuração dos scripts do

Matlab® criado por Tim Zaman. Para efetuar essas configurações foi utilizado o

tutorial do orientador desse trabalho, encontrado em [25].

O código utilizado para efetuar a captura da imagem RGB e da matriz de

profundidade, pode ser visto na Figura 27.

Fonte [do Autor] Figura 27: Código de captura da imagem RGB e matriz de profundidade.

Page 58: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

58

Onde:

- mxNiCreateContext: é o comando que instancia as configurações existente

no arquivo de configuração ”SamplesConfig.xml”;

- option.adjust_view_point: opção que ajusta o ponto de vista do Kinect®;

- mxNiImage: comando responsável de capturar a imagem RGB e a matriz de

profundidade;

- mxNiDeleteContext: comando responsável de desalocar a memória quer foi

usada na criação dos parâmetros de configuração do Kinect®, caso esse comando

não seja usado o sistema vai rodar somente até quando toda a memória física e

virtual do computador seja alocada, nos testes isso ocorre em 3 tentativa em um

computador com 4GB de memória física;

Conforme informação do manual do Kinect ® a distancia recomenda entre o

Kinect® e o jogador é de no mínimo 1.8m, no caso deste trabalho a distancia do

Kinect® até a área de trabalho que o robô irá atuar é de 2,38m conforme a Figura

28.

Fonte [do Autor] Figura 28: Distancia do Kinect® até área de trabalho do robô

Page 59: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

59

3.4 PROCESSAMENTO DA IMAGEM

Algumas técnicas foram executadas para uma melhor identificação dos

objetos. Como a câmera RGB do Kinect® gera fotos com 640x480 pixel de

resolução, a imagem inicial ficou com muita informação para poder ser processada,

pensando nisso foi efetuado um corte na figura depois da captação da imagem RGB.

Esse corte se deu na parte superior da área de trabalho do robô, com largura de

mesmo tamanho, dessa forma a imagem para ser processada foi reduzida

drasticamente, facilitando o processamento e melhorando o tempo de resposta do

script, na figura 29 é mostrada a visão frontal do cenário de teste, com o local

cortado pelo script representado pelas linhas pontilhadas.

Fonte [do Autor] Figura 29: Pré-processamento da imagem vista pelo Kinect®

Page 60: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

60

O comando utilizado para efetuar esse corte foi o “imcrop” do Matlab® na

figura 30 é mostrado o código referente ao corte da imagem.

Fonte [do Autor] Figura 30: Comando para corte da figura RGB e de profundidade via Matlab®

Onde:

- 303: é a coordenada do pixel no eixo “X”;

- 188: é a coordenada do pixel no eixo “Y”;

- 31 e 18: é o tamanho da figura em pixel;

Esses valores podem ser modificados no momento da calibração da posição

do Kinect®, permitindo assim uma flexibilidade no posicionamento do Kinect® em

relação à área de trabalho.

Como pode ser visto no código, há dois sistemas de corte, o da figura RGB e

o da matriz de valores de profundidade, isso foi feito, pois ao encontrar o centróide

da imagem RGB, é feito a correlação da posição do centróide na matriz de

profundidade.

Para facilitar o calculo do sistema de coordenadas, foi efetuado um

espelhamento da imagem, fazendo com que a posição das peças a serem

identificadas fossem igual à posição real, Na figura 31 é mostrado o código usado

para efetuar esse espelhamento, lembrando sempre que, tudo que foi feito na figura

RGB, teve que ser feito na matriz de profundidade, para que a correlação

dimensional seja preservada.

Page 61: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

61

Fonte [do Autor]

Figura 31: Código que efetua o espelhamento da imagem RGB e o da matriz de profundidade.

A partir desse ponto iniciou-se o processo de reconhecimento dos objetos, a

identificação foi feita pela cor, onde na área de trabalho duas peças de cor azul e

vermelha, foram dispostas em determinada posição dentro do limite da área de

trabalho. Na figura 32 é representado o código de reconhecimento do objeto

vermelho.

Fonte [do Autor]

Figura 32: Código de identificação do objeto vermelho.

Onde:

- imsubtract: comando responsável de subtrair uma imagem de outra, que

neste caso é a subtração de qualquer objeto de cor vermelha do resto da figura.

Com esse comando poderia ser subtraída qualquer imagem com alguma cor

especifica, bastando apenas definir o valor da cor em RGB.

- rgb2gray: comando responsável por transformar a imagem RGB em escala

de cinza.

Page 62: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

62

- graythresh: comando responsável por definir o limite global da imagem

utilizando o método de Otsu.

- im2bw: Converte uma imagem para o formato binário, com base em um

determinado limite, neste caso o limite se dá pelo resultado do comando “graythrest”

multiplicado por fator de 0.9.

- bwareaopen: Remover todos os objetos da imagem com menos de x pixels,

que neste caso deu-se por objetos de 50 pixels.

A partir desse tratamento o resultado é uma imagem binária somente com o

objeto escolhido, neste caso o objeto vermelho, sendo então efetuada a identificação

do centróide do objeto, na Figura 33 segue o código de identificação do centróide.

Fonte [do Autor]

Figura 33: Identificação do centróide de um objeto.

Onde:

- imfill: Preenche regiões com buracos e outras falhas;

- regionprops: comando que extrai as propriedades morfológicas da região a

ser identificada;

Page 63: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

3.5

referenciar o objeto em função da referenc

vista frontal com

convers

calculo dos

Fonte [do Autor]

REFERENCIA DO PONTO DE VISÃO

Depois de identificado o centróide da peça a ser capturada, partiu

referenciar o objeto em função da referenc

vista frontal com

conversão do valor

calculo dos pulsos para o motor de cada junta.

Fonte [do Autor] Figura 34 :

REFERENCIA DO PONTO DE VISÃO

Depois de identificado o centróide da peça a ser capturada, partiu

referenciar o objeto em função da referenc

vista frontal com as medidas da área de trabalho,

o valor da image

pulsos para o motor de cada junta.

: Medidas da área de trabalho e distância da base do robô até área de trabalho.

REFERENCIA DO PONTO DE VISÃO

Depois de identificado o centróide da peça a ser capturada, partiu

referenciar o objeto em função da referenc

as medidas da área de trabalho,

imagem em pixel, para medidas métricas e posteriormente

pulsos para o motor de cada junta.

Medidas da área de trabalho e distância da base do robô até área de trabalho.

REFERENCIA DO PONTO DE VISÃO

Depois de identificado o centróide da peça a ser capturada, partiu

referenciar o objeto em função da referencia da base do robô. Na Figura 3

as medidas da área de trabalho,

em pixel, para medidas métricas e posteriormente

pulsos para o motor de cada junta.

Medidas da área de trabalho e distância da base do robô até área de trabalho.

REFERENCIA DO PONTO DE VISÃO

Depois de identificado o centróide da peça a ser capturada, partiu

ia da base do robô. Na Figura 3

as medidas da área de trabalho, essa informação é

em pixel, para medidas métricas e posteriormente

pulsos para o motor de cada junta.

Medidas da área de trabalho e distância da base do robô até área de trabalho.

Depois de identificado o centróide da peça a ser capturada, partiu

ia da base do robô. Na Figura 3

essa informação é

em pixel, para medidas métricas e posteriormente

Medidas da área de trabalho e distância da base do robô até área de trabalho.

Depois de identificado o centróide da peça a ser capturada, partiu

ia da base do robô. Na Figura 3

essa informação é necessári

em pixel, para medidas métricas e posteriormente

Medidas da área de trabalho e distância da base do robô até área de trabalho.

63

Depois de identificado o centróide da peça a ser capturada, partiu-se para

ia da base do robô. Na Figura 34 segue a

necessária para

em pixel, para medidas métricas e posteriormente o

Medidas da área de trabalho e distância da base do robô até área de trabalho.

63

se para

a

para

o

Page 64: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

Na Fi

trabalho

Fonte [do Autor]

Já a Figura 3

informação é muito importante, pois é com esse valor descontado dos valores

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

até a base

Fonte [do Autor]

Figura 35

trabalho.

Fonte [do Autor]

Já a Figura 36

formação é muito importante, pois é com esse valor descontado dos valores

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

até a base do robô

Fonte [do Autor] Figura

segue a vista superior onde

Figura

6 mostra a distancia do Kinect® até o inicio da área de trabalho, essa

formação é muito importante, pois é com esse valor descontado dos valores

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

do robô, tanto para o eixo “X” como o “Y”.

Figura 36: Distancia entre o Kinect® e a área de trabalho em visão lateral.

segue a vista superior onde

Figura 35: Comprimento da área de trabalho

mostra a distancia do Kinect® até o inicio da área de trabalho, essa

formação é muito importante, pois é com esse valor descontado dos valores

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

, tanto para o eixo “X” como o “Y”.

Distancia entre o Kinect® e a área de trabalho em visão lateral.

segue a vista superior onde

Comprimento da área de trabalho

mostra a distancia do Kinect® até o inicio da área de trabalho, essa

formação é muito importante, pois é com esse valor descontado dos valores

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

, tanto para o eixo “X” como o “Y”.

Distancia entre o Kinect® e a área de trabalho em visão lateral.

segue a vista superior onde se mostra

Comprimento da área de trabalho

mostra a distancia do Kinect® até o inicio da área de trabalho, essa

formação é muito importante, pois é com esse valor descontado dos valores

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

, tanto para o eixo “X” como o “Y”.

Distancia entre o Kinect® e a área de trabalho em visão lateral.

se mostra o comprimento da área de

Comprimento da área de trabalho

mostra a distancia do Kinect® até o inicio da área de trabalho, essa

formação é muito importante, pois é com esse valor descontado dos valores

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

Distancia entre o Kinect® e a área de trabalho em visão lateral.

o comprimento da área de

mostra a distancia do Kinect® até o inicio da área de trabalho, essa

formação é muito importante, pois é com esse valor descontado dos valores

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

Distancia entre o Kinect® e a área de trabalho em visão lateral.

64

o comprimento da área de

mostra a distancia do Kinect® até o inicio da área de trabalho, essa

formação é muito importante, pois é com esse valor descontado dos valores

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

64

o comprimento da área de

mostra a distancia do Kinect® até o inicio da área de trabalho, essa

formação é muito importante, pois é com esse valor descontado dos valores

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

Page 65: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

65

Após aquisição desses dados iniciou-se os cálculos de referencia dos objetos nas

coordenadas “X”, “Y” e “Z”. Para coordenada X, ao encontrar o centróide da imagem

RGB a referencia dele foi relacionada com a matriz de profundidade, para que o

valor de profundidade fosse encontrado, evitando erro de pontos cegos na leitura do

Kinect®, o eixo “Y” da imagem foi definido com um, pois no corte da imagem o topo

da mesma, sempre estará preenchido pelo objeto, conforme a Figura 31.

Como o valor de profundidade lido pelo Kinect® é dado em milímetros e a

modelagem do robô é feita em metros, o calculo para identificar a distancia da peça

referente a base do robô foi:

1000

Prtan2380 ofundidadeciaMatrizDis− (5)

O resultado da equação 4 representa a coordenada no eixo “X”. Para identificar a

medida do eixo “Y” algumas conversões foram necessárias, primeiro foi convertido o

valor do eixo “X” da imagem em RGB de pixel para centímetros, onde:

- Para um total de 33 pixels o valor equivalente é 15cm;

- Como a distancia da base do robô até o inicio da área de trabalho é de 26

cm o resultado da conversão dos pixels é somado a essa medida, por exemplo:

Se o resultado do eixo “X” for igual a 29 pixel a distancia em centímetro é de

13.1818cm, somando isso a 26 cm, tem-se a distancia em centímetros do objeto em

relação a base do robô, mas como é necessário a conversão para metros, divide-se

esse valor por 100. Porém como a variação da peça não ocorre somente em uma

direção reta, é necessário aplicar Pitágoras no valor encontrado para que o

resultado seja real. Abaixo segue a formula de Pitágoras.

Page 66: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

66

222 cba += (6)

Em relação ao eixo “Z”, como os objetos são de tamanhos fixos conhecido,

não foi necessário efetuar nenhum ajuste, pois a partir do posicionamento da garra

definiu-se um deslocamento fixo nessa coordenada.

3.6 CONTROLE DO ROBÔ ED-7220C®

Depois de calculado as distancias e efetuado a cinemática inversa para

descobrir a posição final que a garra deve ficar, foi necessário gerar uma relação

entre o resultado da cinemática inversa e o movimento dos eixos determinados,

entretanto o resultado da cinemática inversa é dado em deslocamento angular.

Como o eixo “Z” era fixo, os únicos elos que precisaram ser movimentados foi

o da base para a movimentação no eixo “X” e o do ombro, determinando o

deslocamento “Y”.

Para converter os valores referentes ao elo da base usou-se a seguinte

equação para o eixo da base:

7052.2

7100 1qi− (7)

Onde:

- 7100: é a total de pulsos necessário para o robô percorrer 150º, angulação

máxima permitida mecanicamente. Como a área de trabalho está apenas em um

quadrante, não foi necessário fazer o range de todo deslocamento angular permitido,

que nesse caso seria 300º;

- qi1: resultado da cinemática inversa para o eixo da base;

- 2.7052: Com o valor passado pela cinemática inversa está em formato de

radianos, esse valor equivale aos 150°;

Page 67: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

67

Para o eixo do ombro, utilizou-se a seguinte equação:

4835.1

3174 2qi× (8)

Onde:

- 3174: total de pulsos possíveis do eixo do ombro;

- qi2: resultado da cinemática inversa para o eixo do ombro;

- 1.4835: Com o valor passado pela cinemática inversa está em formato de

radianos, esse valor equivale aos 85°;

Após essas conversões foi utilizado o script de envio de comando para o robô, onde

na Figura 37 demonstra o fragmento do código para movimentação do eixo da base,

que nesse caso é o motor representado pela letra F.

Fonte [do Autor]

Figura 37: Código de controle do eixo da base

Page 68: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

68

Para acionar a busca do objeto, foi feito uma tela gráfica simples para escolha

de qual objeto pegar, segue a tela na Figura 38.

Fonte [do Autor]

Figura 38: Tela de controle de busca dos objetos.

Page 69: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

69

4 RESULTADOS E DISCUSSÕES

4.1 COMUNICAÇÃO SERIAL

Com o código de envio de comandos para o ED-MK4® via serial pronto, os

testes feitos para determinar a robustez do script deram-se via Command Window

do Matlab®, onde inicialmente é necessário efetuar a conexão via serial e colocar o

robô em modo HOST, na Figura 39 segue o comando que efetua essas duas ações.

Fonte [do Autor] Figura 39: Script de comando para conexão via serial e transpor o sistema de controle do ED-MK4®

para modo HOST.

A taxa de sucesso na movimentação dos motores foi de 100%, em relação ao

tempo de resposta foi necessário apenas adicionar um intervalo de 300ms entre os

comandos, pois isso era uma das restrições do processador do ED-MK4®.

Page 70: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

70

4.2 ROBOTICS TOOLBOX

Os testes feitos com a Toolbox Robotic, ocorreram na relação de verificar se a

modelagem cinemática estava correta e no erro gerado na questão da cinemática

inversa.

Para validação da modelagem foi gerado um robô virtual conforme a Figura

40 via comando da Toolbox Robotics drivebot.

Fonte [do Autor] Figura 40: Robô virtual criado via Robotic Toolbox atravês do drivebot.

Posteriormente foi determinada uma posição para garra a partir dos eixos “X”,

“Y” e “Z”, no robô ED-7220C®, inserindo esses dados na cinemática inversa via

comando ikine, determinaram-se os ângulos de rotação dos motores, que depois foi

inserido no robô virtual, para identificação do posicionamento. Em alguns resultados

desses testes o sistema mostrou até duas soluções onde a primeira deu-se com a

garra posicionada de cima para baixo e a outra com a garra em sentido de

Page 71: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

71

acoplamento lateral. Para passagens desses valores para o robô real, não houve

problema, porque como o eixo “Z” foi colocado de forma fixa, a garra sempre efetuou

o posicionamento de cima para baixo, conforme mostrado na Figura 41.

Fonte [do Autor] Figura 41: Robô ED-7220C® efetuado a pega do objeto.

4.3 RECONHECIMENTO DO OBJETO

Como foi descrito anteriormente o sistema de reconhecimento iniciou-se com

muitos problemas, onde a priori a preparação do ambiente causou muito transtorno,

pois até então o processamento da imagem estava sendo feito com a imagem total

Page 72: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

72

obtida pela câmera RGB que neste caso era uma imagem de 640x480 conforme a

Figura 42.

Fonte [do Autor]

Figura 42: Imagem gerada pela câmera RGB do Kinect®. Para resolver esse problema foi utilizada a técnica de corte descrita na

metodologia desse trabalho, a partir daí, foi gerado um sistema de teste para

verificar a precisão e repetibilidade do robô em conjunto com o sistema de visão. Por

precisão, entende-se a capacidade do robô de ir a uma posição desejada, com

respeito a um sistema de referencia fixo (normalmente a base do robô, como é o

caso desse trabalho), com um erro determinado (por exemplo ± 1mm). Trata-se de

precisão em posicionamento absoluto. Por repetibilidade, entende-se a capacidade

do robô de, uma vez conhecida e alcançada uma posição, e partindo-se da mesma

condição inicial, voltar a ir ("repetir") novamente a tal posição com um erro

Page 73: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

determinado.

trabalho.

vermelho a ser pego, nesse caso o teste foi feito na

trabalho.

Fonte [do Autor]Figura

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto

na Tabela

referente

Tabela

Fonte [do Autor]

Na Figura 4

determinado.

trabalho.

A Figura 4

vermelho a ser pego, nesse caso o teste foi feito na

trabalho.

Fonte [do Autor] Figura 43: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

Foram feitos

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto

na Tabela 8 pode ser visto a por

referente à Figura 4

Tabela 8: Teste de precisão e repetibilidade referente ao posicionamento da Figura 44Figura

43 (a)

43 (b)

43 (c)

Fonte [do Autor]

Na Figura 44 segue o teste referente

determinado. Abaixo segue os testes conforme posições do objeto na área de

Figura 43 mostra uma visão superior da área de trabalho com o o

vermelho a ser pego, nesse caso o teste foi feito na

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

m feitos cinco

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto

pode ser visto a por

Figura 43.

: Teste de precisão e repetibilidade referente ao posicionamento da Figura 44

segue o teste referente

Abaixo segue os testes conforme posições do objeto na área de

mostra uma visão superior da área de trabalho com o o

vermelho a ser pego, nesse caso o teste foi feito na

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

cinco tentativas de pega do objeto em cada posição

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto

pode ser visto a porcentagem de precisão para cada posição do objeto

: Teste de precisão e repetibilidade referente ao posicionamento da Figura 44Precisão

80%

60%

80%

segue o teste referente

Abaixo segue os testes conforme posições do objeto na área de

mostra uma visão superior da área de trabalho com o o

vermelho a ser pego, nesse caso o teste foi feito na

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização inferior.

tentativas de pega do objeto em cada posição

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto

centagem de precisão para cada posição do objeto

: Teste de precisão e repetibilidade referente ao posicionamento da Figura 44

segue o teste referente à posição central da área de trabalho.

Abaixo segue os testes conforme posições do objeto na área de

mostra uma visão superior da área de trabalho com o o

vermelho a ser pego, nesse caso o teste foi feito na

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização inferior.

tentativas de pega do objeto em cada posição

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto

centagem de precisão para cada posição do objeto

: Teste de precisão e repetibilidade referente ao posicionamento da Figura 44

posição central da área de trabalho.

Abaixo segue os testes conforme posições do objeto na área de

mostra uma visão superior da área de trabalho com o o

vermelho a ser pego, nesse caso o teste foi feito na parte inferior

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

tentativas de pega do objeto em cada posição

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto

centagem de precisão para cada posição do objeto

: Teste de precisão e repetibilidade referente ao posicionamento da Figura 44Repetibilidade

100%

80%

100%

posição central da área de trabalho.

Abaixo segue os testes conforme posições do objeto na área de

mostra uma visão superior da área de trabalho com o o

parte inferior da área de

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

tentativas de pega do objeto em cada posição

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto

centagem de precisão para cada posição do objeto

: Teste de precisão e repetibilidade referente ao posicionamento da Figura 44Repetibilidade

100%

100%

posição central da área de trabalho.

73

Abaixo segue os testes conforme posições do objeto na área de

mostra uma visão superior da área de trabalho com o objeto

da área de

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

tentativas de pega do objeto em cada posição, a

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto,

centagem de precisão para cada posição do objeto

: Teste de precisão e repetibilidade referente ao posicionamento da Figura 44

posição central da área de trabalho.

73

Abaixo segue os testes conforme posições do objeto na área de

bjeto

da área de

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

, a

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

,

centagem de precisão para cada posição do objeto

Page 74: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

Fonte [do Autor]Figura

Tabela

Fonte [do Autor]

Na Figura 4

Fonte [do AutoFigura

Fonte [do Autor] Figura 44: Visão superior da área de trabalho com o objeto vermelho a ser identificado na locali

Tabela 9: Teste de precisão e repetibilidade referente ao posicionamento da Figura 45Figura

44 (a)

44 (b)

44 (c)

Fonte [do Autor]

Na Figura 45 segue

Fonte [do Autor] Figura 45: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

Visão superior da área de trabalho com o objeto vermelho a ser identificado na locali

Teste de precisão e repetibilidade referente ao posicionamento da Figura 45

segue o teste referente à posição superior da área de trabalho.

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

Visão superior da área de trabalho com o objeto vermelho a ser identificado na locali

Teste de precisão e repetibilidade referente ao posicionamento da Figura 45Precisão

80%

40%

80%

o teste referente à posição superior da área de trabalho.

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localicentral.

Teste de precisão e repetibilidade referente ao posicionamento da Figura 45

o teste referente à posição superior da área de trabalho.

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização superior.

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localicentral.

Teste de precisão e repetibilidade referente ao posicionamento da Figura 45

o teste referente à posição superior da área de trabalho.

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização superior.

Visão superior da área de trabalho com o objeto vermelho a ser identificado na locali

Teste de precisão e repetibilidade referente ao posicionamento da Figura 45Repetibilidade

100%

60%

80%

o teste referente à posição superior da área de trabalho.

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

Visão superior da área de trabalho com o objeto vermelho a ser identificado na locali

Teste de precisão e repetibilidade referente ao posicionamento da Figura 45 Repetibilidade

100%

o teste referente à posição superior da área de trabalho.

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

74

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

o teste referente à posição superior da área de trabalho.

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

74

zação

Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização

Page 75: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

75

Tabela 10: Teste de precisão e repetibilidade referente ao posicionamento da Figura 46

Figura Precisão Repetibilidade

45 (a) 80% 100%

45 (b) 60% 80%

45 (c) 80% 100%

Fonte [do Autor]

A partir destes testes foi possível perceber uma imprecisão na busca dos

objetos na parte central da área de trabalho, para efetuar uma melhora na precisão

foi necessário adicionar alguns fatores de correção, porém isso criou um problema

de ajustes global onde em alguns pontos a pega do objeto ocorreu de forma perfeita

e de outras não.

Entretanto mesmo com alguns erros na pega do objeto em alguns pontos em

relação ao eixo “Y”, o posicionamento do eixo “X” teve uma precisão de quase

100%, informação validada a partir de testes somente de posicionamento do eixo da

base, que é determinado pelo eixo “X”.

Page 76: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

76

5 CONCLUSÃO

A partir de todo esse trabalho, é possível identificar o quanto é importante o

uso de visão computacional para o controle robótico, tanto na facilidade de

implementação, quanto ao custo final do projeto. Entretanto muitos aspectos no

âmbito da robótica devem ser trabalhados na vida acadêmica para os cursos

correlatos, pois a utilização de robôs em aulas pratica com ferramentas que

possibilitem uma versatilidade para criação de métodos de controle, se faz muito

necessário, principalmente para profissionais que pretendem seguir esse ramo de

atividade.

Outro ponto muito importante que se pode concluir a partir desse trabalho é a

necessidade de capacitação de profissionais multidisciplinares, onde no âmbito

robótico requer um conhecimento vasto tanto na área de controle, quanto na área de

programação de sistema computacionais e/ou microprocessados, eletrônica, redes

de comunicação, mecânica, ótica e conhecimentos básicos como geometria e

calculo.

Em linhas gerais esse trabalho, além de agregar bastante conhecimento ao

seu desenvolvedor, deixa como legado uma trilha para utilização do robô ED-

7220C® via Matlab® com scripts prontos para utilização em diversas matérias

correlatas ao trabalho com sistemas robóticos. Sendo também um guia inicial para

quem pretende utilizar o Kinect® como uma ferramenta de reconhecimento de

imagens 3D.

Em relação aos objetivos específicos do trabalho, conclui-se que todos foram

alcançados de forma plena, sendo também esse trabalho, um ponto inicial para

diversos outros trabalhos no âmbito robótico.

Page 77: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

77

6 REFERÊNCIAS

[1] ROMANO, Victor Ferreira. Robótica Industrial – Aplicações na indústria de

manufatura e de processos. São Paulo, 2002.

[2] RIVIN, E., Mechanical Design of Robots , 1 ed., McGraw-Hill Inc., New York,

1988.

[3] ROSÁRIO, João Maurício. Princípios de Mecatrônica . São Paulo: Prentice Hall,

2005.

[4] SANTOS, V. M. F. Robótica Industrial: Apontamentos teóricos, exercíc ios para aulas práticas e problemas de exames resolvido s, Universidade de Aveiro, 2003-2004. Disponível em: http://www.mec.ua.pt/. Acesso em: 25-03-2011 [5] CHIKOFSKY, E. J., CROSS, J. H., 1990, Reverse Engineering and Design Recovery: A Taxonomy , IEEE Software, v. 7, n. 1, 1990.

[6] MINIPA. ED-Laboratory: ED-7220C Arm Robot Trainer , Rio de Janeiro, 2003.

[7] SCHILLING, Robert Jr. Fundamentals of Robotics Analysis and Control.

Englewood Cliffs Prentice Hall. Cop, 1990;

[8] MULLER M. RS232 in-line data spy. Elektor Electronics , 10/2001

[9] NALWA, V. S. A., Guided Tour of Computer Vision , AT&T, 1993.

[10] MARR, D., Vision , Freeman, San Francisco, USA, 1982.

[11] RUSSEL, S., NORVIG, P., Artificial Intelligence: a modern approach,

Prentice-Hall Inc ., London, 1995.

Page 78: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

78

[12] CENTENO, J., MITISHITA, E., Sensoriamento Remoto por LIDAR (LIDAR

Remote Sensing) Disponível em

<http://www.dsr.inpe.br/sbsr2007/?content=cursos> Acessado em 05-06-2011

[13] R. Lange et al., Time-of-flight range imaging with a custom so lid-state

image sensor , Proceedings of the SPIE, Vol. 3823, pp. 180-191, Munich 1999.

[14]FRIED L.,2011. DIY Kinect Hacking . Disponível em:

http://www.ladyada.net/learn/diykinect/ [Acesso 22/11/2011]

[15] http://eficienciavital.files.wordpress.com/2011/05/industrial_robots.jpg.

Disponível em 05-06-2011

[16] http://www.globalsecurity.org. Disponível em 21-11-2011

[17] PAULA, C. B., Adaptando e desenvolvendo jogos para uso com o Micr osoft

Kinect , TECPAR, 2011.

[18] MICROSOFT RESEARCH, 2011. Programming Guide: Getting Started

with the Kinect for Windows SDK Beta . Disponível em:

<http://research.microsoft.com/en-

us/um/redmond/projects/kinectsdk/docs/ProgrammingGuide_KinectSDK.docx>

Acesso em novembro de 2011.

[19] LAGES, Nobre L. Introdução ao MATLAB. 1999. Universidade Federal de

Alagoas – UFAL – Departamento de Engenharia Estrutural, Maceió/AL. Disponível

em:<http://www.ctec.ufal.br/professor/enl/metnum/Bibliografia/Introducao%20ao%20

MATLAB.pdf>. Acessado em Maio de 2011.

Page 79: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

79

[20] FRANÇA, Isabella F. Apostila de introdução ao Matlab ®, 2008. Universidade

Federal Fluminense - UFF - Centro Tecnológico, Niterói/RJ. Disponível em :

<http://www.telecom.uff.br/pet/petws/downloads/apostilas/MATLAB.pdf>. Acessado

em Novembro de 2011

[21] CORKE, P., Robotics, Vision and Control: Fundamental Algorithm s in MATLAB , SPRINGER, 2011 [22] OpenNI User Guide . OpenNI organization. Disponível em:< http://75.98.78.94/images/stories/pdf/OpenNI_UserGuide_v4.pdf>. Acessado em Novembro de 2011. [23] MAIA, J. S.; SIQUEIRA, T. A. Controle remoto de um braço robótico através

de um navegador web . 2006. Trabalho de Conclusão de Curso (Graduação em

Ciência da Computação) – Departamento de Ciência da Computação. Instituto de

Ensino Superior Planalto, Brasília.

[24] SEVERINO, E. C. Joystick para Controle do Braço Mecânico ED-7220C .

2005. Trabalho de Conclusão de Curso (Graduação em Engenharia da Computação)

– Núcleo de Ciências Exatas e Tecnológicas – NCET. Centro Universitário Positivo –

UNICENP, Curitiba.

[25] Tutorial - KINECT + MATLAB . Disponível em:

<https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=1q5Fg55dr

Ass4ZFQh4KLzusQZHmJ28F5fcUBQX4A_Qs_AP-qH2K01DLru1jo3&hl=pt_BR>

Acessado em: 10/04/2011.

[26] WOLF, C.; JOLION, J.-M. Model base d text detection in images and videos:

a learning approach . Laboratoire d’InfoRmatique en Images et Systèmes

d’information, Palmas, TO,Março 2004.

[27] REISS, M. L. L;TOMMSELLI A. M. G. Reconstrução 3d Por Luz Estruturada: Calibração Dos Vetores Diretores Dos Feixes De Padr ões Projetados. Artigo – Universidade Estadual Paulista – UNESP – SÃO PAULO

Page 80: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

ANEXO

Anexo 1

Anexo 2imagem. %OBS: NECESSARIO EFETUAR A CONEXÃO COMO ROBO%envia_comando_robo_arm('th',1,0);%envia_comando_robo_arm('hh',0,0);%envia_comando_robo_arm('pd,F,0',0,0)%envia_comando_robo_arm('mc',0,0) function ROBO_________________________________

ANEXOS

Anexo 1 – Fluxograma do trabalho proposto

xo 2 – Script de controle do robô, controle do Kinect® e processamento imagem.

%OBS: NECESSARIO EFETUAR A CONEXÃO COMO ROBO%envia_comando_robo_arm('th',1,0);%envia_comando_robo_arm('hh',0,0);%envia_comando_robo_arm('pd,F,0',0,0)%envia_comando_robo_arm('mc',0,0)

function ScriptVisionComputerTCC_v2( viEscolha )

%% _____________________CONFIGURAÇÃO DO ROBO_________________________________

%COMO O TOOLBOX NOVO com os dados CERRRTTTTOOOS %%D&H Theta Di Ai Alpha R/P L(1)=Link([0 0.37 0.02 L(2) =Link([0 0 0.22 0 0]); L(3)=Link([0 0 0.22 0 0]); L(4)=Link([0 0 0 L(5)=Link([0 0.080 0 0 0]); robo = Serial

Fluxograma do trabalho proposto

Script de controle do robô, controle do Kinect® e processamento

%OBS: NECESSARIO EFETUAR A CONEXÃO COMO ROBO%envia_comando_robo_arm('th',1,0);%envia_comando_robo_arm('hh',0,0);%envia_comando_robo_arm('pd,F,0',0,0)%envia_comando_robo_arm('mc',0,0)

ScriptVisionComputerTCC_v2( viEscolha )

%% _____________________CONFIGURAÇÃO DO ROBO_________________________________

%COMO O TOOLBOX NOVO com os dados CERRRTTTTOOOS%%D&H Theta Di Ai Alpha R/PL(1)=Link([0 0.37 0.02

=Link([0 0 0.22 0 0]); L(3)=Link([0 0 0.22 0 0]); L(4)=Link([0 0 0 L(5)=Link([0 0.080 0 0 0]); robo = Serial Link(L,

Fluxograma do trabalho proposto

Script de controle do robô, controle do Kinect® e processamento

%OBS: NECESSARIO EFETUAR A CONEXÃO COMO ROBO%envia_comando_robo_arm('th',1,0);%envia_comando_robo_arm('hh',0,0);%envia_comando_robo_arm('pd,F,0',0,0)%envia_comando_robo_arm('mc',0,0)

ScriptVisionComputerTCC_v2( viEscolha )

%% _____________________CONFIGURAÇÃO DO ROBO_________________________________

%COMO O TOOLBOX NOVO com os dados CERRRTTTTOOOS%%D&H Theta Di Ai Alpha R/PL(1)=Link([0 0.37 0.02

=Link([0 0 0.22 0 0]); L(3)=Link([0 0 0.22 0 0]); L(4)=Link([0 0 0 L(5)=Link([0 0.080 0 0 0]);

Link(L, 'name'

Fluxograma do trabalho proposto

Script de controle do robô, controle do Kinect® e processamento

%OBS: NECESSARIO EFETUAR A CONEXÃO COMO ROBO%envia_comando_robo_arm('th',1,0); %envia_comando_robo_arm('hh',0,0); %envia_comando_robo_arm('pd,F,0',0,0) %envia_comando_robo_arm('mc',0,0)

ScriptVisionComputerTCC_v2( viEscolha )

%% _____________________CONFIGURAÇÃO DO ROBO_________________________________

%COMO O TOOLBOX NOVO com os dados CERRRTTTTOOOS%%D&H Theta Di Ai Alpha R/PL(1)=Link([0 0.37 0.02

=Link([0 0 0.22 0 0]); L(3)=Link([0 0 0.22 0 0]); L(4)=Link([0 0 0 L(5)=Link([0 0.080 0 0 0]);

'name' , 'ED7220'

Script de controle do robô, controle do Kinect® e processamento

%OBS: NECESSARIO EFETUAR A CONEXÃO COMO ROBO

ScriptVisionComputerTCC_v2( viEscolha )

%% _____________________CONFIGURAÇÃO DO

%COMO O TOOLBOX NOVO com os dados CERRRTTTTOOOS%%D&H Theta Di Ai Alpha R/PL(1)=Link([0 0.37 0.02 - pi/2 0]);

=Link([0 0 0.22 0 0]); L(3)=Link([0 0 0.22 0 0]); L(4)=Link([0 0 0 - pi/2 0]); L(5)=Link([0 0.080 0 0 0]);

'ED7220' );

Script de controle do robô, controle do Kinect® e processamento

%COMO O TOOLBOX NOVO com os dados CERRRTTTTOOOS %%D&H Theta Di Ai Alpha R/P

pi/2 0]); %BASE=Link([0 0 0.22 0 0]); %OMBRO

L(3)=Link([0 0 0.22 0 0]); %COTOVELOpi/2 0]); %PUNHO

L(5)=Link([0 0.080 0 0 0]); %ROTAÇÃ

Script de controle do robô, controle do Kinect® e processamento

%BASE %OMBRO %COTOVELO

%PUNHO OTAÇÃO

80

Script de controle do robô, controle do Kinect® e processamento da

80

da

Page 81: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

81

%% _____________________IDENTIFICAÇÃO DA IMAGEM______________________________ % Instancia as configurações do kinect context = mxNiCreateContext( 'C:\Users\Hamilton\Documents\kinect\kinect\Config\S amplesConfig.xml' ); width = 640; height = 480; option.adjust_view_point = true; [rgb, depth] = mxNiImage(context, option); %Desaloca memoria criada pelo objeto context mxNiDeleteContext(context); % Efetua o corte da imagem, para mapear apenas o lo cal de interesse vmRGB = imcrop(rgb,[303 188 31 18]); vmDEPTH = imcrop(depth,[303 188 31 18]); %Invertendo a imagem, espelhando no eixo X para fic ar igual ao mundo real vmRGB_inv=vmRGB; [a b c]=size(vmRGB_inv); for i=1:b vmRGB_inv(:,i,:)=vmRGB(:,b-i+1,:); end vmDEPTH_inv=vmDEPTH; [a b c]=size(vmDEPTH_inv); for i=1:b vmDEPTH_inv(:,i,:)=vmDEPTH(:,b-i+1,:); end %% _______________PARA INDETIFICAR O OBJETO DE COR VERMELHA__________________ if (viEscolha == 1) disp( 'Objeto VERMELHO a ser identificado, aguarde...' ); voObjetoVermelho = imsubtract(vmRGB_inv(:,: ,1), rgb2gray(vmRGB_inv)); t = graythresh(voObjetoVermelho); % IM2BW - Converter imagem a imagem binária, com ba se no limite bw = im2bw(voObjetoVermelho,t*0.9); %Remover todos os pixels menos de 50px voObjetoVermelho = bwareaopen(bw,50); % Centroid - 1-por-Q vetor que especifica o centro de massa da região. % Note-se que o primeiro elemento de Centroid é a c oordenada % horizontal (ou coordenada x) do centro de massa, eo segundo elemento % é a coordenada vertical (ou y-coordenada). Todos os outros elementos % da Centroid estão em ordem de dimensão try bw2 = imfill(voObjetoVermelho, 'holes' ); s = regionprops(bw2, 'centroid' ); centroids = cat(1, s.Centroid); catch

Page 82: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

82

centroids = [1 1]; %Para não da error end viCentroide = vmDEPTH_inv(1,(round(centroid s(1)))) %Caso o centroide encontrado seja 0 deslocar o cent roide para direita %procurando um valor diferente de 0 viIncremento = 0; if (viCentroide == 0) while (viCentroide == 0) viCentroide = vmDEPTH_inv(round(centroids(2)),round(centroids(1)+ viIncremento)); viIncremento = viIncremento + 1; end disp( 'Valor encontrado diferente de 0: ' ) disp(viCentroide) end %Calculos para definir posição no eixo X do plano d o Robo (MOTOR F) %A distancia entre o kinect e a coordenada 0 do eix o X se da a posição 2480mm %então: viCoordenadaXmm = (2480 - double(viCent roide))/1000 %Calculo da coordenada Y % 21 cm garra do centro da base % 26 cm da base ao inicio da area de trabalho % 41 cm da base ao termino da area de trabalho % % 44 cm da base nas extremidades % 31 cm da base nas pontas internas % % EXEMPLO: % 15cm - 33 pixel % x - 29 pixel % % x = 13.1818 % % 13.1818cm + 26cm = 39.1818cmm %Convertendo pixel em metros % 33 = COmprimento da figura em pixel % 15 = Comprimento da area de trabalho em cm % 26 = distancia da base ao inicio da area de traba lho viConvYmetros = ((((round(centroids(1))*15) )/33)+26)/100 viCoordenadaYmm = sqrt(0.125^2+viConvYmetr os^2) %Pitagoras c^2 = a^2+b^2 %EFETUANDO A CINEMATICA INVERSA T = transl(double(viCoordenadaXmm),double(v iCoordenadaYmm), 0.29)*trotx(0)*troty(pi)*trotz(pi/2); qi = robo.ikine(T, [0 0 0 0 0], [1 1 1 1 1 0]) viCoordenadaMotorEParcial = (round((((3174 *(qi(2)))/1.4835)))) viETeste = viCoordenadaMotorEParcial*(-1)

Page 83: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

83

%TRATAMENTO DO MOTOR E if (viETeste >= 160) viCoordenadaMotorE = viCoordenadaMotorE Parcial - 300 %CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO viCoordenadaMotorF = (round((7100*qi(1 ))/2.7052)) if (viCoordenadaMotorF < 0) viCoordenadaMotorF = viCoordenadaMo torF * (-1) end viDistancia = 1; end if (viETeste >= 20 && viETeste <= 100) viCoordenadaMotorE = viCoordenadaMotorE Parcial - 900 %CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO viCoordenadaMotorF = (round((7100*qi(1 ))/2.7052))+100 if (viCoordenadaMotorF < 0) viCoordenadaMotorF = viCoordenadaMo torF * (-1) end viDistancia = 2; end if (viETeste <= 19) viCoordenadaMotorE = viCoordenadaMotorE Parcial - 1500 %CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO viCoordenadaMotorF = (round((7100*qi(1 ))/2.7052)) if (viCoordenadaMotorF < 0) viCoordenadaMotorF = viCoordenadaMo torF * (-1) end viDistancia = 3; end end %% _______________PARA INDETIFICAR O OBJETO DE COR AZUL__________________ if (viEscolha == 2) disp( 'Objeto AZUL a ser identificado, aguarde...' ); voObjetoAzul = imsubtract(vmRGB_inv(:,:,3), rgb2gray(vmRGB_inv)); t = graythresh(voObjetoAzul); % IM2BW - Converter imagem a imagem binária, com ba se no limite bw = im2bw(voObjetoAzul,t*0.9); %Remover todos os pixels menos de 300px voObjetoAzul = bwareaopen(bw,50); % Centroid - 1-por-Q vetor que especifica o centro de massa da região. % Note-se que o primeiro elemento de Centroid é a c oordenada % horizontal (ou coordenada x) do centro de massa, eo segundo elemento % é a coordenada vertical (ou y-coordenada). Todos os outros elementos % da Centroid estão em ordem de dimensão

Page 84: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

84

try bw2 = imfill(voObjetoAzul, 'holes' ); s = regionprops(bw2, 'centroid' ); centroids = cat(1, s.Centroid); catch centroids = [1 1]; %Para não da error end viCentroide = vmDEPTH_inv(1,(round(centroid s(1)))) %Caso o centroide encontrado seja 0 deslocar o cent roide para direita %procurando um valor diferente de 0 viIncremento = 0; if (viCentroide == 0) while (viCentroide == 0) viCentroide = vmDEPTH_inv(round(centroids(2)),round(centroids(1)+ viIncremento)); viIncremento = viIncremento + 1; end disp( 'Valor encontrado diferente de 0: ' ) disp(viCentroide) end viCoordenadaXmm = (2480 - double(viCent roide))/1000 viConvYmetros = ((((round(centroids(1))*15) )/33)+26)/100 viCoordenadaYmm = sqrt(0.125^2+viConvYmetr os^2) %Pitagoras c^2 = a^2+b^2 %EFETUANDO A CINEMATICA INVERSA T = transl(double(viCoordenadaXmm),double(v iCoordenadaYmm), 0.29)*trotx(0)*troty(pi)*trotz(pi/2); qi = robo.ikine(T, [0 0 0 0 0], [1 1 1 1 1 0]) viCoordenadaMotorEParcial = (round((((3174 *(qi(2)))/1.4835)))) viETeste = viCoordenadaMotorEParcial*(-1) %TRATAMENTO DO MOTOR E if (viETeste >= 160) viCoordenadaMotorE = viCoordenadaMotorE Parcial - 300 %CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO viCoordenadaMotorF = (round((7100*qi(1 ))/2.7052)) if (viCoordenadaMotorF < 0) viCoordenadaMotorF = viCoordenadaMo torF * (-1) end viDistancia = 1; end if (viETeste >= 20 && viETeste <= 100) viCoordenadaMotorE = viCoordenadaMotorE Parcial - 900 %CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO viCoordenadaMotorF = (round((7100*qi(1 ))/2.7052))+100

Page 85: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

85

if (viCoordenadaMotorF < 0) viCoordenadaMotorF = viCoordenadaMo torF * (-1) end viDistancia = 2; end if (viETeste <= 19) viCoordenadaMotorE = viCoordenadaMotorE Parcial - 1500 %CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO viCoordenadaMotorF = (round((7100*qi(1 ))/2.7052)) if (viCoordenadaMotorF < 0) viCoordenadaMotorF = viCoordenadaMo torF * (-1) end viDistancia = 3; end end %% _______________TRATAMENTO DOS DADOS PARA ENV IO DO ROBO__________________ %------ PREPARANDO POSICAO ------- envia_comando_robo_arm( 'pd,C,300' ,0,0); pause(0.3); envia_comando_robo_arm( 'pd,B,200' ,0,0); pause(0.3); envia_comando_robo_arm( 'pd,D,500' ,0,0); pause(0.3); envia_comando_robo_arm( 'mc' ,0,0); pause(0.3); envia_comando_robo_arm( 'go' ,0,0); pause(0.3); viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1); while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino do movimento C e D' ); end %MOTOR F str1 = { 'pd,F,' }; % 1° PARTE DO COMANDO str2 = num2str(viCoordenadaMotorF); % CONVERTE VALOR PARA TIPO NUMERICO E CRIA A 2° PARTE DO COMANDO str_int = strcat(str1,str2); % CONCATENA AS STRINGS str_int_char = char(str_int); % CONVERTE O STR_INT PARA TIPO CHAR

Page 86: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

86

envia_comando_robo_arm(str_int_char,0,0) % ENVIA COMANDO PARA A FUNCAO DE CONTROLE DO ROBO pause(0.3); envia_comando_robo_arm( 'mc' ,0,0) %Retorna a posição incial viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1); while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino do movimento F' ); end %MOTOR E str1 = { 'pd,E,' }; % 1° PARTE DO COMANDO str2 = num2str(viCoordenadaMotorE); % CONVERTE VALOR PARA TIPO NUMERICO E CRIA A 2° PARTE DO COMANDO str_int = strcat(str1,str2); % CONCATENA AS STRINGS str_int_char = char(str_int); % CONVERTE O STR_INT PARA TIPO CHAR envia_comando_robo_arm(str_int_char,0,0) % ENVIA COMANDO PARA A FUNCAO DE CONTROLE DO ROBO pause(0.3); envia_comando_robo_arm( 'mc' ,0,0) viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1); while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino do movimento E' ); end if (viDistancia == 1) envia_comando_robo_arm( 'pd,D,-400' ,0,0); end if (viDistancia == 2) envia_comando_robo_arm( 'pd,D,-250' ,0,0); end if (viDistancia == 3) envia_comando_robo_arm( 'pd,D,100' ,0,0); end pause(0.3); envia_comando_robo_arm( 'mc' ,0,0); viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1); while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino do movimento D' ); end pause(0.3); envia_comando_robo_arm( 'gc' ,0,0); viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1);

Page 87: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

87

while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino Garra' ); end %DEPOSITA OBJETO ----------------------- pause(0.3) envia_comando_robo_arm( 'pd,D,800' ,0,0); pause(0.3) envia_comando_robo_arm( 'mc' ,0,0) viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1); while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino do movimento D' ); end %MOTOR F viCoordenadaMotorF = viCoordenadaMotorF*(-1) str1 = { 'pd,F,' }; % 1° PARTE DO COMANDO str2 = num2str(viCoordenadaMotorF); % CONVERTE VALOR PARA TIPO NUMERICO E CRIA A 2° PARTE DO COMANDO str_int = strcat(str1,str2); % CONCATENA AS STRINGS str_int_char = char(str_int); % CONVERTE O STR_INT PARA TIPO CHAR envia_comando_robo_arm(str_int_char,0,0) % ENVIA COMANDO PARA A FUNCAO DE CONTROLE DO ROBO pause(0.3); envia_comando_robo_arm( 'mc' ,0,0) %Retorna a posição incial viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1); while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino do movimento F' ); end %MOTOR E str1 = { 'pd,E,' }; % 1° PARTE DO COMANDO str2 = num2str(viCoordenadaMotorE); % CONVERTE VALOR PARA TIPO NUMERICO E CRIA A 2° PARTE DO COMANDO str_int = strcat(str1,str2); % CONCATENA AS STRINGS str_int_char = char(str_int); % CONVERTE O STR_INT PARA TIPO CHAR envia_comando_robo_arm(str_int_char,0,0) % ENVIA COMANDO PARA A FUNCAO DE CONTROLE DO ROBO pause(0.3); envia_comando_robo_arm( 'mc' ,0,0) viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1);

Page 88: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

88

while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino do movimento E' ); end if (viDistancia == 1) envia_comando_robo_arm( 'pd,D,-400' ,0,0); end if (viDistancia == 2) envia_comando_robo_arm( 'pd,D,-250' ,0,0); end if (viDistancia == 3) envia_comando_robo_arm( 'pd,D,100' ,0,0); end pause(0.3); envia_comando_robo_arm( 'mc' ,0,0); viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1); while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino do movimento D' ); end pause(0.3); envia_comando_robo_arm( 'go' ,0,0); viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1); while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino entrega' ); end pause(0.3) envia_comando_robo_arm( 'pd,D,800' ,0,0); pause(0.3) envia_comando_robo_arm( 'mc' ,0,0) viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1); while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino do movimento D' ); end %-------------------------------------------- disp( 'Aguarde 3 segundos...' ); pause(3); envia_comando_robo_arm( 'pd,F,0' ,0,0); pause(0.3); envia_comando_robo_arm( 'pd,E,0' ,0,0); pause(0.3);

Page 89: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

89

envia_comando_robo_arm( 'pd,D,0' ,0,0); pause(0.3); envia_comando_robo_arm( 'pd,E,0' ,0,0); pause(0.3); envia_comando_robo_arm( 'mc' ,0,0); viTerminomovimento = envia_comando_robo_arm( 'sa' ,0,1); while (viTerminomovimento ~= '0' ) pause(0.5); viTerminomovimento = envia_comando_robo_arm ( 'sa' ,0,1); disp( 'Aguardando termino do movimento D' ); end %PARA TODOS OS MOTORES disp( 'Desligando os motores' ) envia_comando_robo_arm( 'MA' ,0,0); pause(0.3); envia_comando_robo_arm( 'MA' ,0,0); pause(0.3); envia_comando_robo_arm( 'MA' ,0,0); pause(0.3); envia_comando_robo_arm( 'MA' ,0,0); pause(0.3); envia_comando_robo_arm( 'MA' ,0,0); pause(0.3); end Anexo 3 – Script de controle do ED-MK4® %Função responsavel por envio de comandos para o ro bo arm ed-7220-4 %Data da ultima atualização: 23/03/2011 %Autor: Hamilton Sena %Curso: Engenharia de controle e Automação %Licensa: GPL %Foma de usar o script: %envia_comando_robo_arm('Comando',Comunicar Serial) %Exemplo: envia_comando_robo_arm('th',1); %SE 1 = efetua a comunicação com a serial %SE 0 = Não efetua a comunicação serial %infos: % th -> Passa o robo para modo host % hh -> Inicializa o robo function [ viResp ] = envia_comando_robo_arm( vsComando, vi StatusCom, viLeitura ) %Se for passado o valor 1 será efuado a conexão com a porta serial. global voSerial; if (viStatusCom == 1)

Page 90: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

90

try voSerial = serial( 'COM1' ); %'Terminator', 'CR/LF','FlowControl','hardware' %O flag a ser utilizado para funcionar a leitura set(voSerial, 'BaudRate' , 9600, 'Parity' , 'odd' , 'StopBit' , 2, 'DataBits' , 7, 'Timeout' , 1000, 'requesttosend' , 'on' , 'Terminator' , 'CR/LF' , 'FlowControl' , 'hardware' , 'DataTerminalReady' , 'off' ); fopen(voSerial); catch disp( 'Erro ao abrir a COM1' ); disp( 'Fechando COM1' ); newobjs = instrfind fclose(newobjs); end end vcComandoDec=(vsComando); vcComandoDec=dec2hex(vcComandoDec); %converte o comando para hexadecimal %--------------------------------------------- %Adiciona o comando D0 que representa o \r no final do comando vcComandoDec((length(vcComandoDec)+1),1)= '0' ; vcComandoDec((length(vcComandoDec)),2)= 'D' ; %--------------------------------------------- vcComandoDec2=hex2dec(vcComandoDec); %converte de hexadecimal para seu respectivo valor em decimal try fwrite(voSerial,vcComandoDec2); %envia o comando para o robo %CASO QUEIRA RECEBER A RESPOSTA DO COMANDO DESCOMENTE AS LINHAS %ABAIXO, CASO COMANDO ENVIADO NÃO ENVIE RESPOSTA, O PROGRAMA FICA %TENTANDO LER, NECESSARIO CRIAR UMA ROTINA PARA EVITAR A LEITURA DE %COMANDOS SEM RESPOSTAS if (viLeitura == 1) pause(0.3); %voSerial.BytesAvailable; if (voSerial.BytesAvailable == 2) resultado = fread(voSerial,1); %COMANDO EFETUADO PARA LEITURA %disp(hex2num(dec2hex(resultado))); %COMANDO EFETU ADO MOSTRAR LEITURA %voSerial.BytesAvailable %disp(resultado); %disp(int2str(resultado(1)-48)) vsPosicao = int2str(resultado(1 )-48); viResp = vsPosicao; end if (voSerial.BytesAvailable == 3) resultado = fread(voSerial,2); %COMANDO EFETUADO PARA LEITURA %disp(dec2hex(resultado)); %COMANDO EFETUADO MOSTR AR LEITURA %voSerial.BytesAvailable if (resultado(1) == 45) %disp(strcat('-',int2str(resultado(2)-48)))

Page 91: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

91

vsPosicao = strcat( '-' ,int2str(resultado(2)-48)); viResp = vsPosicao; else vsPosicao = strcat(int2str( resultado(1)-48),int2str(resultado(2)-48)); viResp = vsPosicao; end end if (voSerial.BytesAvailable == 4) resultado = fread(voSerial,3); %COMANDO EFETUADO PARA LEITURA %disp(dec2hex(resultado)); %COMANDO EFETUADO MOSTR AR LEITURA %voSerial.BytesAvailable if (resultado(1) == 45) vsPosicao = strcat( '-' ,int2str(resultado(2)-48), int2str(resultado(3)-48)); viResp = vsPosicao; else vsPosicao = strcat(int2str( resultado(1)-48),int2str(resultado(2)-48), int2str(resultado(3)- 48)); viResp = vsPosicao; end end if (voSerial.BytesAvailable == 5) resultado = fread(voSerial,4); %COMANDO EFETUADO PARA LEITURA %disp(dec2hex(resultado)); %COMANDO EFETUADO MOSTR AR LEITURA %voSerial.BytesAvailable %disp(resultado); if (resultado(1) == 45) vsPosicao = strcat( '-' ,int2str(resultado(2)-48), int2str(resultado(3)-48), int2str(resultado(4)-48)) ; viResp = vsPosicao; else vsPosicao = strcat(int2str( resultado(1)-48),int2str(resultado(2)-48), int2str(resultado(3)- 48), int2str(resultado(4)-48)); viResp = vsPosicao; end end if (voSerial.BytesAvailable == 6) resultado = fread(voSerial,5); %COMANDO EFETUADO PARA LEITURA %disp(dec2hex(resultado)); %COMANDO EFETUADO MOSTR AR LEITURA %voSerial.BytesAvailable %disp(resultado); if (resultado(1) == 45) vsPosicao = strcat( '-' ,int2str(resultado(2)-48), int2str(resultado(3)-48), int2str(resultado(4)-48), int2str(resultado(5)-48));; viResp = vsPosicao; else vsPosicao = strcat(int2str( resultado(1)-48),int2str(resultado(2)-48), int2str(resultado(3)- 48), int2str(resultado(4)-48),int2str(resultado(5)-48));

Page 92: Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

92

viResp = vsPosicao; end end if (voSerial.BytesAvailable >= 8) resultado = fread(voSerial, 7); %COMANDO EFETUADO PARA LEITURA viResp = vsPosicao; %disp(resultado); end end flushinput(voSerial); % Flush na serial catch viResp = 1; %informa que o comando deu erro disp( 'OCORREU ALGUM ERRO'); end end