Anda di halaman 1dari 92

1

FACULDADE ASSIS GURGACZ


HAMILTON JOSE DA SILVA SENA















CONTROLE ROBTICO REFERENCIADO POR SISTEMA DE VISO
COMPUTACIONAL UTILIZANDO O KINECT
























CASCAVEL
2011
2

FACULDADE ASSIS GURGACZ
HAMILTON JOSE DA SILVA SENA















CONTROLE ROBTICO REFERENCIADO POR SISTEMA DE VISO
COMPUTACIONAL UTILIZANDO O KINECT






Trabalho apresentado como requisito para
obteno do ttulo de bacharel em Engenharia
de Controle e Automao da Faculdade Assis
Gurgacz.



Orientador: Arthur Schuler da Igreja










CASCAVEL
2011
3

FACULDADE ASSIS GURGACZ
HAMILTON JOSE DA SILVA SENA

CONTROLE ROBTICO REFERENCIADO POR SISTEMA DE VISO
COMPUTACIONAL UTILIZANDO O KINECT


Trabalho apresentado no Curso de Engenharia de Controle e Automao, da
Faculdade Assis Gurgacz, como requisito parcial para obteno do ttulo de
Bacharel em Engenharia de Controle e Automao, sob orientao do Professor
Especialista Arthur Schuler da Igreja.



BANCA EXAMINADORA




____________________________

Arthur Schuler da Igreja
Faculdade Assis Gurgacz




____________________________

Ederson Zanchet
Faculdade Assis Gurgacz




____________________________

Vnio da Maia
Faculdade Assis Gurgacz







Cascavel, ___ de _______________ de 2011
4

DEDICATRIA



Primeiramente dedico este trabalho
a Deus, que me deu foras e
iluminou meu caminho; A minha
esposa Francielli que espera pelo
nosso primeiro filho, por toda a
pacincia, compreenso e apoio
incondicional, a minha me Sandra
e meus irmos Alisson, Milene e
Fabio que fazem parte dessa
trajetria e a meus avs Francisca
e Dermeval que hoje esto ao lado
do Pai todo poderoso.
5

AGRADECIMENTOS


Agradeo em primeiro lugar a Deus que iluminou o meu caminho durante esta
caminhada. Agradeo tambm a toda minha famlia em especial a minha me, meus
irmos e minha esposa, que de forma especial e carinhosa me deu fora e coragem,
me apoiando nos momentos de dificuldades, quero agradecer tambm ao Mauricio
Celestino Sena e Joo Carlos de Souza que acreditaram em mim e me deram a
oportunidade de estar hoje realizando um sonho.
No posso deixar tambm 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 Vnio da Maia que sempre teve um
relacionamento diferenciado com nossa turma.
No posso deixar de citar tambm os companheiros de turma e em especial os
amigos Robson Molgaro, Augusto Peruffo, Darlan Dariva e o filho Andre Fazioni
que sempre estiveram de prontido nos momentos de dificuldade e alegrias.
Agradecer tambm a todos os membros da igreja Evanglica Livre que no
deixaram de orar por mim e minha famlia em especial ao amigo e pastor Sergio. E
no deixando de agradecer de forma grata e grandiosa minhas outras duas mes,
Sonia Dalbosco Sena e Edna Xavier Rego que cuidam de mim como se fosse o
prprio filho delas.

6














































"Atravs da sabedoria uma casa construda, e pelo entendimento estabelecida; atravs do conhecimento,
seus cmodos cheios com tesouros raros e bonitos."

PROV. 24:3-4
7

RESUMO


A robtica, segundo estudos realizados no Japo e EUA, deve ser uma das 10
linhas de pesquisa com mais trabalhos, a nvel mundial, nas prximas dcadas. O
avano tecnolgico tem permitido a realizao de clculos computacionais
necessrios em tempo real, e este fato tem possibilitado que novas descobertas e
aplicaes possam ser feitas em sistemas de robtica, tornando essa rea uma
fonte quase que inesgotvel de pesquisa. Nesse contexto surge a necessidade de
ambientes de testes e simulao onde as ferramentas propiciem potencializar o
conhecimento e a difuso da pesquisa no mbito da robtica, nesse mbito que o
atual trabalho se dedica. Integrando os conhecimentos de robtica com viso
computacional utilizando o Kinect, considerado por muitos um dos acessrios mais
revolucionrio da historia dos videogames.

Palavras chaves: robtica, Kinect, viso computacional.
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.

9

LISTA DE ILUSTRAES

Figura 1: Clula de trabalho robotizada .................................................................... 16
Figura 2: Rob Articulado ou Antropomrfico com seu respectivo volume de trabalho.
.................................................................................................................................. 18
Figura 3: Relao dos problemas da cinemtica direta e inversa. ............................ 20
Figura 4: Brao 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: Clculo do centro de rea de uma determinada regio ............................ 38
Figura 13: Arquitetura bsica do Kinect

................................................................... 42
Figura 14: Resumo da arquitetura bsica ................................................................. 42
Figura 15: Campo de viso alcanado pelo Kinect ................................................. 43
Figura 16: Holograma projetado pelo Kinect para leitura de profundidade. ............ 44
Figura 17: Mtodo de identificao 3D por luz estruturada. ...................................... 44
Figura 18: Arquitetura da API OpenNI ....................................................................... 47
Figura 19: Arquitetura montada para identificao dos comandos de comunicao do
controlador ED-MK4 com o RoboTalk . ................................................................ 49
Figura 20: Cdigo de comunicao serial do MATLAB com o ED-MK4 .................... 51
Figura 21: Cdigo de insero do comando "0D" no final de cada instruo de
execuo. .................................................................................................................. 52
Figura 22: Cdigo de recebimento de dados serial via Matlab .................................. 52
Figura 23: Representao vetorial das juntas do rob ED-7220C ............................ 53
Figura 24: Configurao dos parmetros de D-H na Robotics Toolbox .................... 54
Figura 25: Representao grfica do rob ED-7220C via Robotics Toolbox ............ 55
Figura 26: rea de trabalho definida no laboratrio de robtica para execuo de
testes ......................................................................................................................... 56
Figura 27: Cenrio de testes completo ...................................................................... 57
Figura 28: Cdigo 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: Cdigo que efetua o espelhamento da imagem RGB e o da matriz de
profundidade. ............................................................................................................ 61
Figura 33: Cdigo de identificao do objeto vermelho. ............................................ 61
Figura 34: Identificao do centride de um objeto. .................................................. 62
Figura 35: Medidas da rea de trabalho e distncia 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 viso lateral. ............. 64
Figura 38: Cdigo de controle do eixo da base ......................................................... 67
Figura 39: Tela de controle de busca dos objetos. .................................................... 68
Figura 40: Script de comando para conexo via serial e transpor o sistema de
controle do ED-MK4 para modo HOST. ................................................................. 69
Figura 41: Rob virtual criado via Robotic Toolbox atravs do drivebot. ................... 70
Figura 42: Rob ED-7220C efetuado a pega do objeto. ......................................... 71
10

Figura 43: Imagem gerada pela cmera RGB do Kinect. ....................................... 72
Figura 44: Viso superior da rea de trabalho com o objeto vermelho a ser
identificado na localizao inferior. ............................................................................ 73
Figura 45: Viso superior da rea de trabalho com o objeto vermelho a ser
identificado na localizao central. ............................................................................ 74
Figura 46: Viso superior da rea de trabalho com o objeto vermelho a ser
identificado na localizao superior. .......................................................................... 74
11

SUMRIO

1 INTRODUO ................................................................................................... 12
2 FUNDAMENTAO TERICA ......................................................................... 15
2.1 ROBTICA .................................................................................................. 15
2.1.1. Robtica Industrial........................................................................................ 15
2.1.2. Classificao dos robs ............................................................................... 17
2.1.3. Modelagem Cinemtica ................................................................................ 18
2.1.4. Cinemtica direta ......................................................................................... 20
2.1.5. Cinemtica inversa ....................................................................................... 20
2.1.6. Notao de Denavit-Hartenberg ................................................................... 21
2.1.7. Nveis de Controle Robtico ......................................................................... 22
2.1.8. ED-7220C .................................................................................................. 24
2.2 ENGENHARIA REVERSA ........................................................................... 30
2.3 VISO COMPUTACIONAL .......................................................................... 32
2.3.1. Imagem Digital ............................................................................................. 33
2.3.2. Processamento de Imagem Digital............................................................... 34
2.3.3. Limiarizao (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 COMUNICAO ......................................... 48
3.2 ROBOTICS TOOLBOX ................................................................................ 53
3.3 KINECT ..................................................................................................... 55
3.4 PROCESSAMENTO DA IMAGEM ............................................................... 59
3.5 REFERENCIA DO PONTO DE VISO ........................................................ 63
3.6 CONTROLE DO ROB ED-7220C ........................................................... 66
4 RESULTADOS E DISCUSSES ........................................................................ 69
4.1 COMUNICAO SERIAL ............................................................................ 69
4.2 ROBOTICS TOOLBOX ................................................................................ 70
4.3 RECONHECIMENTO DO OBJETO ............................................................. 71
5 CONCLUSO ..................................................................................................... 76
6 REFERNCIAS .................................................................................................. 77
ANEXOS ................................................................................................................... 80

12

1 INTRODUO

A disciplina de robtica tem o objetivo de prover o conhecimento no
desenvolvimento e anlise de modelos de robs industriais e a programao de
robs manipuladores, com esse intuito a Faculdade Assis Gurgacz disponibiliza em
seu laboratrio de robtica um rob didtico, porm esse rob didtico desenvolvido
pela empresa coreana ED-Laboratory fornece um software proprietrio para
controle, simulao e testes, tendo limitadas opes de integrao a outros meios de
controle via software, impedindo assim a interao do rob a projetos criados em
diversas outras disciplinas correlatas.
Esse impedimento estende-se tambm a prpria disciplina de robtica, onde o
ensino da interao do rob com o ambiente de extrema importncia,
principalmente pela concepo de utilizao de robs, onde h a necessidade de ser
flexvel na atuao em ambientes dinmicos de forma robusta e verstil mantendo-
se operacional diante de mudanas em ambientes no estruturados.
Outro problema a falta de uma plataforma que propicie desenvolvimentos
integrados entre robtica e viso computacional, onde geralmente o ensino fica
restrito a simulaes via software, impedindo assim, um modelo que poderia
potencializar a elaborao de trabalhos mais sofisticados na rea robtica e no
campo da viso computacional.
A robtica, segundo estudos realizados no Japo e EUA, deve ser uma das
10 linhas de pesquisa com mais trabalhos, a nvel mundial, nas prximas dcadas.
O avano tecnolgico tem permitido a realizao de clculos computacionais
necessrios em tempo real, e este fato tem possibilitado que novas descobertas e
aplicaes possam ser feitas em sistemas de robtica, tornando essa rea uma
fonte quase que inesgotvel de pesquisa.
13

Nesse contexto surge a necessidade de ambientes de testes e simulao
onde as ferramentas propiciem potencializar o conhecimento e a difuso da
pesquisa no mbito da robtica, principalmente pelo fato de reas como a da
inteligncia artificial, sistema de controles avanados, sensores e atuadores,
controle de processo, programao, redes, micro controladores, identificao de
sistemas, entre outras, possam unir-se para como foi dito anteriormente propiciar
trabalhos mais sofisticados.
Para permitir a utilizao desse trabalho para futuros projetos, sero
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 viso computacional
comercializado como controle para videogames pela empresa Microsoft

), pois para
referenciar um rob, so utilizados inmeros sensores que em ambientes no
estruturados podem no ser efetivos, e que o Kinect pelo sensoriamento de
profundidade um passo alm dos sistemas de viso computacional que tem esta
restrio.
Com isso, o tema escolhido para esse trabalho, baseia-se na grande
relevncia tanto para o ambiente industrial como acadmico na atual conjuntura
mundial.
O trabalho tem como objetivo desenvolver um sistema que controle o rob
didtico ED-7220C atravs do software MATLAB

efetuando o reconhecimento de
objetos de forma referenciada a partir do Kinect

. Para que o trabalho se conclua


ser necessrio estabelecer a comunicao com o controlador do rob via software
MATLAB

, elaborando o controle de cinemtica inversa do sistema, identificando e


14

obtendo o posicionamento de objetos atravs de viso computacional, integrando
assim o sistema de viso computacional com o controle do rob.




















15

2 FUNDAMENTAO TERICA

2.1 ROBTICA

2.1.1. Robtica Industrial

O termo rob foi originalmente utilizado em 1921 pelo dramaturgo tcheco
Karen Capek, na pea teatral Os Robs Universais de Russum (R.U.R.) como
referncia a um autmato que acaba rebelando-se contra o ser humano. Rob
deriva da palavra "robota" de origem eslava, que significa "trabalho forado". Na
dcada de 40, o escritor Isaac Asimov tornou popular o conceito de rob como uma
mquina de aparncia humana no possuidora de sentimentos, onde seu
comportamento seria definido a partir de programao feita por seres humanos, de
forma a cumprir determinadas regras ticas de conduta. O termo robtica foi criado
por Asimov para designar a cincia que se dedica ao estudo dos robs e que se
fundamenta pela observao de trs leis bsicas:
Um rob no pode fazer mal a um ser humano e nem consentir,
permanecendo inoperante, que um ser humano se exponha a situao de
perigo;
Um rob deve obedecer sempre s ordens de seres humanos, exceto em
circunstncias em que estas ordens entrem em conflito com a primeira lei;
Um rob deve proteger a sua prpria existncia, exceto em circunstncias
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 reprogramvel projetado para movimentar
16

materiais, partes, ferramentas ou peas especiais, atravs de diversos movimentos
programados, para o desempenho de uma variedade de tarefas [2].
Uma definio mais ampla apresentada pela norma ISO (International
Organization for Standardization) 10218, como sendo: "uma mquina manipuladora
com vrios graus de liberdade controlada automaticamente, reprogramvel,
multifuncional, que pode ter base fixa ou mvel para utilizao em aplicaes de
automao industrial" [1], conforme mostrado na Figura 1.
Um rob industrial formado pela integrao dos seguintes componentes:
Manipulador mecnico: refere-se ao aspecto mecnico e estrutural do rob.
Elos;
Juntas;
Sistema de transmisso;
Fonte [15]
Figura 1: Clula de trabalho robotizada
17

Atuadores: So componentes que convertem energia eltrica, hidrulica ou
pneumtica, em potncia mecnica.
Atuadores hidrulicos e pneumticos;
Atuadores eletromagnticos;
Sensores: Fornecem parmetros sobre o comportamento do manipulador.
Unidade de controle: Responsvel pelo gerenciamento e monitorao dos
parmetros operacionais do rob.
Unidade de potncia: responsvel pelo fornecimento de potncia
necessria movimentao dos atuadores.
Efetuador: o elemento de ligao entre o rob e o meio que o cerca.

2.1.2. Classificao dos robs

Os robs 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 robs de acordo como o tipo de junta, ou, mais exatamente, pelas 3 juntas mais
prximas da base do rob. Tambm pode ser classificada em relao ao espao de
trabalho, ao grau de rigidez, a extenso de controle sobre o curso do movimento e
de acordo com as aplicaes adequadas ou inadequadas a eles.
Rob de Coordenadas Cartesianas;
Rob de Coordenadas Cilndricas;
Rob de Coordenadas Esfricas;
Rob SCARA;
Rob Paralelo;
E o rob Articulado ou Antropomrfico (caso de estudo desse trabalho);


eixo de movimento da junta de rotao da base ortogonal s outras duas juntas de
rotao que so simtricas entre si. Este tipo de
mobilidade a robs. Seu volume de trabalho apresenta uma geometria mais
complexa em relao
tipo de rob e a sua representao do volume de trabalho.

2.1.3.


prismticas ou rotacionais. Cada par
para um manipulador com N
primeiro elo
fixados
conhecimento completo das variveis articulares de um rob
Fonte [16]
Na configurao
eixo de movimento da junta de rotao da base ortogonal s outras duas juntas de
rotao que so simtricas entre si. Este tipo de
mobilidade a robs. Seu volume de trabalho apresenta uma geometria mais
complexa em relao
tipo de rob e a sua representao do volume de trabalho.
.1.3. Modelagem C
Um manipulador mecnico consiste de elos, conectados por juntas
prismticas 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 variveis articulares de um rob
Fonte [16]
Figura 2:
configurao antropomrfica, existem ao menos trs juntas de rotao. O
eixo de movimento da junta de rotao da base ortogonal s outras duas juntas de
rotao que so simtricas entre si. Este tipo de
mobilidade a robs. Seu volume de trabalho apresenta uma geometria mais
complexa em relao s outras
tipo de rob e a sua representao do volume de trabalho.
Modelagem Cinemtica
Um manipulador mecnico consiste de elos, conectados por juntas
prismticas ou rotacionais. Cada par
para um manipulador com N
primeiro elo base de sustentao do rob (sistema de coordenadas
) e no seu ltimo elo incorporada a sua ferramenta de trabalho. O
conhecimento completo das variveis articulares de um rob
: Rob Articulado ou Antropomrfico com seu res
antropomrfica, existem ao menos trs juntas de rotao. O
eixo de movimento da junta de rotao da base ortogonal s outras duas juntas de
rotao que so simtricas entre si. Este tipo de
mobilidade a robs. Seu volume de trabalho apresenta uma geometria mais
s outras configuraes
tipo de rob e a sua representao do volume de trabalho.
inemtica
Um manipulador mecnico consiste de elos, conectados por juntas
prismticas ou rotacionais. Cada par
para um manipulador com N graus de liberdade tm
base de sustentao do rob (sistema de coordenadas
) e no seu ltimo elo incorporada a sua ferramenta de trabalho. O
conhecimento completo das variveis articulares de um rob
Rob Articulado ou Antropomrfico com seu res
antropomrfica, existem ao menos trs juntas de rotao. O
eixo de movimento da junta de rotao da base ortogonal s outras duas juntas de
rotao que so simtricas entre si. Este tipo de
mobilidade a robs. Seu volume de trabalho apresenta uma geometria mais
configuraes
tipo de rob e a sua representao do volume de trabalho.
Um manipulador mecnico consiste de elos, conectados por juntas
prismticas ou rotacionais. Cada par junta-elo
graus de liberdade tm
base de sustentao do rob (sistema de coordenadas
) e no seu ltimo elo incorporada a sua ferramenta de trabalho. O
conhecimento completo das variveis articulares de um rob
Rob Articulado ou Antropomrfico com seu res
antropomrfica, existem ao menos trs juntas de rotao. O
eixo de movimento da junta de rotao da base ortogonal s outras duas juntas de
rotao que so simtricas entre si. Este tipo de configura
mobilidade a robs. Seu volume de trabalho apresenta uma geometria mais
configuraes [3]. Na
tipo de rob e a sua representao do volume de trabalho.
Um manipulador mecnico consiste de elos, conectados por juntas
elo constitui um grau de liberdade. Assim,
graus de liberdade tm-se N pares
base de sustentao do rob (sistema de coordenadas
) e no seu ltimo elo incorporada a sua ferramenta de trabalho. O
conhecimento completo das variveis articulares de um rob
Rob Articulado ou Antropomrfico com seu res
antropomrfica, existem ao menos trs juntas de rotao. O
eixo de movimento da junta de rotao da base ortogonal s outras duas juntas de
configurao o que permite maior
mobilidade a robs. Seu volume de trabalho apresenta uma geometria mais
]. Na Figura 2
tipo de rob e a sua representao do volume de trabalho.
Um manipulador mecnico consiste de elos, conectados por juntas
constitui um grau de liberdade. Assim,
se N pares
base de sustentao do rob (sistema de coordenadas
) e no seu ltimo elo incorporada a sua ferramenta de trabalho. O
conhecimento completo das variveis articulares de um rob
Rob Articulado ou Antropomrfico com seu respectivo volume de trabalho.
antropomrfica, existem ao menos trs juntas de rotao. O
eixo de movimento da junta de rotao da base ortogonal s outras duas juntas de
o que permite maior
mobilidade a robs. Seu volume de trabalho apresenta uma geometria mais
demonstrado
Um manipulador mecnico consiste de elos, conectados por juntas
constitui um grau de liberdade. Assim,
se N pares juntas-elos, onde o
base de sustentao do rob (sistema de coordenadas
) e no seu ltimo elo incorporada a sua ferramenta de trabalho. O
conhecimento completo das variveis articulares de um rob
q
i , determina o
pectivo volume de trabalho.
18
antropomrfica, existem ao menos trs juntas de rotao. O
eixo de movimento da junta de rotao da base ortogonal s outras duas juntas de
o que permite maior
mobilidade a robs. Seu volume de trabalho apresenta uma geometria mais
demonstrado esse
Um manipulador mecnico consiste de elos, conectados por juntas
constitui um grau de liberdade. Assim,
elos, onde o
base de sustentao 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
antropomrfica, existem ao menos trs juntas de rotao. O
eixo de movimento da junta de rotao da base ortogonal s outras duas juntas de
o que permite maior
mobilidade a robs. Seu volume de trabalho apresenta uma geometria mais
esse
Um manipulador mecnico 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
19

posicionamento de sua ferramenta no sistema de coordenadas de trabalho. De um
modo geral, os trs primeiros graus de liberdade de um rob so responsveis pelo
posicionamento de sua ferramenta no espao de tarefas e os restantes pela sua
orientao. Na maioria das aplicaes industriais, a programao de tarefas de
robs, realizada por aprendizagem, consistindo no movimento individual de cada
junta.
Assim sendo, a programao de trajetrias de um rob torna-se muito fcil,
no necessitando de um conhecimento do modelo, sendo a fase de aprendizagem
basicamente uma operao de armazenamento de uma seqncia de incrementos
necessrios para que o conjunto de variveis articulares determine um
posicionamento final
X
i , especificado a partir de um perfil de trajetrias fornecido
(rob controlado a partir do sistema de coordenadas de juntas).
Como um rob controlado atravs de suas variveis articulares, a realizao
do controle de posio em relao ao sistema de coordenadas cartesianas implicar
no desenvolvimento de metodologias para transformao de coordenadas. A
transformao de coordenadas articulares para cartesianas normalmente realizada
em tempo real, onde a partir do conjunto de variveis articulares sero obtidas a
posio e orientao de sua ferramenta [4].
A cinemtica de rob manipulador pode ser dividida em dois tipos de
cinemtica a cinemtica direta e a inversa.
20


Fonte [7]
Figura 3: Relao dos problemas da cinemtica direta e inversa.

2.1.4. Cinemtica direta

Na cinemtica direta deseja-se obter a posio e velocidade do efetuador,
para uma dada posio das articulaes, ou seja, programar a cinemtica direta de
um manipulador determinar as relaes que exprimem um ponto no espao
cartesiano, em funo de um ponto no espao das juntas.

2.1.5. Cinemtica inversa

Enquanto a cinemtica direta resulta no desenvolvimento imediato das
expresses do manipulador, a cinemtica inversa procura determinar o conjunto de
valores das juntas que se adquam a uma dada configurao do espao operacional
ou cartesiano. A cinemtica inversa pode ser vista com o conjunto de processos
para determinar as funes inversas do sistema das expresses da cinemtica
direta. [4]
O problema da cinemtica inversa mais difcil que o problema da cinemtica
direta, pois no h um procedimento sistemtico explcito como o algoritmo DH
conforme [7]. Um resultado disto que cada rob, ou classe de robs, tem que ser
21

tratados separadamente. No entanto, a soluo para o problema da cinemtica
inversa mais til do que da cinemtica direta, pois no controle da trajetria do rob
a cinemtica inversa se faz necessria para escolha da melhor configurao das
juntas para um movimento de um ponto a outro com o mnimo de esforo, ou seja,
com o movimento de menos juntas possveis. Alm disso, a chave para fazer robs
mais versteis implica em usar feedbacks de sensores externos tais como o de
viso. Sensores externos alimentam informaes sobre a localizao e orientao
de objetos em termos de variveis do espao de configurao.
Estas informaes so necessrias na determinao dos valores apropriados
das juntas do rob, para que o rob possa realizar determinada tarefa em
locais sujeitos a interferncia de outros equipamentos no espao de trabalho do
rob. Portanto deve-se encontrar o mapeamento da especificao de entrada do
espao de configurao da ferramenta dentro de uma especificao de sada do
espao das juntas. Resume-se desta forma o problema da cinemtica inversa.

2.1.6. Notao de Denavit-Hartenberg

A evoluo no tempo das coordenadas das juntas de um rob representa o
modelo cinemtico de um sistema articulado no espao tridimensional. A notao de
Denavit-Hartenberg (DH) uma ferramenta utilizada para sistematizar a descrio
cinemtica de sistemas mecnicos articulados com N graus de liberdade [3].
Aplicadas, as juntas tm de estar numeradas por ordem crescente,
comeando pela base do manipulador. Pode ser dividido em 4 etapas fundamentais
que se subdividem em vrios passos elementares repetidos parcialmente em ciclos,
consoante o numero de elos do manipulador. Na Tabela 1, descrito o algoritmo,
22

admite-se que o manipulador tem n juntas e para ele se definiro n+1 sistemas de
coordenadas, sendo o ltimo associado mo ou garra. [4]

Tabela 1: Algoritmo de Denavit-Hartenberg para um manipulador com n juntas.
Fonte [4]
2.1.7. Nveis de Controle Robtico

O Controlador a parte do rob que opera o brao mecnico e mantm
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 trs nveis:
- Controle do acionador: ou controle de cada eixo do rob separadamente;
- Controle da trajetria: ou controle do brao do rob com coordenao entre
os eixos para percorrer a trajetria especificada subdividindo-se em controle ponto-
a-ponto (mtodo utilizado nesse trabalho) e controle continuo;
23

- Controle de coordenao com o ambiente: o controle do brao em
coordenao com o ambiente.
Esses nveis podem ser descritos como baixo, intermedirio e alto,
respectivamente.
Nesse trabalho foi utilizado o controle de trajetria ponto-a-ponto onde neste
mtodo, o caminho pelo qual o rob precisar passar, at um dado ponto final,
definido como um conjunto de pontos intermedirios. Estes pontos so enviados
memria do sistema de controle pelo usurio como parte do processo de
aprendizado do rob. O curso de um ponto intermedirio a outro no pr-
determinado e no afeta a implementao da operao principal. Muitos sistemas de
controle de robs industriais presentes no mercado so deste tipo.
O controle ponto-a-ponto recomendado para robs planejados para
executar tarefas em pontos pr-determinados (por exemplo, verter misturas em
moldes, carregar e descarregar partes, ou pontos de soldagem). Onde necessrio
ultrapassar obstculos em movimento, o operador deve planejar antecipadamente a
introduo de pontos intermedirios. Uma modificao mais sofisticada do controle
ponto-a-ponto possibilita a introduo de pontos proibidos no controle de
programao. O programa ir ento 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 memria do rob, e passando para o prximo ponto a ser ensinado - mtodo por
aprendizagem (teach in). Definindo as coordenadas de cada ponto desejado e
gravando-as na memria do rob, sem que este tenha que ser movido fisicamente
para que os pontos sejam aprendidos - mtodo de programao off-line.
24

Uma vez aprendidos os pontos do trajeto, programas podem ser escritos
direcionando o brao 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 contnuo. No entanto, s apropriado em operaes em que o trajeto
entre os pontos definidos no importante. Para executar caminhos mais
complicados, onde necessrio existir preciso do comeo ao fim, o controle por
trajetria contnua deve ser usado.
2.1.8. ED-7220C

O manipulador robtico ED-7220C ilustrado pela Figura 4 foi desenvolvido
pela empresa coreana ED-Laboratory com fins exclusivamente didticos. Dentre os
fatores que contribuem para limitao de suas aplicaes industriais esto
principalmente s limitaes mecnicas de seu volume de trabalho, a baixa
velocidade proporcionada por seus atuadores e reduzida capacidade de carga do
rob.
25


Fonte [do Autor]
Figura 4: Brao rob ED-7220C




Fonte [6]
Figura 5: Os 5 graus de liberdade do Ed-7220C.

O ED-7220C um rob de orientao vertical e possui cinco graus de
liberdade, ilustrados na Figura 5, sendo trs deles reservados para o
posicionamento e dois para a orientao de seu manipulador.

26


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

Esta posio refere-se localizao final do manipulador no interior de seu
volume de trabalho, Figuras 6 e 7, aps a execuo de um movimento e
determinada atravs do clculo cinemtico 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 so acionadas atravs de cinco servo motores de corrente contnua,
sendo o sentido da revoluo determinado pela polaridade da voltagem de
operao. Cada motor apresenta um encoder acoplado ao eixo para prover as
informaes de posio e velocidade para o efetivo controle em malha fechada. A
27

movimentao do eixo dos motores faz com que o encoder gere sinais de freqncia
que indicam a durao e o sentido do movimento. A unidade controladora do rob, o
ED-MK4, efetua a leitura destes sinais e calcula a trajetria a ser seguida.
Os encoders do projeto possuem uma resoluo que permite o retorno de
valores de -32767 a 32767 posies diferentes, entretanto a construo mecnica
do ED-7220C permite apenas rotaes completas na junta do pulso do rob,
referentes aos motores B e C. Todas as outras juntas tm limitaes mecnicas de
movimento, impedindo a utilizao 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: Especificaes do brao robtico ED-7220C

Fonte [6]

A deteco de sua limitao mecnica 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 proteo externa, tendo suas conexes
das juntas e elos, engrenagens, sensores e motores expostos ao acadmico. Sua
Nmero de articulaes 5 articulaes + garra
Construo Brao articulado na vertical
Transmisso Engrenagens, correia dentada e sem fim
Peso 25g
Preciso !"osio# +$% &,5mm
'elocidade do movimento ("ro)* +&&mm$s m,)imo
Ca"acidade de carga +g
(tuador -ervomotor .C !com encoder /tico#
(rticulao da 0ase +$% +5& graus
(rticulao do om0ro ++1& graus$ %15 graus
(rticulao do cotovelo +$% +1& graus
2otao da garra 13& graus
2aio m,)imo de o"erao 3+&mm !24,45#
(0ertura da garra 35mm !sem 0orrac6a7 85mm#
Proteo -o0recarga de um atuador
9ai)a de movimento
28

mecnica permite tambm a movimentao de suas juntas enquanto a garra
mantm-se fechada.

2.1.9. ED-MK4

A ED-MK4, Figura 8, a unidade controladora desenvolvida pela ED-
Labotatory para controlar a movimentao do rob manipulador didtico ED-7220C.


Fonte [6]
Figura 8: Unidade controladora ED-MK4, da empresa ED-Laboratory.

Dentre outros componentes, a controladora dispe de elementos de potncia,
terminais de entrada (para sensores), terminais de sada (para atuadores), o IHM
(Interface Homem-Mquina) Teach-Pendant, processadores e circuitos integrados
de memria, permitindo-a armazenar, executar e monitorar rotinas de programao
atravs das leituras de tenso, velocidade de revoluo e acelerao dos servo
motores do rob. As especificaes gerais da unidade controladora e seus
componentes so descritos na Tabela 3.

Tabela 3: Especificaes da unidade controladora ED-MK4.

Fonte [6]

Terminal de entrada : "ortas e ;E.s
C6ave de entrada : c6aves liga$desliga
Terminal de sa<da : "ortas e ;E.s
Processador Processador de +3 0its, controlador do motor de : 0its, "rogramador manual de : 0its
-oft=are E.%82C 2o0o Tal
29

A programao do rob pode ser feita atravs de um protocolo de
comunicao serial prprio, onde o usurio utiliza o software RoboTalk no
computador conectado para gerar arquivos .dat, contendo as coordenadas
espaciais de cada ponto, e arquivos com extenso .rt no qual emprega-se a
linguagem de programao do rob, comandando-o para os pontos no espao
gravados no arquivo .dat, de acordo com a tarefa desejada.
Estas rotinas so executadas atravs de uma comunicao serial, efetuada
atravs da interface RS-232 do PC, possibilitando o envio de informaes para a
unidade controladora ED-MK4. Alternativamente, a programao pode ser efetuada
diretamente atravs do Teach-Pendant (controle remoto do rob ED-7220C), no
modo de aprendizado, sendo que a programao enviada diretamente para a ED-
MK4, no necessitando de um interfaceamento com o computador.
A unidade controladora dispe de dois modos de comando para efetuar a
movimentao e programao do ED-7220C, sendo eles: o modo de movimentao
livre que, quando selecionado, apresenta a palavra PLAY no display do Teach-
Pendant; e o modo de movimentao por software, que apresenta no display a
palavra HOST.
Uma das maiores motivaes do desenvolvimento deste trabalho foram as
limitaes de hardware (do Teach-Pendant) e software (RoboTalk) que impedem a
implementao de projetos como a viso de mquina, o comando via web, controle
com um joystick, gerao de trajetrias senoidais, controle atravs de um software
de simulao, entre outros.

30

2.2 ENGENHARIA REVERSA

A engenharia reversa uma atividade que trabalha com um produto existente
(um software, uma pea mecnica, 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 circunstncias. executada a engenharia reversa quando
necessrio a trocar, modificao de uma pea (ou um software) por outro, com as
mesmas caractersticas ou entender como esta funciona no caso de no haver
documentao.
No h um registro inicial de utilizao da engenharia reversa, mas sabe-se
que quando ela surgiu, suas primeiras aplicaes foram em equipamentos militares,
para que se alcanasse a superioridade militar, e at mesmo como mtodo de
espionagem. Um exemplo do uso da engenharia reversa ocorreu em 1945, durante
a segunda guerra mundial, trs bombardeiros americanos modelo B-29 foram
forados a aterrissar em territrio russo. Os soviticos os desmontaram e estudaram.
Usaram a engenharia reversa para copiar o bombardeiro nos mnimos 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 produo em srie do bombardeiro comeou
neste mesmo ano.
31


Fonte [16]
Figura 9: Bombardeiro Tupolev Tu-4

A engenharia reversa por si prpria no envolve modificar o sistema analisado
ou criar um novo sistema baseado no sistema analisado. A engenharia reversa um
processo de exame apenas e no um processo de mudana ou de replicao [5].
importante destacar que a engenharia reversa pode ser aplicada qualquer
processo ou sistema sem caracterizar-se ilcita, entretanto, a divulgao de algumas
das informaes adquiridas por esta tcnica podem estar sujeitas protees
autorais e patentes, nestes casos a reproduo ou divulgao das informaes
obtidas podem ferir as leis que a protegem.
Por haver o consentimento da empresa acerca das atividades e pesquisas
desenvolvidas, e por no objetivar nada alm de atividades de carter estritamente
disciplinar e educacional, a aplicao da engenharia reversa na comunicao do
rob manipulador didtico ED-7220C no se caracteriza como ilcito.
32

A engenharia reversa tambm pode ser aplicada para efetuar a deteco de
avarias de sistemas ou ainda no aprendizado de um determinado protocolo de
comunicao [8].

2.3 VISO COMPUTACIONAL

Viso se mostra como um dos sentidos mais importantes para a interao de
um agente (humano ou robtico) com o mundo. Viso computacional, tambm
chamada de entendimento de imagens ou viso de mquinas, descreve a
determinao automtica da estrutura e propriedades do ambiente tridimensional no
qual o agente est inserido, ambiente este possivelmente dinmico, a partir de uma
nica ou mltiplas imagens bidimensionais do ambiente. As imagens podem ser
monocromticas ou coloridas, capturadas por uma ou mltiplas cmaras que, por
sua vez, podem ser estacionrias ou mveis [9].
A estrutura e propriedades a serem extradas do ambiente podem ser
geomtricas (formas, dimenses, localizaes de objetos, por exemplo) ou materiais
(cores, texturas, por exemplo). Alm disso, se o ambiente estiver mudando durante o
processo de imageamento, deseja-se tambm inferir a natureza desta mudana,
assim como fazer inferncias acerca do futuro. Viso no uma tarefa simples, uma
vez que o processo de formao de imagens consiste num mapeamento muitos -
para-um: uma grande variedade de superfcies, com diferentes materiais e
condies de iluminao, pode produzir imagens idnticas [10].
De certa forma, pode-se pensar em viso computacional como a tentativa de
desfazer parcialmente o processo de formao da imagem, em funo disso
considerado um problema inverso.
33

Infelizmente, no existe uma inverso prpria e correta. No entanto, algumas
restries podem ser impostas para resolver satisfatoriamente a ambigidade
inerente ao processo visual. Alm disso, o agente no precisa saber tudo acerca
do ambiente para poder atuar com sucesso.
Dependendo da aplicao, somente alguns aspectos tornam-se necessrios.
Por exemplo, em tarefas de manipulao, as aes de segurar peas, encaixar,
inserir que so realizadas, necessitando somente de informaes de forma e
localizao das peas a serem manipuladas; em tarefas de navegao, aes como
encontrar caminho livre, evitar obstculos, calcular velocidade e orientao, que so
necessrias, e assim por diante. Nenhuma destas tarefas requer a determinao da
descrio completa do ambiente para ser realizada com sucesso.

2.3.1. Imagem Digital

Um sinal que tenha um domnio contnuo e uma faixa de variao contnua
chamado de sinal analgico; j um sinal que tenha um domnio discreto e uma faixa
de variao tambm 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 transformao da imagem eltrica numa imagem digital envolve um
processo de amostragem e um de quantizao. A amostragem discretiza o domnio
da funo imagem, fornecendo a cada ponto discreto o valor da funo naquele
ponto. A quantizao discretiza a faixa de variao da funo, mapeando o valor da
funo em cada ponto a um valor dentre vrios valores discretos. Tipicamente os
34

valores discretos assumidos pelos pontos numa imagem monocromtica 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 rudos e deformaes na
informao contida nas imagens digitais. No entanto, esta informao no est
completamente perdida devida grande redundncia espacial existente, isto ,
pixels vizinhos numa imagem apresentam os mesmos (ou quase os mesmos)
parmetros fsicos. Um grande conjunto de tcnicas explora esta redundncia para
recuperar a informao contida na imagem. Estas tcnicas executam
transformaes na imagem, procurando extrair parmetros intrnsecos tais como
descontinuidades de superfcies, distncia, orientao de superfcies, entre outros.
Um dos objetivos mais comuns no processamento de imagens consiste em
eliminar rudos e extrair as bordas (edges) contidas numa imagem. Bordas so
curvas no plano de imagem atravs das quais existe uma significante mudana no
brilho [11]. O interesse nas bordas de uma imagem consiste no fato de que elas
correspondem a importantes contornos da cena.
35

Caso a imagem seja colorida a mesma ter trs dimenses onde cada
dimenso da matriz representar uma cor, dentre as cores primarias RGB (
vermelho, verde e azul ).

2.3.3. Limiarizao (Threholding)

A limiarizao uma das mais importantes tcnicas de segmentao de
imagem. atravs dela que se consegue separar os objetos do fundo de uma
determinada imagem. Em uma imagem monocromtica, 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 monocromtica em uma
imagem binria. O limiar T pode ser facilmente entendido pela equao 1.


(1)

Onde: ) , ( y x f a funo que representa a intensidade luminosa na imagem, e
) , ( y x g , a nova funo de luminosidade depois da separao do limiar T.

2.3.4 Mtodo de Otsu

O mtodo de Otsu elege o limiar timo maximizando a varincia entre classes
36

(between - class variance) mediante uma busca exaustiva. H diferentes mtodos
para achar o limiar, a maioria deles no d bons resultados quando se trabalha com
imagens do mundo real devido a presena de rudo, histogramas planos ou uma
iluminao inadequada [26]. Pelo contrrio, o mtodo de Otsu foi um dos melhores
mtodos de seleo do limiar para imagens do mundo real. No entanto, este mtodo
usa uma busca exaustiva para avaliar o critrio para maximizar a varincia entre
classes. medida que o nmero de classes de uma imagem aumenta, o mtodo de
Otsu precisa de bem mais tempo para selecionar o limiar multi-nvel adequado [2].
A importncia do mtodo de Otsu est na forma automtica de encontrar o
limiar, isto , no precisa superviso humana nem informao prvia da imagem
antes de seu processamento.
O mtodo Otsu, como foi dito, se baseia na escolha do valor de corte que maximize
a medida de varincia entre duas partes do histograma separadas por um mnimo
local, ou seja, encontrar T que minimize a funo:

(2)
onde:
- ) (
1
T q o nmero de pixels cuja intensidade menor que T;
- ) (
2
T q o nmero de pixels com intensidade superior a T;
- ) (
2
1
T varincia dos pixels cuja intensidade menor que T;
- ) (
2
2
T varincia dos pixels cuja intensidade maior que T;
37

2.3.4. Reconhecimento de Objetos

Reconhecimento consiste em identificar e determinar a posio e orientao
de cada objeto na cena em relao cmera e, com as informaes adquiridas na
fase de calibrao, determinar sua localizao em relao a um sistema de
coordenadas do ambiente (ou do rob), para tarefas de manipulao, por exemplo.
Com determinadas tcnicas de processamento de imagem regies podem ser
extradas da imagem correspondem a objetos de interesse. Assim, propriedades
como rea da regio, permetro, compactividade, centride, distncias mnima e
mxima, entre outras, so importantes na identificao e na determinao da
posio e orientao dos objetos.
A rea A de uma regio consiste na somatria dos pixels de um mesmo
rtulo. Para comparar a rea da regio com a rea do objeto imageado num
determinado posicionamento, deve-se ter conhecimento da calibrao da cmera,
que d a relao (unidade de medida da imagem)/(unidade de medida real), alm de
relacionar a posio da cmara com a posio do objeto na cena. O permetro P
pode ser calculado pela somatria dos pixels pertencentes borda de interesse. A
compactividade C de uma regio definida como sendo a relao:
A
P
C
4
2
= (2)
O centride, que no caso corresponde ao centro de rea, usado para
determinar a posio dos objetos e dado por:
A
y x f y
X
x y
C
) , ( . .

= ; (3)
A
y x f y
Y
x y
C
) , ( . . .

= (4)
38

sendo A a rea, e as somatrias aplicadas regio de interesse. A Figura 11
ilustra este procedimento numa imagem 10x10, com quina superior esquerda sendo
(0,0). A regio de interesse encontra-se de (1,2) a (5,8).

Fonte [1]
Figura 11: Clculo do centro de rea de uma determinada regio

Aps a extrao dos atributos da imagem, o prximo passo consiste em
corresponder os atributos e informaes extrados da imagem queles previamente
armazenados como modelos, numa fase de treinamento do sistema de viso.
A correspondncia entre dados extrados e modelos pode se dar
simplesmente atravs do uso de um classificador estatstico, permitindo certas
variaes estatsticas no processo de comparao. Neste caso, o conjunto de
atributos (do modelo e o extrado da imagem) deve conter elementos em nmero e
importncia 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 classificao do objeto -
diz que no um parafuso, quando na verdade trata -se de um parafuso). Pode-se
tambm realizar um reconhecedor sinttico de configurao, onde relaes
estruturais so utilizadas, tais como relaes entre atributos e/ou segmentos de
bordas.
39

A fase de treinamento dos sistemas de viso baseados em modelos
normalmente se d atravs de treinamento supervisionado, onde objetos conhecidos
so apresentados ao sistema, que extrai automaticamente os atributos e relaes e
armazena-os em modelos de cada objeto. Estes modelos tambm podem ser
fornecidos pelo usurio. No entanto, o melhor seria que o sistema os extrasse
automaticamente, para que se tenha uma garantia maior de que os mesmos
procedimentos sero executados para determinar dados dos modelos e da imagem
da cena, durante a fase de execuo. O treinamento do sistema de viso deve ser
realizado sob condies mais prximo possvel das condies de operao.

2.3.5. Luz Estruturada

Uma tcnica para a obteno de imagens em 3 dimenses a reconstruo
com luz estruturada. Um sistema de reconstruo deste composto por dois
conjuntos de ferramentas principais: um coletor de imagens e um conjunto de
programas computacionais. O coletor de imagens construdo baseado em uma
cmara digital de pequeno formato e um projetor de padres de luz estruturada.
Estes padres so projetados sobre a superfcie do objeto a ser reconstrudo e
capturado pela cmara digital que solidria ao projetor. O clculo das coordenadas
3D de pontos da superfcie do objeto depende de dois conjuntos de elementos que
devem ser conhecidos: as coordenadas de imagem dos alvos projetados e os
vetores diretores destes padres, ambos no referencial da imagem.
Na modelagem tridimensional por luz estruturada padres de luz com
caractersticas conhecidas so projetados sobre a superfcie do objeto e um
instrumento sensor captura a imagem dos padres que so distorcidos pela
40

superfcie de projeo. Pela medio desta distoro e pelo conhecimento das
caractersticas geomtricas (e/ou radiomtrica) dos padres que so projetados
se faz a determinao das coordenadas de pontos que compem a superfcie do
objeto. Para isto, as relaes geomtricas existentes entre o sensor e os feixes
de raios luminosos do padro projetado devem ser determinadas. Diferentes
padres de luz podem ser usados (linhas, grades, crculos, senoidais). O projetor de
padres simula uma segunda cmera, e torna a reconstruo 3D mais rpida que
no processo fotogramtrico convencional. Um programa computacional especfico
processa estes dados e extrai as coordenadas 3D dos padres projetados.[27]
41

2.4. KINECT


Em novembro de 2010 a empresa Microsoft

lanou um acessrio para o
videogame Xbox 360

acessrio esse, batizado de Kinect

onde o objetivo do
produto fazer com que o jogador seja capaz de controlar os jogos apenas como o
prprio corpo.
O Kinect

em seu lanamento chegou a marca de 8 milhes de peas


vendidas, entretanto at maro de 2011, 10 milhes de exemplares j foram
vendidos no valor de USD 150,00.
A arquitetura bsica do Kinect

formada por um projetor de luz


infravermelha (invisvel ao olho humano), uma cmera infravermelha, uma cmera
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 no est criptografada [14], fato que facilitou desde o incio sua
utilizao fora do XBOX.

42


Fonte [17]
Figura 12: Arquitetura bsica do Kinect




O Kinect

fornece trs informaes mediante os seus sensores, so eles:



Fonte [18]
Figura 13: Resumo da arquitetura bsica

- Image Stream (imagens): cada pixel representando uma cor, resoluo de
640x480 pixels em 30 frames por segundo (fps) ou 1280x1024 em um mximo
de 15 fps. possvel obter tanto a imagem da cmera RGB quanto a da cmera
infravermelha;
- Depth Stream (informao de profundidade): cada pixel indicando a
distncia do objeto em relao ao aparelho. O aparelho detecta cerca de 2000

nveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5
aparelho
Fonte [18]
Alm da informao de profundidade
pixel faz parte do corpo de um ser humano. O Kinect
corpos humanos em sua visada.
anulao
reconhecimento da fala em ingls.
uma luz infravermelha projetada
espalhada por pela superfcie com rugosidades da ordem do comprimento de onda
incidente onde ocorre a formao de uma estrutura granular no espao livre qual
dado o nome de
Figura 1
nveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5
aparelho, conforme mostrado na Figur
Fonte [18]

m da informao de profundidade
pixel faz parte do corpo de um ser humano. O Kinect
corpos humanos em sua visada.
- Audio
anulao de rudo e eco, o Kinect
reconhecimento da fala em ingls.
Para o mapeamento 3D o
uma luz infravermelha projetada
espalhada por pela superfcie com rugosidades da ordem do comprimento de onda
incidente onde ocorre a formao de uma estrutura granular no espao livre qual
dado o nome de
ura 15.
nveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5
conforme mostrado na Figur
Figura
m da informao de profundidade
pixel faz parte do corpo de um ser humano. O Kinect
corpos humanos em sua visada.
Audio Stream (fluxo de
de rudo e eco, o Kinect
reconhecimento da fala em ingls.
Para o mapeamento 3D o
uma luz infravermelha projetada
espalhada por pela superfcie com rugosidades da ordem do comprimento de onda
incidente onde ocorre a formao de uma estrutura granular no espao livre qual
dado o nome de speckle
nveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5
conforme mostrado na Figur
Figura 14: Campo de viso alcanado pelo Kinect
m da informao de profundidade
pixel faz parte do corpo de um ser humano. O Kinect
corpos humanos em sua visada.
(fluxo de
de rudo e eco, o Kinect
reconhecimento da fala em ingls.
Para o mapeamento 3D o Kinect
uma luz infravermelha projetada
espalhada por pela superfcie com rugosidades da ordem do comprimento de onda
incidente onde ocorre a formao de uma estrutura granular no espao livre qual
speckle. O formato com essa luz projeta pode ser visualizada pela
nveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5
conforme mostrado na Figura 14
Campo de viso alcanado pelo Kinect
m da informao de profundidade tambm
pixel faz parte do corpo de um ser humano. O Kinect
udio): com um conjunto de 4
de rudo e eco, o Kinect

permite a gravao de udio e o



Kinect

utiliza a tecnologia de luz estruturada onde


uma luz infravermelha projetada na superfcie dos objetos, sendo e
espalhada por pela superfcie com rugosidades da ordem do comprimento de onda
incidente onde ocorre a formao de uma estrutura granular no espao livre qual
O formato com essa luz projeta pode ser visualizada pela
nveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5
.
Campo de viso alcanado pelo Kinect
tambm possvel retornar
pixel faz parte do corpo de um ser humano. O Kinect
): com um conjunto de 4
permite a gravao de udio e o
utiliza a tecnologia de luz estruturada onde
na superfcie dos objetos, sendo e
espalhada por pela superfcie com rugosidades da ordem do comprimento de onda
incidente onde ocorre a formao de uma estrutura granular no espao livre qual
O formato com essa luz projeta pode ser visualizada pela
nveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5
Campo de viso alcanado pelo Kinect
possvel retornar
pixel faz parte do corpo de um ser humano. O Kinect consegue diferenciar at 6
): com um conjunto de 4
permite a gravao de udio e o
utiliza a tecnologia de luz estruturada onde
na superfcie dos objetos, sendo e
espalhada por pela superfcie com rugosidades da ordem do comprimento de onda
incidente onde ocorre a formao de uma estrutura granular no espao livre qual
O formato com essa luz projeta pode ser visualizada pela
nveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5 metros frente do


possvel retornar com exatido se o
consegue diferenciar at 6
): com um conjunto de 4 microfones e a
permite a gravao de udio e o
utiliza a tecnologia de luz estruturada onde
na superfcie dos objetos, sendo e
espalhada por pela superfcie com rugosidades da ordem do comprimento de onda
incidente onde ocorre a formao de uma estrutura granular no espao livre qual
O formato com essa luz projeta pode ser visualizada pela
43
frente do

com exatido se o
consegue diferenciar at 6
microfones e a
permite a gravao de udio e o
utiliza a tecnologia de luz estruturada onde
na superfcie dos objetos, sendo essa luz
espalhada por pela superfcie com rugosidades da ordem do comprimento de onda
incidente onde ocorre a formao de uma estrutura granular no espao livre qual
O formato com essa luz projeta pode ser visualizada pela
43
frente do
com exatido se o
consegue diferenciar at 6
microfones e a
permite a gravao de udio e o
utiliza a tecnologia de luz estruturada onde
ssa luz
espalhada por pela superfcie com rugosidades da ordem do comprimento de onda
incidente onde ocorre a formao de uma estrutura granular no espao livre qual
O formato com essa luz projeta pode ser visualizada pela

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 mtodo de identificao.
Figura 16
Holograma projetado pelo Kinect para leitura de profundidade.
mostrado com se d esse mtodo de identificao.
16: Mtodo de
Holograma projetado pelo Kinect para leitura de profundidade.
mostrado com se d esse mtodo de identificao.
Mtodo de identificao 3D por luz estruturada.
Holograma projetado pelo Kinect para leitura de profundidade.
mostrado com se d esse mtodo de identificao.
identificao 3D por luz estruturada.
Holograma projetado pelo Kinect para leitura de profundidade.
mostrado com se d esse mtodo de identificao.
identificao 3D por luz estruturada.

Holograma projetado pelo Kinect para leitura de profundidade.
mostrado com se d esse mtodo de identificao.

identificao 3D por luz estruturada.
44



44
45


2.5 MATLAB


O Matlab

(MATrix LABoratory) um poderoso software de computao


numrica, de anlise e de visualizao de dados, com um propsito bem mais amplo
que o original laboratrio de matrizes. O Matlab

um sistema interativo e uma


linguagem de programao para computao tcnica e cientfica em geral [19].
Devido a esses fatores o Matlab

da empresa Mathworks permite a resoluo


de vrios problemas numricos, utilizando uma linguagem de alto nvel para o
desenvolvimento de algoritmos. Possui diversas funes de tratamento numrico de
alto desempenho, capazes de resolver problemas computacionais de forma mais
eficiente que as tradicionais linguagens de programao, para aumentar a
vantagem, as solues do Matlab

so expressas de uma forma muito parecida de


como so escritas matematicamente, disponibilizando vrias ferramentas que
facilitam e agilizam todo o processo de programao, obteno de dados e
manipulao dos mesmos, estando totalmente integrado com suas Toolboxes que
fornecem uma enorme variedade de solues para muitos problemas da engenharia.
Alm do ambiente interativo, outra facilidade do Matlab

a possibilidade de
execuo de arquivos texto contendo uma seqncia de instrues definidas pelo
usurio. Esses arquivos texto, que tm extenso '.m', podem ser criados e editados
dentro ou fora do seu ambiente [20].

46

2.6 ROBOTICS TOOLBOX

A Robotics Toolbox uma ferramenta computacional de modelagem e
controle de robs industriais desenvolvida por Peter Corke e disponvel sob licena
LGPL.
A Robotics Toolbox proporciona muitas funes teis para o estudo e
simulao com brao robtico, por exemplo, cinemtica, dinmica e gerao de
trajetria. O Toolbox baseado em um mtodo generalista para representar a
cinemtica e a dinmica dos elos dos manipuladores.
Estes parmetros so encapsulados em objetos no MATLAB, onde o objeto
rob pode ser criado pelo usurio para representar qualquer elo do manipulador,
sendo tambm fornecida uma srie de exemplos para estudo de robs, como o
Puma 560 e o brao de Stanford, entre outros. O Toolbox tambm fornece funes
para a manipulao e converso entre tipos de dados, tais como vetores,
transformaes homogneas e unidades geomtricas que so necessrios para
representao tridimensional tanto para a posio quanto orientao [21].

2.7 OPENNI

OpenNI (Interao Natural Open) uma multi-linguagem, framework multi-
plataforma que define APIs (Interface de Programao de Aplicativos) para escrever
aplicaes utilizando Interao Natural.
O principal objetivo do OpenNI formar uma API padro que permite a
integrao de diversos sensores, entre eles os de audio e de viso. Com esse

framework possivel efetuar a integrao com o Matlab
poderosa ferramenta
APLICAO pode ser substituido por MATLAB
Fonte [

framework possivel efetuar a integrao com o Matlab
oderosa ferramenta
Na Figura
APLICAO pode ser substituido por MATLAB
Fonte [22]
framework possivel efetuar a integrao com o Matlab
oderosa ferramenta para controle de sistemas roboticos.
Na Figura 17 demostrado a arquitetura bsica da API, onde a informao de
APLICAO pode ser substituido por MATLAB
framework possivel efetuar a integrao com o Matlab
para controle de sistemas roboticos.
demostrado a arquitetura bsica da API, onde a informao de
APLICAO pode ser substituido por MATLAB
Figura 17: Arquitetura da API OpenNI
framework possivel efetuar a integrao com o Matlab
para controle de sistemas roboticos.
demostrado a arquitetura bsica da API, onde a informao de
APLICAO pode ser substituido por MATLAB
: Arquitetura da API OpenNI
framework possivel efetuar a integrao com o Matlab
para controle de sistemas roboticos.
demostrado a arquitetura bsica da API, onde a informao de
APLICAO pode ser substituido por MATLAB

.
: Arquitetura da API OpenNI
framework possivel efetuar a integrao com o Matlab

tornando essa juno uma


para controle de sistemas roboticos.
demostrado a arquitetura bsica da API, onde a informao de
: Arquitetura da API OpenNI
tornando essa juno uma
demostrado a arquitetura bsica da API, onde a informao de
47
tornando essa juno uma
demostrado a arquitetura bsica da API, onde a informao de
47
tornando essa juno uma
demostrado a arquitetura bsica da API, onde a informao de

48

3 METODOLOGIA

3.1 ENGENHARIA REVERSA DA COMUNICAO

Devido as caractersticas da comunicao serial, fez-se necessrio o
conhecimento do protocolo utilizado originalmente na comunicao entre o software
RoboTalk e a unidade controladora do rob. Segundo [23] e [24], os parmetros
dessa comunicao equivalem aos valores listados na Tabela 4.


Tabela 4: Parmetros de configurao da comunicao serial
Baudrate 9600
Databits 7
Stopbit 2
Parity Odd
RTS On
Fonte: [23] e [24].

Entretanto, houve discrepncia em alguns parmetros listados pelas
bibliografias consultadas. Desta forma, a fim de comprovar o correto funcionamento
da comunicao serial envolvida no controle do rob, foram utilizadas tcnicas de
engenharia reversa.
A compreenso, por parte da unidade controladora ED-MK4, dos comandos
que seriam enviados atravs do Matlab posteriormente, depende diretamente da
configurao da comunicao estar de acordo com a configurao do protocolo
original, uma vez que, se um parmetro como o baudrate fosse erroneamente
configurado, acabaria por alterar completamente as caractersticas da informao,
invalidando o comando enviado.
Neste trabalho, esta tcnica foi aplicada objetivando analisar a formatao e a
seqncia de comandos enviados ED-MK4 durante o comando do rob e para
monitorar o trfego da comunicao 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 identificao dos
comandos.

49


Fonte: [do Autor]
Figura 18: Arquitetura montada para identificao dos comandos de comunicao do controlador ED-
MK4 com o RoboTalk .

50

Conforme identificao dos comandos uma tabela (Tabela 5) de cdigos pode
ser gerada para utilizao no script de controle via Matlab.
Tabela 5: Comandos do controlador ED-MK4
Comando Descrio Retorno Parmetro
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 posio atual do
motor
Retorna a posio em
pulsos do encoder
M=A,B,C,D,E,F
HH
Posiciona o rob na
posio inicial

MA
Movimenta todos os
motores de forma
interpolada

MC
Move os motores para
posio de destino

MS,m
Move o motor m para a
posio 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]

Aps a identificao dos comandos de controle, o prximo passo foi identificar
a configurao correta da serial para controlar o rob via MATLAB. Configurao
essa que mostrada na Tabela 6.






51


Tabela 6: Parmetros de configurao da comunicao 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 obteno dessas informaes o script de controle pode ser criado.

Fonte [do Autor]
Figura 19: Cdigo de comunicao serial do MATLAB com o ED-MK4

Conforme a Figura 19 observa-se a configurao da serial via script Matlab,
onde caso a conexo no seja bem sucedida o sistema informa o erro e fecha todas
as portas seriais conectada no momento. Conforme o comentrio do cdigo, as flags
Terminator e FlowControl tiveram que ser configuradas para possibilitar a leitura
no s enviar comandos para execuo, como tambm receber informao do
status do rob.
Foi necessrio tambm efetuar a concatenao do cdigo 0D (onde na
tabela ASCII significa \r Carrier return ) no final de cada comando , pois esse
52

comando informa a controladora que a instruo a ser executada est terminada. Na
Figura 20 pode ser visto esse processo.

Fonte [do Autor]
Figura 20: Cdigo de insero do comando "0D" no final de cada instruo de execuo.

Outro ponto importante no script de comunicao o sistema de leitura, onde
o script aguarda alguma resposta da controladora. Nesse ponto foi necessrio
efetuar a leitura como o comando fread, pois era necessrio definir a quantidade
de bytes a serem lidos para que o script no ficasse em um loop infinito lendo sujeira
da serial. Mesmo com essa tcnica foi necessrio utilizar o comando flushinput
para a cada leitura efetuar a limpeza do canal serial. Na figura 21 demonstrado o
cdigo de leitura para dois bytes.


Fonte [do Autor]
Figura 21: Cdigo 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 empricos, onde o valor de 300 milissegundos foi suficiente
para deixar o cdigo robusto para envio de comandos em serie.
53

3.2 ROBOTICS TOOLBOX

Aps definir a comunicao como o rob, o passo subseqente foi a utilizao
do Toolbox Robotics para modelagem e gerao de trajetria do rob.
Primeiramente foi definido o modelado cinemtico do rob ED-7220C via
parmetros de modelagem de Denavit-Hanterberg. Na Figura 22 demonstrada a
vista do rob em forma de vetores de orientao, tcnica utilizada para facilitar a
identificao do modelo de D-H.


Fonte [do Autor]
Figura 22: Representao vetorial das juntas do rob ED-7220C








54

Aps aplicar o algoritmo de D-H os parmetros do modelo cinemtico do rob
ficaram da seguinte forma:
Tabela 7: Parmetros de Denavit-Hartenberg
Links (elos)
i

(ngulo de
toro)
i
a
(comprimento do
elo em mm)
i
(ngulo
de rotao)
i
d (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 Rotao
Fonte [do Autor]
Adicionando esses valores na Toolbox possvel verificar a forma como o
rob ficou configurado, na Figura 23 segue os comando executados para gerao do
modelo no Robotics Toolbox.


Fonte [do Autor]
Figura 23: Configurao dos parmetros de D-H na Robotics Toolbox



Onde:
55

A utilizao do comando SerialLink serve para criao do objeto robo, o
comando transl executa a matriz homogenia da cinemtica direta, o comando
robo.ikine executa a cinemtica inversa do rob, para as seguintes orientaes da
cinemtica direta e o comando robo.plot gera o grfico do rob, conforme a Figura
24.


Fonte [do Autor]
Figura 24: Representao grfica do rob ED-7220C via Robotics Toolbox

3.3 KINECT

Aps a definio cinemtica do rob, partiu-se para o sistema de
reconhecimento de imagem com o Kinect.
56

Inicialmente foi definida a rea de trabalho para posicionamento do Kinect,
na Figura 25 demonstrada a rea de trabalho do rob defina no laboratrio de
robtica da faculdade.


Fonte [do Autor]
Figura 25: rea de trabalho definida no laboratrio de robtica para execuo de testes

57

Na Figura 26 demonstra todo o cenrio, especialmente com a posio do Kinect.

Fonte [do Autor]
Figura 26: Cenrio de testes completo

Antes de iniciar o trabalho com o Kinect, foi necessrio efetuar a instalao
dos drivers da OpenNI, como tambm a instalao e configurao dos scripts do
Matlab criado por Tim Zaman. Para efetuar essas configuraes foi utilizado o
tutorial do orientador desse trabalho, encontrado em [25].
O cdigo utilizado para efetuar a captura da imagem RGB e da matriz de
profundidade, pode ser visto na Figura 27.

Fonte [do Autor]
Figura 27: Cdigo de captura da imagem RGB e matriz de profundidade.

58

Onde:
- mxNiCreateContext: o comando que instancia as configuraes existente
no arquivo de configurao SamplesConfig.xml;
- option.adjust_view_point: opo que ajusta o ponto de vista do Kinect;
- mxNiImage: comando responsvel de capturar a imagem RGB e a matriz de
profundidade;
- mxNiDeleteContext: comando responsvel de desalocar a memria quer foi
usada na criao dos parmetros de configurao do Kinect, caso esse comando
no seja usado o sistema vai rodar somente at quando toda a memria fsica e
virtual do computador seja alocada, nos testes isso ocorre em 3 tentativa em um
computador com 4GB de memria fsica;
Conforme informao do manual do Kinect a distancia recomenda entre o
Kinect e o jogador de no mnimo 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
59

3.4 PROCESSAMENTO DA IMAGEM

Algumas tcnicas foram executadas para uma melhor identificao dos
objetos. Como a cmera RGB do Kinect gera fotos com 640x480 pixel de
resoluo, a imagem inicial ficou com muita informao para poder ser processada,
pensando nisso foi efetuado um corte na figura depois da captao 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 viso frontal do cenrio de teste, com o local
cortado pelo script representado pelas linhas pontilhadas.

Fonte [do Autor]
Figura 29: Pr-processamento da imagem vista pelo Kinect

60

O comando utilizado para efetuar esse corte foi o imcrop do Matlab na
figura 30 mostrado o cdigo 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 calibrao da posio
do Kinect, permitindo assim uma flexibilidade no posicionamento do Kinect em
relao rea de trabalho.
Como pode ser visto no cdigo, h dois sistemas de corte, o da figura RGB e
o da matriz de valores de profundidade, isso foi feito, pois ao encontrar o centride
da imagem RGB, feito a correlao da posio do centride na matriz de
profundidade.
Para facilitar o calculo do sistema de coordenadas, foi efetuado um
espelhamento da imagem, fazendo com que a posio das peas a serem
identificadas fossem igual posio real, Na figura 31 mostrado o cdigo 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 correlao
dimensional seja preservada.
61


Fonte [do Autor]
Figura 31: Cdigo 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
identificao foi feita pela cor, onde na rea de trabalho duas peas de cor azul e
vermelha, foram dispostas em determinada posio dentro do limite da rea de
trabalho. Na figura 32 representado o cdigo de reconhecimento do objeto
vermelho.


Fonte [do Autor]
Figura 32: Cdigo de identificao do objeto vermelho.

Onde:
- imsubtract: comando responsvel de subtrair uma imagem de outra, que
neste caso a subtrao de qualquer objeto de cor vermelha do resto da figura.
Com esse comando poderia ser subtrada qualquer imagem com alguma cor
especifica, bastando apenas definir o valor da cor em RGB.
- rgb2gray: comando responsvel por transformar a imagem RGB em escala
de cinza.
62

- graythresh: comando responsvel por definir o limite global da imagem
utilizando o mtodo de Otsu.
- im2bw: Converte uma imagem para o formato binrio, 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 binria somente com o
objeto escolhido, neste caso o objeto vermelho, sendo ento efetuada a identificao
do centride do objeto, na Figura 33 segue o cdigo de identificao do centride.

Fonte [do Autor]
Figura 33: Identificao do centride de um objeto.

Onde:
- imfill: Preenche regies com buracos e outras falhas;
- regionprops: comando que extrai as propriedades morfolgicas da regio a
ser identificada;





3.5


referenciar o objeto em funo da referenc
vista frontal com
convers
calculo dos
Fonte [do Autor]
REFERENCIA DO PONTO DE VISO
Depois de identificado o centride da pea a ser capturada, partiu
referenciar o objeto em funo da referenc
vista frontal com
converso do valor
calculo dos pulsos para o motor de cada junta.
Fonte [do Autor]
Figura 34:

REFERENCIA DO PONTO DE VISO
Depois de identificado o centride da pea a ser capturada, partiu
referenciar o objeto em funo 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 distncia da base do rob at rea de trabalho.
REFERENCIA DO PONTO DE VISO
Depois de identificado o centride da pea a ser capturada, partiu
referenciar o objeto em funo da referenc
as medidas da rea de trabalho,
imagem em pixel, para medidas mtricas e posteriormente
pulsos para o motor de cada junta.
Medidas da rea de trabalho e distncia da base do rob at rea de trabalho.
REFERENCIA DO PONTO DE VISO
Depois de identificado o centride da pea a ser capturada, partiu
referenciar o objeto em funo da referencia da base do rob. Na Figura 3
as medidas da rea de trabalho,
em pixel, para medidas mtricas e posteriormente
pulsos para o motor de cada junta.
Medidas da rea de trabalho e distncia da base do rob at rea de trabalho.
REFERENCIA DO PONTO DE VISO
Depois de identificado o centride da pea a ser capturada, partiu
ia da base do rob. Na Figura 3
as medidas da rea de trabalho, essa informao
em pixel, para medidas mtricas e posteriormente
pulsos para o motor de cada junta.
Medidas da rea de trabalho e distncia da base do rob at rea de trabalho.
Depois de identificado o centride da pea a ser capturada, partiu
ia da base do rob. Na Figura 3
essa informao
em pixel, para medidas mtricas e posteriormente
Medidas da rea de trabalho e distncia da base do rob at rea de trabalho.
Depois de identificado o centride da pea a ser capturada, partiu
ia da base do rob. Na Figura 3
essa informao necessri
em pixel, para medidas mtricas e posteriormente
Medidas da rea de trabalho e distncia da base do rob at rea de trabalho.
63
Depois de identificado o centride da pea a ser capturada, partiu-se para
ia da base do rob. Na Figura 34 segue a
necessria para
em pixel, para medidas mtricas e posteriormente o

Medidas da rea de trabalho e distncia da base do rob at rea de trabalho.
63
se para
a
para
o

Na Fi
trabalho
Fonte [do Autor]
J a Figura 3
informao muito importante, pois com esse valor descontado dos valores
obtidos via matriz de profundidade que ser possvel identificar a distancia do objeto
at a base
Fonte [do Autor]
Figura 35
trabalho.
Fonte [do Autor]

J a Figura 36
formao muito importante, pois com esse valor descontado dos valores
obtidos via matriz de profundidade que ser possvel 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
formao muito importante, pois com esse valor descontado dos valores
obtidos via matriz de profundidade que ser possvel 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 viso 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
formao muito importante, pois com esse valor descontado dos valores
obtidos via matriz de profundidade que ser possvel identificar a distancia do objeto
, tanto para o eixo X como o Y.
Distancia entre o Kinect e a rea de trabalho em viso lateral.
segue a vista superior onde
Comprimento da rea de trabalho
mostra a distancia do Kinect at o inicio da rea de trabalho, essa
formao muito importante, pois com esse valor descontado dos valores
obtidos via matriz de profundidade que ser possvel identificar a distancia do objeto
, tanto para o eixo X como o Y.
Distancia entre o Kinect e a rea de trabalho em viso 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
formao muito importante, pois com esse valor descontado dos valores
obtidos via matriz de profundidade que ser possvel identificar a distancia do objeto
, tanto para o eixo X como o Y.
Distancia entre o Kinect e a rea de trabalho em viso 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
formao muito importante, pois com esse valor descontado dos valores
obtidos via matriz de profundidade que ser possvel identificar a distancia do objeto
Distancia entre o Kinect e a rea de trabalho em viso lateral.
o comprimento da rea de
mostra a distancia do Kinect at o inicio da rea de trabalho, essa
formao muito importante, pois com esse valor descontado dos valores
obtidos via matriz de profundidade que ser possvel identificar a distancia do objeto
Distancia entre o Kinect e a rea de trabalho em viso lateral.
64
o comprimento da rea de

mostra a distancia do Kinect at o inicio da rea de trabalho, essa
formao muito importante, pois com esse valor descontado dos valores
obtidos via matriz de profundidade que ser possvel identificar a distancia do objeto
64
o comprimento da rea de
mostra a distancia do Kinect at o inicio da rea de trabalho, essa
formao muito importante, pois com esse valor descontado dos valores
obtidos via matriz de profundidade que ser possvel identificar a distancia do objeto

65


Aps aquisio desses dados iniciou-se os clculos de referencia dos objetos nas
coordenadas X, Y e Z. Para coordenada X, ao encontrar o centride 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 milmetros e a
modelagem do rob feita em metros, o calculo para identificar a distancia da pea
referente a base do rob foi:
1000
Pr tan 2380 ofundidade ciaMatriz Dis
(5)


O resultado da equao 4 representa a coordenada no eixo X. Para identificar a
medida do eixo Y algumas converses foram necessrias, primeiro foi convertido o
valor do eixo X da imagem em RGB de pixel para centmetros, 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 converso dos pixels somado a essa medida, por exemplo:
Se o resultado do eixo X for igual a 29 pixel a distancia em centmetro de
13.1818cm, somando isso a 26 cm, tem-se a distancia em centmetros do objeto em
relao a base do rob, mas como necessrio a converso para metros, divide-se
esse valor por 100. Porm como a variao da pea no ocorre somente em uma
direo reta, necessrio aplicar Pitgoras no valor encontrado para que o
resultado seja real. Abaixo segue a formula de Pitgoras.

66

2 2 2
c b a + = (6)

Em relao ao eixo Z, como os objetos so de tamanhos fixos conhecido,
no foi necessrio 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 cinemtica inversa para
descobrir a posio final que a garra deve ficar, foi necessrio gerar uma relao
entre o resultado da cinemtica inversa e o movimento dos eixos determinados,
entretanto o resultado da cinemtica inversa dado em deslocamento angular.
Como o eixo Z era fixo, os nicos elos que precisaram ser movimentados foi
o da base para a movimentao no eixo X e o do ombro, determinando o
deslocamento Y.
Para converter os valores referentes ao elo da base usou-se a seguinte
equao para o eixo da base:

7052 . 2
7100
1
qi
(7)
Onde:
- 7100: a total de pulsos necessrio para o rob percorrer 150, angulao
mxima permitida mecanicamente. Como a rea de trabalho est apenas em um
quadrante, no foi necessrio fazer o range de todo deslocamento angular permitido,
que nesse caso seria 300;
- qi1: resultado da cinemtica inversa para o eixo da base;
- 2.7052: Com o valor passado pela cinemtica inversa est em formato de
radianos, esse valor equivale aos 150;
67

Para o eixo do ombro, utilizou-se a seguinte equao:

4835 . 1
3174
2
qi
(8)
Onde:
- 3174: total de pulsos possveis do eixo do ombro;
- qi2: resultado da cinemtica inversa para o eixo do ombro;
- 1.4835: Com o valor passado pela cinemtica inversa est em formato de
radianos, esse valor equivale aos 85;
Aps essas converses foi utilizado o script de envio de comando para o rob, onde
na Figura 37 demonstra o fragmento do cdigo para movimentao do eixo da base,
que nesse caso o motor representado pela letra F.

Fonte [do Autor]
Figura 37: Cdigo de controle do eixo da base


68

Para acionar a busca do objeto, foi feito uma tela grfica 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.
69

4 RESULTADOS E DISCUSSES

4.1 COMUNICAO SERIAL

Com o cdigo 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 necessrio efetuar a conexo via serial e colocar o
rob em modo HOST, na Figura 39 segue o comando que efetua essas duas aes.


Fonte [do Autor]
Figura 39: Script de comando para conexo via serial e transpor o sistema de controle do ED-MK4
para modo HOST.


A taxa de sucesso na movimentao dos motores foi de 100%, em relao ao
tempo de resposta foi necessrio apenas adicionar um intervalo de 300ms entre os
comandos, pois isso era uma das restries do processador do ED-MK4.
70

4.2 ROBOTICS TOOLBOX

Os testes feitos com a Toolbox Robotic, ocorreram na relao de verificar se a
modelagem cinemtica estava correta e no erro gerado na questo da cinemtica
inversa.
Para validao 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 atravs do drivebot.

Posteriormente foi determinada uma posio para garra a partir dos eixos X,
Y e Z, no rob ED-7220C, inserindo esses dados na cinemtica inversa via
comando ikine, determinaram-se os ngulos de rotao dos motores, que depois foi
inserido no rob virtual, para identificao do posicionamento. Em alguns resultados
desses testes o sistema mostrou at duas solues onde a primeira deu-se com a
garra posicionada de cima para baixo e a outra com a garra em sentido de
71

acoplamento lateral. Para passagens desses valores para o rob real, no 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 preparao do ambiente causou muito transtorno,
pois at ento o processamento da imagem estava sendo feito com a imagem total
72

obtida pela cmera RGB que neste caso era uma imagem de 640x480 conforme a
Figura 42.

Fonte [do Autor]
Figura 42: Imagem gerada pela cmera RGB do Kinect.

Para resolver esse problema foi utilizada a tcnica de corte descrita na
metodologia desse trabalho, a partir da, foi gerado um sistema de teste para
verificar a preciso e repetibilidade do rob em conjunto com o sistema de viso. Por
preciso, entende-se a capacidade do rob de ir a uma posio 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
preciso em posicionamento absoluto. Por repetibilidade, entende-se a capacidade
do rob de, uma vez conhecida e alcanada uma posio, e partindo-se da mesma
condio inicial, voltar a ir ("repetir") novamente a tal posio com um erro

determinado.
trabalho.
vermelho a ser pego, nesse caso o teste foi feito na
trabalho.
Fonte [do Autor]
Figura
metodologia utilizada para preciso, 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: Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
Foram feitos
metodologia utilizada para preciso, 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 preciso e repetibilidade referente ao posicionamento da Figura 44
Figura
43 (a)
43 (b)
43 (c)
Fonte [do Autor]
Na Figura 44 segue o teste referente
determinado. Abaixo segue os testes conforme posies do objeto na rea de
Figura 43 mostra uma viso superior da rea de trabalho com o o
vermelho a ser pego, nesse caso o teste foi feito na
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
m feitos cinco
metodologia utilizada para preciso, 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 preciso e repetibilidade referente ao posicionamento da Figura 44

segue o teste referente
Abaixo segue os testes conforme posies do objeto na rea de
mostra uma viso superior da rea de trabalho com o o
vermelho a ser pego, nesse caso o teste foi feito na
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
cinco tentativas de pega do objeto em cada posio
metodologia utilizada para preciso, 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 preciso para cada posio do objeto
: Teste de preciso e repetibilidade referente ao posicionamento da Figura 44
Preciso
80%
60%
80%
segue o teste referente
Abaixo segue os testes conforme posies do objeto na rea de
mostra uma viso superior da rea de trabalho com o o
vermelho a ser pego, nesse caso o teste foi feito na
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
inferior.
tentativas de pega do objeto em cada posio
metodologia utilizada para preciso, 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 preciso para cada posio do objeto
: Teste de preciso e repetibilidade referente ao posicionamento da Figura 44

segue o teste referente posio central da rea de trabalho.
Abaixo segue os testes conforme posies do objeto na rea de
mostra uma viso superior da rea de trabalho com o o
vermelho a ser pego, nesse caso o teste foi feito na
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
inferior.

tentativas de pega do objeto em cada posio
metodologia utilizada para preciso, 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 preciso para cada posio do objeto
: Teste de preciso e repetibilidade referente ao posicionamento da Figura 44
posio central da rea de trabalho.
Abaixo segue os testes conforme posies do objeto na rea de
mostra uma viso superior da rea de trabalho com o o
vermelho a ser pego, nesse caso o teste foi feito na parte inferior
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
tentativas de pega do objeto em cada posio
metodologia utilizada para preciso, 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 preciso para cada posio do objeto
: Teste de preciso e repetibilidade referente ao posicionamento da Figura 44
Repetibilidade
100%
80%
100%
posio central da rea de trabalho.
Abaixo segue os testes conforme posies do objeto na rea de
mostra uma viso superior da rea de trabalho com o o
parte inferior da rea de
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
tentativas de pega do objeto em cada posio
metodologia utilizada para preciso, 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 preciso para cada posio do objeto
: Teste de preciso e repetibilidade referente ao posicionamento da Figura 44
Repetibilidade
100%

100%
posio central da rea de trabalho.
73
Abaixo segue os testes conforme posies do objeto na rea de
mostra uma viso superior da rea de trabalho com o objeto
da rea de

Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
tentativas de pega do objeto em cada posio, a
metodologia utilizada para preciso, 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 preciso para cada posio do objeto
: Teste de preciso e repetibilidade referente ao posicionamento da Figura 44
posio central da rea de trabalho.
73
Abaixo segue os testes conforme posies do objeto na rea de
bjeto
da rea de
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
, a
metodologia utilizada para preciso, foi a de verificar quantas vezes a pega do
,
centagem de preciso para cada posio do objeto


Fonte [do Autor]
Figura
Tabela
Fonte [do Autor]
Na Figura 4
Fonte [do Auto
Figura
Fonte [do Autor]
Figura 44: Viso superior da rea de trabalho com o objeto vermelho a ser identificado na locali
Tabela 9: Teste de preciso e repetibilidade referente ao posicionamento da Figura 45
Figura
44 (a)
44 (b)
44 (c)
Fonte [do Autor]
Na Figura 45 segue
Fonte [do Autor]
Figura 45: Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na locali
Teste de preciso e repetibilidade referente ao posicionamento da Figura 45

segue o teste referente posio superior da rea de trabalho.
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na locali
Teste de preciso e repetibilidade referente ao posicionamento da Figura 45
Preciso
80%
40%
80%
o teste referente posio superior da rea de trabalho.
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na locali
central.


Teste de preciso e repetibilidade referente ao posicionamento da Figura 45


o teste referente posio superior da rea de trabalho.

Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
superior.




Viso superior da rea de trabalho com o objeto vermelho a ser identificado na locali
central.
Teste de preciso e repetibilidade referente ao posicionamento da Figura 45
o teste referente posio superior da rea de trabalho.
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
superior.
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na locali
Teste de preciso e repetibilidade referente ao posicionamento da Figura 45
Repetibilidade
100%
60%
80%
o teste referente posio superior da rea de trabalho.
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao

Viso superior da rea de trabalho com o objeto vermelho a ser identificado na locali
Teste de preciso e repetibilidade referente ao posicionamento da Figura 45
Repetibilidade
100%


o teste referente posio superior da rea de trabalho.

Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
74

Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao

o teste referente posio superior da rea de trabalho.

Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
74
zao
Viso superior da rea de trabalho com o objeto vermelho a ser identificado na localizao
75


Tabela 10: Teste de preciso e repetibilidade referente ao posicionamento da Figura 46
Figura Preciso Repetibilidade
45 (a) 80% 100%
45 (b) 60% 80%
45 (c) 80% 100%
Fonte [do Autor]

A partir destes testes foi possvel perceber uma impreciso na busca dos
objetos na parte central da rea de trabalho, para efetuar uma melhora na preciso
foi necessrio adicionar alguns fatores de correo, porm isso criou um problema
de ajustes global onde em alguns pontos a pega do objeto ocorreu de forma perfeita
e de outras no.
Entretanto mesmo com alguns erros na pega do objeto em alguns pontos em
relao ao eixo Y, o posicionamento do eixo X teve uma preciso de quase
100%, informao validada a partir de testes somente de posicionamento do eixo da
base, que determinado pelo eixo X.
76

5 CONCLUSO


A partir de todo esse trabalho, possvel identificar o quanto importante o
uso de viso computacional para o controle robtico, tanto na facilidade de
implementao, quanto ao custo final do projeto. Entretanto muitos aspectos no
mbito da robtica devem ser trabalhados na vida acadmica para os cursos
correlatos, pois a utilizao de robs em aulas pratica com ferramentas que
possibilitem uma versatilidade para criao de mtodos de controle, se faz muito
necessrio, 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 capacitao de profissionais multidisciplinares, onde no mbito
robtico requer um conhecimento vasto tanto na rea de controle, quanto na rea de
programao de sistema computacionais e/ou microprocessados, eletrnica, redes
de comunicao, mecnica, tica e conhecimentos bsicos como geometria e
calculo.
Em linhas gerais esse trabalho, alm de agregar bastante conhecimento ao
seu desenvolvedor, deixa como legado uma trilha para utilizao do rob ED-
7220C via Matlab com scripts prontos para utilizao em diversas matrias
correlatas ao trabalho com sistemas robticos. Sendo tambm um guia inicial para
quem pretende utilizar o Kinect como uma ferramenta de reconhecimento de
imagens 3D.
Em relao aos objetivos especficos do trabalho, conclui-se que todos foram
alcanados de forma plena, sendo tambm esse trabalho, um ponto inicial para
diversos outros trabalhos no mbito robtico.
77

6 REFERNCIAS

[1] ROMANO, Victor Ferreira. Robtica Industrial Aplicaes na indstria de
manufatura e de processos. So Paulo, 2002.

[2] RIVIN, E., Mechanical Design of Robots, 1 ed., McGraw-Hill Inc., New York,
1988.

[3] ROSRIO, Joo Maurcio. Princpios de Mecatrnica. So Paulo: Prentice Hall,
2005.

[4] SANTOS, V. M. F. Robtica Industrial: Apontamentos tericos, exerccios
para aulas prticas e problemas de exames resolvidos, Universidade de Aveiro,
2003-2004. Disponvel 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.

78

[12] CENTENO, J., MITISHITA, E., Sensoriamento Remoto por LIDAR (LIDAR
Remote Sensing) Disponvel 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 solid-state
image sensor, Proceedings of the SPIE, Vol. 3823, pp. 180-191, Munich 1999.

[14]FRIED L.,2011. DIY Kinect Hacking. Disponvel em:
http://www.ladyada.net/learn/diykinect/ [Acesso 22/11/2011]

[15] http://eficienciavital.files.wordpress.com/2011/05/industrial_robots.jpg.
Disponvel em 05-06-2011

[16] http://www.globalsecurity.org. Disponvel em 21-11-2011

[17] PAULA, C. B., Adaptando e desenvolvendo jogos para uso com o Microsoft
Kinect , TECPAR, 2011.

[18] MICROSOFT RESEARCH, 2011. Programming Guide: Getting Started
with the Kinect for Windows SDK Beta. Disponvel em:
<http://research.microsoft.com/en-
us/um/redmond/projects/kinectsdk/docs/ProgrammingGuide_KinectSDK.docx>
Acesso em novembro de 2011.

[19] LAGES, Nobre L. Introduo ao MATLAB. 1999. Universidade Federal de
Alagoas UFAL Departamento de Engenharia Estrutural, Macei/AL. Disponvel
em:<http://www.ctec.ufal.br/professor/enl/metnum/Bibliografia/Introducao%20ao%20
MATLAB.pdf>. Acessado em Maio de 2011.
79

[20] FRANA, Isabella F. Apostila de introduo ao Matlab

, 2008. Universidade
Federal Fluminense - UFF - Centro Tecnolgico, Niteri/RJ. Disponvel 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 Algorithms in
MATLAB, SPRINGER, 2011

[22] OpenNI User Guide. OpenNI organization. Disponvel 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 brao robtico atravs
de um navegador web. 2006. Trabalho de Concluso de Curso (Graduao em
Cincia da Computao) Departamento de Cincia da Computao. Instituto de
Ensino Superior Planalto, Braslia.


[24] SEVERINO, E. C. Joystick para Controle do Brao Mecnico ED-7220C.
2005. Trabalho de Concluso de Curso (Graduao em Engenharia da Computao)
Ncleo de Cincias Exatas e Tecnolgicas NCET. Centro Universitrio Positivo
UNICENP, Curitiba.

[25] Tutorial - KINECT + MATLAB. Disponvel 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 dInfoRmatique en Images et Systmes
dinformation, Palmas, TO,Maro 2004.

[27] REISS, M. L. L;TOMMSELLI A. M. G. Reconstruo 3d Por Luz Estruturada:
Calibrao Dos Vetores Diretores Dos Feixes De Padres Projetados. Artigo
Universidade Estadual Paulista UNESP SO PAULO


ANEXO
Anexo 1



Anexo 2
imagem.

%OBS: NECESSARIO EFETUAR A CONEXO 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 CONEXO 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 )
%% _____________________CONFIGURAO 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 CONEXO 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 )
%% _____________________CONFIGURAO 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
=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 = SerialLink(L,
Fluxograma do trabalho proposto
Script de controle do rob, controle do Kinect e processamento
%OBS: NECESSARIO EFETUAR A CONEXO 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 )
%% _____________________CONFIGURAO 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
=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 CONEXO 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 )
%% _____________________CONFIGURAO 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
=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 CONEXO COMO ROBO
ScriptVisionComputerTCC_v2( viEscolha )
%% _____________________CONFIGURAO DO
%COMO O TOOLBOX NOVO com os dados CERRRTTTTOOOS
%%D&H Theta Di Ai Alpha R/P
L(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]); %COTOVELO
pi/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
OTAO
80

Script de controle do rob, controle do Kinect e processamento da
80

da
81


%% _____________________IDENTIFICAO DA
IMAGEM______________________________

% Instancia as configuraes do kinect
context =
mxNiCreateContext('C:\Users\Hamilton\Documents\kinect\kinect\Config\Samples
Config.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 local de interesse
vmRGB = imcrop(rgb,[303 188 31 18]);
vmDEPTH = imcrop(depth,[303 188 31 18]);


%Invertendo a imagem, espelhando no eixo X para ficar 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 binria, com base 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
regio.
% Note-se que o primeiro elemento de Centroid a coordenada
% horizontal (ou coordenada x) do centro de massa, eo segundo
elemento
% a coordenada vertical (ou y-coordenada). Todos os outros
elementos
% da Centroid esto em ordem de dimenso

try
bw2 = imfill(voObjetoVermelho,'holes');
s = regionprops(bw2, 'centroid');
centroids = cat(1, s.Centroid);
catch
82

centroids = [1 1]; %Para no da error
end

viCentroide = vmDEPTH_inv(1,(round(centroids(1))))

%Caso o centroide encontrado seja 0 deslocar o centroide 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 posio no eixo X do plano do Robo (MOTOR F)
%A distancia entre o kinect e a coordenada 0 do eixo X se da a
posio 2480mm
%ento:

viCoordenadaXmm = (2480 - double(viCentroide))/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 trabalho
viConvYmetros = ((((round(centroids(1))*15))/33)+26)/100
viCoordenadaYmm = sqrt(0.125^2+viConvYmetros^2) %Pitagoras c^2 =
a^2+b^2

%EFETUANDO A CINEMATICA INVERSA
T = transl(double(viCoordenadaXmm),double(viCoordenadaYmm),
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)

83

%TRATAMENTO DO MOTOR E
if(viETeste >= 160)
viCoordenadaMotorE = viCoordenadaMotorEParcial - 300

%CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO
viCoordenadaMotorF = (round((7100*qi(1))/2.7052))

if(viCoordenadaMotorF < 0)
viCoordenadaMotorF = viCoordenadaMotorF * (-1)
end

viDistancia = 1;
end

if(viETeste >= 20 && viETeste <= 100)
viCoordenadaMotorE = viCoordenadaMotorEParcial - 900

%CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO
viCoordenadaMotorF = (round((7100*qi(1))/2.7052))+100

if(viCoordenadaMotorF < 0)
viCoordenadaMotorF = viCoordenadaMotorF * (-1)
end

viDistancia = 2;
end

if(viETeste <= 19)
viCoordenadaMotorE = viCoordenadaMotorEParcial - 1500

%CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO
viCoordenadaMotorF = (round((7100*qi(1))/2.7052))

if(viCoordenadaMotorF < 0)
viCoordenadaMotorF = viCoordenadaMotorF * (-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 binria, com base 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
regio.
% Note-se que o primeiro elemento de Centroid a coordenada
% horizontal (ou coordenada x) do centro de massa, eo segundo
elemento
% a coordenada vertical (ou y-coordenada). Todos os outros
elementos
% da Centroid esto em ordem de dimenso
84


try
bw2 = imfill(voObjetoAzul,'holes');
s = regionprops(bw2, 'centroid');
centroids = cat(1, s.Centroid);
catch
centroids = [1 1]; %Para no da error
end

viCentroide = vmDEPTH_inv(1,(round(centroids(1))))

%Caso o centroide encontrado seja 0 deslocar o centroide 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(viCentroide))/1000

viConvYmetros = ((((round(centroids(1))*15))/33)+26)/100
viCoordenadaYmm = sqrt(0.125^2+viConvYmetros^2) %Pitagoras c^2 =
a^2+b^2

%EFETUANDO A CINEMATICA INVERSA
T = transl(double(viCoordenadaXmm),double(viCoordenadaYmm),
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 = viCoordenadaMotorEParcial - 300

%CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO
viCoordenadaMotorF = (round((7100*qi(1))/2.7052))

if(viCoordenadaMotorF < 0)
viCoordenadaMotorF = viCoordenadaMotorF * (-1)
end

viDistancia = 1;
end

if(viETeste >= 20 && viETeste <= 100)
viCoordenadaMotorE = viCoordenadaMotorEParcial - 900

%CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO
viCoordenadaMotorF = (round((7100*qi(1))/2.7052))+100
85


if(viCoordenadaMotorF < 0)
viCoordenadaMotorF = viCoordenadaMotorF * (-1)
end

viDistancia = 2;
end

if(viETeste <= 19)
viCoordenadaMotorE = viCoordenadaMotorEParcial - 1500

%CONVERTENDO PARA PUSOS E ENVIANDO PARA O ROBO
viCoordenadaMotorF = (round((7100*qi(1))/2.7052))

if(viCoordenadaMotorF < 0)
viCoordenadaMotorF = viCoordenadaMotorF * (-1)
end

viDistancia = 3;
end

end


%% _______________TRATAMENTO DOS DADOS PARA ENVIO 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
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 posio 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);
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 posio 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);
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);
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

%Funo responsavel por envio de comandos para o robo arm ed-7220-4
%Data da ultima atualizao: 23/03/2011
%Autor: Hamilton Sena
%Curso: Engenharia de controle e Automao
%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 comunicao com a serial
%SE 0 = No efetua a comunicao serial

%infos:
% th -> Passa o robo para modo host
% hh -> Inicializa o robo

function [ viResp ] = envia_comando_robo_arm( vsComando, viStatusCom,
viLeitura )

%Se for passado o valor 1 ser efuado a conexo com a porta serial.
global voSerial;

if (viStatusCom == 1)

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 NO 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 EFETUADO
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 MOSTRAR
LEITURA
%voSerial.BytesAvailable
if(resultado(1) == 45)
%disp(strcat('-',int2str(resultado(2)-48)))
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 MOSTRAR
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 MOSTRAR
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 MOSTRAR
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));
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

Anda mungkin juga menyukai