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

8,202 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,202
On SlideShare
0
From Embeds
0
Number of Embeds
4,569
Actions
Shares
0
Downloads
190
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. 1 FACULDADE ASSIS GURGACZ HAMILTON JOSE DA SILVA SENACONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIONAL UTILIZANDO O KINECT® CASCAVEL 2011
  2. 2. 2 FACULDADE ASSIS GURGACZ HAMILTON JOSE DA SILVA SENACONTROLE 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. 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, daFaculdade Assis Gurgacz, como requisito parcial para obtenção do título deBacharel em Engenharia de Controle e Automação, sob orientação do ProfessorEspecialista 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. 4DEDICATÓ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. 5 AGRADECIMENTOSAgradeço em primeiro lugar a Deus que iluminou o meu caminho durante estacaminhada. Agradeço também a toda minha família em especial a minha mãe, meusirmã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 MauricioCelestino Sena e João Carlos de Souza que acreditaram em mim e me deram aoportunidade de estar hoje realizando um sonho.Não posso deixar também de agradecer a todos os professores e em especial aomeu orientador Arthur Schuler da Igreja de ter aceitado o convite para essaempreitada e ao coordenador do curso Vânio da Maia que sempre teve umrelacionamento diferenciado com nossa turma.Não posso deixar de citar também os companheiros de turma e em especial osamigos Robson Molgaro, Augusto Peruffo, Darlan Dariva e o filhão Andre Fazionique 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ãodeixaram de orar por mim e minha família em especial ao amigo e pastor Sergio. Enã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 opróprio filho delas.
  6. 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. 7 RESUMOA robótica, segundo estudos realizados no Japão e EUA, deve ser uma das 10linhas de pesquisa com mais trabalhos, a nível mundial, nas próximas décadas. Oavanço tecnológico tem permitido a realização de cálculos computacionaisnecessários em tempo real, e este fato tem possibilitado que novas descobertas eaplicações possam ser feitas em sistemas de robótica, tornando essa área umafonte quase que inesgotável de pesquisa. Nesse contexto surge a necessidade deambientes de testes e simulação onde as ferramentas propiciem potencializar oconhecimento e a difusão da pesquisa no âmbito da robótica, é nesse âmbito que oatual trabalho se dedica. Integrando os conhecimentos de robótica com visãocomputacional utilizando o Kinect®, considerado por muitos um dos acessórios maisrevolucionário da historia dos videogames.Palavras chaves: robótica, Kinect®, visão computacional.
  8. 8. 8 ABSTRACTRobotics, according to studies conducted in Japan and the USA, must be one of the10 research lines with more published papers worldwide in the coming decades.Technological advances have allowed the execution of computations required in realtime, and this fact has enabled new discoveries and applications can be made inrobotic systems, making this area an almost inexhaustible source of research. In thiscontext arises the need for testing and simulation environments where toolsconducive to knowledge leverage and dissemination of research in the field ofrobotics, it is in this context that the present study is dedicated. Integrating theknowledge in robotics with computer vision using the Kinect®, considered by manyone of the most revolutionary accessories in the history of video games.Keywords: robotics, Kinect ®, computer vision.
  9. 9. 9LISTA DE ILUSTRAÇÕESFigura 1: Célula de trabalho robotizada .................................................................... 16Figura 2: Robô Articulado ou Antropomórfico com seu respectivo volume de trabalho. .................................................................................................................................. 18Figura 3: Relação dos problemas da cinemática direta e inversa. ............................ 20Figura 4: Braço robô ED-7220C ................................................................................ 25Figura 5: Os 5 graus de liberdade do Ed-7220C. ...................................................... 25Figura 6: Vista superior do volume de trabalho do ED-7220C. ................................. 26Figura 7: Vista lateral do volume de trabalho do ED-7220C. .................................... 26Figura 9: Unidade controladora ED-MK4, da empresa ED-Laboratory. .................... 28Figura 10: Bombardeiro Tupolev Tu-4 ....................................................................... 31Figura 11: Imagem digital e sua matriz correspondente ............................................ 34Figura 12: Cálculo do centro de área de uma determinada região............................ 38Figura 13: Arquitetura básica do Kinect® ................................................................... 42Figura 14: Resumo da arquitetura básica ................................................................. 42Figura 15: Campo de visão alcançado pelo Kinect® ................................................. 43Figura 16: Holograma projetado pelo Kinect® para leitura de profundidade. ............ 44Figura 17: Método de identificação 3D por luz estruturada. ...................................... 44Figura 18: Arquitetura da API OpenNI ....................................................................... 47Figura 19: Arquitetura montada para identificação dos comandos de comunicação docontrolador ED-MK4® com o RoboTalk® ................................................................. 49Figura 20: Código de comunicação serial do MATLAB com o ED-MK4 .................... 51Figura 21: Código de inserção do comando "0D" no final de cada instrução deexecução. .................................................................................................................. 52Figura 22: Código de recebimento de dados serial via Matlab .................................. 52Figura 23: Representação vetorial das juntas do robô ED-7220C ............................ 53Figura 24: Configuração dos parâmetros de D-H na Robotics Toolbox .................... 54Figura 25: Representação gráfica do robô ED-7220C via Robotics Toolbox ............ 55Figura 26: Área de trabalho definida no laboratório de robótica para execução detestes ......................................................................................................................... 56Figura 27: Cenário de testes completo ...................................................................... 57Figura 28: Código de captura da imagem RGB e matriz de profundidade. ............... 57Figura 29: Distancia do Kinect® até área de trabalho do robô .................................. 58Figura 30: Pré-processamento da imagem vista pelo Kinect® .................................. 59Figura 31: Comando para corte da figura RGB e de profundidade via Matlab® ....... 60Figura 32: Código que efetua o espelhamento da imagem RGB e o da matriz deprofundidade. ............................................................................................................ 61Figura 33: Código de identificação do objeto vermelho. ............................................ 61Figura 34: Identificação do centróide de um objeto. .................................................. 62Figura 35: Medidas da área de trabalho e distância da base do robô até área detrabalho. .................................................................................................................... 63Figura 36: Comprimento da área de trabalho ............................................................ 64Figura 37: Distancia entre o Kinect® e a área de trabalho em visão lateral. ............. 64Figura 38: Código de controle do eixo da base ......................................................... 67Figura 39: Tela de controle de busca dos objetos. .................................................... 68Figura 40: Script de comando para conexão via serial e transpor o sistema decontrole do ED-MK4® para modo HOST. ................................................................. 69Figura 41: Robô virtual criado via Robotic Toolbox atravês do drivebot. ................... 70Figura 42: Robô ED-7220C® efetuado a pega do objeto. ......................................... 71
  10. 10. 10Figura 43: Imagem gerada pela câmera RGB do Kinect®. ....................................... 72Figura 44: Visão superior da área de trabalho com o objeto vermelho a seridentificado na localização inferior............................................................................. 73Figura 45: Visão superior da área de trabalho com o objeto vermelho a seridentificado na localização central. ............................................................................ 74Figura 46: Visão superior da área de trabalho com o objeto vermelho a seridentificado na localização superior........................................................................... 74
  11. 11. 11SUMÁRIO1 INTRODUÇÃO ................................................................................................... 122 FUNDAMENTAÇÃO TEÓRICA ......................................................................... 152.1 ROBÓTICA .................................................................................................. 152.1.1. Robótica Industrial........................................................................................ 152.1.2. Classificação dos robôs ............................................................................... 172.1.3. Modelagem Cinemática................................................................................ 182.1.4. Cinemática direta ......................................................................................... 202.1.5. Cinemática inversa ....................................................................................... 202.1.6. Notação de Denavit-Hartenberg ................................................................... 212.1.7. Níveis de Controle Robótico ......................................................................... 222.1.8. ED-7220C® .................................................................................................. 242.2 ENGENHARIA REVERSA ........................................................................... 302.3 VISÃO COMPUTACIONAL .......................................................................... 322.3.1. Imagem Digital ............................................................................................. 332.3.2. Processamento de Imagem Digital............................................................... 342.3.3. Limiarização (Threholding) ........................................................................... 352.3.4. Reconhecimento de Objetos ........................................................................ 372.3.5. Luz Estruturada ............................................................................................ 392.4. KINECT® ...................................................................................................... 412.5 MATLAB® ..................................................................................................... 452.6 ROBOTICS TOOLBOX ................................................................................ 462.7 OPENNI ....................................................................................................... 463 METODOLOGIA................................................................................................. 483.1 ENGENHARIA REVERSA DA COMUNICAÇÃO ......................................... 483.2 ROBOTICS TOOLBOX ................................................................................ 533.3 KINECT® ..................................................................................................... 553.4 PROCESSAMENTO DA IMAGEM ............................................................... 593.5 REFERENCIA DO PONTO DE VISÃO ........................................................ 633.6 CONTROLE DO ROBÔ ED-7220C® ........................................................... 664 RESULTADOS E DISCUSSÕES ........................................................................ 694.1 COMUNICAÇÃO SERIAL ............................................................................ 694.2 ROBOTICS TOOLBOX ................................................................................ 704.3 RECONHECIMENTO DO OBJETO ............................................................. 715 CONCLUSÃO..................................................................................................... 766 REFERÊNCIAS .................................................................................................. 77ANEXOS ................................................................................................................... 80
  12. 12. 121 INTRODUÇÃO A disciplina de robótica tem o objetivo de prover o conhecimento nodesenvolvimento e análise de modelos de robôs industriais e a programação derobôs manipuladores, com esse intuito a Faculdade Assis Gurgacz disponibiliza emseu laboratório de robótica um robô didático, porém esse robô didático desenvolvidopela empresa coreana ED-Laboratory fornece um software proprietário paracontrole, simulação e testes, tendo limitadas opções de integração a outros meios decontrole via software, impedindo assim a interação do robô a projetos criados emdiversas outras disciplinas correlatas. Esse impedimento estende-se também a própria disciplina de robótica, onde oensino 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 serflexí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 desenvolvimentosintegrados entre robótica e visão computacional, onde geralmente o ensino ficarestrito a simulações via software, impedindo assim, um modelo que poderiapotencializar a elaboração de trabalhos mais sofisticados na área robótica e nocampo da visão computacional. A robótica, segundo estudos realizados no Japão e EUA, deve ser uma das10 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 computacionaisnecessários em tempo real, e este fato tem possibilitado que novas descobertas eaplicações possam ser feitas em sistemas de robótica, tornando essa área umafonte quase que inesgotável de pesquisa.
  13. 13. 13 Nesse contexto surge a necessidade de ambientes de testes e simulaçãoonde as ferramentas propiciem potencializar o conhecimento e a difusão dapesquisa no âmbito da robótica, principalmente pelo fato de áreas como a dainteligência artificial, sistema de controles avançados, sensores e atuadores,controle de processo, programação, redes, micro controladores, identificação desistemas, entre outras, possam unir-se para como foi dito anteriormente propiciartrabalhos mais sofisticados. Para permitir a utilização desse trabalho para futuros projetos, serãodisponibilizados 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 computacionalcomercializado como controle para videogames pela empresa Microsoft®), pois parareferenciar um robô, são utilizados inúmeros sensores que em ambientes nãoestruturados podem não ser efetivos, e que o Kinect pelo sensoriamento deprofundidade é um passo além dos sistemas de visão computacional que tem estarestrição. Com isso, o tema escolhido para esse trabalho, baseia-se na granderelevância tanto para o ambiente industrial como acadêmico na atual conjunturamundial. O trabalho tem como objetivo desenvolver um sistema que controle o robôdidático ED-7220C através do software MATLAB® efetuando o reconhecimento deobjetos de forma referenciada a partir do Kinect®. Para que o trabalho se concluaserá necessário estabelecer a comunicação com o controlador do robô via softwareMATLAB®, elaborando o controle de cinemática inversa do sistema, identificando e
  14. 14. 14obtendo o posicionamento de objetos através de visão computacional, integrandoassim o sistema de visão computacional com o controle do robô.
  15. 15. 152 FUNDAMENTAÇÃO TEÓRICA2.1 ROBÓTICA2.1.1. Robótica Industrial O termo robô foi originalmente utilizado em 1921 pelo dramaturgo tchecoKaren Capek, na peça teatral “Os Robôs Universais de Russum (R.U.R.)” comoreferê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". Nadécada de 40, o escritor Isaac Asimov tornou popular o conceito de robô como umamáquina de aparência humana não possuidora de sentimentos, onde seucomportamento seria definido a partir de programação feita por seres humanos, deforma a cumprir determinadas regras éticas de conduta. O termo robótica foi criadopor Asimov para designar a ciência que se dedica ao estudo dos robôs e que sefundamenta 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 é definidocomo um "manipulador multifuncional reprogramável projetado para movimentar
  16. 16. 16materiais, partes, ferramentas ou peças especiais, através de diversos movimentosprogramados, para o desempenho de uma variedade de tarefas” [2]. Uma definição mais ampla é apresentada pela norma ISO (InternationalOrganization for Standardization) 10218, como sendo: "uma máquina manipuladoracom vários graus de liberdade controlada automaticamente, reprogramável,multifuncional, que pode ter base fixa ou móvel para utilização em aplicações deautomaçã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. 17Atuadores: São componentes que convertem energia elétrica, hidráulica oupneumá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 dejuntas, o tipo de controle, o tipo de acionamento, e a geometria. É usual classificaros robôs de acordo como o tipo de junta, ou, mais exatamente, pelas 3 juntas maispróximas da base do robô. Também pode ser classificada em relação ao espaço detrabalho, ao grau de rigidez, a extensão de controle sobre o curso do movimento ede 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. 18 Na configuração antropomórfica, existem ao menos três juntas de rotação. Oeixo de movimento da junta de rotação da base é ortogonal às outras duas juntas derotação que são simétricas entre si. Este tipo de configuraçã é o que permite maior configuraçãoFonte [16] Figura 2: Robô Articulado ou Antropomórfico com seu respectivo volume de trabalho. : respectivomobilidade a robôs. Seu volume de trabalho apresenta uma geometria maiscomplexa 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 juntasprismáticas ou rotacionais. Cada par junta-elo constitui um grau de liberdade. Assim, elopara 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 inerciaisfixados)fixados) e no seu último elo é incorporada a sua ferramenta de trabalho. Oconhecimento completo das variáveis articulares de um robô q i , determina o
  19. 19. 19posicionamento de sua ferramenta no sistema de coordenadas de trabalho. De ummodo geral, os três primeiros graus de liberdade de um robô são responsáveis peloposicionamento de sua ferramenta no espaço de tarefas e os restantes pela suaorientação. Na maioria das aplicações industriais, a programação de tarefas derobôs, é realizada por aprendizagem, consistindo no movimento individual de cadajunta. 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 aprendizagembasicamente uma operação de armazenamento de uma seqüência de incrementosnecessários para que o conjunto de variáveis articulares determine umposicionamento 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çãodo controle de posição em relação ao sistema de coordenadas cartesianas implicaráno desenvolvimento de metodologias para transformação de coordenadas. Atransformação de coordenadas articulares para cartesianas é normalmente realizadaem tempo real, onde a partir do conjunto de variáveis articulares serão obtidas aposição e orientação de sua ferramenta [4]. A cinemática de robô manipulador pode ser dividida em dois tipos decinemática a cinemática direta e a inversa.
  20. 20. 20Fonte [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 deum manipulador é determinar as relações que exprimem um ponto no espaçocartesiano, 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 dasexpressões do manipulador, a cinemática inversa procura determinar o conjunto devalores das juntas que se adéquam a uma dada configuração do espaço operacionalou cartesiano. A cinemática inversa pode ser vista com o conjunto de processospara determinar as funções inversas do sistema das expressões da cinemáticadireta. [4] O problema da cinemática inversa é mais difícil que o problema da cinemáticadireta, pois não há um procedimento sistemático explícito como o algoritmo DHconforme [7]. Um resultado disto é que cada robô, ou classe de robôs, tem que ser
  21. 21. 21tratados separadamente. No entanto, a solução para o problema da cinemáticainversa é 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 dasjuntas 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ôsmais versáteis implica em usar feedbacks de sensores externos tais como o devisão. Sensores externos alimentam informações sobre a localização e orientaçãode objetos em termos de variáveis do espaço de configuração. Estas informações são necessárias na determinação dos valores apropriadosdas juntas do robô, para que o robô possa realizar determinada tarefa emlocais sujeitos a interferência de outros equipamentos no espaço de trabalho dorobô. Portanto deve-se encontrar o mapeamento da especificação de entrada doespaço de configuração da ferramenta dentro de uma especificação de saída doespaç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 omodelo cinemático de um sistema articulado no espaço tridimensional. A notação deDenavit-Hartenberg (DH) é uma ferramenta utilizada para sistematizar a descriçãocinemá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 fundamentaisque 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. 22admite-se que o manipulador tem n juntas e para ele se definirão n+1 sistemas decoordenadas, 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émcontato 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 entreos eixos para percorrer a trajetória especificada subdividindo-se em controle ponto-a-ponto (método utilizado nesse trabalho) e controle continuo;
  23. 23. 23 - Controle de coordenação com o ambiente: é o controle do braço emcoordenaçã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 nestemé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 deaprendizado 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 decontrole de robôs industriais presentes no mercado são deste tipo. O controle ponto-a-ponto é recomendado para robôs planejados paraexecutar tarefas em pontos pré-determinados (por exemplo, verter misturas emmoldes, carregar e descarregar partes, ou pontos de soldagem). Onde é necessárioultrapassar obstáculos em movimento, o operador deve planejar antecipadamente aintrodução de pontos intermediários. Uma modificação mais sofisticada do controleponto-a-ponto possibilita a introdução de pontos proibidos no controle deprogramação. O programa irá então ser capaz de assegurar que o robô evitará estespontos. O robô pode ser ensinado sobre os pontos de seu trajeto de duas maneiras: Movendo o robô manualmente para um ponto desejado, gravando este pontona memória do robô, e passando para o próximo ponto a ser ensinado - método poraprendizagem (teach in). Definindo as coordenadas de cada ponto desejado egravando-as na memória do robô, sem que este tenha que ser movido fisicamentepara que os pontos sejam aprendidos - método de programação off-line.
  24. 24. 24 Uma vez aprendidos os pontos do trajeto, programas podem ser escritosdirecionando 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 porprocedimento contínuo. No entanto, só é apropriado em operações em que o trajetoentre os pontos definidos não é importante. Para executar caminhos maiscomplicados, onde é necessário existir precisão do começo ao fim, o controle portrajetória contínua deve ser usado.2.1.8. ED-7220C® O manipulador robótico ED-7220C ilustrado pela Figura 4 foi desenvolvidopela empresa coreana ED-Laboratory com fins exclusivamente didáticos. Dentre osfatores que contribuem para limitação de suas aplicações industriais estãoprincipalmente às limitações mecânicas de seu volume de trabalho, a baixavelocidade proporcionada por seus atuadores e reduzida capacidade de carga dorobô.
  25. 25. 25Fonte [do Autor] Figura 4: Braço robô ED-7220CFonte [6] Figura 5: Os 5 graus de liberdade do Ed-7220C. O ED-7220C é um robô de orientação vertical e possui cinco graus deliberdade, ilustrados na Figura 5, sendo três deles reservados para oposicionamento e dois para a orientação de seu manipulador.
  26. 26. 26Fonte [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 seuvolume 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 motoresda 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 deoperação. Cada motor apresenta um encoder acoplado ao eixo para prover asinformações de posição e velocidade para o efetivo controle em malha fechada. A
  27. 27. 27movimentação do eixo dos motores faz com que o encoder gere sinais de freqüênciaque indicam a duração e o sentido do movimento. A unidade controladora do robô, oED-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 devalores de -32767 a 32767 posições diferentes, entretanto a construção mecânicado 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 demovimento, impedindo a utilização da faixa completa de valores de encoder nocomando de um movimento para os motores do cotovelo, ombro e base, conformedescrito 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 atuadorFonte [6] A detecção de sua limitação mecânica nos movimentos está associadaprimeiramente há microinterruptores ou microswitches, encontrados juntos aos elosdo robô, entretanto, a unidade controladora é capaz de detectar uma eventualsobrecarga nos motores. A estrutura do robô carece de uma proteção externa, tendo suas conexõesdas juntas e elos, engrenagens, sensores e motores expostos ao acadêmico. Sua
  28. 28. 28mecânica permite também a movimentação de suas juntas enquanto a garramanté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 integradosde memória, permitindo-a armazenar, executar e monitorar rotinas de programaçãoatravés das leituras de tensão, velocidade de revolução e aceleração dos servomotores do robô. As especificações gerais da unidade controladora e seuscomponentes 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 TalkFonte [6]
  29. 29. 29 A programação do robô pode ser feita através de um protocolo decomunicação serial próprio, onde o usuário utiliza o software RoboTalk nocomputador conectado para gerar arquivos “.dat”, contendo as coordenadasespaciais de cada ponto, e arquivos com extensão “.rt” no qual emprega-se alinguagem de programação do robô, comandando-o para os pontos no espaçogravados no arquivo “.dat”, de acordo com a tarefa desejada. Estas rotinas são executadas através de uma comunicação serial, efetuadaatravés da interface RS-232 do PC, possibilitando o envio de informações para aunidade controladora ED-MK4. Alternativamente, a programação pode ser efetuadadiretamente através do Teach-Pendant (controle remoto do robô ED-7220C), nomodo 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 amovimentação e programação do ED-7220C, sendo eles: o modo de movimentaçãolivre que, quando selecionado, apresenta a palavra “PLAY” no display do Teach-Pendant; e o modo de movimentação por software, que apresenta no display apalavra “HOST”. Uma das maiores motivações do desenvolvimento deste trabalho foram aslimitações de hardware (do Teach-Pendant) e software (RoboTalk) que impedem aimplementação de projetos como a visão de máquina, o comando via web, controlecom um joystick, geração de trajetórias senoidais, controle através de um softwarede simulação, entre outros.
  30. 30. 302.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 elese 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 asmesmas características ou entender como esta funciona no caso de não haverdocumentação. Não há um registro inicial de utilização da engenharia reversa, mas sabe-seque 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 deespionagem. Um exemplo do uso da engenharia reversa ocorreu em 1945, durantea segunda guerra mundial, três bombardeiros americanos modelo B-29 foramforç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. Oresultado foi o bombardeiro Tupolev Tu-4 demonstrado na Figura 9 que voou pelaprimeira vez em 19 de maio de 1947. A produção em série do bombardeiro começouneste mesmo ano.
  31. 31. 31Fonte [16] Figura 9: Bombardeiro Tupolev Tu-4 A engenharia reversa por si própria não envolve modificar o sistema analisadoou criar um novo sistema baseado no sistema analisado. A engenharia reversa é umprocesso 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 à qualquerprocesso ou sistema sem caracterizar-se ilícita, entretanto, a divulgação de algumasdas informações adquiridas por esta técnica podem estar sujeitas à proteçõesautorais e patentes, nestes casos a reprodução ou divulgação das informaçõesobtidas podem ferir as leis que a protegem. Por haver o consentimento da empresa acerca das atividades e pesquisasdesenvolvidas, e por não objetivar nada além de atividades de caráter estritamentedisciplinar e educacional, a aplicação da engenharia reversa na comunicação dorobô manipulador didático ED-7220C não se caracteriza como ilícito.
  32. 32. 32 A engenharia reversa também pode ser aplicada para efetuar a detecção deavarias de sistemas ou ainda no aprendizado de um determinado protocolo decomunicação [8].2.3 VISÃO COMPUTACIONAL Visão se mostra como um dos sentidos mais importantes para a interação deum agente (humano ou robótico) com o mundo. Visão computacional, tambémchamada de entendimento de imagens ou visão de máquinas, descreve adeterminação automática da estrutura e propriedades do ambiente tridimensional noqual o agente está inserido, ambiente este possivelmente dinâmico, a partir de umaúnica ou múltiplas imagens bidimensionais do ambiente. As imagens podem sermonocromáticas ou coloridas, capturadas por uma ou múltiplas câmaras que, porsua vez, podem ser estacionárias ou móveis [9]. A estrutura e propriedades a serem extraídas do ambiente podem sergeomé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 oprocesso 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, umavez que o processo de formação de imagens consiste num mapeamento muitos -para-um: uma grande variedade de superfícies, com diferentes materiais econdiçõ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. 33 Infelizmente, não existe uma inversão própria e correta. No entanto, algumasrestrições podem ser impostas para resolver satisfatoriamente a ambigüidadeinerente ao processo visual. Além disso, o agente não precisa saber “tudo” acercado 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 elocalização das peças a serem manipuladas; em tarefas de navegação, ações comoencontrar caminho livre, evitar obstáculos, calcular velocidade e orientação, que sãonecessárias, e assim por diante. Nenhuma destas tarefas requer a determinação dadescriçã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 faixade variação também discreta é chamado de sinal digital. Imagem Digital é umamatriz de inteiros, onde cada inteiro representa o brilho da imagem num tempodiscreto 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 umprocesso de amostragem e um de quantização. A amostragem discretiza o domínioda função imagem, fornecendo a cada ponto discreto o valor da função naqueleponto. A quantização discretiza a faixa de variação da função, mapeando o valor dafunção em cada ponto a um valor dentre vários valores discretos. Tipicamente os
  34. 34. 34valores discretos assumidos pelos pontos numa imagem monocromática variam de 0(preto) a 255 (branco). A Figura 10 mostra uma imagem e sua matrizcorrespondente.Fonte [1] Figura 10: Imagem digital e sua matriz correspondente2.3.2. Processamento de Imagem Digital O processo de imageamento introduz diversos ruídos e deformações nainformaçã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 pararecuperar a informação contida na imagem. Estas técnicas executamtransformações na imagem, procurando extrair parâmetros intrínsecos tais comodescontinuidades de superfícies, distância, orientação de superfícies, entre outros. Um dos objetivos mais comuns no processamento de imagens consiste emeliminar ruídos e extrair as bordas (“edges”) contidas numa imagem. Bordas sãocurvas no plano de imagem através das quais existe uma “significante” mudança nobrilho [11]. O interesse nas bordas de uma imagem consiste no fato de que elascorrespondem a importantes contornos da cena.
  35. 35. 35 Caso a imagem seja colorida a mesma terá três dimensões onde cadadimensã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 deimagem. É através dela que se consegue separar os objetos do fundo de umadeterminada imagem. Em uma imagem monocromática, por exemplo, com doisconjuntos representando a conectividade entre os pixels, facilmente pode-se dizerque um grupo representa o objeto na imagem e outro grupo, representa o fundo. Odois grupos foram separados por um limiar T, fazendo com que o conjunto deconectividade assuma um novo valor, tornando a imagem monocromática em umaimagem 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, eg ( 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. 36(between - class variance) mediante uma busca exaustiva. Há diferentes métodospara achar o limiar, a maioria deles não dá bons resultados quando se trabalha comimagens do mundo real devido a presença de ruído, histogramas planos ou umailuminação inadequada [26]. Pelo contrário, o método de Otsu foi um dos melhoresmétodos de seleção do limiar para imagens do mundo real. No entanto, este métodousa uma busca exaustiva para avaliar o critério para maximizar a variância entreclasses. Á medida que o número de classes de uma imagem aumenta, o método deOtsu 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 olimiar, isto é, não precisa supervisão humana nem informação prévia da imagemantes de seu processamento.O método Otsu, como foi dito, se baseia na escolha do valor de corte que maximizea medida de variância entre duas partes do histograma separadas por um mínimolocal, 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. 372.3.4. Reconhecimento de Objetos Reconhecimento consiste em identificar e determinar a posição e orientaçãode cada objeto na cena em relação à câmera e, com as informações adquiridas nafase de calibração, determinar sua localização em relação a um sistema decoordenadas do ambiente (ou do robô), para tarefas de manipulação, por exemplo. Com determinadas técnicas de processamento de imagem regiões podem serextraídas da imagem correspondem a objetos de interesse. Assim, propriedadescomo área da região, perímetro, compactividade, centróide, distâncias mínima emáxima, entre outras, são importantes na identificação e na determinação daposição e orientação dos objetos. A área A de uma região consiste na somatória dos pixels de um mesmorótulo. Para comparar a área da região com a área do objeto imageado numdeterminado 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 derelacionar a posição da câmara com a posição do objeto na cena. O perímetro Ppode ser calculado pela somatória dos pixels pertencentes à borda de interesse. Acompactividade 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 paradeterminar 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. 38 sendo A a área, e as somatórias aplicadas à região de interesse. A Figura 11ilustra 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 emcorresponder os atributos e informações extraídos da imagem àqueles previamentearmazenados como modelos, numa fase de treinamento do sistema de visão. A correspondência entre dados extraídos e modelos pode se darsimplesmente através do uso de um classificador estatístico, permitindo certasvariações estatísticas no processo de comparação. Neste caso, o conjunto deatributos (do modelo e o extraído da imagem) deve conter elementos em número eimportância significativa para identificar e localizar corretamente cada objeto,evitando falsos positivos (classificando um objeto como sendo de uma classeincorreta - diz que é um parafuso quando na verdade trata-se de uma caneta, porexemplo) 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-setambém realizar um reconhecedor sintático de configuração, onde relaçõesestruturais são utilizadas, tais como relações entre atributos e/ou segmentos debordas.
  39. 39. 39 A fase de treinamento dos sistemas de visão baseados em modelosnormalmente se dá através de treinamento supervisionado, onde objetos conhecidossão apresentados ao sistema, que extrai automaticamente os atributos e relações earmazena-os em modelos de cada objeto. Estes modelos também podem serfornecidos pelo usuário. No entanto, o melhor seria que o sistema os extraísseautomaticamente, para que se tenha uma garantia maior de que os mesmosprocedimentos serão executados para determinar dados dos modelos e da imagemda cena, durante a fase de execução. O treinamento do sistema de visão deve serrealizado 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çãocom luz estruturada. Um sistema de reconstrução deste é composto por doisconjuntos de ferramentas principais: um coletor de imagens e um conjunto deprogramas computacionais. O coletor de imagens é construído baseado em umacâ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 ecapturado pela câmara digital que é solidária ao projetor. O cálculo das coordenadas3D de pontos da superfície do objeto depende de dois conjuntos de elementos quedevem ser conhecidos: as coordenadas de imagem dos alvos projetados e osvetores diretores destes padrões, ambos no referencial da imagem. Na modelagem tridimensional por luz estruturada padrões de luz comcaracterísticas conhecidas são projetados sobre a superfície do objeto e uminstrumento sensor captura a imagem dos padrões que são distorcidos pela
  40. 40. 40superfície de projeção. Pela medição desta distorção e pelo conhecimento dascaracterísticas geométricas (e/ou radiométrica) dos padrões que são projetadosse faz a determinação das coordenadas de pontos que compõem a superfície doobjeto. Para isto, as relações geométricas existentes entre o sensor e os feixesde raios luminosos do padrão projetado devem ser determinadas. Diferentespadrões de luz podem ser usados (linhas, grades, círculos, senoidais). O projetor depadrões simula uma segunda câmera, e torna a reconstrução 3D mais rápida queno processo fotogramétrico convencional. Um programa computacional específicoprocessa estes dados e extrai as coordenadas 3D dos padrões projetados.[27]
  41. 41. 412.4. KINECT® Em novembro de 2010 a empresa Microsoft® lançou um acessório para ovideogame Xbox 360® acessório esse, batizado de Kinect® onde o objetivo doproduto é fazer com que o jogador seja capaz de controlar os jogos apenas como opróprio corpo. O Kinect® em seu lançamento chegou a marca de 8 milhões de peçasvendidas, entretanto até março de 2011, 10 milhões de exemplares já foramvendidos no valor de USD 150,00. A arquitetura básica do Kinect® é formada por um projetor de luzinfravermelha (invisível ao olho humano), uma câmera infravermelha, uma câmeraRGB 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 suautilização fora do XBOX®.
  42. 42. 42Fonte [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 de640x480 pixels em 30 frames por segundo (fps) ou 1280x1024 em um máximode 15 fps. É possível obter tanto a imagem da câmera RGB quanto a da câmerainfravermelha; - Depth Stream (informação de profundidade): cada pixel indicando adistância do objeto em relação ao aparelho. O aparelho detecta cerca de 2000
  43. 43. 43níveis de sensibilidade e percebe objetos presentes de 1.2 a 3.5 metros à frente doaparelho,aparelho conforme é mostrado na Figur 14. FiguraFonte [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 mpixel 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 oreconhecimento da fala em inglês. Para o mapeamento 3D o Kinect® utiliza a tecnologia de luz estruturada ondeuma luz infravermelha é projetada na superfície dos objetos, sendo essa luz essaespalhada por pela superfície com rugosidades da ordem do comprimento de ondaincidente 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. 44Fonte [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. iguraFonte [do Autor] Figura 16 Método de identificação 3D por luz estruturada. 16:
  45. 45. 452.5 MATLAB® O Matlab® (MATrix LABoratory) é um poderoso software de computaçãonumérica, de análise e de visualização de dados, com um propósito bem mais amploque o original “laboratório de matrizes”. O Matlab® é um sistema interativo e umalinguagem 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çãode vários problemas numéricos, utilizando uma linguagem de alto nível para odesenvolvimento de algoritmos. Possui diversas funções de tratamento numérico dealto desempenho, capazes de resolver problemas computacionais de forma maiseficiente que as tradicionais linguagens de programação, para aumentar avantagem, as soluções do Matlab® são expressas de uma forma muito parecida decomo são escritas matematicamente, disponibilizando várias ferramentas quefacilitam e agilizam todo o processo de programação, obtenção de dados emanipulação dos mesmos, estando totalmente integrado com suas Toolboxes quefornecem uma enorme variedade de soluções para muitos problemas da engenharia. Além do ambiente interativo, outra facilidade do Matlab® é a possibilidade deexecução de arquivos texto contendo uma seqüência de instruções definidas pelousuário. Esses arquivos texto, que têm extensão .m, podem ser criados e editadosdentro ou fora do seu ambiente [20].
  46. 46. 462.6 ROBOTICS TOOLBOX A Robotics Toolbox é uma ferramenta computacional de modelagem econtrole de robôs industriais desenvolvida por Peter Corke e disponível sob licençaLGPL. A Robotics Toolbox proporciona muitas funções úteis para o estudo esimulação com braço robótico, por exemplo, cinemática, dinâmica e geração detrajetória. O Toolbox é baseado em um método generalista para representar acinemática e a dinâmica dos elos dos manipuladores. Estes parâmetros são encapsulados em objetos no MATLAB®, onde o objetorobô 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 oPuma 560 e o braço de Stanford, entre outros. O Toolbox também fornece funçõespara 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 pararepresentaçã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 escreveraplicações utilizando Interação Natural. O principal objetivo do OpenNI é formar uma API padrão que permite aintegração de diversos sensores, entre eles os de audio e de visão. Com esse
  47. 47. 47framework é possivel efetuar a integração com o Matlab® tornando essa junção umapoderosa 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. 483 METODOLOGIA3.1 ENGENHARIA REVERSA DA COMUNICAÇÃO Devido as características da comunicação serial, fez-se necessário oconhecimento do protocolo utilizado originalmente na comunicação entre o softwareRoboTalk e a unidade controladora do robô. Segundo [23] e [24], os parâmetrosdessa 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 OnFonte: [23] e [24]. Entretanto, houve discrepância em alguns parâmetros listados pelasbibliografias consultadas. Desta forma, a fim de comprovar o correto funcionamentoda comunicação serial envolvida no controle do robô, foram utilizadas técnicas deengenharia reversa. A compreensão, por parte da unidade controladora ED-MK4®, dos comandosque seriam enviados através do Matlab® posteriormente, depende diretamente daconfiguração da comunicação estar de acordo com a configuração do protocolooriginal, uma vez que, se um parâmetro como o baudrate fosse erroneamenteconfigurado, 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 aseqüência de comandos enviados à ED-MK4® durante o comando do robô e paramonitorar o tráfego da comunicação serial entre a unidade controladora e ocomputador conectado foi utilizado o software Free Serial Port Monitor (FSPM) aFigura 18 demonstra a forma completa de como foi efetuado a identificação doscomandos.
  49. 49. 49Fonte: [do Autor]Figura 18: Arquitetura montada para identificação dos comandos de comunicação do controlador ED- MK4® com o RoboTalk® .
  50. 50. 50 Conforme identificação dos comandos uma tabela (Tabela 5) de códigos podeser 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 garraFonte [do Autor] Após a identificação dos comandos de controle, o próximo passo foi identificara configuração correta da serial para controlar o robô via MATLAB. Configuraçãoessa que é mostrada na Tabela 6.
  51. 51. 51Tabela 6: Parâmetros de configuração da comunicação serial no MATLABBaudrate 9600Databits 7Stopbit 2Parity OddTimeout 1000Requesttosend OnTerminator CR/LFFlowControl HardwareDataTerminalReady OffFonte: 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 todasas portas seriais conectada no momento. Conforme o comentário do código, as flags“Terminator” e “FlowControl” tiveram que ser configuradas para possibilitar a leituranão só enviar comandos para execução, como também receber informação dostatus do robô. Foi necessário também efetuar a concatenação do código “0D” (onde natabela ASCII significa “r” Carrier return ) no final de cada comando , pois esse
  52. 52. 52comando informa a controladora que a instrução a ser executada está terminada. NaFigura 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, ondeo script aguarda alguma resposta da controladora. Nesse ponto foi necessárioefetuar a leitura como o comando “fread”, pois era necessário definir a quantidadede bytes a serem lidos para que o script não ficasse em um loop infinito lendo sujeirada 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 ocó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 anecessidade de um intervalo de tempo entre os comandos, intervalo esseencontrado via testes empíricos, onde o valor de 300 milissegundos foi suficientepara deixar o código robusto para envio de comandos em serie.
  53. 53. 533.2 ROBOTICS TOOLBOX Após definir a comunicação como o robô, o passo subseqüente foi a utilizaçãodo Toolbox Robotics para modelagem e geração de trajetória do robô. Primeiramente foi definido o modelado cinemático do robô ED-7220C viaparâmetros de modelagem de Denavit-Hanterberg. Na Figura 22 é demonstrada avista do robô em forma de vetores de orientação, técnica utilizada para facilitar aidentificação do modelo de D-H.Fonte [do Autor] Figura 22: Representação vetorial das juntas do robô ED-7220C
  54. 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çãoFonte [do Autor] Adicionando esses valores na Toolbox é possível verificar a forma como orobô ficou configurado, na Figura 23 segue os comando executados para geração domodelo no Robotics Toolbox.Fonte [do Autor] Figura 23: Configuração dos parâmetros de D-H na Robotics ToolboxOnde:
  55. 55. 55 A utilização do comando “SerialLink” serve para criação do objeto “robo”, ocomando “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 dacinemática direta e o comando “robo.plot” gera o gráfico do robô, conforme a Figura24.Fonte [do Autor] Figura 24: Representação gráfica do robô ED-7220C via Robotics Toolbox3.3 KINECT® Após a definição cinemática do robô, partiu-se para o sistema dereconhecimento de imagem com o Kinect®.
  56. 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 derobó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. 57Na 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çãodos drivers da OpenNI, como também a instalação e configuração dos scripts doMatlab® criado por Tim Zaman. Para efetuar essas configurações foi utilizado otutorial do orientador desse trabalho, encontrado em [25]. O código utilizado para efetuar a captura da imagem RGB e da matriz deprofundidade, pode ser visto na Figura 27.Fonte [do Autor] Figura 27: Código de captura da imagem RGB e matriz de profundidade.
  58. 58. 58Onde: - mxNiCreateContext: é o comando que instancia as configurações existenteno 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 deprofundidade; - mxNiDeleteContext: comando responsável de desalocar a memória quer foiusada na criação dos parâmetros de configuração do Kinect®, caso esse comandonão seja usado o sistema vai rodar somente até quando toda a memória física evirtual do computador seja alocada, nos testes isso ocorre em 3 tentativa em umcomputador com 4GB de memória física; Conforme informação do manual do Kinect ® a distancia recomenda entre oKinect® e o jogador é de no mínimo 1.8m, no caso deste trabalho a distancia doKinect® até a área de trabalho que o robô irá atuar é de 2,38m conforme a Figura28.Fonte [do Autor] Figura 28: Distancia do Kinect® até área de trabalho do robô
  59. 59. 593.4 PROCESSAMENTO DA IMAGEM Algumas técnicas foram executadas para uma melhor identificação dosobjetos. Como a câmera RGB do Kinect® gera fotos com 640x480 pixel deresoluçã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 demesmo tamanho, dessa forma a imagem para ser processada foi reduzidadrasticamente, facilitando o processamento e melhorando o tempo de resposta doscript, na figura 29 é mostrada a visão frontal do cenário de teste, com o localcortado pelo script representado pelas linhas pontilhadas.Fonte [do Autor] Figura 29: Pré-processamento da imagem vista pelo Kinect®
  60. 60. 60 O comando utilizado para efetuar esse corte foi o “imcrop” do Matlab® nafigura 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çãodo Kinect®, permitindo assim uma flexibilidade no posicionamento do Kinect® emrelação à área de trabalho. Como pode ser visto no código, há dois sistemas de corte, o da figura RGB eo da matriz de valores de profundidade, isso foi feito, pois ao encontrar o centróideda imagem RGB, é feito a correlação da posição do centróide na matriz deprofundidade. Para facilitar o calculo do sistema de coordenadas, foi efetuado umespelhamento da imagem, fazendo com que a posição das peças a seremidentificadas fossem igual à posição real, Na figura 31 é mostrado o código usadopara efetuar esse espelhamento, lembrando sempre que, tudo que foi feito na figuraRGB, teve que ser feito na matriz de profundidade, para que a correlaçãodimensional seja preservada.
  61. 61. 61Fonte [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, aidentificação foi feita pela cor, onde na área de trabalho duas peças de cor azul evermelha, foram dispostas em determinada posição dentro do limite da área detrabalho. Na figura 32 é representado o código de reconhecimento do objetovermelho.Fonte [do Autor] Figura 32: Código de identificação do objeto vermelho.Onde: - imsubtract: comando responsável de subtrair uma imagem de outra, queneste 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 corespecifica, bastando apenas definir o valor da cor em RGB. - rgb2gray: comando responsável por transformar a imagem RGB em escalade cinza.
  62. 62. 62 - graythresh: comando responsável por definir o limite global da imagemutilizando o método de Otsu. - im2bw: Converte uma imagem para o formato binário, com base em umdeterminado 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 oobjeto escolhido, neste caso o objeto vermelho, sendo então efetuada a identificaçãodo 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 aser identificada;
  63. 63. 633.5 REFERENCIA DO PONTO DE VISÃO Depois de identificado o centróide da peça a ser capturada, partiu se para partiu-sereferenciar o objeto em função da referencia da base do robô. Na Figura 3 segue a referencia 34vista frontal com as medidas da área de trabalho, essa informação é necessária para necessáriconversão oconvers do valor da image em pixel, para medidas métricas e posteriormente o imagemcalculo 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. 64Na Fi Figura 35 segue a vista superior onde se mostra o comprimento da área detrabalho.trabalhoFonte [do Autor] Figura 35: Comprimento da área de trabalhoJá a Figura 36 mostra a distancia do Kinect® até o inicio da área de trabalho, essa 36informação é muito importante, pois é com esse valor descontado dos valores formaçãoobtidos via matriz de profundidade que será possível identificar a distancia do objetoaté 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. 65Após aquisição desses dados iniciou-se os cálculos de referencia dos objetos nascoordenadas “X”, “Y” e “Z”. Para coordenada X, ao encontrar o centróide da imagemRGB a referencia dele foi relacionada com a matriz de profundidade, para que ovalor de profundidade fosse encontrado, evitando erro de pontos cegos na leitura doKinect®, o eixo “Y” da imagem foi definido com um, pois no corte da imagem o topoda mesma, sempre estará preenchido pelo objeto, conforme a Figura 31. Como o valor de profundidade lido pelo Kinect® é dado em milímetros e amodelagem do robô é feita em metros, o calculo para identificar a distancia da peçareferente a base do robô foi: 2380 − Dis tan ciaMatriz Pr ofundidade (5) 1000O resultado da equação 4 representa a coordenada no eixo “X”. Para identificar amedida do eixo “Y” algumas conversões foram necessárias, primeiro foi convertido ovalor 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 26cm 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 é de13.1818cm, somando isso a 26 cm, tem-se a distancia em centímetros do objeto emrelação a base do robô, mas como é necessário a conversão para metros, divide-seesse valor por 100. Porém como a variação da peça não ocorre somente em umadireção reta, é necessário aplicar Pitágoras no valor encontrado para que oresultado seja real. Abaixo segue a formula de Pitágoras.
  66. 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 garradefiniu-se um deslocamento fixo nessa coordenada.3.6 CONTROLE DO ROBÔ ED-7220C® Depois de calculado as distancias e efetuado a cinemática inversa paradescobrir a posição final que a garra deve ficar, foi necessário gerar uma relaçãoentre 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 foio da base para a movimentação no eixo “X” e o do ombro, determinando odeslocamento “Y”. Para converter os valores referentes ao elo da base usou-se a seguinteequação para o eixo da base: 7100 − qi1 (7) 2.7052Onde: - 7100: é a total de pulsos necessário para o robô percorrer 150º, angulaçãomáxima permitida mecanicamente. Como a área de trabalho está apenas em umquadrante, 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 deradianos, esse valor equivale aos 150° ;
  67. 67. 67 Para o eixo do ombro, utilizou-se a seguinte equação: 3174 × qi2 (8) 1.4835Onde: - 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 deradianos, esse valor equivale aos 85° ;Após essas conversões foi utilizado o script de envio de comando para o robô, ondena 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. 68 Para acionar a busca do objeto, foi feito uma tela gráfica simples para escolhade qual objeto pegar, segue a tela na Figura 38.Fonte [do Autor] Figura 38: Tela de controle de busca dos objetos.
  69. 69. 694 RESULTADOS E DISCUSSÕES4.1 COMUNICAÇÃO SERIAL Com o código de envio de comandos para o ED-MK4® via serial pronto, ostestes feitos para determinar a robustez do script deram-se via Command Windowdo Matlab®, onde inicialmente é necessário efetuar a conexão via serial e colocar orobô 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 aotempo de resposta foi necessário apenas adicionar um intervalo de 300ms entre oscomandos, pois isso era uma das restrições do processador do ED-MK4®.
  70. 70. 704.2 ROBOTICS TOOLBOX Os testes feitos com a Toolbox Robotic, ocorreram na relação de verificar se amodelagem cinemática estava correta e no erro gerado na questão da cinemáticainversa. Para validação da modelagem foi gerado um robô virtual conforme a Figura40 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 viacomando ikine, determinaram-se os ângulos de rotação dos motores, que depois foiinserido no robô virtual, para identificação do posicionamento. Em alguns resultadosdesses testes o sistema mostrou até duas soluções onde a primeira deu-se com agarra posicionada de cima para baixo e a outra com a garra em sentido de
  71. 71. 71acoplamento lateral. Para passagens desses valores para o robô real, não houveproblema, porque como o eixo “Z” foi colocado de forma fixa, a garra sempre efetuouo 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 commuitos 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. 72obtida pela câmera RGB que neste caso era uma imagem de 640x480 conforme aFigura 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 nametodologia desse trabalho, a partir daí, foi gerado um sistema de teste paraverificar a precisão e repetibilidade do robô em conjunto com o sistema de visão. Porprecisão, entende-se a capacidade do robô de ir a uma posição desejada, comrespeito a um sistema de referencia fixo (normalmente a base do robô, como é ocaso desse trabalho), com um erro determinado (por exemplo ± 1mm). Trata-se deprecisão em posicionamento absoluto. Por repetibilidade, entende-se a capacidadedo robô de, uma vez conhecida e alcançada uma posição, e partindo-se da mesmacondição inicial, voltar a ir ("repetir") novamente a tal posição com um erro
  73. 73. 73determinado. Abaixo segue os testes conforme posições do objeto na área detrabalho. A Figura 4 mostra uma visão superior da área de trabalho com o objeto 43 objetovermelho a ser pego, nesse caso o teste foi feito na parte inferior da área detrabalho.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 doobjeto 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 porcentagemreferente à 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. 74Fonte [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. 45Fonte [do Auto Autor]Figura 45: Visão superior da área de trabalho com o objeto vermelho a ser identificado na localização superior.

×