SlideShare une entreprise Scribd logo
1  sur  92
Télécharger pour lire hors ligne
1




             FACULDADE ASSIS GURGACZ

            HAMILTON JOSE DA SILVA SENA




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




                     CASCAVEL
                       2011
2




             FACULDADE ASSIS GURGACZ

            HAMILTON JOSE DA SILVA SENA




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




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



                    Orientador: Arthur Schuler da Igreja




                     CASCAVEL
                       2011
3




                      FACULDADE ASSIS GURGACZ

                     HAMILTON JOSE DA SILVA SENA



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


Trabalho apresentado no Curso de Engenharia de Controle e Automação, da
Faculdade Assis Gurgacz, como requisito parcial para obtenção do título de
Bacharel em Engenharia de Controle e Automação, sob orientação do Professor
Especialista Arthur Schuler da Igreja.



                          BANCA EXAMINADORA




                      ____________________________

                           Arthur Schuler da Igreja
                          Faculdade Assis Gurgacz




                      ____________________________

                             Ederson Zanchet
                          Faculdade Assis Gurgacz




                      ____________________________

                               Vânio da Maia
                          Faculdade Assis Gurgacz




                 Cascavel, ___ de _______________ de 2011
4




DEDICATÓRIA




          Primeiramente dedico este trabalho
          a Deus, que me deu forças e
          iluminou meu caminho; A minha
          esposa Francielli que espera pelo
          nosso primeiro filho, por toda a
          paciência, compreensão e apoio
          incondicional, a minha mãe Sandra
          e meus irmãos Alisson, Milene e
          Fabio   que   fazem     parte   dessa
          trajetória e a meus avós Francisca
          e Dermeval que hoje estão ao lado
          do Pai todo poderoso.
5




                              AGRADECIMENTOS



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

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

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

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

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

oportunidade de estar hoje realizando um sonho.

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

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

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

relacionamento diferenciado com nossa turma.

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

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

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

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

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

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

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

próprio filho delas.
6




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

                                                                                           PROV. 24:3-4
7




                                     RESUMO


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

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

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

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

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

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

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

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

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

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

revolucionário da historia dos videogames.



Palavras chaves: robótica, Kinect®, visão computacional.
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 ILUSTRAÇÕES

Figura 1: Célula de trabalho robotizada .................................................................... 16
Figura 2: Robô Articulado ou Antropomórfico com seu respectivo volume de trabalho.
 .................................................................................................................................. 18
Figura 3: Relação dos problemas da cinemática direta e inversa. ............................ 20
Figura 4: Braço robô ED-7220C ................................................................................ 25
Figura 5: Os 5 graus de liberdade do Ed-7220C. ...................................................... 25
Figura 6: Vista superior do volume de trabalho do ED-7220C. ................................. 26
Figura 7: Vista lateral do volume de trabalho do ED-7220C. .................................... 26
Figura 9: Unidade controladora ED-MK4, da empresa ED-Laboratory. .................... 28
Figura 10: Bombardeiro Tupolev Tu-4 ....................................................................... 31
Figura 11: Imagem digital e sua matriz correspondente ............................................ 34
Figura 12: Cálculo do centro de área de uma determinada região............................ 38
Figura 13: Arquitetura básica do Kinect® ................................................................... 42
Figura 14: Resumo da arquitetura básica ................................................................. 42
Figura 15: Campo de visão alcançado pelo Kinect® ................................................. 43
Figura 16: Holograma projetado pelo Kinect® para leitura de profundidade. ............ 44
Figura 17: Método de identificação 3D por luz estruturada. ...................................... 44
Figura 18: Arquitetura da API OpenNI ....................................................................... 47
Figura 19: Arquitetura montada para identificação dos comandos de comunicação do
controlador ED-MK4® com o RoboTalk® ................................................................. 49
Figura 20: Código de comunicação serial do MATLAB com o ED-MK4 .................... 51
Figura 21: Código de inserção do comando "0D" no final de cada instrução de
execução. .................................................................................................................. 52
Figura 22: Código de recebimento de dados serial via Matlab .................................. 52
Figura 23: Representação vetorial das juntas do robô ED-7220C ............................ 53
Figura 24: Configuração dos parâmetros de D-H na Robotics Toolbox .................... 54
Figura 25: Representação gráfica do robô ED-7220C via Robotics Toolbox ............ 55
Figura 26: Área de trabalho definida no laboratório de robótica para execução de
testes ......................................................................................................................... 56
Figura 27: Cenário de testes completo ...................................................................... 57
Figura 28: Código de captura da imagem RGB e matriz de profundidade. ............... 57
Figura 29: Distancia do Kinect® até área de trabalho do robô .................................. 58
Figura 30: Pré-processamento da imagem vista pelo Kinect® .................................. 59
Figura 31: Comando para corte da figura RGB e de profundidade via Matlab® ....... 60
Figura 32: Código que efetua o espelhamento da imagem RGB e o da matriz de
profundidade. ............................................................................................................ 61
Figura 33: Código de identificação do objeto vermelho. ............................................ 61
Figura 34: Identificação do centróide de um objeto. .................................................. 62
Figura 35: Medidas da área de trabalho e distância da base do robô até área de
trabalho. .................................................................................................................... 63
Figura 36: Comprimento da área de trabalho ............................................................ 64
Figura 37: Distancia entre o Kinect® e a área de trabalho em visão lateral. ............. 64
Figura 38: Código de controle do eixo da base ......................................................... 67
Figura 39: Tela de controle de busca dos objetos. .................................................... 68
Figura 40: Script de comando para conexão via serial e transpor o sistema de
controle do ED-MK4® para modo HOST. ................................................................. 69
Figura 41: Robô virtual criado via Robotic Toolbox atravês do drivebot. ................... 70
Figura 42: Robô ED-7220C® efetuado a pega do objeto. ......................................... 71
10




Figura 43: Imagem gerada pela câmera RGB do Kinect®. ....................................... 72
Figura 44: Visão superior da área de trabalho com o objeto vermelho a ser
identificado na localização inferior............................................................................. 73
Figura 45: Visão superior da área de trabalho com o objeto vermelho a ser
identificado na localização central. ............................................................................ 74
Figura 46: Visão superior da área de trabalho com o objeto vermelho a ser
identificado na localização superior........................................................................... 74
11




SUMÁRIO



1 INTRODUÇÃO ................................................................................................... 12
2 FUNDAMENTAÇÃO TEÓRICA ......................................................................... 15
2.1    ROBÓTICA .................................................................................................. 15
2.1.1. Robótica Industrial........................................................................................ 15
2.1.2. Classificação dos robôs ............................................................................... 17
2.1.3. Modelagem Cinemática................................................................................ 18
2.1.4. Cinemática direta ......................................................................................... 20
2.1.5. Cinemática inversa ....................................................................................... 20
2.1.6. Notação de Denavit-Hartenberg ................................................................... 21
2.1.7. Níveis de Controle Robótico ......................................................................... 22
2.1.8. ED-7220C® .................................................................................................. 24
2.2    ENGENHARIA REVERSA ........................................................................... 30
2.3    VISÃO COMPUTACIONAL .......................................................................... 32
2.3.1. Imagem Digital ............................................................................................. 33
2.3.2. Processamento de Imagem Digital............................................................... 34
2.3.3. Limiarização (Threholding) ........................................................................... 35
2.3.4. Reconhecimento de Objetos ........................................................................ 37
2.3.5. Luz Estruturada ............................................................................................ 39
2.4.   KINECT® ...................................................................................................... 41
2.5    MATLAB® ..................................................................................................... 45
2.6    ROBOTICS TOOLBOX ................................................................................ 46
2.7    OPENNI ....................................................................................................... 46
3 METODOLOGIA................................................................................................. 48
3.1    ENGENHARIA REVERSA DA COMUNICAÇÃO ......................................... 48
3.2    ROBOTICS TOOLBOX ................................................................................ 53
3.3    KINECT® ..................................................................................................... 55
3.4    PROCESSAMENTO DA IMAGEM ............................................................... 59
3.5    REFERENCIA DO PONTO DE VISÃO ........................................................ 63
3.6    CONTROLE DO ROBÔ ED-7220C® ........................................................... 66
4 RESULTADOS E DISCUSSÕES ........................................................................ 69
4.1    COMUNICAÇÃO SERIAL ............................................................................ 69
4.2    ROBOTICS TOOLBOX ................................................................................ 70
4.3    RECONHECIMENTO DO OBJETO ............................................................. 71
5 CONCLUSÃO..................................................................................................... 76
6 REFERÊNCIAS .................................................................................................. 77
ANEXOS ................................................................................................................... 80
12




1     INTRODUÇÃO


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

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

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

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

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

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

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

diversas outras disciplinas correlatas.

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

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

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

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

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

      Outro problema é a falta de uma plataforma que propicie desenvolvimentos

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

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

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

campo da visão computacional.

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

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

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

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

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

fonte quase que inesgotável de pesquisa.
13




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

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

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

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

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

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

trabalhos mais sofisticados.

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

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

é feito pelo software do fabricante do robô.

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

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

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

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

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

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

restrição.

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

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

mundial.

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

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

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

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

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




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

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




2     FUNDAMENTAÇÃO TEÓRICA



2.1   ROBÓTICA



2.1.1. Robótica Industrial



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

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

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

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

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

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

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

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

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

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

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

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

      perigo;

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

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

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

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

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

como um "manipulador multifuncional reprogramável projetado para movimentar
16




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

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

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

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

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

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

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




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



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

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

      – Elos;

      – Juntas;

      – Sistema de transmissão;
17




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

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

      – Atuadores hidráulicos e pneumáticos;

      – Atuadores eletromagnéticos;

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

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

      parâmetros operacionais do robô.

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

      necessária à movimentação dos atuadores.

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




2.1.2. Classificação dos robôs



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

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

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

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

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

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

      – Robô de Coordenadas Cartesianas;

      – Robô de Coordenadas Cilíndricas;

      – Robô de Coordenadas Esféricas;

      – Robô SCARA;

      – Robô Paralelo;

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




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

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

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




Fonte [16]
             Figura 2: Robô Articulado ou Antropomórfico com seu respectivo volume de trabalho.
                     :                                           respectivo

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

complexa em relação às outras configurações [3]. Na Figura 2 é demonstrado esse
                    às                        ].

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




2.1.3. Modelagem Cinemática
 .1.3.           Cinemática



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

prismáticas ou rotacionais. Cada par junta-elo constitui um grau de liberdade. Assim,
                                           elo

para um manipulador com N graus de liberdade têm-se N pares juntas-elos, onde o
                                             têm se                elos,

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

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

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




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

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

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

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

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

junta.

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

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

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

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

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

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

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

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

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

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

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

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

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

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




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




2.1.4. Cinemática direta



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

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

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

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




2.1.5. Cinemática inversa



            Enquanto a cinemática direta resulta no desenvolvimento imediato das

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

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

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

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

direta. [4]

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

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

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




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

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

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

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

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

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

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

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

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

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

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

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

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

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




2.1.6. Notação de Denavit-Hartenberg



      A evolução no tempo das coordenadas das juntas de um robô representa o

modelo cinemático de um sistema articulado no espaço tridimensional. A notação de

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

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

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

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

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

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




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

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



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




Fonte [4]



2.1.7. Níveis de Controle Robótico


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

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

combinados para possibilitar ao robô executar suas tarefas.

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

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

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

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

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




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

coordenação com o ambiente.

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

respectivamente.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

pontos.

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

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

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

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

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

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




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

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

indiferentemente da ordem em que foram ensinados.

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

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

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

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

trajetória contínua deve ser usado.


2.1.8. ED-7220C®


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

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

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

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

velocidade proporcionada por seus atuadores e reduzida capacidade de carga do

robô.
25




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




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


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

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

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




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

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

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

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

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




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



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

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

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

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




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

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

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

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

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

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

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

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

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

descrito na Tabela 2.


Tabela 2: Especificações do braço robótico ED-7220C
 Número de articulações            5 articulações + garra
 Construção                        Braço articulado na vertical
 Transmissão                       Engrenagens, correia dentada e sem fim
 Peso                              25kg
 Precisão (posição)                +/- 0,5mm
 Velocidade do movimento           Aprox. 100mm/s máximo
 Capacidade de carga               1kg
 Atuador                           Servomotor DC (com encoder ótico)
                                   Articulação da base                      +/- 150 graus
                                   Articulação do ombro                     +130 graus/ -35 graus
 Faixa de movimento
                                   Articulação do cotovelo                  +/- 130 graus
                                   Rotação da garra                         360 graus
 Raio máximo de operação           610mm (24,4")
 Abertura da garra                 65mm (sem borracha: 75mm)
 Proteção                          Sobrecarga de um atuador
Fonte [6]



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

primeiramente há microinterruptores ou microswitches, encontrados juntos aos elos

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

sobrecarga nos motores.

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

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




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

mantém-se fechada.



2.1.9. ED-MK4



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

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




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


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

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

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

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

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

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

componentes são descritos na Tabela 3.


Tabela 3: Especificações da unidade controladora ED-MK4.
 Terminal de entrada     8 portas e LEDs
 Chave de entrada        8 chaves liga/desliga
 Terminal de saída       8 portas e LEDs
 Processador             Processador de 16 bits, controlador do motor de 8 bits, programador manual de 8 bits
 Software                ED-72C Robo Talk
Fonte [6]
29




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

palavra “HOST”.

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

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

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

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

de simulação, entre outros.
30




2.2   ENGENHARIA REVERSA



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

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

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

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

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

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

documentação.

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

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

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

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

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

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

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

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

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

neste mesmo ano.
31




Fonte [16]

                             Figura 9: Bombardeiro Tupolev Tu-4



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

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

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

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

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

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

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

obtidas podem ferir as leis que a protegem.

         Por haver o consentimento da empresa acerca das atividades e pesquisas

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

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

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




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

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

comunicação [8].




2.3     VISÃO COMPUTACIONAL



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

considerado um problema inverso.
33




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

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

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

do ambiente para poder atuar com sucesso.

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

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

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

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

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

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

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




2.3.1. Imagem Digital



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

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

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

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

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

denominado pixel.

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

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

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

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

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




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

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

correspondente.




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




2.3.2. Processamento de Imagem Digital



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

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

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

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

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

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

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

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

            Um dos objetivos mais comuns no processamento de imagens consiste em

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

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

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

correspondem a importantes contornos da cena.
35




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

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

vermelho, verde e azul ).




2.3.3. Limiarização (Threholding)



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

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

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

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

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

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

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

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




                                                                              (1)




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

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



2.3.4 Método de Otsu



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




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

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

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

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

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

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

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

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

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

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

antes de seu processamento.

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

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

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



                                                                                    (2)

onde:

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

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

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

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




2.3.4. Reconhecimento de Objetos



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                         P2
                                     C=                                       (2)
                                        4πA

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

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


                             XC =
                                    ∑∑   x   y
                                                 . y. f ( x, y )
                                                                   ;          (3)
                                                 A


                            YC =
                                    ∑ .∑
                                     x       y
                                                 . y. f ( x, y )
                                                                              (4)
                                                 A
38




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

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

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




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

bordas.
39




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

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

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

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

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

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

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

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

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




2.3.5. Luz Estruturada



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

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

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

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

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

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

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

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

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

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

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

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

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




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

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

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

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

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

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

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

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

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




2.4.   KINECT®


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

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

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

próprio corpo.

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

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

vendidos no valor de USD 150,00.

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

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

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

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

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

utilização fora do XBOX®.
42




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




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




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

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

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

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

infravermelha;

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

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




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

aparelho,
aparelho conforme é mostrado na Figur 14.
                                Figura




Fonte [18]
                      Figura 14: Campo de visão alcançado pelo Kinect®



Além da informação de profundidade também é possível retornar com exatidão se o
   m

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

corpos humanos em sua visada.

         - Audio Stream (fluxo de áudio): com um conjunto de 4 microfones e a
                                       ):

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

reconhecimento da fala em inglês.

         Para o mapeamento 3D o Kinect® utiliza a tecnologia de luz estruturada onde

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

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

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

dado o nome de speckle O formato com essa luz é projeta pode ser visualizada pela
               speckle.

Figura 1
   ura 15.
44




Fonte [do Autor]
                   Figura 15: Holograma projetado pelo Kinect® para leitura de profundidade.



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




Fonte [do Autor]
                           Figura 16 Método de identificação 3D por luz estruturada.
                                  16:
45




2.5   MATLAB®



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

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

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

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

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

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

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

alto desempenho, capazes de resolver problemas computacionais de forma mais

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

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

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

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

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

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

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

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

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

dentro ou fora do seu ambiente [20].
46




2.6     ROBOTICS TOOLBOX



        A Robotics Toolbox é uma ferramenta computacional de modelagem e

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

LGPL.

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

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

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

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

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

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

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

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

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

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

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



2.7     OPENNI



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

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

aplicações utilizando Interação Natural.

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

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




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

poderosa ferramenta para controle de sistemas roboticos.
 oderosa

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

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




Fonte [
      [22]
                           Figura 17: Arquitetura da API OpenNI
                                    :
48




3          METODOLOGIA



3.1        ENGENHARIA REVERSA DA COMUNICAÇÃO



           Devido as características da comunicação serial, fez-se necessário o
conhecimento do protocolo utilizado originalmente na comunicação entre o software
RoboTalk e a unidade controladora do robô. Segundo [23] e [24], os parâmetros
dessa comunicação equivalem aos valores listados na Tabela 4.



Tabela 4: Parâmetros de configuração da comunicação serial
 Baudrate               9600
 Databits               7
 Stopbit                2
 Parity                 Odd
 RTS                    On
Fonte: [23] e [24].



           Entretanto, houve discrepância em alguns parâmetros listados pelas
bibliografias consultadas. Desta forma, a fim de comprovar o correto funcionamento
da comunicação serial envolvida no controle do robô, foram utilizadas técnicas de
engenharia reversa.
           A compreensão, por parte da unidade controladora ED-MK4®, dos comandos
que seriam enviados através do Matlab® posteriormente, depende diretamente da
configuração da comunicação estar de acordo com a configuração do protocolo
original, uma vez que, se um parâmetro como o baudrate fosse erroneamente
configurado, acabaria por alterar completamente as características da informação,
invalidando o comando enviado.
           Neste trabalho, esta técnica foi aplicada objetivando analisar a formatação e a
seqüência de comandos enviados à ED-MK4® durante o comando do robô e para
monitorar o tráfego da comunicação serial entre a unidade controladora e o
computador conectado foi utilizado o software Free Serial Port Monitor (FSPM) a
Figura 18 demonstra a forma completa de como foi efetuado a identificação dos
comandos.
49




Fonte: [do Autor]
Figura 18: Arquitetura montada para identificação dos comandos de comunicação do controlador ED-
                                     MK4® com o RoboTalk® .
50




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

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

Tabela 5: Comandos do controlador ED-MK4®
Comando                   Descrição                  Retorno             Parâmetro
                   Retorna qual motor está        Valor decimal
     AS
                         se movendo.             correspondente.
                   Habilita ou desabilita a                              0 desabilita
     CG
                             garra                                        1 habilita
                   Coloca o robô em modo
     TH
                            HOST
                   Verifica status da garra        1 se fechada
     GS
                                                    0 se aberta
                   Verifica posição atual do   Retorna a posição em    M=A,B,C,D,E,F
   PA,m
                             motor              pulsos do encoder
                     Posiciona o robô na
     HH
                         posição inicial
                     Movimenta todos os
     MA               motores de forma
                          interpolada
                    Move os motores para
     MC
                     posição de destino
                   Move o motor m para a                               M=A,B,C,D,E,F
   MS,m            posição armazenada no
                          registrador.
                    Seta a velocidade do                              M = A,B,C,D,E,F –
 VC,m,d
                             motor                                     100 <= d <= 100
     GO                   Abre a garra
     GC                  Fecha a garra
Fonte [do Autor]




         Após a identificação dos comandos de controle, o próximo passo foi identificar

a configuração correta da serial para controlar o robô via MATLAB. Configuração

essa que é mostrada na Tabela 6.
51




Tabela 6: Parâmetros de configuração da comunicação serial no MATLAB
Baudrate                  9600
Databits                  7
Stopbit                   2
Parity                    Odd
Timeout                   1000
Requesttosend             On
Terminator                CR/LF
FlowControl               Hardware
DataTerminalReady         Off

Fonte: do Autor.




          A partir da obtenção dessas informações o script de controle pode ser criado.




Fonte [do Autor]
                   Figura 19: Código de comunicação serial do MATLAB com o ED-MK4



          Conforme a Figura 19 observa-se a configuração da serial via script Matlab,

onde caso a conexão não seja bem sucedida o sistema informa o erro e fecha todas

as portas seriais conectada no momento. Conforme o comentário do código, as flags

“Terminator” e “FlowControl” tiveram que ser configuradas para possibilitar a leitura

não só enviar comandos para execução, como também receber informação do

status do robô.

          Foi necessário também efetuar a concatenação do código “0D” (onde na

tabela ASCII significa “r” Carrier return ) no final de cada comando , pois esse
52




comando informa a controladora que a instrução a ser executada está terminada. Na

Figura 20 pode ser visto esse processo.




Fonte [do Autor]
        Figura 20: Código de inserção do comando "0D" no final de cada instrução de execução.



         Outro ponto importante no script de comunicação é o sistema de leitura, onde

o script aguarda alguma resposta da controladora. Nesse ponto foi necessário

efetuar a leitura como o comando “fread”, pois era necessário definir a quantidade

de bytes a serem lidos para que o script não ficasse em um loop infinito lendo sujeira

da serial. Mesmo com essa técnica foi necessário utilizar o comando “flushinput”

para a cada leitura efetuar a limpeza do canal serial. Na figura 21 é demonstrado o

código de leitura para dois bytes.




Fonte [do Autor]
                     Figura 21: Código de recebimento de dados serial via Matlab



         Durante o processo de desenvolvimento do algoritmo percebeu-se a

necessidade de um intervalo de tempo entre os comandos, intervalo esse

encontrado via testes empíricos, onde o valor de 300 milissegundos foi suficiente

para deixar o código robusto para envio de comandos em serie.
53




3.2      ROBOTICS TOOLBOX



         Após definir a comunicação como o robô, o passo subseqüente foi a utilização

do Toolbox Robotics para modelagem e geração de trajetória do robô.

         Primeiramente foi definido o modelado cinemático do robô ED-7220C via

parâmetros de modelagem de Denavit-Hanterberg. Na Figura 22 é demonstrada a

vista do robô em forma de vetores de orientação, técnica utilizada para facilitar a

identificação do modelo de D-H.




Fonte [do Autor]
                   Figura 22: Representação vetorial das juntas do robô ED-7220C
54




         Após aplicar o algoritmo de D-H os parâmetros do modelo cinemático do robô

ficaram da seguinte forma:

Tabela 7: Parâmetros de Denavit-Hartenberg
                            αi              ai
                                                        θi   (Ângulo   d i (Deslocamento
          Links (elos)                                                                       Nome
                         (Ângulo de   (comprimento do
                                                        de rotação)    da junta em mm)
                          torção)       elo em mm)

               1           -90º           0.02                0             0.37            Base

               2             0            0.22                0               0            Ombro

               3             0            0.22                0               0            Cotovelo

               4           -90º             0                 0               0             Punho

               5             0              0                 0            0.080           Rotação

Fonte [do Autor]

         Adicionando esses valores na Toolbox é possível verificar a forma como o

robô ficou configurado, na Figura 23 segue os comando executados para geração do

modelo no Robotics Toolbox.




Fonte [do Autor]
                   Figura 23: Configuração dos parâmetros de D-H na Robotics Toolbox




Onde:
55




         A utilização do comando “SerialLink” serve para criação do objeto “robo”, o

comando “transl” executa a matriz homogenia da cinemática direta, o comando

“robo.ikine” executa a cinemática inversa do robô, para as seguintes orientações da

cinemática direta e o comando “robo.plot” gera o gráfico do robô, conforme a Figura

24.




Fonte [do Autor]
                   Figura 24: Representação gráfica do robô ED-7220C via Robotics Toolbox




3.3      KINECT®



         Após a definição cinemática do robô, partiu-se para o sistema de

reconhecimento de imagem com o Kinect®.
56




         Inicialmente foi definida a área de trabalho para posicionamento do Kinect®,

na Figura 25 é demonstrada a área de trabalho do robô defina no laboratório de

robótica da faculdade.




Fonte [do Autor]
        Figura 25: Área de trabalho definida no laboratório de robótica para execução de testes
57




Na Figura 26 demonstra todo o cenário, especialmente com a posição do Kinect®.




Fonte [do Autor]
                                  Figura 26: Cenário de testes completo



         Antes de iniciar o trabalho com o Kinect®, foi necessário efetuar a instalação

dos drivers da OpenNI, como também a instalação e configuração dos scripts do

Matlab® criado por Tim Zaman. Para efetuar essas configurações foi utilizado o

tutorial do orientador desse trabalho, encontrado em [25].

         O código utilizado para efetuar a captura da imagem RGB e da matriz de

profundidade, pode ser visto na Figura 27.




Fonte [do Autor]
                   Figura 27: Código de captura da imagem RGB e matriz de profundidade.
58




Onde:

         - mxNiCreateContext: é o comando que instancia as configurações existente

no arquivo de configuração ”SamplesConfig.xml”;

         - option.adjust_view_point: opção que ajusta o ponto de vista do Kinect®;

         - mxNiImage: comando responsável de capturar a imagem RGB e a matriz de

profundidade;

         - mxNiDeleteContext: comando responsável de desalocar a memória quer foi

usada na criação dos parâmetros de configuração do Kinect®, caso esse comando

não seja usado o sistema vai rodar somente até quando toda a memória física e

virtual do computador seja alocada, nos testes isso ocorre em 3 tentativa em um

computador com 4GB de memória física;

         Conforme informação do manual do Kinect ® a distancia recomenda entre o

Kinect® e o jogador é de no mínimo 1.8m, no caso deste trabalho a distancia do

Kinect® até a área de trabalho que o robô irá atuar é de 2,38m conforme a Figura

28.




Fonte [do Autor]
                   Figura 28: Distancia do Kinect® até área de trabalho do robô
59




3.4      PROCESSAMENTO DA IMAGEM



         Algumas técnicas foram executadas para uma melhor identificação dos

objetos. Como a câmera RGB do Kinect® gera fotos com 640x480 pixel de

resolução, a imagem inicial ficou com muita informação para poder ser processada,

pensando nisso foi efetuado um corte na figura depois da captação da imagem RGB.

Esse corte se deu na parte superior da área de trabalho do robô, com largura de

mesmo tamanho, dessa forma a imagem para ser processada foi reduzida

drasticamente, facilitando o processamento e melhorando o tempo de resposta do

script, na figura 29 é mostrada a visão frontal do cenário de teste, com o local

cortado pelo script representado pelas linhas pontilhadas.




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




         O comando utilizado para efetuar esse corte foi o “imcrop” do Matlab® na

figura 30 é mostrado o código referente ao corte da imagem.




Fonte [do Autor]
              Figura 30: Comando para corte da figura RGB e de profundidade via Matlab®



Onde:

         - 303: é a coordenada do pixel no eixo “X”;

         - 188: é a coordenada do pixel no eixo “Y”;

         - 31 e 18: é o tamanho da figura em pixel;

         Esses valores podem ser modificados no momento da calibração da posição

do Kinect®, permitindo assim uma flexibilidade no posicionamento do Kinect® em

relação à área de trabalho.

         Como pode ser visto no código, há dois sistemas de corte, o da figura RGB e

o da matriz de valores de profundidade, isso foi feito, pois ao encontrar o centróide

da imagem RGB, é feito a correlação da posição do centróide na matriz de

profundidade.

         Para facilitar o calculo do sistema de coordenadas, foi efetuado um

espelhamento da imagem, fazendo com que a posição das peças a serem

identificadas fossem igual à posição real, Na figura 31 é mostrado o código usado

para efetuar esse espelhamento, lembrando sempre que, tudo que foi feito na figura

RGB, teve que ser feito na matriz de profundidade, para que a correlação

dimensional seja preservada.
61




Fonte [do Autor]
    Figura 31: Código que efetua o espelhamento da imagem RGB e o da matriz de profundidade.



         A partir desse ponto iniciou-se o processo de reconhecimento dos objetos, a

identificação foi feita pela cor, onde na área de trabalho duas peças de cor azul e

vermelha, foram dispostas em determinada posição dentro do limite da área de

trabalho. Na figura 32 é representado o código de reconhecimento do objeto

vermelho.




Fonte [do Autor]
                      Figura 32: Código de identificação do objeto vermelho.



Onde:

         - imsubtract: comando responsável de subtrair uma imagem de outra, que

neste caso é a subtração de qualquer objeto de cor vermelha do resto da figura.

Com esse comando poderia ser subtraída qualquer imagem com alguma cor

especifica, bastando apenas definir o valor da cor em RGB.

         - rgb2gray: comando responsável por transformar a imagem RGB em escala

de cinza.
62




         - graythresh: comando responsável por definir o limite global da imagem

utilizando o método de Otsu.

         - im2bw: Converte uma imagem para o formato binário, com base em um

determinado limite, neste caso o limite se dá pelo resultado do comando “graythrest”

multiplicado por fator de 0.9.

         - bwareaopen: Remover todos os objetos da imagem com menos de x pixels,

que neste caso deu-se por objetos de 50 pixels.

         A partir desse tratamento o resultado é uma imagem binária somente com o

objeto escolhido, neste caso o objeto vermelho, sendo então efetuada a identificação

do centróide do objeto, na Figura 33 segue o código de identificação do centróide.




Fonte [do Autor]
                       Figura 33: Identificação do centróide de um objeto.



Onde:

         - imfill: Preenche regiões com buracos e outras falhas;

         - regionprops: comando que extrai as propriedades morfológicas da região a

ser identificada;
63




3.5      REFERENCIA DO PONTO DE VISÃO



         Depois de identificado o centróide da peça a ser capturada, partiu se para
                                                                     partiu-se

referenciar o objeto em função da referencia da base do robô. Na Figura 3 segue a
                                  referencia                            34

vista frontal com as medidas da área de trabalho, essa informação é necessária para
                                                                    necessári

conversão o
convers do valor da image em pixel, para medidas métricas e posteriormente o
                    imagem

calculo dos pulsos para o motor de cada junta.




Fonte [do Autor]
       Figura 34: Medidas da área de trabalho e distância da base do robô até área de trabalho.
                :
64




Na Fi
   Figura 35 segue a vista superior onde se mostra o comprimento da área de

trabalho.
trabalho




Fonte [do Autor]
                                 Figura 35: Comprimento da área de trabalho




Já a Figura 36 mostra a distancia do Kinect® até o inicio da área de trabalho, essa
            36

informação é muito importante, pois é com esse valor descontado dos valores
  formação

obtidos via matriz de profundidade que será possível identificar a distancia do objeto

até a base do robô, tanto para o eixo “X” como o “Y”.
              robô,




Fonte [do Autor]
                   Figura 36: Distancia entre o Kinect® e a área de trabalho em visão lateral.
65




Após aquisição desses dados iniciou-se os cálculos de referencia dos objetos nas

coordenadas “X”, “Y” e “Z”. Para coordenada X, ao encontrar o centróide da imagem

RGB a referencia dele foi relacionada com a matriz de profundidade, para que o

valor de profundidade fosse encontrado, evitando erro de pontos cegos na leitura do

Kinect®, o eixo “Y” da imagem foi definido com um, pois no corte da imagem o topo

da mesma, sempre estará preenchido pelo objeto, conforme a Figura 31.

      Como o valor de profundidade lido pelo Kinect® é dado em milímetros e a

modelagem do robô é feita em metros, o calculo para identificar a distancia da peça

referente a base do robô foi:

                2380 − Dis tan ciaMatriz Pr ofundidade
                                                                                (5)
                                 1000



O resultado da equação 4 representa a coordenada no eixo “X”. Para identificar a

medida do eixo “Y” algumas conversões foram necessárias, primeiro foi convertido o

valor do eixo “X” da imagem em RGB de pixel para centímetros, onde:

      - Para um total de 33 pixels o valor equivalente é 15cm;

      - Como a distancia da base do robô até o inicio da área de trabalho é de 26

cm o resultado da conversão dos pixels é somado a essa medida, por exemplo:

Se o resultado do eixo “X” for igual a 29 pixel a distancia em centímetro é de

13.1818cm, somando isso a 26 cm, tem-se a distancia em centímetros do objeto em

relação a base do robô, mas como é necessário a conversão para metros, divide-se

esse valor por 100. Porém como a variação da peça não ocorre somente em uma

direção reta, é necessário aplicar Pitágoras no valor encontrado para que o

resultado seja real. Abaixo segue a formula de Pitágoras.
66




                              a2 = b2+ c2                                        (6)

        Em relação ao eixo “Z”, como os objetos são de tamanhos fixos conhecido,

não foi necessário efetuar nenhum ajuste, pois a partir do posicionamento da garra

definiu-se um deslocamento fixo nessa coordenada.




3.6     CONTROLE DO ROBÔ ED-7220C®



        Depois de calculado as distancias e efetuado a cinemática inversa para

descobrir a posição final que a garra deve ficar, foi necessário gerar uma relação

entre o resultado da cinemática inversa e o movimento dos eixos determinados,

entretanto o resultado da cinemática inversa é dado em deslocamento angular.

        Como o eixo “Z” era fixo, os únicos elos que precisaram ser movimentados foi

o da base para a movimentação no eixo “X” e o do ombro, determinando o

deslocamento “Y”.

        Para converter os valores referentes ao elo da base usou-se a seguinte

equação para o eixo da base:

                                       7100 − qi1
                                                                                 (7)
                                        2.7052
Onde:

        - 7100: é a total de pulsos necessário para o robô percorrer 150º, angulação

máxima permitida mecanicamente. Como a área de trabalho está apenas em um

quadrante, não foi necessário fazer o range de todo deslocamento angular permitido,

que nesse caso seria 300º;

        - qi1: resultado da cinemática inversa para o eixo da base;

        - 2.7052: Com o valor passado pela cinemática inversa está em formato de

radianos, esse valor equivale aos 150°
                                     ;
67




         Para o eixo do ombro, utilizou-se a seguinte equação:

                                 3174 × qi2
                                                                               (8)
                                  1.4835

Onde:

         - 3174: total de pulsos possíveis do eixo do ombro;

         - qi2: resultado da cinemática inversa para o eixo do ombro;

         - 1.4835: Com o valor passado pela cinemática inversa está em formato de

radianos, esse valor equivale aos 85°
                                    ;

Após essas conversões foi utilizado o script de envio de comando para o robô, onde

na Figura 37 demonstra o fragmento do código para movimentação do eixo da base,

que nesse caso é o motor representado pela letra F.




Fonte [do Autor]
                         Figura 37: Código de controle do eixo da base
68




         Para acionar a busca do objeto, foi feito uma tela gráfica simples para escolha

de qual objeto pegar, segue a tela na Figura 38.




Fonte [do Autor]
                        Figura 38: Tela de controle de busca dos objetos.
69




4        RESULTADOS E DISCUSSÕES




4.1      COMUNICAÇÃO SERIAL



         Com o código de envio de comandos para o ED-MK4® via serial pronto, os

testes feitos para determinar a robustez do script deram-se via Command Window

do Matlab®, onde inicialmente é necessário efetuar a conexão via serial e colocar o

robô em modo HOST, na Figura 39 segue o comando que efetua essas duas ações.




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



         A taxa de sucesso na movimentação dos motores foi de 100%, em relação ao

tempo de resposta foi necessário apenas adicionar um intervalo de 300ms entre os

comandos, pois isso era uma das restrições do processador do ED-MK4®.
70




4.2      ROBOTICS TOOLBOX



         Os testes feitos com a Toolbox Robotic, ocorreram na relação de verificar se a

modelagem cinemática estava correta e no erro gerado na questão da cinemática

inversa.

         Para validação da modelagem foi gerado um robô virtual conforme a Figura

40 via comando da Toolbox Robotics drivebot.




Fonte [do Autor]
                   Figura 40: Robô virtual criado via Robotic Toolbox atravês do drivebot.



         Posteriormente foi determinada uma posição para garra a partir dos eixos “X”,

“Y” e “Z”, no robô ED-7220C®, inserindo esses dados na cinemática inversa via

comando ikine, determinaram-se os ângulos de rotação dos motores, que depois foi

inserido no robô virtual, para identificação do posicionamento. Em alguns resultados

desses testes o sistema mostrou até duas soluções onde a primeira deu-se com a

garra posicionada de cima para baixo e a outra com a garra em sentido de
71




acoplamento lateral. Para passagens desses valores para o robô real, não houve

problema, porque como o eixo “Z” foi colocado de forma fixa, a garra sempre efetuou

o posicionamento de cima para baixo, conforme mostrado na Figura 41.




Fonte [do Autor]
                    Figura 41: Robô ED-7220C® efetuado a pega do objeto.



4.3      RECONHECIMENTO DO OBJETO



         Como foi descrito anteriormente o sistema de reconhecimento iniciou-se com

muitos problemas, onde a priori a preparação do ambiente causou muito transtorno,

pois até então o processamento da imagem estava sendo feito com a imagem total
72




obtida pela câmera RGB que neste caso era uma imagem de 640x480 conforme a

Figura 42.




Fonte [do Autor]
                   Figura 42: Imagem gerada pela câmera RGB do Kinect®.

         Para resolver esse problema foi utilizada a técnica de corte descrita na

metodologia desse trabalho, a partir daí, foi gerado um sistema de teste para

verificar a precisão e repetibilidade do robô em conjunto com o sistema de visão. Por

precisão, entende-se a capacidade do robô de ir a uma posição desejada, com

respeito a um sistema de referencia fixo (normalmente a base do robô, como é o

caso desse trabalho), com um erro determinado (por exemplo ± 1mm). Trata-se de

precisão em posicionamento absoluto. Por repetibilidade, entende-se a capacidade

do robô de, uma vez conhecida e alcançada uma posição, e partindo-se da mesma

condição inicial, voltar a ir ("repetir") novamente a tal posição com um erro
73




determinado. Abaixo segue os testes conforme posições do objeto na área de

trabalho.

         A Figura 4 mostra uma visão superior da área de trabalho com o objeto
                  43                                                    objeto

vermelho a ser pego, nesse caso o teste foi feito na parte inferior da área de

trabalho.




Fonte [do Autor]
Figura 43: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização
                                               inferior.



         Foram feitos cinco tentativas de pega do objeto em cada posição, a
             m                                                   posição,

metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do

objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto,
                                                                         objeto,

na Tabela 8 pode ser visto a porcentagem de precisão para cada posição do objeto
                             porcentagem

referente à Figura 4
                   43.



   Tabela 8: Teste de precisão e repetibilidade referente ao posicionamento da Figura 44
           :
         Figura              Precisão                            Repetibilidade

         43 (a)                80%                                    100%

         43 (b)                60%                                     80%

         43 (c)                80%                                    100%

    Fonte [do Autor]




Na Figura 4 segue o teste referente à posição central da área de trabalho.
          44
74




Fonte [do Autor]
Figura 44: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização
                                                                                          localização
                                               central.


   Tabela 9: Teste de precisão e repetibilidade referente ao posicionamento da Figura 45
         Figura              Precisão                            Repetibilidade

         44 (a)                 80%                                   100%

         44 (b)                 40%                                    60%

         44 (c)                 80%                                    80%

    Fonte [do Autor]



Na Figura 4 segue o teste referente à posição superior da área de trabalho.
          45




Fonte [do Auto
          Autor]
Figura 45: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização
                                              superior.
75




  Tabela 10: Teste de precisão e repetibilidade referente ao posicionamento da Figura 46
      Figura                Precisão                            Repetibilidade

       45 (a)                 80%                                    100%

       45 (b)                 60%                                    80%

       45 (c)                 80%                                    100%

  Fonte [do Autor]



       A partir destes testes foi possível perceber uma imprecisão na busca dos

objetos na parte central da área de trabalho, para efetuar uma melhora na precisão

foi necessário adicionar alguns fatores de correção, porém isso criou um problema

de ajustes global onde em alguns pontos a pega do objeto ocorreu de forma perfeita

e de outras não.

       Entretanto mesmo com alguns erros na pega do objeto em alguns pontos em

relação ao eixo “Y”, o posicionamento do eixo “X” teve uma precisão de quase

100%, informação validada a partir de testes somente de posicionamento do eixo da

base, que é determinado pelo eixo “X”.
76




5     CONCLUSÃO



      A partir de todo esse trabalho, é possível identificar o quanto é importante o

uso de visão computacional para o controle robótico, tanto na facilidade de

implementação, quanto ao custo final do projeto. Entretanto muitos aspectos no

âmbito da robótica devem ser trabalhados na vida acadêmica para os cursos

correlatos, pois a utilização de robôs em aulas pratica com ferramentas que

possibilitem uma versatilidade para criação de métodos de controle, se faz muito

necessário, principalmente para profissionais que pretendem seguir esse ramo de

atividade.

      Outro ponto muito importante que se pode concluir a partir desse trabalho é a

necessidade de capacitação de profissionais multidisciplinares, onde no âmbito

robótico requer um conhecimento vasto tanto na área de controle, quanto na área de

programação de sistema computacionais e/ou microprocessados, eletrônica, redes

de comunicação, mecânica, ótica e conhecimentos básicos como geometria e

calculo.

      Em linhas gerais esse trabalho, além de agregar bastante conhecimento ao

seu desenvolvedor, deixa como legado uma trilha para utilização do robô ED-

7220C® via Matlab® com scripts prontos para utilização em diversas matérias

correlatas ao trabalho com sistemas robóticos. Sendo também um guia inicial para

quem pretende utilizar o Kinect® como uma ferramenta de reconhecimento de

imagens 3D.

      Em relação aos objetivos específicos do trabalho, conclui-se que todos foram

alcançados de forma plena, sendo também esse trabalho, um ponto inicial para

diversos outros trabalhos no âmbito robótico.
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011
Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011

Contenu connexe

Tendances

Ast s-it0020 - it porta paletes eléctrico
Ast s-it0020 - it porta paletes eléctricoAst s-it0020 - it porta paletes eléctrico
Ast s-it0020 - it porta paletes eléctrico
Borsalin
 
FORM-026- Permissao para Trabalho.pdf
FORM-026- Permissao para Trabalho.pdfFORM-026- Permissao para Trabalho.pdf
FORM-026- Permissao para Trabalho.pdf
NADIA991365
 
Ast s-it0055- sinalização de segurança pinos
Ast s-it0055- sinalização de segurança pinosAst s-it0055- sinalização de segurança pinos
Ast s-it0055- sinalização de segurança pinos
Borsalin
 
Komatsu WA320-1 Wheel Loader Service Repair Manual SN:10001 and up
Komatsu WA320-1 Wheel Loader Service Repair Manual SN:10001 and upKomatsu WA320-1 Wheel Loader Service Repair Manual SN:10001 and up
Komatsu WA320-1 Wheel Loader Service Repair Manual SN:10001 and up
yksmemd
 
Діагностування електродвигунів
Діагностування електродвигунівДіагностування електродвигунів
Діагностування електродвигунів
Svetlana Savostina
 
Apostila cnc 2012
Apostila cnc 2012Apostila cnc 2012
Apostila cnc 2012
IFPR
 
Como calcular a potencia do motor e selecionar o redutor no acionamento de ma...
Como calcular a potencia do motor e selecionar o redutor no acionamento de ma...Como calcular a potencia do motor e selecionar o redutor no acionamento de ma...
Como calcular a potencia do motor e selecionar o redutor no acionamento de ma...
Luiz Roberto Prado
 

Tendances (20)

Instryks kartku ii ir
Instryks kartku  ii irInstryks kartku  ii ir
Instryks kartku ii ir
 
Belarus'ta Sirket Kurmak by tolga aktas
Belarus'ta Sirket Kurmak by tolga aktasBelarus'ta Sirket Kurmak by tolga aktas
Belarus'ta Sirket Kurmak by tolga aktas
 
Ast s-it0020 - it porta paletes eléctrico
Ast s-it0020 - it porta paletes eléctricoAst s-it0020 - it porta paletes eléctrico
Ast s-it0020 - it porta paletes eléctrico
 
FORM-026- Permissao para Trabalho.pdf
FORM-026- Permissao para Trabalho.pdfFORM-026- Permissao para Trabalho.pdf
FORM-026- Permissao para Trabalho.pdf
 
Manual Clipper C13 E
Manual Clipper C13 EManual Clipper C13 E
Manual Clipper C13 E
 
Ast s-it0055- sinalização de segurança pinos
Ast s-it0055- sinalização de segurança pinosAst s-it0055- sinalização de segurança pinos
Ast s-it0055- sinalização de segurança pinos
 
Manual cimaf cabos de ao
Manual cimaf   cabos de aoManual cimaf   cabos de ao
Manual cimaf cabos de ao
 
Стрілецька зброя та поводження з нею
Стрілецька зброя та поводження з неюСтрілецька зброя та поводження з нею
Стрілецька зброя та поводження з нею
 
Symbol nato mr
Symbol nato mrSymbol nato mr
Symbol nato mr
 
MANUAL DE SINALIZAÇÃO BR-040_Versão2_1.pdf
MANUAL DE SINALIZAÇÃO BR-040_Versão2_1.pdfMANUAL DE SINALIZAÇÃO BR-040_Versão2_1.pdf
MANUAL DE SINALIZAÇÃO BR-040_Versão2_1.pdf
 
Komatsu WA320-1 Wheel Loader Service Repair Manual SN:10001 and up
Komatsu WA320-1 Wheel Loader Service Repair Manual SN:10001 and upKomatsu WA320-1 Wheel Loader Service Repair Manual SN:10001 and up
Komatsu WA320-1 Wheel Loader Service Repair Manual SN:10001 and up
 
Діагностування електродвигунів
Діагностування електродвигунівДіагностування електродвигунів
Діагностування електродвигунів
 
вступний урок
вступний уроквступний урок
вступний урок
 
Процес розмічання заготовки з деревини
Процес розмічання заготовки з деревиниПроцес розмічання заготовки з деревини
Процес розмічання заготовки з деревини
 
Apostila cnc 2012
Apostila cnc 2012Apostila cnc 2012
Apostila cnc 2012
 
Вивчення та освоєння пpийомiв із проведення дефектування робочих органів гpун...
Вивчення та освоєння пpийомiв із проведення дефектування робочих органів гpун...Вивчення та освоєння пpийомiв із проведення дефектування робочих органів гpун...
Вивчення та освоєння пpийомiв із проведення дефектування робочих органів гpун...
 
Como calcular a potencia do motor e selecionar o redutor no acionamento de ma...
Como calcular a potencia do motor e selecionar o redutor no acionamento de ma...Como calcular a potencia do motor e selecionar o redutor no acionamento de ma...
Como calcular a potencia do motor e selecionar o redutor no acionamento de ma...
 
22 korozja metali2
22 korozja metali222 korozja metali2
22 korozja metali2
 
Protec desenhista de máquinas
Protec   desenhista de máquinasProtec   desenhista de máquinas
Protec desenhista de máquinas
 
Movimentação de cargas
Movimentação de cargasMovimentação de cargas
Movimentação de cargas
 

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

Visão artificial
Visão artificialVisão artificial
Visão artificial
Pedrolobo8
 
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURAESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
Sabrina Mariana
 
Visao computacional aplicada em um braco robotico didatico
Visao computacional aplicada em um braco robotico didaticoVisao computacional aplicada em um braco robotico didatico
Visao computacional aplicada em um braco robotico didatico
djeily
 
tccfinal
tccfinaltccfinal
tccfinal
rjunkes
 
Classificação de padrões usando redes neurais
Classificação de padrões usando redes neuraisClassificação de padrões usando redes neurais
Classificação de padrões usando redes neurais
Wanderson Rocha
 

Similaire à Tcc controle robótico referenciado por sistema de visão computacional utilizando o kinect Hamilton Sena 2011 (20)

Visão artificial
Visão artificialVisão artificial
Visão artificial
 
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenhoViabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
 
Desenvolvimento de Produto para Automação Residencial com Sistema DroidLar
Desenvolvimento de Produto para Automação Residencial com Sistema DroidLarDesenvolvimento de Produto para Automação Residencial com Sistema DroidLar
Desenvolvimento de Produto para Automação Residencial com Sistema DroidLar
 
ANÁLISE DE ECONOMIA ENERGÉTICA COM A INSTALAÇÃO DE SENSORES DE PRESENÇA EM BA...
ANÁLISE DE ECONOMIA ENERGÉTICA COM A INSTALAÇÃO DE SENSORES DE PRESENÇA EM BA...ANÁLISE DE ECONOMIA ENERGÉTICA COM A INSTALAÇÃO DE SENSORES DE PRESENÇA EM BA...
ANÁLISE DE ECONOMIA ENERGÉTICA COM A INSTALAÇÃO DE SENSORES DE PRESENÇA EM BA...
 
Monografia - Representação de Ambientes com recursos de Realidade Aumentada
Monografia - Representação de Ambientes com recursos de Realidade AumentadaMonografia - Representação de Ambientes com recursos de Realidade Aumentada
Monografia - Representação de Ambientes com recursos de Realidade Aumentada
 
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURAESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
ESTRATÉGIA DE REAÇÃO EM CALL CENTER: UMA PROPOSTA DE ARQUITETURA
 
Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...
Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...
Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...
 
Conexão remota e segurança de rede
Conexão remota e segurança de redeConexão remota e segurança de rede
Conexão remota e segurança de rede
 
Visao computacional aplicada em um braco robotico didatico
Visao computacional aplicada em um braco robotico didaticoVisao computacional aplicada em um braco robotico didatico
Visao computacional aplicada em um braco robotico didatico
 
Usabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos MunicipaisUsabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos Municipais
 
Mineração de Dados: Conceitos e Aplicações
Mineração de Dados: Conceitos e AplicaçõesMineração de Dados: Conceitos e Aplicações
Mineração de Dados: Conceitos e Aplicações
 
Projeto banco de_dados_cloud
Projeto banco de_dados_cloudProjeto banco de_dados_cloud
Projeto banco de_dados_cloud
 
TG TCC AUTOMAÇÃO UFABC - Operação Remota de Mesa Móvel utilizando Visão Compu...
TG TCC AUTOMAÇÃO UFABC - Operação Remota de Mesa Móvel utilizando Visão Compu...TG TCC AUTOMAÇÃO UFABC - Operação Remota de Mesa Móvel utilizando Visão Compu...
TG TCC AUTOMAÇÃO UFABC - Operação Remota de Mesa Móvel utilizando Visão Compu...
 
TCC - AUTOMAÇÃO RESIDENCIAL - BRUNO GASTALDI
TCC - AUTOMAÇÃO RESIDENCIAL - BRUNO GASTALDITCC - AUTOMAÇÃO RESIDENCIAL - BRUNO GASTALDI
TCC - AUTOMAÇÃO RESIDENCIAL - BRUNO GASTALDI
 
TCC - Eletrônica
TCC - Eletrônica TCC - Eletrônica
TCC - Eletrônica
 
rua para os cegos
rua para os cegosrua para os cegos
rua para os cegos
 
2007 alexandre rodriguesgomes
2007 alexandre rodriguesgomes2007 alexandre rodriguesgomes
2007 alexandre rodriguesgomes
 
tccfinal
tccfinaltccfinal
tccfinal
 
Voiplegal
VoiplegalVoiplegal
Voiplegal
 
Classificação de padrões usando redes neurais
Classificação de padrões usando redes neuraisClassificação de padrões usando redes neurais
Classificação de padrões usando redes neurais
 

Plus de Hamilton Sena (11)

2ª SATEC - SENAI - Arduino + CLP + Maquina de estados
2ª SATEC - SENAI - Arduino + CLP + Maquina de estados2ª SATEC - SENAI - Arduino + CLP + Maquina de estados
2ª SATEC - SENAI - Arduino + CLP + Maquina de estados
 
Tecnicas de programação - Maquinas de estados e Ladder
Tecnicas de programação - Maquinas de estados e LadderTecnicas de programação - Maquinas de estados e Ladder
Tecnicas de programação - Maquinas de estados e Ladder
 
Aula4 28-02-2013
Aula4 28-02-2013Aula4 28-02-2013
Aula4 28-02-2013
 
Aula3 21 02-2013
Aula3 21 02-2013Aula3 21 02-2013
Aula3 21 02-2013
 
Aula2 b 14-02-2013
Aula2 b 14-02-2013Aula2 b 14-02-2013
Aula2 b 14-02-2013
 
Aula2 a 14-02-2013
Aula2 a 14-02-2013Aula2 a 14-02-2013
Aula2 a 14-02-2013
 
Aula2 c 14-02-2013
Aula2 c 14-02-2013Aula2 c 14-02-2013
Aula2 c 14-02-2013
 
Aula1 07 02-2013
Aula1 07 02-2013Aula1 07 02-2013
Aula1 07 02-2013
 
Apresentação - CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIO...
Apresentação - CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIO...Apresentação - CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIO...
Apresentação - CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIO...
 
Curriculo hamilton sena
Curriculo hamilton senaCurriculo hamilton sena
Curriculo hamilton sena
 
Impresssoras laser
Impresssoras laserImpresssoras laser
Impresssoras laser
 

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

  • 1. 1 FACULDADE ASSIS GURGACZ HAMILTON JOSE DA SILVA SENA CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIONAL UTILIZANDO O KINECT® CASCAVEL 2011
  • 2. 2 FACULDADE ASSIS GURGACZ HAMILTON JOSE DA SILVA SENA CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIONAL UTILIZANDO O KINECT® Trabalho apresentado como requisito para obtenção do título de bacharel em Engenharia de Controle e Automação da Faculdade Assis Gurgacz. Orientador: Arthur Schuler da Igreja CASCAVEL 2011
  • 3. 3 FACULDADE ASSIS GURGACZ HAMILTON JOSE DA SILVA SENA CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIONAL UTILIZANDO O KINECT® Trabalho apresentado no Curso de Engenharia de Controle e Automação, da Faculdade Assis Gurgacz, como requisito parcial para obtenção do título de Bacharel em Engenharia de Controle e Automação, sob orientação do Professor Especialista Arthur Schuler da Igreja. BANCA EXAMINADORA ____________________________ Arthur Schuler da Igreja Faculdade Assis Gurgacz ____________________________ Ederson Zanchet Faculdade Assis Gurgacz ____________________________ Vânio da Maia Faculdade Assis Gurgacz Cascavel, ___ de _______________ de 2011
  • 4. 4 DEDICATÓRIA Primeiramente dedico este trabalho a Deus, que me deu forças e iluminou meu caminho; A minha esposa Francielli que espera pelo nosso primeiro filho, por toda a paciência, compreensão e apoio incondicional, a minha mãe Sandra e meus irmãos Alisson, Milene e Fabio que fazem parte dessa trajetória e a meus avós Francisca e Dermeval que hoje estão ao lado do Pai todo poderoso.
  • 5. 5 AGRADECIMENTOS Agradeço em primeiro lugar a Deus que iluminou o meu caminho durante esta caminhada. Agradeço também a toda minha família em especial a minha mãe, meus irmãos e minha esposa, que de forma especial e carinhosa me deu força e coragem, me apoiando nos momentos de dificuldades, quero agradecer também ao Mauricio Celestino Sena e João Carlos de Souza que acreditaram em mim e me deram a oportunidade de estar hoje realizando um sonho. Não posso deixar também de agradecer a todos os professores e em especial ao meu orientador Arthur Schuler da Igreja de ter aceitado o convite para essa empreitada e ao coordenador do curso Vânio da Maia que sempre teve um relacionamento diferenciado com nossa turma. Não posso deixar de citar também os companheiros de turma e em especial os amigos Robson Molgaro, Augusto Peruffo, Darlan Dariva e o filhão Andre Fazioni que sempre estiveram de prontidão nos momentos de dificuldade e alegrias. Agradecer também a todos os membros da igreja Evangélica Livre que não deixaram de orar por mim e minha família em especial ao amigo e pastor Sergio. E não deixando de agradecer de forma grata e grandiosa minhas outras duas mães, Sonia Dalbosco Sena e Edna Xavier Rego que cuidam de mim como se fosse o próprio filho delas.
  • 6. 6 "Através da sabedoria uma casa é construída, e pelo entendimento é estabelecida; através do conhecimento, seus cômodos cheios com tesouros raros e bonitos." PROV. 24:3-4
  • 7. 7 RESUMO A robótica, segundo estudos realizados no Japão e EUA, deve ser uma das 10 linhas de pesquisa com mais trabalhos, a nível mundial, nas próximas décadas. O avanço tecnológico tem permitido a realização de cálculos computacionais necessários em tempo real, e este fato tem possibilitado que novas descobertas e aplicações possam ser feitas em sistemas de robótica, tornando essa área uma fonte quase que inesgotável de pesquisa. Nesse contexto surge a necessidade de ambientes de testes e simulação onde as ferramentas propiciem potencializar o conhecimento e a difusão da pesquisa no âmbito da robótica, é nesse âmbito que o atual trabalho se dedica. Integrando os conhecimentos de robótica com visão computacional utilizando o Kinect®, considerado por muitos um dos acessórios mais revolucionário da historia dos videogames. Palavras chaves: robótica, Kinect®, visão computacional.
  • 8. 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. 9 LISTA DE ILUSTRAÇÕES Figura 1: Célula de trabalho robotizada .................................................................... 16 Figura 2: Robô Articulado ou Antropomórfico com seu respectivo volume de trabalho. .................................................................................................................................. 18 Figura 3: Relação dos problemas da cinemática direta e inversa. ............................ 20 Figura 4: Braço robô ED-7220C ................................................................................ 25 Figura 5: Os 5 graus de liberdade do Ed-7220C. ...................................................... 25 Figura 6: Vista superior do volume de trabalho do ED-7220C. ................................. 26 Figura 7: Vista lateral do volume de trabalho do ED-7220C. .................................... 26 Figura 9: Unidade controladora ED-MK4, da empresa ED-Laboratory. .................... 28 Figura 10: Bombardeiro Tupolev Tu-4 ....................................................................... 31 Figura 11: Imagem digital e sua matriz correspondente ............................................ 34 Figura 12: Cálculo do centro de área de uma determinada região............................ 38 Figura 13: Arquitetura básica do Kinect® ................................................................... 42 Figura 14: Resumo da arquitetura básica ................................................................. 42 Figura 15: Campo de visão alcançado pelo Kinect® ................................................. 43 Figura 16: Holograma projetado pelo Kinect® para leitura de profundidade. ............ 44 Figura 17: Método de identificação 3D por luz estruturada. ...................................... 44 Figura 18: Arquitetura da API OpenNI ....................................................................... 47 Figura 19: Arquitetura montada para identificação dos comandos de comunicação do controlador ED-MK4® com o RoboTalk® ................................................................. 49 Figura 20: Código de comunicação serial do MATLAB com o ED-MK4 .................... 51 Figura 21: Código de inserção do comando "0D" no final de cada instrução de execução. .................................................................................................................. 52 Figura 22: Código de recebimento de dados serial via Matlab .................................. 52 Figura 23: Representação vetorial das juntas do robô ED-7220C ............................ 53 Figura 24: Configuração dos parâmetros de D-H na Robotics Toolbox .................... 54 Figura 25: Representação gráfica do robô ED-7220C via Robotics Toolbox ............ 55 Figura 26: Área de trabalho definida no laboratório de robótica para execução de testes ......................................................................................................................... 56 Figura 27: Cenário de testes completo ...................................................................... 57 Figura 28: Código de captura da imagem RGB e matriz de profundidade. ............... 57 Figura 29: Distancia do Kinect® até área de trabalho do robô .................................. 58 Figura 30: Pré-processamento da imagem vista pelo Kinect® .................................. 59 Figura 31: Comando para corte da figura RGB e de profundidade via Matlab® ....... 60 Figura 32: Código que efetua o espelhamento da imagem RGB e o da matriz de profundidade. ............................................................................................................ 61 Figura 33: Código de identificação do objeto vermelho. ............................................ 61 Figura 34: Identificação do centróide de um objeto. .................................................. 62 Figura 35: Medidas da área de trabalho e distância da base do robô até área de trabalho. .................................................................................................................... 63 Figura 36: Comprimento da área de trabalho ............................................................ 64 Figura 37: Distancia entre o Kinect® e a área de trabalho em visão lateral. ............. 64 Figura 38: Código de controle do eixo da base ......................................................... 67 Figura 39: Tela de controle de busca dos objetos. .................................................... 68 Figura 40: Script de comando para conexão via serial e transpor o sistema de controle do ED-MK4® para modo HOST. ................................................................. 69 Figura 41: Robô virtual criado via Robotic Toolbox atravês do drivebot. ................... 70 Figura 42: Robô ED-7220C® efetuado a pega do objeto. ......................................... 71
  • 10. 10 Figura 43: Imagem gerada pela câmera RGB do Kinect®. ....................................... 72 Figura 44: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização inferior............................................................................. 73 Figura 45: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização central. ............................................................................ 74 Figura 46: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização superior........................................................................... 74
  • 11. 11 SUMÁRIO 1 INTRODUÇÃO ................................................................................................... 12 2 FUNDAMENTAÇÃO TEÓRICA ......................................................................... 15 2.1 ROBÓTICA .................................................................................................. 15 2.1.1. Robótica Industrial........................................................................................ 15 2.1.2. Classificação dos robôs ............................................................................... 17 2.1.3. Modelagem Cinemática................................................................................ 18 2.1.4. Cinemática direta ......................................................................................... 20 2.1.5. Cinemática inversa ....................................................................................... 20 2.1.6. Notação de Denavit-Hartenberg ................................................................... 21 2.1.7. Níveis de Controle Robótico ......................................................................... 22 2.1.8. ED-7220C® .................................................................................................. 24 2.2 ENGENHARIA REVERSA ........................................................................... 30 2.3 VISÃO COMPUTACIONAL .......................................................................... 32 2.3.1. Imagem Digital ............................................................................................. 33 2.3.2. Processamento de Imagem Digital............................................................... 34 2.3.3. Limiarização (Threholding) ........................................................................... 35 2.3.4. Reconhecimento de Objetos ........................................................................ 37 2.3.5. Luz Estruturada ............................................................................................ 39 2.4. KINECT® ...................................................................................................... 41 2.5 MATLAB® ..................................................................................................... 45 2.6 ROBOTICS TOOLBOX ................................................................................ 46 2.7 OPENNI ....................................................................................................... 46 3 METODOLOGIA................................................................................................. 48 3.1 ENGENHARIA REVERSA DA COMUNICAÇÃO ......................................... 48 3.2 ROBOTICS TOOLBOX ................................................................................ 53 3.3 KINECT® ..................................................................................................... 55 3.4 PROCESSAMENTO DA IMAGEM ............................................................... 59 3.5 REFERENCIA DO PONTO DE VISÃO ........................................................ 63 3.6 CONTROLE DO ROBÔ ED-7220C® ........................................................... 66 4 RESULTADOS E DISCUSSÕES ........................................................................ 69 4.1 COMUNICAÇÃO SERIAL ............................................................................ 69 4.2 ROBOTICS TOOLBOX ................................................................................ 70 4.3 RECONHECIMENTO DO OBJETO ............................................................. 71 5 CONCLUSÃO..................................................................................................... 76 6 REFERÊNCIAS .................................................................................................. 77 ANEXOS ................................................................................................................... 80
  • 12. 12 1 INTRODUÇÃO A disciplina de robótica tem o objetivo de prover o conhecimento no desenvolvimento e análise de modelos de robôs industriais e a programação de robôs manipuladores, com esse intuito a Faculdade Assis Gurgacz disponibiliza em seu laboratório de robótica um robô didático, porém esse robô didático desenvolvido pela empresa coreana ED-Laboratory fornece um software proprietário para controle, simulação e testes, tendo limitadas opções de integração a outros meios de controle via software, impedindo assim a interação do robô a projetos criados em diversas outras disciplinas correlatas. Esse impedimento estende-se também a própria disciplina de robótica, onde o ensino da interação do robô com o ambiente é de extrema importância, principalmente pela concepção de utilização de robôs, onde há a necessidade de ser flexível na atuação em ambientes dinâmicos de forma robusta e versátil mantendo- se operacional diante de mudanças em ambientes não estruturados. Outro problema é a falta de uma plataforma que propicie desenvolvimentos integrados entre robótica e visão computacional, onde geralmente o ensino fica restrito a simulações via software, impedindo assim, um modelo que poderia potencializar a elaboração de trabalhos mais sofisticados na área robótica e no campo da visão computacional. A robótica, segundo estudos realizados no Japão e EUA, deve ser uma das 10 linhas de pesquisa com mais trabalhos, a nível mundial, nas próximas décadas. O avanço tecnológico tem permitido a realização de cálculos computacionais necessários em tempo real, e este fato tem possibilitado que novas descobertas e aplicações possam ser feitas em sistemas de robótica, tornando essa área uma fonte quase que inesgotável de pesquisa.
  • 13. 13 Nesse contexto surge a necessidade de ambientes de testes e simulação onde as ferramentas propiciem potencializar o conhecimento e a difusão da pesquisa no âmbito da robótica, principalmente pelo fato de áreas como a da inteligência artificial, sistema de controles avançados, sensores e atuadores, controle de processo, programação, redes, micro controladores, identificação de sistemas, entre outras, possam unir-se para como foi dito anteriormente propiciar trabalhos mais sofisticados. Para permitir a utilização desse trabalho para futuros projetos, serão disponibilizados comandos via MATLAB® para controle do robô, pois o controle atual é feito pelo software do fabricante do robô. Outro ponto que justifica o desenvolvimento desse trabalho é o uso do Kinect® enquanto sensor (sendo este um sensor por sistema de visão computacional comercializado como controle para videogames pela empresa Microsoft®), pois para referenciar um robô, são utilizados inúmeros sensores que em ambientes não estruturados podem não ser efetivos, e que o Kinect pelo sensoriamento de profundidade é um passo além dos sistemas de visão computacional que tem esta restrição. Com isso, o tema escolhido para esse trabalho, baseia-se na grande relevância tanto para o ambiente industrial como acadêmico na atual conjuntura mundial. O trabalho tem como objetivo desenvolver um sistema que controle o robô didático ED-7220C através do software MATLAB® efetuando o reconhecimento de objetos de forma referenciada a partir do Kinect®. Para que o trabalho se conclua será necessário estabelecer a comunicação com o controlador do robô via software MATLAB®, elaborando o controle de cinemática inversa do sistema, identificando e
  • 14. 14 obtendo o posicionamento de objetos através de visão computacional, integrando assim o sistema de visão computacional com o controle do robô.
  • 15. 15 2 FUNDAMENTAÇÃO TEÓRICA 2.1 ROBÓTICA 2.1.1. Robótica Industrial O termo robô foi originalmente utilizado em 1921 pelo dramaturgo tcheco Karen Capek, na peça teatral “Os Robôs Universais de Russum (R.U.R.)” como referência a um autômato que acaba rebelando-se contra o ser humano. Robô deriva da palavra "robota" de origem eslava, que significa "trabalho forçado". Na década de 40, o escritor Isaac Asimov tornou popular o conceito de robô como uma máquina de aparência humana não possuidora de sentimentos, onde seu comportamento seria definido a partir de programação feita por seres humanos, de forma a cumprir determinadas regras éticas de conduta. O termo robótica foi criado por Asimov para designar a ciência que se dedica ao estudo dos robôs e que se fundamenta pela observação de três leis básicas: – Um robô não pode fazer mal a um ser humano e nem consentir, permanecendo inoperante, que um ser humano se exponha a situação de perigo; – Um robô deve obedecer sempre às ordens de seres humanos, exceto em circunstâncias em que estas ordens entrem em conflito com a primeira lei; – Um robô deve proteger a sua própria existência, exceto em circunstâncias que entrem em conflito com a primeira e a segunda lei [1]. Segundo a Robotic Industries Association (RIA), robô industrial é definido como um "manipulador multifuncional reprogramável projetado para movimentar
  • 16. 16 materiais, partes, ferramentas ou peças especiais, através de diversos movimentos programados, para o desempenho de uma variedade de tarefas” [2]. Uma definição mais ampla é apresentada pela norma ISO (International Organization for Standardization) 10218, como sendo: "uma máquina manipuladora com vários graus de liberdade controlada automaticamente, reprogramável, multifuncional, que pode ter base fixa ou móvel para utilização em aplicações de automação industrial" [1], conforme é mostrado na Figura 1. Fonte [15] Figura 1: Célula de trabalho robotizada Um robô industrial é formado pela integração dos seguintes componentes: Manipulador mecânico: refere-se ao aspecto mecânico e estrutural do robô. – Elos; – Juntas; – Sistema de transmissão;
  • 17. 17 Atuadores: São componentes que convertem energia elétrica, hidráulica ou pneumática, em potência mecânica. – Atuadores hidráulicos e pneumáticos; – Atuadores eletromagnéticos; Sensores: Fornecem parâmetros sobre o comportamento do manipulador. Unidade de controle: Responsável pelo gerenciamento e monitoração dos parâmetros operacionais do robô. Unidade de potência: É responsável pelo fornecimento de potência necessária à movimentação dos atuadores. Efetuador: É o elemento de ligação entre o robô e o meio que o cerca. 2.1.2. Classificação dos robôs Os robôs industriais podem ser classificados de acordo com o numero de juntas, o tipo de controle, o tipo de acionamento, e a geometria. É usual classificar os robôs de acordo como o tipo de junta, ou, mais exatamente, pelas 3 juntas mais próximas da base do robô. Também pode ser classificada em relação ao espaço de trabalho, ao grau de rigidez, a extensão de controle sobre o curso do movimento e de acordo com as aplicações adequadas ou inadequadas a eles. – Robô de Coordenadas Cartesianas; – Robô de Coordenadas Cilíndricas; – Robô de Coordenadas Esféricas; – Robô SCARA; – Robô Paralelo; – E o robô Articulado ou Antropomórfico (caso de estudo desse trabalho);
  • 18. 18 Na configuração antropomórfica, existem ao menos três juntas de rotação. O eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de rotação que são simétricas entre si. Este tipo de configuraçã é o que permite maior configuração Fonte [16] Figura 2: Robô Articulado ou Antropomórfico com seu respectivo volume de trabalho. : respectivo mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais complexa em relação às outras configurações [3]. Na Figura 2 é demonstrado esse às ]. tipo de robô e a sua representação do volume de trabalho. 2.1.3. Modelagem Cinemática .1.3. Cinemática Um manipulador mecânico consiste de elos, conectados por juntas prismáticas ou rotacionais. Cada par junta-elo constitui um grau de liberdade. Assim, elo para um manipulador com N graus de liberdade têm-se N pares juntas-elos, onde o têm se elos, primeiro elo é à base de sustentação do robô (sistema de coordenadas inerciais fixados) fixados) e no seu último elo é incorporada a sua ferramenta de trabalho. O conhecimento completo das variáveis articulares de um robô q i , determina o
  • 19. 19 posicionamento de sua ferramenta no sistema de coordenadas de trabalho. De um modo geral, os três primeiros graus de liberdade de um robô são responsáveis pelo posicionamento de sua ferramenta no espaço de tarefas e os restantes pela sua orientação. Na maioria das aplicações industriais, a programação de tarefas de robôs, é realizada por aprendizagem, consistindo no movimento individual de cada junta. Assim sendo, a programação de trajetórias de um robô torna-se muito fácil, não necessitando de um conhecimento do modelo, sendo a fase de aprendizagem basicamente uma operação de armazenamento de uma seqüência de incrementos necessários para que o conjunto de variáveis articulares determine um posicionamento final X i , especificado a partir de um perfil de trajetórias fornecido (robô controlado a partir do sistema de coordenadas de juntas). Como um robô é controlado através de suas variáveis articulares, a realização do controle de posição em relação ao sistema de coordenadas cartesianas implicará no desenvolvimento de metodologias para transformação de coordenadas. A transformação de coordenadas articulares para cartesianas é normalmente realizada em tempo real, onde a partir do conjunto de variáveis articulares serão obtidas a posição e orientação de sua ferramenta [4]. A cinemática de robô manipulador pode ser dividida em dois tipos de cinemática a cinemática direta e a inversa.
  • 20. 20 Fonte [7] Figura 3: Relação dos problemas da cinemática direta e inversa. 2.1.4. Cinemática direta Na cinemática direta deseja-se obter a posição e velocidade do efetuador, para uma dada posição das articulações, ou seja, programar a cinemática direta de um manipulador é determinar as relações que exprimem um ponto no espaço cartesiano, em função de um ponto no espaço das juntas. 2.1.5. Cinemática inversa Enquanto a cinemática direta resulta no desenvolvimento imediato das expressões do manipulador, a cinemática inversa procura determinar o conjunto de valores das juntas que se adéquam a uma dada configuração do espaço operacional ou cartesiano. A cinemática inversa pode ser vista com o conjunto de processos para determinar as funções inversas do sistema das expressões da cinemática direta. [4] O problema da cinemática inversa é mais difícil que o problema da cinemática direta, pois não há um procedimento sistemático explícito como o algoritmo DH conforme [7]. Um resultado disto é que cada robô, ou classe de robôs, tem que ser
  • 21. 21 tratados separadamente. No entanto, a solução para o problema da cinemática inversa é mais útil do que da cinemática direta, pois no controle da trajetória do robô a cinemática inversa se faz necessária para escolha da melhor configuração das juntas para um movimento de um ponto a outro com o mínimo de esforço, ou seja, com o movimento de menos juntas possíveis. Além disso, a chave para fazer robôs mais versáteis implica em usar feedbacks de sensores externos tais como o de visão. Sensores externos alimentam informações sobre a localização e orientação de objetos em termos de variáveis do espaço de configuração. Estas informações são necessárias na determinação dos valores apropriados das juntas do robô, para que o robô possa realizar determinada tarefa em locais sujeitos a interferência de outros equipamentos no espaço de trabalho do robô. Portanto deve-se encontrar o mapeamento da especificação de entrada do espaço de configuração da ferramenta dentro de uma especificação de saída do espaço das juntas. Resume-se desta forma o problema da cinemática inversa. 2.1.6. Notação de Denavit-Hartenberg A evolução no tempo das coordenadas das juntas de um robô representa o modelo cinemático de um sistema articulado no espaço tridimensional. A notação de Denavit-Hartenberg (DH) é uma ferramenta utilizada para sistematizar a descrição cinemática de sistemas mecânicos articulados com N graus de liberdade [3]. Aplicadas, as juntas têm de estar numeradas por ordem crescente, começando pela base do manipulador. Pode ser dividido em 4 etapas fundamentais que se subdividem em vários passos elementares repetidos parcialmente em ciclos, consoante o numero de elos do manipulador. Na Tabela 1, é descrito o algoritmo,
  • 22. 22 admite-se que o manipulador tem n juntas e para ele se definirão n+1 sistemas de coordenadas, sendo o último associado à mão ou garra. [4] Tabela 1: Algoritmo de Denavit-Hartenberg para um manipulador com n juntas. Fonte [4] 2.1.7. Níveis de Controle Robótico O Controlador é a parte do robô que opera o braço mecânico e mantém contato com seu ambiente. O dispositivo em si é composto por hardware e software, combinados para possibilitar ao robô executar suas tarefas. O controle do robô pode ser dividido em três níveis: - Controle do acionador: ou controle de cada eixo do robô separadamente; - Controle da trajetória: ou controle do braço do robô com coordenação entre os eixos para percorrer a trajetória especificada subdividindo-se em controle ponto- a-ponto (método utilizado nesse trabalho) e controle continuo;
  • 23. 23 - Controle de coordenação com o ambiente: é o controle do braço em coordenação com o ambiente. Esses níveis podem ser descritos como baixo, intermediário e alto, respectivamente. Nesse trabalho foi utilizado o controle de trajetória ponto-a-ponto onde neste método, o caminho pelo qual o robô precisará passar, até um dado ponto final, é definido como um conjunto de pontos intermediários. Estes pontos são enviados à memória do sistema de controle pelo usuário como parte do processo de aprendizado do robô. O curso de um ponto intermediário a outro não é pré- determinado e não afeta a implementação da operação principal. Muitos sistemas de controle de robôs industriais presentes no mercado são deste tipo. O controle ponto-a-ponto é recomendado para robôs planejados para executar tarefas em pontos pré-determinados (por exemplo, verter misturas em moldes, carregar e descarregar partes, ou pontos de soldagem). Onde é necessário ultrapassar obstáculos em movimento, o operador deve planejar antecipadamente a introdução de pontos intermediários. Uma modificação mais sofisticada do controle ponto-a-ponto possibilita a introdução de pontos proibidos no controle de programação. O programa irá então ser capaz de assegurar que o robô evitará estes pontos. O robô pode ser ensinado sobre os pontos de seu trajeto de duas maneiras: Movendo o robô manualmente para um ponto desejado, gravando este ponto na memória do robô, e passando para o próximo ponto a ser ensinado - método por aprendizagem (teach in). Definindo as coordenadas de cada ponto desejado e gravando-as na memória do robô, sem que este tenha que ser movido fisicamente para que os pontos sejam aprendidos - método de programação off-line.
  • 24. 24 Uma vez aprendidos os pontos do trajeto, programas podem ser escritos direcionando o braço do robô para estes pontos, na ordem desejada, indiferentemente da ordem em que foram ensinados. O controle ponto-a-ponto é muito mais barato que o controle por procedimento contínuo. No entanto, só é apropriado em operações em que o trajeto entre os pontos definidos não é importante. Para executar caminhos mais complicados, onde é necessário existir precisão do começo ao fim, o controle por trajetória contínua deve ser usado. 2.1.8. ED-7220C® O manipulador robótico ED-7220C ilustrado pela Figura 4 foi desenvolvido pela empresa coreana ED-Laboratory com fins exclusivamente didáticos. Dentre os fatores que contribuem para limitação de suas aplicações industriais estão principalmente às limitações mecânicas de seu volume de trabalho, a baixa velocidade proporcionada por seus atuadores e reduzida capacidade de carga do robô.
  • 25. 25 Fonte [do Autor] Figura 4: Braço robô ED-7220C Fonte [6] Figura 5: Os 5 graus de liberdade do Ed-7220C. O ED-7220C é um robô de orientação vertical e possui cinco graus de liberdade, ilustrados na Figura 5, sendo três deles reservados para o posicionamento e dois para a orientação de seu manipulador.
  • 26. 26 Fonte [6] Figura 6: Vista superior do volume de trabalho do ED-7220C. Esta posição refere-se à localização final do manipulador no interior de seu volume de trabalho, Figuras 6 e 7, após a execução de um movimento e é determinada através do cálculo cinemático resultante do acionamento dos motores da base, ombro (shoulder) e cotovelo (elbow). Fonte [6] Figura 7: Vista lateral do volume de trabalho do ED-7220C. As juntas são acionadas através de cinco servo motores de corrente contínua, sendo o sentido da revolução determinado pela polaridade da voltagem de operação. Cada motor apresenta um encoder acoplado ao eixo para prover as informações de posição e velocidade para o efetivo controle em malha fechada. A
  • 27. 27 movimentação do eixo dos motores faz com que o encoder gere sinais de freqüência que indicam a duração e o sentido do movimento. A unidade controladora do robô, o ED-MK4, efetua a leitura destes sinais e calcula a trajetória a ser seguida. Os encoders do projeto possuem uma resolução que permite o retorno de valores de -32767 a 32767 posições diferentes, entretanto a construção mecânica do ED-7220C permite apenas rotações completas na junta do “pulso” do robô, referentes aos motores B e C. Todas as outras juntas têm limitações mecânicas de movimento, impedindo a utilização da faixa completa de valores de encoder no comando de um movimento para os motores do cotovelo, ombro e base, conforme descrito na Tabela 2. Tabela 2: Especificações do braço robótico ED-7220C Número de articulações 5 articulações + garra Construção Braço articulado na vertical Transmissão Engrenagens, correia dentada e sem fim Peso 25kg Precisão (posição) +/- 0,5mm Velocidade do movimento Aprox. 100mm/s máximo Capacidade de carga 1kg Atuador Servomotor DC (com encoder ótico) Articulação da base +/- 150 graus Articulação do ombro +130 graus/ -35 graus Faixa de movimento Articulação do cotovelo +/- 130 graus Rotação da garra 360 graus Raio máximo de operação 610mm (24,4") Abertura da garra 65mm (sem borracha: 75mm) Proteção Sobrecarga de um atuador Fonte [6] A detecção de sua limitação mecânica nos movimentos está associada primeiramente há microinterruptores ou microswitches, encontrados juntos aos elos do robô, entretanto, a unidade controladora é capaz de detectar uma eventual sobrecarga nos motores. A estrutura do robô carece de uma proteção externa, tendo suas conexões das juntas e elos, engrenagens, sensores e motores expostos ao acadêmico. Sua
  • 28. 28 mecânica permite também a movimentação de suas juntas enquanto a garra mantém-se fechada. 2.1.9. ED-MK4 A ED-MK4, Figura 8, é a unidade controladora desenvolvida pela ED- Labotatory para controlar a movimentação do robô manipulador didático ED-7220C. Fonte [6] Figura 8: Unidade controladora ED-MK4, da empresa ED-Laboratory. Dentre outros componentes, a controladora dispõe de elementos de potência, terminais de entrada (para sensores), terminais de saída (para atuadores), o IHM (Interface Homem-Máquina) Teach-Pendant, processadores e circuitos integrados de memória, permitindo-a armazenar, executar e monitorar rotinas de programação através das leituras de tensão, velocidade de revolução e aceleração dos servo motores do robô. As especificações gerais da unidade controladora e seus componentes são descritos na Tabela 3. Tabela 3: Especificações da unidade controladora ED-MK4. Terminal de entrada 8 portas e LEDs Chave de entrada 8 chaves liga/desliga Terminal de saída 8 portas e LEDs Processador Processador de 16 bits, controlador do motor de 8 bits, programador manual de 8 bits Software ED-72C Robo Talk Fonte [6]
  • 29. 29 A programação do robô pode ser feita através de um protocolo de comunicação serial próprio, onde o usuário utiliza o software RoboTalk no computador conectado para gerar arquivos “.dat”, contendo as coordenadas espaciais de cada ponto, e arquivos com extensão “.rt” no qual emprega-se a linguagem de programação do robô, comandando-o para os pontos no espaço gravados no arquivo “.dat”, de acordo com a tarefa desejada. Estas rotinas são executadas através de uma comunicação serial, efetuada através da interface RS-232 do PC, possibilitando o envio de informações para a unidade controladora ED-MK4. Alternativamente, a programação pode ser efetuada diretamente através do Teach-Pendant (controle remoto do robô ED-7220C), no modo de aprendizado, sendo que a programação é enviada diretamente para a ED- MK4, não necessitando de um interfaceamento com o computador. A unidade controladora dispõe de dois modos de comando para efetuar a movimentação e programação do ED-7220C, sendo eles: o modo de movimentação livre que, quando selecionado, apresenta a palavra “PLAY” no display do Teach- Pendant; e o modo de movimentação por software, que apresenta no display a palavra “HOST”. Uma das maiores motivações do desenvolvimento deste trabalho foram as limitações de hardware (do Teach-Pendant) e software (RoboTalk) que impedem a implementação de projetos como a visão de máquina, o comando via web, controle com um joystick, geração de trajetórias senoidais, controle através de um software de simulação, entre outros.
  • 30. 30 2.2 ENGENHARIA REVERSA A engenharia reversa é uma atividade que trabalha com um produto existente (um software, uma peça mecânica, uma placa de computador, entre outros) tentando entender como este produto funciona, o que ele faz exatamente e como ele se comporta em todas as circunstâncias. É executada a engenharia reversa quando é necessário a trocar, modificação de uma peça (ou um software) por outro, com as mesmas características ou entender como esta funciona no caso de não haver documentação. Não há um registro inicial de utilização da engenharia reversa, mas sabe-se que quando ela surgiu, suas primeiras aplicações foram em equipamentos militares, para que se alcançasse a superioridade militar, e até mesmo como método de espionagem. Um exemplo do uso da engenharia reversa ocorreu em 1945, durante a segunda guerra mundial, três bombardeiros americanos modelo B-29 foram forçados a aterrissar em território russo. Os soviéticos os desmontaram e estudaram. Usaram a engenharia reversa para copiar o bombardeiro nos mínimos detalhes. O resultado foi o bombardeiro Tupolev Tu-4 demonstrado na Figura 9 que voou pela primeira vez em 19 de maio de 1947. A produção em série do bombardeiro começou neste mesmo ano.
  • 31. 31 Fonte [16] Figura 9: Bombardeiro Tupolev Tu-4 A engenharia reversa por si própria não envolve modificar o sistema analisado ou criar um novo sistema baseado no sistema analisado. A engenharia reversa é um processo de exame apenas e não um processo de mudança ou de replicação [5]. É importante destacar que a engenharia reversa pode ser aplicada à qualquer processo ou sistema sem caracterizar-se ilícita, entretanto, a divulgação de algumas das informações adquiridas por esta técnica podem estar sujeitas à proteções autorais e patentes, nestes casos a reprodução ou divulgação das informações obtidas podem ferir as leis que a protegem. Por haver o consentimento da empresa acerca das atividades e pesquisas desenvolvidas, e por não objetivar nada além de atividades de caráter estritamente disciplinar e educacional, a aplicação da engenharia reversa na comunicação do robô manipulador didático ED-7220C não se caracteriza como ilícito.
  • 32. 32 A engenharia reversa também pode ser aplicada para efetuar a detecção de avarias de sistemas ou ainda no aprendizado de um determinado protocolo de comunicação [8]. 2.3 VISÃO COMPUTACIONAL Visão se mostra como um dos sentidos mais importantes para a interação de um agente (humano ou robótico) com o mundo. Visão computacional, também chamada de entendimento de imagens ou visão de máquinas, descreve a determinação automática da estrutura e propriedades do ambiente tridimensional no qual o agente está inserido, ambiente este possivelmente dinâmico, a partir de uma única ou múltiplas imagens bidimensionais do ambiente. As imagens podem ser monocromáticas ou coloridas, capturadas por uma ou múltiplas câmaras que, por sua vez, podem ser estacionárias ou móveis [9]. A estrutura e propriedades a serem extraídas do ambiente podem ser geométricas (formas, dimensões, localizações de objetos, por exemplo) ou materiais (cores, texturas, por exemplo). Além disso, se o ambiente estiver mudando durante o processo de imageamento, deseja-se também inferir a natureza desta mudança, assim como fazer inferências acerca do futuro. Visão não é uma tarefa simples, uma vez que o processo de formação de imagens consiste num mapeamento muitos - para-um: uma grande variedade de superfícies, com diferentes materiais e condições de iluminação, pode produzir imagens idênticas [10]. De certa forma, pode-se pensar em visão computacional como a tentativa de “desfazer” parcialmente o processo de formação da imagem, em função disso é considerado um problema inverso.
  • 33. 33 Infelizmente, não existe uma inversão própria e correta. No entanto, algumas restrições podem ser impostas para resolver satisfatoriamente a ambigüidade inerente ao processo visual. Além disso, o agente não precisa saber “tudo” acerca do ambiente para poder atuar com sucesso. Dependendo da aplicação, somente alguns aspectos tornam-se necessários. Por exemplo, em tarefas de manipulação, as ações de segurar peças, encaixar, inserir que são realizadas, necessitando somente de informações de forma e localização das peças a serem manipuladas; em tarefas de navegação, ações como encontrar caminho livre, evitar obstáculos, calcular velocidade e orientação, que são necessárias, e assim por diante. Nenhuma destas tarefas requer a determinação da descrição completa do ambiente para ser realizada com sucesso. 2.3.1. Imagem Digital Um sinal que tenha um domínio contínuo e uma faixa de variação contínua é chamado de sinal analógico; já um sinal que tenha um domínio discreto e uma faixa de variação também discreta é chamado de sinal digital. Imagem Digital é uma matriz de inteiros, onde cada inteiro representa o brilho da imagem num tempo discreto e num ponto discreto do plano da imagem [9]. Um ponto desta matriz é denominado pixel. A transformação da imagem elétrica numa imagem digital envolve um processo de amostragem e um de quantização. A amostragem discretiza o domínio da função imagem, fornecendo a cada ponto discreto o valor da função naquele ponto. A quantização discretiza a faixa de variação da função, mapeando o valor da função em cada ponto a um valor dentre vários valores discretos. Tipicamente os
  • 34. 34 valores discretos assumidos pelos pontos numa imagem monocromática variam de 0 (preto) a 255 (branco). A Figura 10 mostra uma imagem e sua matriz correspondente. Fonte [1] Figura 10: Imagem digital e sua matriz correspondente 2.3.2. Processamento de Imagem Digital O processo de imageamento introduz diversos ruídos e deformações na informação contida nas imagens digitais. No entanto, esta informação não está completamente perdida devida à grande redundância espacial existente, isto é, pixels vizinhos numa imagem apresentam os mesmos (ou quase os mesmos) parâmetros físicos. Um grande conjunto de técnicas explora esta redundância para recuperar a informação contida na imagem. Estas técnicas executam transformações na imagem, procurando extrair parâmetros intrínsecos tais como descontinuidades de superfícies, distância, orientação de superfícies, entre outros. Um dos objetivos mais comuns no processamento de imagens consiste em eliminar ruídos e extrair as bordas (“edges”) contidas numa imagem. Bordas são curvas no plano de imagem através das quais existe uma “significante” mudança no brilho [11]. O interesse nas bordas de uma imagem consiste no fato de que elas correspondem a importantes contornos da cena.
  • 35. 35 Caso a imagem seja colorida a mesma terá três dimensões onde cada dimensão da matriz representará uma cor, dentre as cores primarias RGB ( vermelho, verde e azul ). 2.3.3. Limiarização (Threholding) A limiarização é uma das mais importantes técnicas de segmentação de imagem. É através dela que se consegue separar os objetos do fundo de uma determinada imagem. Em uma imagem monocromática, por exemplo, com dois conjuntos representando a conectividade entre os pixels, facilmente pode-se dizer que um grupo representa o objeto na imagem e outro grupo, representa o fundo. O dois grupos foram separados por um limiar T, fazendo com que o conjunto de conectividade assuma um novo valor, tornando a imagem monocromática em uma imagem binária. O limiar T pode ser facilmente entendido pela equação 1. (1) Onde: f ( x, y ) é a função que representa a intensidade luminosa na imagem, e g ( x, y ) , a nova função de luminosidade depois da separação do limiar T. 2.3.4 Método de Otsu O método de Otsu elege o limiar ótimo maximizando a variância entre classes
  • 36. 36 (between - class variance) mediante uma busca exaustiva. Há diferentes métodos para achar o limiar, a maioria deles não dá bons resultados quando se trabalha com imagens do mundo real devido a presença de ruído, histogramas planos ou uma iluminação inadequada [26]. Pelo contrário, o método de Otsu foi um dos melhores métodos de seleção do limiar para imagens do mundo real. No entanto, este método usa uma busca exaustiva para avaliar o critério para maximizar a variância entre classes. Á medida que o número de classes de uma imagem aumenta, o método de Otsu precisa de bem mais tempo para selecionar o limiar multi-nível adequado [2]. A importância do método de Otsu está na forma automática de encontrar o limiar, isto é, não precisa supervisão humana nem informação prévia da imagem antes de seu processamento. O método Otsu, como foi dito, se baseia na escolha do valor de corte que maximize a medida de variância entre duas partes do histograma separadas por um mínimo local, ou seja, encontrar T que minimize a função: (2) onde: - q1 (T ) é o número de pixels cuja intensidade é menor que T; - q 2 (T ) o número de pixels com intensidade superior a T; - δ 12 (T ) variância dos pixels cuja intensidade é menor que T; - δ 22 (T ) variância dos pixels cuja intensidade é maior que T;
  • 37. 37 2.3.4. Reconhecimento de Objetos Reconhecimento consiste em identificar e determinar a posição e orientação de cada objeto na cena em relação à câmera e, com as informações adquiridas na fase de calibração, determinar sua localização em relação a um sistema de coordenadas do ambiente (ou do robô), para tarefas de manipulação, por exemplo. Com determinadas técnicas de processamento de imagem regiões podem ser extraídas da imagem correspondem a objetos de interesse. Assim, propriedades como área da região, perímetro, compactividade, centróide, distâncias mínima e máxima, entre outras, são importantes na identificação e na determinação da posição e orientação dos objetos. A área A de uma região consiste na somatória dos pixels de um mesmo rótulo. Para comparar a área da região com a área do objeto imageado num determinado posicionamento, deve-se ter conhecimento da calibração da câmera, que dá a relação (unidade de medida da imagem)/(unidade de medida real), além de relacionar a posição da câmara com a posição do objeto na cena. O perímetro P pode ser calculado pela somatória dos pixels pertencentes à borda de interesse. A compactividade C de uma região é definida como sendo a relação: P2 C= (2) 4πA O centróide, que no caso corresponde ao centro de área, é usado para determinar a posição dos objetos e é dado por: XC = ∑∑ x y . y. f ( x, y ) ; (3) A YC = ∑ .∑ x y . y. f ( x, y ) (4) A
  • 38. 38 sendo A a área, e as somatórias aplicadas à região de interesse. A Figura 11 ilustra este procedimento numa imagem 10x10, com quina superior esquerda sendo (0,0). A região de interesse encontra-se de (1,2) a (5,8). Fonte [1] Figura 11: Cálculo do centro de área de uma determinada região Após a extração dos atributos da imagem, o próximo passo consiste em corresponder os atributos e informações extraídos da imagem àqueles previamente armazenados como modelos, numa fase de treinamento do sistema de visão. A correspondência entre dados extraídos e modelos pode se dar simplesmente através do uso de um classificador estatístico, permitindo certas variações estatísticas no processo de comparação. Neste caso, o conjunto de atributos (do modelo e o extraído da imagem) deve conter elementos em número e importância significativa para identificar e localizar corretamente cada objeto, evitando falsos positivos (classificando um objeto como sendo de uma classe incorreta - diz que é um parafuso quando na verdade trata-se de uma caneta, por exemplo) e falsos negativos (negando a classe correta na classificação do objeto - diz que não é um parafuso, quando na verdade trata -se de um parafuso). Pode-se também realizar um reconhecedor sintático de configuração, onde relações estruturais são utilizadas, tais como relações entre atributos e/ou segmentos de bordas.
  • 39. 39 A fase de treinamento dos sistemas de visão baseados em modelos normalmente se dá através de treinamento supervisionado, onde objetos conhecidos são apresentados ao sistema, que extrai automaticamente os atributos e relações e armazena-os em modelos de cada objeto. Estes modelos também podem ser fornecidos pelo usuário. No entanto, o melhor seria que o sistema os extraísse automaticamente, para que se tenha uma garantia maior de que os mesmos procedimentos serão executados para determinar dados dos modelos e da imagem da cena, durante a fase de execução. O treinamento do sistema de visão deve ser realizado sob condições mais próximo possível das condições de operação. 2.3.5. Luz Estruturada Uma técnica para a obtenção de imagens em 3 dimensões é a reconstrução com luz estruturada. Um sistema de reconstrução deste é composto por dois conjuntos de ferramentas principais: um coletor de imagens e um conjunto de programas computacionais. O coletor de imagens é construído baseado em uma câmara digital de pequeno formato e um projetor de padrões de luz estruturada. Estes padrões são projetados sobre a superfície do objeto a ser reconstruído e capturado pela câmara digital que é solidária ao projetor. O cálculo das coordenadas 3D de pontos da superfície do objeto depende de dois conjuntos de elementos que devem ser conhecidos: as coordenadas de imagem dos alvos projetados e os vetores diretores destes padrões, ambos no referencial da imagem. Na modelagem tridimensional por luz estruturada padrões de luz com características conhecidas são projetados sobre a superfície do objeto e um instrumento sensor captura a imagem dos padrões que são distorcidos pela
  • 40. 40 superfície de projeção. Pela medição desta distorção e pelo conhecimento das características geométricas (e/ou radiométrica) dos padrões que são projetados se faz a determinação das coordenadas de pontos que compõem a superfície do objeto. Para isto, as relações geométricas existentes entre o sensor e os feixes de raios luminosos do padrão projetado devem ser determinadas. Diferentes padrões de luz podem ser usados (linhas, grades, círculos, senoidais). O projetor de padrões simula uma segunda câmera, e torna a reconstrução 3D mais rápida que no processo fotogramétrico convencional. Um programa computacional específico processa estes dados e extrai as coordenadas 3D dos padrões projetados.[27]
  • 41. 41 2.4. KINECT® Em novembro de 2010 a empresa Microsoft® lançou um acessório para o videogame Xbox 360® acessório esse, batizado de Kinect® onde o objetivo do produto é fazer com que o jogador seja capaz de controlar os jogos apenas como o próprio corpo. O Kinect® em seu lançamento chegou a marca de 8 milhões de peças vendidas, entretanto até março de 2011, 10 milhões de exemplares já foram vendidos no valor de USD 150,00. A arquitetura básica do Kinect® é formada por um projetor de luz infravermelha (invisível ao olho humano), uma câmera infravermelha, uma câmera RGB comum, um conjunto de microfones e um motor, conforme indica a Figura 12. Sendo a sua interface de dados via USB. Um dos pontos que se destaca no Kinect® é que esta interface não está criptografada [14], fato que facilitou desde o início sua utilização fora do XBOX®.
  • 42. 42 Fonte [17] Figura 12: Arquitetura básica do Kinect® O Kinect® fornece três informações mediante os seus sensores, são eles: Fonte [18] Figura 13: Resumo da arquitetura básica - Image Stream (imagens): cada pixel representando uma cor, resolução de 640x480 pixels em 30 frames por segundo (fps) ou 1280x1024 em um máximo de 15 fps. É possível obter tanto a imagem da câmera RGB quanto a da câmera infravermelha; - Depth Stream (informação de profundidade): cada pixel indicando a distância do objeto em relação ao aparelho. O aparelho detecta cerca de 2000
  • 43. 43 níveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5 metros à frente do aparelho, aparelho conforme é mostrado na Figur 14. Figura Fonte [18] Figura 14: Campo de visão alcançado pelo Kinect® Além da informação de profundidade também é possível retornar com exatidão se o m pixel faz parte do corpo de um ser humano. O Kinect consegue diferenciar até 6 Kinect® corpos humanos em sua visada. - Audio Stream (fluxo de áudio): com um conjunto de 4 microfones e a ): anulação de ruído e eco, o Kinect® permite a gravação de áudio e o reconhecimento da fala em inglês. Para o mapeamento 3D o Kinect® utiliza a tecnologia de luz estruturada onde uma luz infravermelha é projetada na superfície dos objetos, sendo essa luz essa espalhada por pela superfície com rugosidades da ordem do comprimento de onda incidente onde ocorre a formação de uma estrutura granular no espaço livre à qual é dado o nome de speckle O formato com essa luz é projeta pode ser visualizada pela speckle. Figura 1 ura 15.
  • 44. 44 Fonte [do Autor] Figura 15: Holograma projetado pelo Kinect® para leitura de profundidade. Na Figura 16 é mostrado com se dá esse método de identificação. igura Fonte [do Autor] Figura 16 Método de identificação 3D por luz estruturada. 16:
  • 45. 45 2.5 MATLAB® O Matlab® (MATrix LABoratory) é um poderoso software de computação numérica, de análise e de visualização de dados, com um propósito bem mais amplo que o original “laboratório de matrizes”. O Matlab® é um sistema interativo e uma linguagem de programação para computação técnica e científica em geral [19]. Devido a esses fatores o Matlab® da empresa Mathworks permite a resolução de vários problemas numéricos, utilizando uma linguagem de alto nível para o desenvolvimento de algoritmos. Possui diversas funções de tratamento numérico de alto desempenho, capazes de resolver problemas computacionais de forma mais eficiente que as tradicionais linguagens de programação, para aumentar a vantagem, as soluções do Matlab® são expressas de uma forma muito parecida de como são escritas matematicamente, disponibilizando várias ferramentas que facilitam e agilizam todo o processo de programação, obtenção de dados e manipulação dos mesmos, estando totalmente integrado com suas Toolboxes que fornecem uma enorme variedade de soluções para muitos problemas da engenharia. Além do ambiente interativo, outra facilidade do Matlab® é a possibilidade de execução de arquivos texto contendo uma seqüência de instruções definidas pelo usuário. Esses arquivos texto, que têm extensão '.m', podem ser criados e editados dentro ou fora do seu ambiente [20].
  • 46. 46 2.6 ROBOTICS TOOLBOX A Robotics Toolbox é uma ferramenta computacional de modelagem e controle de robôs industriais desenvolvida por Peter Corke e disponível sob licença LGPL. A Robotics Toolbox proporciona muitas funções úteis para o estudo e simulação com braço robótico, por exemplo, cinemática, dinâmica e geração de trajetória. O Toolbox é baseado em um método generalista para representar a cinemática e a dinâmica dos elos dos manipuladores. Estes parâmetros são encapsulados em objetos no MATLAB®, onde o objeto robô pode ser criado pelo usuário para representar qualquer elo do manipulador, sendo também fornecida uma série de exemplos para estudo de robôs, como o Puma 560 e o braço de Stanford, entre outros. O Toolbox também fornece funções para a manipulação e conversão entre tipos de dados, tais como vetores, transformações homogêneas e unidades geométricas que são necessários para representação tridimensional tanto para a posição quanto orientação [21]. 2.7 OPENNI OpenNI (Interação Natural Open) é uma multi-linguagem, framework multi- plataforma que define APIs (Interface de Programação de Aplicativos) para escrever aplicações utilizando Interação Natural. O principal objetivo do OpenNI é formar uma API padrão que permite a integração de diversos sensores, entre eles os de audio e de visão. Com esse
  • 47. 47 framework é possivel efetuar a integração com o Matlab® tornando essa junção uma poderosa ferramenta para controle de sistemas roboticos. oderosa Na Figura 17 é demostrado a arquitetura básica da API, onde a informação de “APLICAÇÃO” pode ser substituido por MATLAB®. Fonte [ [22] Figura 17: Arquitetura da API OpenNI :
  • 48. 48 3 METODOLOGIA 3.1 ENGENHARIA REVERSA DA COMUNICAÇÃO Devido as características da comunicação serial, fez-se necessário o conhecimento do protocolo utilizado originalmente na comunicação entre o software RoboTalk e a unidade controladora do robô. Segundo [23] e [24], os parâmetros dessa comunicação equivalem aos valores listados na Tabela 4. Tabela 4: Parâmetros de configuração da comunicação serial Baudrate 9600 Databits 7 Stopbit 2 Parity Odd RTS On Fonte: [23] e [24]. Entretanto, houve discrepância em alguns parâmetros listados pelas bibliografias consultadas. Desta forma, a fim de comprovar o correto funcionamento da comunicação serial envolvida no controle do robô, foram utilizadas técnicas de engenharia reversa. A compreensão, por parte da unidade controladora ED-MK4®, dos comandos que seriam enviados através do Matlab® posteriormente, depende diretamente da configuração da comunicação estar de acordo com a configuração do protocolo original, uma vez que, se um parâmetro como o baudrate fosse erroneamente configurado, acabaria por alterar completamente as características da informação, invalidando o comando enviado. Neste trabalho, esta técnica foi aplicada objetivando analisar a formatação e a seqüência de comandos enviados à ED-MK4® durante o comando do robô e para monitorar o tráfego da comunicação serial entre a unidade controladora e o computador conectado foi utilizado o software Free Serial Port Monitor (FSPM) a Figura 18 demonstra a forma completa de como foi efetuado a identificação dos comandos.
  • 49. 49 Fonte: [do Autor] Figura 18: Arquitetura montada para identificação dos comandos de comunicação do controlador ED- MK4® com o RoboTalk® .
  • 50. 50 Conforme identificação dos comandos uma tabela (Tabela 5) de códigos pode ser gerada para utilização no script de controle via Matlab®. Tabela 5: Comandos do controlador ED-MK4® Comando Descrição Retorno Parâmetro Retorna qual motor está Valor decimal AS se movendo. correspondente. Habilita ou desabilita a 0 desabilita CG garra 1 habilita Coloca o robô em modo TH HOST Verifica status da garra 1 se fechada GS 0 se aberta Verifica posição atual do Retorna a posição em M=A,B,C,D,E,F PA,m motor pulsos do encoder Posiciona o robô na HH posição inicial Movimenta todos os MA motores de forma interpolada Move os motores para MC posição de destino Move o motor m para a M=A,B,C,D,E,F MS,m posição armazenada no registrador. Seta a velocidade do M = A,B,C,D,E,F – VC,m,d motor 100 <= d <= 100 GO Abre a garra GC Fecha a garra Fonte [do Autor] Após a identificação dos comandos de controle, o próximo passo foi identificar a configuração correta da serial para controlar o robô via MATLAB. Configuração essa que é mostrada na Tabela 6.
  • 51. 51 Tabela 6: Parâmetros de configuração da comunicação serial no MATLAB Baudrate 9600 Databits 7 Stopbit 2 Parity Odd Timeout 1000 Requesttosend On Terminator CR/LF FlowControl Hardware DataTerminalReady Off Fonte: do Autor. A partir da obtenção dessas informações o script de controle pode ser criado. Fonte [do Autor] Figura 19: Código de comunicação serial do MATLAB com o ED-MK4 Conforme a Figura 19 observa-se a configuração da serial via script Matlab, onde caso a conexão não seja bem sucedida o sistema informa o erro e fecha todas as portas seriais conectada no momento. Conforme o comentário do código, as flags “Terminator” e “FlowControl” tiveram que ser configuradas para possibilitar a leitura não só enviar comandos para execução, como também receber informação do status do robô. Foi necessário também efetuar a concatenação do código “0D” (onde na tabela ASCII significa “r” Carrier return ) no final de cada comando , pois esse
  • 52. 52 comando informa a controladora que a instrução a ser executada está terminada. Na Figura 20 pode ser visto esse processo. Fonte [do Autor] Figura 20: Código de inserção do comando "0D" no final de cada instrução de execução. Outro ponto importante no script de comunicação é o sistema de leitura, onde o script aguarda alguma resposta da controladora. Nesse ponto foi necessário efetuar a leitura como o comando “fread”, pois era necessário definir a quantidade de bytes a serem lidos para que o script não ficasse em um loop infinito lendo sujeira da serial. Mesmo com essa técnica foi necessário utilizar o comando “flushinput” para a cada leitura efetuar a limpeza do canal serial. Na figura 21 é demonstrado o código de leitura para dois bytes. Fonte [do Autor] Figura 21: Código de recebimento de dados serial via Matlab Durante o processo de desenvolvimento do algoritmo percebeu-se a necessidade de um intervalo de tempo entre os comandos, intervalo esse encontrado via testes empíricos, onde o valor de 300 milissegundos foi suficiente para deixar o código robusto para envio de comandos em serie.
  • 53. 53 3.2 ROBOTICS TOOLBOX Após definir a comunicação como o robô, o passo subseqüente foi a utilização do Toolbox Robotics para modelagem e geração de trajetória do robô. Primeiramente foi definido o modelado cinemático do robô ED-7220C via parâmetros de modelagem de Denavit-Hanterberg. Na Figura 22 é demonstrada a vista do robô em forma de vetores de orientação, técnica utilizada para facilitar a identificação do modelo de D-H. Fonte [do Autor] Figura 22: Representação vetorial das juntas do robô ED-7220C
  • 54. 54 Após aplicar o algoritmo de D-H os parâmetros do modelo cinemático do robô ficaram da seguinte forma: Tabela 7: Parâmetros de Denavit-Hartenberg αi ai θi (Ângulo d i (Deslocamento Links (elos) Nome (Ângulo de (comprimento do de rotação) da junta em mm) torção) elo em mm) 1 -90º 0.02 0 0.37 Base 2 0 0.22 0 0 Ombro 3 0 0.22 0 0 Cotovelo 4 -90º 0 0 0 Punho 5 0 0 0 0.080 Rotação Fonte [do Autor] Adicionando esses valores na Toolbox é possível verificar a forma como o robô ficou configurado, na Figura 23 segue os comando executados para geração do modelo no Robotics Toolbox. Fonte [do Autor] Figura 23: Configuração dos parâmetros de D-H na Robotics Toolbox Onde:
  • 55. 55 A utilização do comando “SerialLink” serve para criação do objeto “robo”, o comando “transl” executa a matriz homogenia da cinemática direta, o comando “robo.ikine” executa a cinemática inversa do robô, para as seguintes orientações da cinemática direta e o comando “robo.plot” gera o gráfico do robô, conforme a Figura 24. Fonte [do Autor] Figura 24: Representação gráfica do robô ED-7220C via Robotics Toolbox 3.3 KINECT® Após a definição cinemática do robô, partiu-se para o sistema de reconhecimento de imagem com o Kinect®.
  • 56. 56 Inicialmente foi definida a área de trabalho para posicionamento do Kinect®, na Figura 25 é demonstrada a área de trabalho do robô defina no laboratório de robótica da faculdade. Fonte [do Autor] Figura 25: Área de trabalho definida no laboratório de robótica para execução de testes
  • 57. 57 Na Figura 26 demonstra todo o cenário, especialmente com a posição do Kinect®. Fonte [do Autor] Figura 26: Cenário de testes completo Antes de iniciar o trabalho com o Kinect®, foi necessário efetuar a instalação dos drivers da OpenNI, como também a instalação e configuração dos scripts do Matlab® criado por Tim Zaman. Para efetuar essas configurações foi utilizado o tutorial do orientador desse trabalho, encontrado em [25]. O código utilizado para efetuar a captura da imagem RGB e da matriz de profundidade, pode ser visto na Figura 27. Fonte [do Autor] Figura 27: Código de captura da imagem RGB e matriz de profundidade.
  • 58. 58 Onde: - mxNiCreateContext: é o comando que instancia as configurações existente no arquivo de configuração ”SamplesConfig.xml”; - option.adjust_view_point: opção que ajusta o ponto de vista do Kinect®; - mxNiImage: comando responsável de capturar a imagem RGB e a matriz de profundidade; - mxNiDeleteContext: comando responsável de desalocar a memória quer foi usada na criação dos parâmetros de configuração do Kinect®, caso esse comando não seja usado o sistema vai rodar somente até quando toda a memória física e virtual do computador seja alocada, nos testes isso ocorre em 3 tentativa em um computador com 4GB de memória física; Conforme informação do manual do Kinect ® a distancia recomenda entre o Kinect® e o jogador é de no mínimo 1.8m, no caso deste trabalho a distancia do Kinect® até a área de trabalho que o robô irá atuar é de 2,38m conforme a Figura 28. Fonte [do Autor] Figura 28: Distancia do Kinect® até área de trabalho do robô
  • 59. 59 3.4 PROCESSAMENTO DA IMAGEM Algumas técnicas foram executadas para uma melhor identificação dos objetos. Como a câmera RGB do Kinect® gera fotos com 640x480 pixel de resolução, a imagem inicial ficou com muita informação para poder ser processada, pensando nisso foi efetuado um corte na figura depois da captação da imagem RGB. Esse corte se deu na parte superior da área de trabalho do robô, com largura de mesmo tamanho, dessa forma a imagem para ser processada foi reduzida drasticamente, facilitando o processamento e melhorando o tempo de resposta do script, na figura 29 é mostrada a visão frontal do cenário de teste, com o local cortado pelo script representado pelas linhas pontilhadas. Fonte [do Autor] Figura 29: Pré-processamento da imagem vista pelo Kinect®
  • 60. 60 O comando utilizado para efetuar esse corte foi o “imcrop” do Matlab® na figura 30 é mostrado o código referente ao corte da imagem. Fonte [do Autor] Figura 30: Comando para corte da figura RGB e de profundidade via Matlab® Onde: - 303: é a coordenada do pixel no eixo “X”; - 188: é a coordenada do pixel no eixo “Y”; - 31 e 18: é o tamanho da figura em pixel; Esses valores podem ser modificados no momento da calibração da posição do Kinect®, permitindo assim uma flexibilidade no posicionamento do Kinect® em relação à área de trabalho. Como pode ser visto no código, há dois sistemas de corte, o da figura RGB e o da matriz de valores de profundidade, isso foi feito, pois ao encontrar o centróide da imagem RGB, é feito a correlação da posição do centróide na matriz de profundidade. Para facilitar o calculo do sistema de coordenadas, foi efetuado um espelhamento da imagem, fazendo com que a posição das peças a serem identificadas fossem igual à posição real, Na figura 31 é mostrado o código usado para efetuar esse espelhamento, lembrando sempre que, tudo que foi feito na figura RGB, teve que ser feito na matriz de profundidade, para que a correlação dimensional seja preservada.
  • 61. 61 Fonte [do Autor] Figura 31: Código que efetua o espelhamento da imagem RGB e o da matriz de profundidade. A partir desse ponto iniciou-se o processo de reconhecimento dos objetos, a identificação foi feita pela cor, onde na área de trabalho duas peças de cor azul e vermelha, foram dispostas em determinada posição dentro do limite da área de trabalho. Na figura 32 é representado o código de reconhecimento do objeto vermelho. Fonte [do Autor] Figura 32: Código de identificação do objeto vermelho. Onde: - imsubtract: comando responsável de subtrair uma imagem de outra, que neste caso é a subtração de qualquer objeto de cor vermelha do resto da figura. Com esse comando poderia ser subtraída qualquer imagem com alguma cor especifica, bastando apenas definir o valor da cor em RGB. - rgb2gray: comando responsável por transformar a imagem RGB em escala de cinza.
  • 62. 62 - graythresh: comando responsável por definir o limite global da imagem utilizando o método de Otsu. - im2bw: Converte uma imagem para o formato binário, com base em um determinado limite, neste caso o limite se dá pelo resultado do comando “graythrest” multiplicado por fator de 0.9. - bwareaopen: Remover todos os objetos da imagem com menos de x pixels, que neste caso deu-se por objetos de 50 pixels. A partir desse tratamento o resultado é uma imagem binária somente com o objeto escolhido, neste caso o objeto vermelho, sendo então efetuada a identificação do centróide do objeto, na Figura 33 segue o código de identificação do centróide. Fonte [do Autor] Figura 33: Identificação do centróide de um objeto. Onde: - imfill: Preenche regiões com buracos e outras falhas; - regionprops: comando que extrai as propriedades morfológicas da região a ser identificada;
  • 63. 63 3.5 REFERENCIA DO PONTO DE VISÃO Depois de identificado o centróide da peça a ser capturada, partiu se para partiu-se referenciar o objeto em função da referencia da base do robô. Na Figura 3 segue a referencia 34 vista frontal com as medidas da área de trabalho, essa informação é necessária para necessári conversão o convers do valor da image em pixel, para medidas métricas e posteriormente o imagem calculo dos pulsos para o motor de cada junta. Fonte [do Autor] Figura 34: Medidas da área de trabalho e distância da base do robô até área de trabalho. :
  • 64. 64 Na Fi Figura 35 segue a vista superior onde se mostra o comprimento da área de trabalho. trabalho Fonte [do Autor] Figura 35: Comprimento da área de trabalho Já a Figura 36 mostra a distancia do Kinect® até o inicio da área de trabalho, essa 36 informação é muito importante, pois é com esse valor descontado dos valores formação obtidos via matriz de profundidade que será possível identificar a distancia do objeto até a base do robô, tanto para o eixo “X” como o “Y”. robô, Fonte [do Autor] Figura 36: Distancia entre o Kinect® e a área de trabalho em visão lateral.
  • 65. 65 Após aquisição desses dados iniciou-se os cálculos de referencia dos objetos nas coordenadas “X”, “Y” e “Z”. Para coordenada X, ao encontrar o centróide da imagem RGB a referencia dele foi relacionada com a matriz de profundidade, para que o valor de profundidade fosse encontrado, evitando erro de pontos cegos na leitura do Kinect®, o eixo “Y” da imagem foi definido com um, pois no corte da imagem o topo da mesma, sempre estará preenchido pelo objeto, conforme a Figura 31. Como o valor de profundidade lido pelo Kinect® é dado em milímetros e a modelagem do robô é feita em metros, o calculo para identificar a distancia da peça referente a base do robô foi: 2380 − Dis tan ciaMatriz Pr ofundidade (5) 1000 O resultado da equação 4 representa a coordenada no eixo “X”. Para identificar a medida do eixo “Y” algumas conversões foram necessárias, primeiro foi convertido o valor do eixo “X” da imagem em RGB de pixel para centímetros, onde: - Para um total de 33 pixels o valor equivalente é 15cm; - Como a distancia da base do robô até o inicio da área de trabalho é de 26 cm o resultado da conversão dos pixels é somado a essa medida, por exemplo: Se o resultado do eixo “X” for igual a 29 pixel a distancia em centímetro é de 13.1818cm, somando isso a 26 cm, tem-se a distancia em centímetros do objeto em relação a base do robô, mas como é necessário a conversão para metros, divide-se esse valor por 100. Porém como a variação da peça não ocorre somente em uma direção reta, é necessário aplicar Pitágoras no valor encontrado para que o resultado seja real. Abaixo segue a formula de Pitágoras.
  • 66. 66 a2 = b2+ c2 (6) Em relação ao eixo “Z”, como os objetos são de tamanhos fixos conhecido, não foi necessário efetuar nenhum ajuste, pois a partir do posicionamento da garra definiu-se um deslocamento fixo nessa coordenada. 3.6 CONTROLE DO ROBÔ ED-7220C® Depois de calculado as distancias e efetuado a cinemática inversa para descobrir a posição final que a garra deve ficar, foi necessário gerar uma relação entre o resultado da cinemática inversa e o movimento dos eixos determinados, entretanto o resultado da cinemática inversa é dado em deslocamento angular. Como o eixo “Z” era fixo, os únicos elos que precisaram ser movimentados foi o da base para a movimentação no eixo “X” e o do ombro, determinando o deslocamento “Y”. Para converter os valores referentes ao elo da base usou-se a seguinte equação para o eixo da base: 7100 − qi1 (7) 2.7052 Onde: - 7100: é a total de pulsos necessário para o robô percorrer 150º, angulação máxima permitida mecanicamente. Como a área de trabalho está apenas em um quadrante, não foi necessário fazer o range de todo deslocamento angular permitido, que nesse caso seria 300º; - qi1: resultado da cinemática inversa para o eixo da base; - 2.7052: Com o valor passado pela cinemática inversa está em formato de radianos, esse valor equivale aos 150° ;
  • 67. 67 Para o eixo do ombro, utilizou-se a seguinte equação: 3174 × qi2 (8) 1.4835 Onde: - 3174: total de pulsos possíveis do eixo do ombro; - qi2: resultado da cinemática inversa para o eixo do ombro; - 1.4835: Com o valor passado pela cinemática inversa está em formato de radianos, esse valor equivale aos 85° ; Após essas conversões foi utilizado o script de envio de comando para o robô, onde na Figura 37 demonstra o fragmento do código para movimentação do eixo da base, que nesse caso é o motor representado pela letra F. Fonte [do Autor] Figura 37: Código de controle do eixo da base
  • 68. 68 Para acionar a busca do objeto, foi feito uma tela gráfica simples para escolha de qual objeto pegar, segue a tela na Figura 38. Fonte [do Autor] Figura 38: Tela de controle de busca dos objetos.
  • 69. 69 4 RESULTADOS E DISCUSSÕES 4.1 COMUNICAÇÃO SERIAL Com o código de envio de comandos para o ED-MK4® via serial pronto, os testes feitos para determinar a robustez do script deram-se via Command Window do Matlab®, onde inicialmente é necessário efetuar a conexão via serial e colocar o robô em modo HOST, na Figura 39 segue o comando que efetua essas duas ações. Fonte [do Autor] Figura 39: Script de comando para conexão via serial e transpor o sistema de controle do ED-MK4® para modo HOST. A taxa de sucesso na movimentação dos motores foi de 100%, em relação ao tempo de resposta foi necessário apenas adicionar um intervalo de 300ms entre os comandos, pois isso era uma das restrições do processador do ED-MK4®.
  • 70. 70 4.2 ROBOTICS TOOLBOX Os testes feitos com a Toolbox Robotic, ocorreram na relação de verificar se a modelagem cinemática estava correta e no erro gerado na questão da cinemática inversa. Para validação da modelagem foi gerado um robô virtual conforme a Figura 40 via comando da Toolbox Robotics drivebot. Fonte [do Autor] Figura 40: Robô virtual criado via Robotic Toolbox atravês do drivebot. Posteriormente foi determinada uma posição para garra a partir dos eixos “X”, “Y” e “Z”, no robô ED-7220C®, inserindo esses dados na cinemática inversa via comando ikine, determinaram-se os ângulos de rotação dos motores, que depois foi inserido no robô virtual, para identificação do posicionamento. Em alguns resultados desses testes o sistema mostrou até duas soluções onde a primeira deu-se com a garra posicionada de cima para baixo e a outra com a garra em sentido de
  • 71. 71 acoplamento lateral. Para passagens desses valores para o robô real, não houve problema, porque como o eixo “Z” foi colocado de forma fixa, a garra sempre efetuou o posicionamento de cima para baixo, conforme mostrado na Figura 41. Fonte [do Autor] Figura 41: Robô ED-7220C® efetuado a pega do objeto. 4.3 RECONHECIMENTO DO OBJETO Como foi descrito anteriormente o sistema de reconhecimento iniciou-se com muitos problemas, onde a priori a preparação do ambiente causou muito transtorno, pois até então o processamento da imagem estava sendo feito com a imagem total
  • 72. 72 obtida pela câmera RGB que neste caso era uma imagem de 640x480 conforme a Figura 42. Fonte [do Autor] Figura 42: Imagem gerada pela câmera RGB do Kinect®. Para resolver esse problema foi utilizada a técnica de corte descrita na metodologia desse trabalho, a partir daí, foi gerado um sistema de teste para verificar a precisão e repetibilidade do robô em conjunto com o sistema de visão. Por precisão, entende-se a capacidade do robô de ir a uma posição desejada, com respeito a um sistema de referencia fixo (normalmente a base do robô, como é o caso desse trabalho), com um erro determinado (por exemplo ± 1mm). Trata-se de precisão em posicionamento absoluto. Por repetibilidade, entende-se a capacidade do robô de, uma vez conhecida e alcançada uma posição, e partindo-se da mesma condição inicial, voltar a ir ("repetir") novamente a tal posição com um erro
  • 73. 73 determinado. Abaixo segue os testes conforme posições do objeto na área de trabalho. A Figura 4 mostra uma visão superior da área de trabalho com o objeto 43 objeto vermelho a ser pego, nesse caso o teste foi feito na parte inferior da área de trabalho. Fonte [do Autor] Figura 43: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização inferior. Foram feitos cinco tentativas de pega do objeto em cada posição, a m posição, metodologia utilizada para precisão, foi a de verificar quantas vezes a pega do objeto ocorreu no mesmo ponto e a de repetibilidade se ocorreu a pega do objeto, objeto, na Tabela 8 pode ser visto a porcentagem de precisão para cada posição do objeto porcentagem referente à Figura 4 43. Tabela 8: Teste de precisão e repetibilidade referente ao posicionamento da Figura 44 : Figura Precisão Repetibilidade 43 (a) 80% 100% 43 (b) 60% 80% 43 (c) 80% 100% Fonte [do Autor] Na Figura 4 segue o teste referente à posição central da área de trabalho. 44
  • 74. 74 Fonte [do Autor] Figura 44: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização localização central. Tabela 9: Teste de precisão e repetibilidade referente ao posicionamento da Figura 45 Figura Precisão Repetibilidade 44 (a) 80% 100% 44 (b) 40% 60% 44 (c) 80% 80% Fonte [do Autor] Na Figura 4 segue o teste referente à posição superior da área de trabalho. 45 Fonte [do Auto Autor] Figura 45: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização superior.
  • 75. 75 Tabela 10: Teste de precisão e repetibilidade referente ao posicionamento da Figura 46 Figura Precisão Repetibilidade 45 (a) 80% 100% 45 (b) 60% 80% 45 (c) 80% 100% Fonte [do Autor] A partir destes testes foi possível perceber uma imprecisão na busca dos objetos na parte central da área de trabalho, para efetuar uma melhora na precisão foi necessário adicionar alguns fatores de correção, porém isso criou um problema de ajustes global onde em alguns pontos a pega do objeto ocorreu de forma perfeita e de outras não. Entretanto mesmo com alguns erros na pega do objeto em alguns pontos em relação ao eixo “Y”, o posicionamento do eixo “X” teve uma precisão de quase 100%, informação validada a partir de testes somente de posicionamento do eixo da base, que é determinado pelo eixo “X”.
  • 76. 76 5 CONCLUSÃO A partir de todo esse trabalho, é possível identificar o quanto é importante o uso de visão computacional para o controle robótico, tanto na facilidade de implementação, quanto ao custo final do projeto. Entretanto muitos aspectos no âmbito da robótica devem ser trabalhados na vida acadêmica para os cursos correlatos, pois a utilização de robôs em aulas pratica com ferramentas que possibilitem uma versatilidade para criação de métodos de controle, se faz muito necessário, principalmente para profissionais que pretendem seguir esse ramo de atividade. Outro ponto muito importante que se pode concluir a partir desse trabalho é a necessidade de capacitação de profissionais multidisciplinares, onde no âmbito robótico requer um conhecimento vasto tanto na área de controle, quanto na área de programação de sistema computacionais e/ou microprocessados, eletrônica, redes de comunicação, mecânica, ótica e conhecimentos básicos como geometria e calculo. Em linhas gerais esse trabalho, além de agregar bastante conhecimento ao seu desenvolvedor, deixa como legado uma trilha para utilização do robô ED- 7220C® via Matlab® com scripts prontos para utilização em diversas matérias correlatas ao trabalho com sistemas robóticos. Sendo também um guia inicial para quem pretende utilizar o Kinect® como uma ferramenta de reconhecimento de imagens 3D. Em relação aos objetivos específicos do trabalho, conclui-se que todos foram alcançados de forma plena, sendo também esse trabalho, um ponto inicial para diversos outros trabalhos no âmbito robótico.