Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E
TECNOLOGIA DE SANTA CATARINA CAMPUS JOINVILLE
CURSO SUPERIOR DE TECNOLOGIA EM MECATRÔNICA INDUSTRIAL
ADILSON VITT DOS SANTOS ANDERSON JEAN ROCHA
GUILHERME DECKER
CONTROLE DE BRAÇO ROBÓTICO ATRAVÉS DA CAPTURA DE MOVIMENTO
ADILSON VITT DOS SANTOS ANDERSON JEAN ROCHA
GUILHERME DECKER
CONTROLE DE BRAÇO ROBÓTICO ATRAVÉS DA CAPTURA DE MOVIMENTO
JOINVILLE, 2015
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SANTA CATARINA
CAMPUS JOINVILLE CURSO SUPERIOR DE TECNOLOGIA EM
MECATRÔNICA INDUSTRIAL
ADILSON VITT DOS SANTOS ANDERSON JEAN ROCHA
GUILHERME DECKER
CONTROLE DE BRAÇO ROBÓTICO ATRAVÉS DA CAPTURA DE MOVIMENTO
Submetido ao Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina como parte dos requisitos de obtenção do título de Tecnólogo em Mecatrônica Industrial. Orientador: Rodrigo Coral.
JOINVILLE, 2015
dos Santos, Adilson Vitt. Braço robótico por captura de movimento. dos Santos, Adilson Vitt. Rocha, Anderson Jean; Decker, Guilherme – Joinville Instituto Federal de Santa Catarina, 2015. 106 f. Trabalho de Conclusão de Curso - Instituto Federal de Santa Catarina, 2015. Graduação: Curso Superior de Tecnologia em Mecatrônica Industrial. Modalidade: Presencial. Orientador: Rodrigo Coral. 1. Robótica, 2. Braço robótico, 3. LabVIEW, 4.Captura de movimento. I. CONTROLE DE BRAÇO ROBÓTICO ATRAVÉS DA CAPTURA DE MOVIMENTO.
CONTROLE DE BRAÇO ROBÓTICO ATRAVÉS DA CAPTURA DE MOVIMENTO
ADILSON VITT DOS SANTOS ANDERSON JEAN ROCHA
GUILHERME DECKER
Este trabalho foi julgado adequado para obtenção do título de Tecnólogo em Mecatrônica Industrial e aprovado na sua forma final pela banca examinadora do Curso de Mecatrônica Industrial do Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina.
Joinville, 15 de junho de 2015. Banca Examinadora:
__________________________________ Prof. Rodrigo Coral, Dr. Eng.
Orientador
__________________________________ Prof. Paulo Roberto O. Bonifácio, Dr. Eng.
Avaliador
__________________________________ Prof. Leo Schirmer, Me. Eng.
Avaliador
DEDICATÓRIA
A Deus, nossos familiares, amigos, professores e colegas.
AGRADECIMENTOS Agradecemos a todos que contribuíram no decorrer
desta jornada, em primeiro lugar a Deus, a quem devemos as nossas vidas.
Aos nossos pais pela educação, exemplo e por nos conduzir para um caminho de estudos, aprendizado e dedicação.
Às nossas esposas, namoradas, filha e familiares por todo apoio nos estudos e nas escolhas tomadas.
A toda instituição do IFSC - Joinville que através da sua estrutura nos deu as condições adequadas à nossa formação.
Aos professores que se dedicaram ao nosso ensino, não somente ao conhecimento transmitido das disciplinas, mais por acreditarem em nosso potencial. Especialmente ao professor Miguel T. Bahia por sua colaboração em disponibilizar o material obtido com os recursos do Programa de Apoio ao Fortalecimento dos Grupos de Pesquisa (Edital No. 16/2013/PROPPI) como o projeto de pesquisa "A Robótica Educacional e o Ensino de Elementos de Máquinas: possibilidades pedagógicas".
Aos colegas pelo companheirismo e disponibilidade, em especial ao aluno Lucas Schulze, que forneceu suporte técnico para a equipe iniciar a pesquisa.
Ao nosso orientador, professor Rodrigo Coral, que teve papel fundamental na elaboração deste projeto.
RESUMO Este trabalho apresenta o tema “Controle de Braço Robótico Através da Captura de Movimento”. Durante os capítulos desse trabalho, são apresentadas pesquisas relacionadas à robótica, dando ênfase a braços robóticos e suas classificações, software de programação relacionada ao tema proposto e algumas maneiras de se obter a captura de movimentos de um objeto. Apresenta também o modelo montado de um braço robótico utilizando o kit educacional da Lego Mindstorms que foi escolhido para receber o controle do usuário, bem como as alterações necessárias realizadas no modelo original, relatando o tipo de comunicação utilizada, as programações desenvolvidas em plataforma LabVIEW e o dispositivo Kinect utilizado para captura de movimentos. Por fim, têm-se as considerações finais a cerca desse trabalho, bem como resultados obtidos e propostas para execução de trabalhos futuros utilizando a captura de movimentos. Palavras-Chave: robô, braço robótico, Laboratory Virtual Instrument Engineering (LabVIEW) e captura de movimento.
ABSTRACT This paper presents the theme "Control Robotic Arm Through Motion Capture". During the chapters of this work are presented research related to robotics, emphasizing the robotic arms and their ratings, programming software related to the proposed theme and a few ways to get the motion capture of an object. It also fitted the model of a robotic arm using the educational kit from Lego Mindstorms who was chosen to play the moves made, and the necessary changes made to the original model, reporting the type of communication used, schedules developed in LabVIEW software the final considerations about this work and results achieved and proposals for implementation of future work using motion capture. Keywords: robot, robotic arm, Laboratory Virtual Instrument Engineering (LabVIEW) and motion capture.
LISTA DE FIGURAS
FIGURA 01: CLASSIFICAÇÃO DOS ROBÔS [10]. ............................... 35 FIGURA 02- MANIPULADOR ROBÓTICO [13]. ................................... 36 FIGURA 03 – ROBÔ MÓVEL HUMANOIDE (ESQUERDA) ROBÔ COM
RODAS (DIREITA) [10]. .......................................................... 37 FIGURA 04 – ROBÔ CARTESIANO [10]. ............................................ 38 FIGURA 05 – ROBÔ CILÍNDRICO [10]. .............................................. 38 FIGURA 06 – ROBÔ ARTICULADO [10]. ........................................... 39 FIGURA 07 – ROBÔ ESFÉRICO [15]. ............................................... 39 FIGURA 08 – ROBÔ SCARA [10]. .................................................... 40 FIGURA 09 – ROBÔ DELTA (DIREITA) ROBÔ TRICEPT (CENTRO) E
ROBO ORTHOGLIDE ............................................................... 41 (ESQUERDA) [10]........................................................................... 41 FIGURA 10 – ELO BINÁRIO (ESQUERDA), ELO TERCIÁRIO (CENTRO) E
ELO QUATERNÁRIO (DIREITA) [18]. ........................................ 42 FIGURA 11 – JUNTA DE CONTATO INFERIOR ROTATIVA (ESQUERDA),
JUNTA DE CONTATO INFERIOR DESLIZANTE (DIREITA) [18]. .... 42 FIGURA 12 – JUNTA DE CONTATO SUPERIOR POR PONTO
(ESQUERDA), JUNTA DE CONTATO SUPERIOR POR LINHA
(DIREITA) [18]. ...................................................................... 43 FIGURA 13 – TIPOS DE JUNTAS [17]. .............................................. 43 FIGURA 14 – BRAÇOS COM UM (ESQUERDA) E DOIS GRAUS DE
LIBERDADE (DIREITA) [17]. ..................................................... 44 FIGURA 15 – BRAÇOS ROBÓTICO [19]. ........................................... 44 FIGURA 16 – OPÇÕES DE CONEXÕES DE HARDWARE DO LABVIEW
[20]. ..................................................................................... 46 FIGURA 17 – EXEMPLO DE PAINEL FRONTAL [21]. ........................... 47 FIGURA 18 – ÍCONE DEFAULT E UM PAINEL DE CONEXÃO [24]. ......... 48 FIGURA 19 - TELA DE SOFTWARE DE CAPTURA DE MOVIMENTO, LADO
DIREITO CÂMERA DE CAPTURA DE MOVIMENTO [28]. ............... 50 FIGURA 20 - EQUIPAMENTO PARA CAPTURA DE MOVIMENTO NO MODO
MECÂNICO [29]. ..................................................................... 51 FIGURA 21 - CONTROLE DO SYSTEM WII [30]. ................................. 52 FIGURA 22 –MICROSOFT KINECT [32]. ............................................ 54 FIGURA 23: DIAGRAMA DO SENSOR DE PROFUNDIDADE DO KINECT
[32]. ..................................................................................... 57 FIGURA 24 - COORDENADAS DE ESQUELETO DO USUÁRIO [36]. ....... 58 FIGURA 25: DIAGRAMA FUNCIONAL [37]. ......................................... 60
FIGURA 26: PRIMEIRO BRAÇO ROBÓTICO [37]. ................................ 62 FIGURA 27: MODELO BUIL-ROBOTARM (9695) [38]. ....................... 63 FIGURA 28: MODELO DESENVOLVIDO [37]. ..................................... 63 FIGURA 29: ANÁLISE DO BRAÇO ROBÓTICO [37] ............................. 64 FIGURA 30: MEDIDAS DE ABERTURA DA GARRA [37]. ....................... 65 FIGURA 31: ENGRENAGENS EIXO DE ROTAÇÃO [37]. ....................... 66 FIGURA 32: ENGRENAGENS DO EIXO DE ELEVAÇÃO [37]. ................ 66 FIGURA 33: ESTRUTURA DE UM SERVOMOTOR LEGO MINDSTORMS
[41]. ..................................................................................... 67 FIGURA 34: CONTROLADOR NXT DO KIT LEGO [41]. ....................... 68 FIGURA 35: A FUNCIONALIDADE DO KINESTHESIA [43]. ................... 71 FIGURA 36: PROGRAMA DO KINESTHESIA TOOLKIT BAIXADO DA NI
[37]. ..................................................................................... 72 FIGURA 37: CONFIGURAÇÃO DE ENTRADA DO KINSTHESIA TOOLKIT
[37]. ..................................................................................... 73 FIGURA 38: LOOP WHILE E COMPONENTES [37]. ............................. 74 FIGURA 39: VI KINECT CLOSE [37]. ................................................ 74 FIGURA 40: PROGRAMAÇÃO EM MALHA ABERTA [37]. ...................... 77 FIGURA 41: CINCO ETAPAS DA PROGRAMAÇÃO [37]. ....................... 78 FIGURA 42: FLUXOGRAMA DE POSICIONAMENTO DA GARRA E EIXO DE
ELEVAÇÃO DO BRAÇO ROBÓTICO [37]. .................................... 82 FIGURA 43: FLUXOGRAMA DE POSICIONAMENTO DO EIXO DE ROTAÇÃO
DO BRAÇO ROBÓTICO [37]. .................................................... 82 FIGURA 50: FLUXOGRAMA DE REPRESENTAÇÃO DA ETAPA 3 [37]. ... 85 FIGURA 51: PROGRAMAÇÃO DE SEGURANÇA DE POSICIONAMENTO DO
BRAÇO ROBÓTICO [37]. .......................................................... 87 FIGURA 52: PAINEL FRONTAL [37] .................................................. 88 FIGURA 53: PAINEL FRONTAL INFORMAÇÕES DE ROTAÇÃO [37]. ...... 89
LISTA DE ABREVIATURAS E SIGLAS
3D – Três dimensões ABB IRB – Asea Brown Boveri Industrial Robots AGV - Automated Guided Vehicle System ou Sistema de Veículo Guiado Automaticamente. API - Interface para programação de aplicativo CCD - Charge-coupled device ou dispositivo de carga acoplada DMO - DirectX Media Object FPS - Frames Per Second ou Quadros por Segundo GDL - Graus de liberdade IR – Infravermelho MoCap - (Motion Capture) ou captura de movimento NUI - interfacenatural do usuário PUMA - Programmable Universal Machine for Assembly R.I.A - Robotics Industries Association (Associação de Robôs Industriais). RF - Modulated light ou luz modulada RGB - Vermelho (Red), Verde (Green) e Azul (Blue) SCARA - Selective compliance assembly robot arm ou cumprimento seletivo robô conjunto do braço. SDK - Software Development Kit ou Kit de desenvolvimento de aplicativos TOF - Time-of-Flight ou tempo de voo USB - Universal Serial Bus
SUMÁRIO
1. INTRODUÇÃO ................................................................................ 29
1.1 CONTEXTUALIZAÇÃO .............................................................................. 29 1.2 OBJETIVO GERAL ............................................................................... 30 1.3 OBJETIVO ESPECÍFICO ......................................................................... 30
2. REVISÃO BIBLIOGRÁFICA............................................................... 33
2.1 BREVE HISTÓRIA DA ROBÓTICA ................................................................. 33 2.2 DEFINIÇÃO DE ROBÔ .............................................................................. 34 2.3 CLASSIFICAÇÃO DOS ROBÔS ..................................................................... 35 2.3.1 CLASSIFICAÇÃO DO SISTEMA DE CONTROLE .............................................. 35 2.3.2 CLASSIFICAÇÃO CONFORME O TIPO DE MOBILIDADE ................................... 36 2.3.3 CLASSIFICAÇÃO SEGUNDO A ESTRUTURA CINEMÁTICA ................................. 37 2.3.3.1 ROBÔS SERIAIS ................................................................................ 37 2.3.3.1.1 ROBÔS DE COORDENADAS CARTESIANAS ............................................ 37 2.3.3.1.2 ROBÔS DE COORDENADAS CILÍNDRICAS ............................................. 38 2.3.3.1.3 ROBÔS DE REVOLUÇÃO ARTICULADA ................................................. 39 2.3.3.1.4 ROBÔS DE COORDENADAS ESFÉRICAS ................................................ 39 2.3.3.1.5 ROBÔ SCARA ............................................................................... 40 2.3.3.2 ROBÔS PARALELOS .......................................................................... 40 2.3.4 CLASSIFICAÇÃO SEGUNDO GRAUS DE LIBERDADE ....................................... 41 2.3.4.1 ELOS ............................................................................................. 41 2.3.4.2 JUNTAS .......................................................................................... 42 2.3.4.3 GRAUS DE LIBERDADE ....................................................................... 43 2.4 BRAÇOS ROBÓTICOS ............................................................................... 44 2.5 LABORATORY VIRTUAL INSTRUMENT ENGINEERING (LABVIEW) ..................... 45 2.6 CAPTURA DE MOVIMENTO ...................................................................... 49 2.6.1 SISTEMAS ÓPTICOS ............................................................................. 49 2.6.1.1 COM MARCADORES ......................................................................... 50 2.6.1.2 SEM MARCADORES .......................................................................... 50 2.6.2 SISTEMAS NÃO ÓPTICOS ...................................................................... 50 2.6.2.1 MAGNÉTICO ................................................................................... 51 2.6.2.2 MECÂNICO ..................................................................................... 51 2.6.3 PLATAFORMA WII ............................................................................... 51 2.6.4 CAPTURA DE IMAGEM POR CÂMERAS DE PROFUNDIDADE ............................ 52
2.6.4.1 O MÉTODO ATIVO ............................................................................ 52 2.6.4.2 O MÉTODO PASSIVO ......................................................................... 53 2.6.5 VISÃO 3D ......................................................................................... 53 2.6.6 DISPOSITIVO KINECT............................................................................ 54 2.6.6.1 ACELERÔMETRO .............................................................................. 55 2.6.6.2 EIXO MOTORIZADO .......................................................................... 55 2.6.6.3 CÂMERAS KINECT ............................................................................. 56 2.6.6.4 SENSOR DE PROFUNDIDADE DO KINECT ................................................ 56 2.6.6.5 FLUXO DE ESQUELETO DO USUÁRIO ..................................................... 57
3. DESENVOLVIMENTO ........................................................................... 59
3.1 DIAGRAMA FUNCIONAL ........................................................................... 59 3.2 ESTRUTURA DO BRAÇO ROBÓTICO ............................................................. 60 3.2.1 MATERIAL ADOTADO .......................................................................... 61 3.2.2 MONTAGEM ...................................................................................... 61 3.2.3 CÁLCULO DE GRAUS DE LIBERDADE ......................................................... 63 3.2.4 TRANSMISSÃO DE MOVIMENTOS ........................................................... 64 3.2.5 SERVOMOTORES ................................................................................. 67 3.2.6 CONTROLADOR NXT ........................................................................... 67 3.3 SOFTWARES DE CONTROLE ....................................................................... 68 3.3.1 VISUAL STUDIO .................................................................................. 68 3.3.2 MICROSOFT ROBOTICS DEVELOPER STUDIO 4 (RDS) ................................. 69 3.3.3 LABVIEW FOR LEGO ........................................................................... 69 3.4 CAPTURA DE MOVIMENTO ....................................................................... 70 3.4.1 DISPOSITIVO KINECT............................................................................ 70 3.4.2 KINESTHESIA ...................................................................................... 71 3.4.2.1 FUNCIONAMENTO DO PROGRAMA DO KINESTHESIA ................................ 72 3.5 COMUNICAÇÃO ..................................................................................... 74 3.6 PROGRAMAÇÃO .................................................................................... 75 3.6.1 RECONHECIMENTO DE DADOS (KINECT/LABVIEW) ................................... 75 3.6.2 PROGRAMAÇÃO EM MALHA ABERTA (1º PROGRAMA) ................................ 76 3.6.3 PROGRAMAÇÃO EM MALHA FECHADA (2º PROGRAMA) .............................. 78 3.6.3.1 POSICIONAMENTO INICIAL E FINAL DO BRAÇO ROBÓTICO ......................... 79 3.6.3.2 PROGRAMAÇÃO POR CAPTURA DE MOVIMENTOS (KINECT) ...................... 82 3.6.4 PAINEL FRONTAL ................................................................................ 88
4. EPÍLOGO ............................................................................................. 91
4.1 MONTAGEM DO BRAÇO ROBÓTICO ............................................................ 91 4.2 ELABORAÇÃO DA PROGRAMAÇÃO ............................................................. 92
4.3 ANÁLISE DO CONJUNTO (SOFTWARE E HARDWARES) .................................... 93 4.4 CONSIDERAÇÕES FINAIS .......................................................................... 94 4.5 OPORTUNIDADES DE MELHORIA ................................................................ 95
REFERENCIAS.......................................................................................... 97
ANEXO A – DIAGRAMA DE BLOCOS DO PROGRAMA DE CONTROLE DE UM BRAÇO ROBÓTICO. ............................................................................... 105
29
1. INTRODUÇÃO
1.1 Contextualização Os robôs em geral são pensados e projetados visando auxiliar o humano na realização de determinadas tarefas como atividades repetitivas, perigosas ou cansativas. O desenvolvimento de um robô não é uma simples tarefa por envolver múltiplas áreas da engenharia, principalmente mecânica, eletrônica, instrumentação, controle e automação. Com o surgimento de novas tecnologias onde encontramos a união de diversos tipos de dispositivos robóticos, surge á robótica e a Mecatrônica (mecânica + eletrônica) que estuda estes dispositivos [1]. Atualmente, os robôs estão ganhando espaço e se tornando uma realidade muito próxima dos humanos. Os estudos de robôs podem ser direcionados para diferentes áreas de atuações, como: identificação de resíduos tóxicos e pontos de risco, viagens aeroespaciais para exploração de novos ambientes, verificação em ambientes industriais para detecção de altas temperaturas e radiação, desarme de bombas e limpeza de reatores nucleares, na área da saúde ajudando ao combate de grandes epidemias, no caso de pacientes contagiados onde o médico não pode ter contato direto com o mesmo. A criação de um controle estratégico para que um robô possa executar uma sequencia de operações é bastante complexa [2]. Mas afinal, o que realmente é um robô? Conseguimos controlá-los através de nossos próprios movimentos? A Associação de Robôs Industriais (Robotics Industries Association – R.I.A), define que “Robô é um manipulador reprogramável e multifuncional projetado para mover materiais, partes, ferramentas ou dispositivos especializados através de movimentos variáveis programados para desempenhar uma variedade de tarefas” [3]. Esse trabalho apresenta o desenvolvimento de um braço robótico a partir de kits Lego educacionais muito utilizados em univesidades para pesquisas e desenvolvimento da robótica.
30
Esse braço robótco é guiado por captura de movimento (Kinect) e um programa de computador ao qual o braço robótico está conectado. O trabalho foi desenvolvido no Instituto Federal de Santa Catarina - IFSC como Trabalho de Conclusão de Curso (TCC). Seu principal foco é a aplicação da tecnologia de captura de movimentos, reduzindo esforços físicos, fazendo com que as pessoas tenham menos contato com materiais e situações de risco. Onde foi desenvolvida uma aplicação em mecatrônica de um braço robótico, controlado através de movimentos dos membros superiores de qualquer usuário, utilizando um dispositivo de captura de movimentos em conjunto com a plataforma LabVIEW. Busca-se também novas tecnologias e processos de aprendizagem a partir de pesquisas de materiais, recursos tecnológicos, softwares etc. Contemplando a integração entre as áreas de programação, mecânica, eletrica e robótica. Nos tópicos a seguir apresentam-se a revisão bibliográfica, a apresentação do resultado prático e as recomendações para desenvolvimento de novas pesquisas com o intuito de conclusão ou melhoria da prática apresentada. 1.2 Objetivo Geral Aplicar a tecnologia de captura de movimentos para redução de esforços físico e/ou contatos com materiais e/ou situações de risco, desenvolvendo uma programação capaz de controlar um braço robótico através de movimentos executados por um usuário. 1.3 Objetivo específico
Pesquisas bibliográficas disponível de classificação de braços robóticos, dispositivos de captura de movimentos e plataformas de programação.
31
A integração entre diferentes módulos, sendo: captura de
movimentos, processamento da informação e comando do dispositivo físico.
Construção de um modelo de braço robótico através do kit leg.
32
33
2. REVISÃO BIBLIOGRÁFICA Neste capítulo são tratadas as pesquisas relacionadas ao tema “Controle de um Braço Robótico por meio de Captura de Movimento”, dando enfoque à robótica, plataforma LabVIEW e captura de movimentos. 2.1 Breve história da Robótica O termo robótica aparece em 1942 na obra “Runaround” de Isaac Asimov, tendo como referência a peça teatral robota escrita em 1920 por Karel Capek [4]. Apesar de já se falar em seres artificiais desde as lendas antigas e na mitologia grega clássica, fontes (duvidosas) relatam que no séc. II a.C. eram construídas “aves mecânicas” em Alexandria [5]. Mais foi somente em 1954 que surgiu o primeiro robô automático, criado por George Devol que considera a robótica uma área da tecnologia que estuda, desenvolve e aplica robôs em suas mais diversas instâncias [6]. Klipp; (2013) diz que,
“A partir da revolução industrial, após a segunda guerra mundial, os robôs começaram a ser empregados de forma mais ostensiva em indústrias, área onde encontraram maior dimensão de aplicabilidade, com a substituição do trabalho braçal por estruturas mecânicas sobre bases fixas, braços mecânicos ou braços manipuladores” [7].
A robótica é uma área que vem se desenvolvendo muito nas últimas décadas. A cada ano surgem novas tecnologias que transformam os processos industriais realizados por humanos, em processos somente executados por robôs. Na maioria das vezes os robôs são utilizados para executar os trabalhos de maior risco e complexidade, ou a fim de acelerar processos, mas aos poucos até as atividades mais rotineiras no âmbito industrial passam a ser robotizadas [8]. Pereira; (2010) cita que:
34
“Robôs são hoje instrumentos fantásticos criados pelo homem e usados a seu serviço. Estas máquinas são usadas nas mais diversas áreas e com as mais diversas finalidades, interagindo e se adaptando ao meio. São utilizados para substituir o homem em trabalhos de riscos ou inacessíveis, ou mesmo para oferecer comodidade e liberar o homem para praticar outras atividades de sua preferência, como o lazer e descanso” [8].
Com o avanço da robótica houve um grande crescimento industrial. A automatização das máquinas permitiu a redução do número de empregados necessários para o desenvolvimento de algumas tarefas. A linha produtiva ganhou em rapidez e agilidade, e em alguns casos eliminando o risco de acidentes.
2.2 Definição de Robô Pode-se afirmar que as definições do que é um robô são as mais variadas possíveis, para esse trabalho se utiliza como referência apenas duas delas: O Instituto Americano de Robótica; (RIA)
"Um robô industrial é um manipulador reprogramável, multifuncional, projetado para mover materiais, peças, ferramentas ou dispositivos específicos em movimentos variáveis programados para a realização de uma variedade de tarefas" [3].
Rosário; (2005): “Um robô consiste em um braço mecânico motorizado programável que apresenta algumas características antropomórficas e um cérebro da forma de um computador que controla seus movimentos” [9].
Com base nas definições citadas, robô é todo mecanismo cujo movimento é previamente programável através de um
35
cérebro artificial, que determina a execução de uma enorme variedade de atividades e de forma automática. 2.3 Classificação dos Robôs A classificação dos Robôs se dá através de vários critérios como: geometria do espaço de trabalho, estrutura cinemática, autonomia do sistema de controle, mobilidade da base, forma de acionamento, graus de liberdade, entre outros como mostrado na figura 01 [10].
Figura 01: Classificação dos Robôs [10].
A seguir será efetuada uma breve descrição das classificações dos robôs. 2.3.1 Classificação do sistema de controle
Para executar corretamente um processo é necessário um sistema correto de controle, conforme cita Lizarralde; (2007):
36
“A tarefa de executar corretamente o movimento do efetuador é atribuída ao sistema de controle que fornece aos atuadores das juntas do manipulador, comandos compatíveis com a trajetória do movimento desejado. O projeto de controle de movimento do manipulador exige a análise das características da estrutura mecânica, dos atuadores e dos sensores” [11].
Conforme exposto, entende-se que o robô deve ser programável conforme as tarefas que irá executar. Porém para isso deve-se analisar sua mobilidade, estrutura cinemática, graus de liberdade e os seus tipos de acionamentos, descritos nos tópicos a seguir. Desta maneira se obterá o melhor controle sobre o robô. 2.3.2 Classificação conforme o tipo de mobilidade A mobilidade dos robôs depende do número de elos e articulações que o mesmo possui. Existem basicamente dois tipos de robôs. Os de base fixa (manipuladores braços robóticos) divididos em seriais ou paralelos comentados no tópico 2.3.3, que é proposto nesse trabalho e ilustrado na figura 02, e os de base móvel que tem como característica principal a autonomia de se locomover, neste caso são todos os robôs que atuam em áreas terrestres, aéreas e aquáticas, alguns exemplos são mostrados na figura 03 [10] [12].
Figura 02- Manipulador Robótico [13].
37
Figura 03 – Robô Móvel Humanoide (Esquerda) Robô com Rodas (Direita)
[10].
2.3.3 Classificação segundo a estrutura cinemática Esse trabalho evidencia apenas os robôs de bases fixas, que estão divididos em dois grupos de acordo com sua estrutura cinemática. Os de cadeia cinemática fechada (Paralelos), que se diferem segundo seus movimentos, normalmente de três a seis movimentos livres, esses movimentos são chamados de graus de liberdade e descritos nesse trabalho no tópico 2.3.4.3. Já os robôs de cadeia cinemática aberta (Seriais) são identificados por robôs cartesianos, robôs cilíndricos, robôs articulados, robôs esféricos e robô scara detalhados nos tópicos a seguir [10] [14]. 2.3.3.1 Robôs seriais 2.3.3.1.1 Robôs de coordenadas cartesianas Robôs cartesianos são conhecidos por se movimentar sobre os três eixos cartesianos, ou seja, vertical, horizontal e profundidade (X Y Z). Vale apena salientar que esses robôs possuem uma alta rigidez mecânica e só atuam em áreas pequenas. Devido a essas características seu controle é simples.
38
Seu atuador possui alta precisão em razão de seus movimentos lineares e do seu momento de inércia sobre a carga, que permanece sempre fixo em todo espaço de atuação do robô. A figura 04 mostra o modelo de um robô cartesiano [14].
Figura 04 – Robô cartesiano [10].
2.3.3.1.2 Robôs de coordenadas Cilíndricas Sua principal característica é possuir movimentos lineares, esses movimentos podem ser combinados com movimentos rotacionais e descrever uma trajetória em torno de si próprio. Geralmente a junta de rotação se encontra na cintura do robô e seus movimentos lineares são realizados através de juntas deslizantes conforme mostra a figura 05 [14].
Figura 05 – Robô cilíndrico [10].
39
2.3.3.1.3 Robôs de revolução articulada Esses robôs possuem seus movimentos semelhantes ao de um braço humano. São utilizados em grande escala nas indústrias automobilísticas, possuem baixa rigidez mecânica e sua área de trabalho é a maior se comparando com outros modelos de robôs seriais. Porém, seu controle é complicado devido às variações nos momentos de inércia sobre a carga. A figura 06 ilustra a forma de um robô articulado [14].
Figura 06 – Robô Articulado [10].
2.3.3.1.4 Robôs de coordenadas esféricas Os robôs de coordenadas esféricas também são conhecidos como robôs de coordenadas polares, estes modelos apresentam dois movimentos rotacionais, normalmente na cintura e no ombro e um terceiro movimento que é linear conforme mostrado na figura 07 [14].
Figura 07 – Robô Esférico [15].
40
2.3.3.1.5 Robô Scara Este robô foi desenvolvido para montagem com flexibilidade seletiva, ou seja, é um dispositivo compatível com as linhas de manufaturas que necessitam de pouco espaço. Este robô possui um eixo com movimento linear vertical que manipula sua ferramenta, mostrado na figura 08. Robôs Scara possuem baixo número de graus de liberdade, porém alta eficiência em manipular produtos nas indústrias. Geralmente encontra-se no mercado robôs Scara de três a cinco graus de liberdade [12] [14].
Figura 08 – Robô Scara [10].
2.3.3.2 Robôs Paralelos Conforme Cordeiro; (2012) diz que:
“Robôs paralelos são sistemas mecânicos que usam diversos tipos de atuadores em paralelo para controlar a posição do efetuador e suas derivas. São conhecidos por serem rígidos e robustos em relação a movimentos indesejáveis. O braço não necessita de juntas rotacionais podendo ser sólido. São máquina mais precisas. Sua grande desvantagem é que sua área de atuação é limitada” [16].
A figura 09 mostra três concepções de robôs paralelos.
41
Figura 09 – Robô Delta (Direita) robô Tricept (Centro) e robo Orthoglide
(Esquerda) [10].
2.3.4 Classificação segundo Graus de liberdade Todo robô é dimensionado com um propósito de atingir alguma posição ou orientação no espaço de trabalho. Para isso, ele precisa obter alguns movimentos livres no qual se denomina graus de liberdade (GL). Para entender como se distingue quantos GL possui um robô, precisa-se entender como se constitui um robô [17].
2.3.4.1 Elos Também conhecido como link, o elo de um sistema robótico pode ser definido como sendo um corpo rígido com dois ou mais elos. Através desses pode-se conectar outros corpos, e dependendo do número de elos, podemos classificá-los como binários, ternários ou quaternários conforme mostra a figura 10 [18].
42
Figura 10 – Elo Binário (Esquerda), Elo Terciário (Centro) e Elo Quaternário
(Direita) [18].
2.3.4.2 Juntas Dada definição apresentada por Bonifácio; (2013),
“Junta é o elemento que conecta dois corpos e que permite transmissão de força ou torque. Atuam como restrições geométricas. Par de superfícies mantidas permanentemente em contato de tal forma a produzir um movimento relativo bem definido entre elas” [18].
As juntas possuem contato inferior ou superior. A junta de contato inferior acontece quando o contato é a própria superfície mostrada na figura 11, já a junta de contato superior é aquela cujo seu contato se faz por meio de um ponto ou uma linha, mostrada na figura 12. Elas ainda podem ser rotativa, prismática, cilíndrica, esférica, parafuso e planar. Alguns exemplos são ilustrados na figura 13 [18].
Figura 11 – Junta de Contato Inferior Rotativa (Esquerda), Junta de Contato
Inferior Deslizante (Direita) [18].
43
Figura 12 – Junta de Contato Superior por Ponto (Esquerda), Junta de Contato Superior por linha (Direita) [18].
Figura 13 – Tipos de juntas [17].
2.3.4.3 Graus de liberdade Grau de liberdade é o que determina quantos movimentos um determinado mecanismo pode realizar em um espaço bidimensional ou tridimensional. As juntas definem a quantidade de graus de liberdade, podendo ter um ou dois graus de liberdade. Fazendo a somatória dos graus de liberdade de todas as juntas, será igual ao número de graus de liberdade que o mecanismo possuirá. Quando o movimento relativo ocorre em um único eixo, a junta tem um grau de liberdade; caso o movimento se dê em mais de um eixo, a junta tem dois graus de liberdade, conforme é apresentado na figura 14 [17].
44
Figura 14 – Braços com um (esquerda) e dois graus de liberdade (direita)
[17].
2.4 Braços robóticos
Um braço robótico é capaz de reproduzir diversos movimentos humanos, pois possui vários eixos de deslocamento, que agregado ao recurso de um computador consegue realizar programas de diversas finalidades [17]. Por realizar movimentos no espaço, o braço robótico consegue transferir ferramentas ou objetos de um lugar para outro conforme sua programação, baseando-se sobre o ambiente através de sensores [17]. O braço robótico é composto pelo braço e pulso. No braço encontram-se os elos unidos por juntas com movimentos relativos e acoplados a acionadores, que produzem estes movimentos. O punho possui varias juntas próximas entre si, que realiza a posição correspondente à tarefa a ser realizada. Ao final do punho encontra-se a garra ou ferramenta destinada a aplicação exigida. A figura 15 ilustra as partes que compõe um braço robótico [17].
Figura 15 – Braços robótico [19].
45
2.5 Laboratory Virtual Instrument Engineering (LabVIEW) De acordo com Bottaro; (2012),
“O LabVIEW é uma linguagem de programação
gráfica, “G”, que possibilita a criação de testes (simulação), medição, aquisição de dados (DAQ), controle de instrumentos, armazenamentos de dados, análise de dados e geração de relatórios, podendo também criar programas executáveis e bibliotecas
compartilhadas, como DLLs [20].
O LabVIEW é uma plataforma que se diferencia das demais plataformas por utilizar uma linguagem de programação gráfica “G”. Essa linguagem é utilizada para criar programas em diagrama de blocos, diferente de outras plataformas, que fazem o uso de linguagens baseadas em texto que criam linhas de código [19]. Com ela também é possível construir uma interface de operação, semelhante a um painel de controle, onde a partir das representações gráficas, são realizados os controles de objetos visualizados no painel frontal do programa, que se assemelham a um fluxograma [20] [21]. Também possui suporte para comunicação com diversos hardwares, como GPIB, VXI, PXI, RS-232, RS-485 e dispositivos DAQ plug-in, e possui também recursos internos para conectar as aplicações à Internet, utilizando o LabVIEW Web Server e aplicativos como ActiveX e redes TCP/IP, conforme mostra figura 16 [20] [21].
46
Figura 16 – Opções de Conexões de Hardware do LabVIEW [20].
Os Programas desenvolvidos em LabVIEW são chamados de virtual instruments (VI’s) por causa do seu aspecto e operação, que possibilitam uma interface para o usuário semelhante a instrumentos físicos. Entretanto, VI’s são semelhantes às funções dos programas com linguagens convencionais [21]. No painel frontal podem-se visualizar controles e indicadores, que são terminais interativos de entrada e saída do VI, respectivamente [21]. Os controles simulam dispositivos de entrada de instrumentos e fornecem dados para o diagrama de bloco do VI. Os indicadores podem ser gráficos, LEDs e outros displays, que simulam dispositivos de saída dos instrumentos e exibem os dados que o diagrama de blocos fornece [21] [22]. A paleta de Controle é utilizada apenas no painel frontal e reúne os controles e indicadores utilizados para criar a interface VI com o usuário [21] [22]. A figura 17 exemplifica um modelo de painel frontal.
47
(1) Janela do painel frontal | (2) Barra de ferramentas | (3) Paleta de controles
Figura 17 – Exemplo de painel frontal [21].
Todo VI recebe instruções (códigos) de um diagrama de blocos que através das representações gráficas de funções, controlam os objetos localizados no painel frontal. Os objetos do diagrama de blocos incluem terminais, subVIs, funções, constantes, estruturas e ligações, que transferem dados entre outros objetos do diagrama de blocos [24]. Os VI’s utilizam um sistema hierárquico e uma estrutura modular, podendo criar programas compostos com nível superior de programas, ou com subprogramas dentro de outros programas. Um subVI corresponde a uma sub-rotina em comparação com programas que utilizam linguagens de programação baseadas em texto [21]. Todos os VI’s exibem um ícone. Esse ícone é a representação gráfica de um VI, nele pode-se conter texto, imagens ou uma combinação de ambos [21]. O painel de conectores, conforme ilustrado na figura 18, é um conjunto de terminais que corresponde aos controles e indicadores do VI. São semelhantes a uma lista de parâmetros de uma determinada função em linguagem de programação baseada em texto. O painel de conectores define as entradas e saídas que podem ser ligadas ao VI para que este possa ser utilizado como um subVI. O painel de conectores recebe dados
48
em seus terminais de entrada e os transferem para o código do diagrama de bloco através dos controles do painel frontal, recebendo os resultados em seus terminais de saída nos indicadores do painel frontal [21].
Figura 18 – Ícone default e um Painel de conexão [24].
Por fim, os ícones de nível superior VI contém uma coleção de subVIs que representam funções do aplicativo. É possível executar cada subVI separadamente, dividindo-se do resto da aplicação [20] [24] [25]. Com tudo, muitos ícones de baixo nível das subVIs, executam diversas tarefas que podem ser utilizadas para várias aplicações, de modo que pode ser desenvolvido um conjunto especializado de subVIs adequado para cada situação de aplicação [20] [24] [25]. Em se tratando de estruturas das VI pode-se comentar que: Existem duas estruturas para repetir a execução de um subdiagrama, o While Loop e Loop For. Diferente do While Loop, o Loop For é executado de acordo com a quantidade de vezes que lhe é solicitada [25], enquanto que um loop while é uma demonstração de fluxos de controle que se usa para executar um bloco de código repetidamente até que uma determinada condição seja atendida. Uma estrutura do tipo Case tem um ou mais subdiagramas, ou casos. Somente um subdiagrama é mostrado na tela por vez, e a estrutura executa apenas um caso por vez. O valor ligado ao terminal do seletor determina que caso será executado, podendo ser booleano, string, inteiro, ou tipo enumerado [25].
49
Uma Sequence Structure é uma estrutura de controle do programa que executa seus subdiagramas em ordem numérica [25] [26]. “Nós” são objetos do diagrama de blocos. Eles posuem entradas e/ou saídas e executam operações quando um VI é executado [22]. Uma arrays é uma coleção redimensionável de elementos de dados do mesmo tipo e são formados por elementos e dimensões. Elementos são os pontos de dados que formam o array. Uma dimensão é o comprimento ou profundidade de um array [26]. Um cluster é uma coleção de elementos dos mesmos ou diferentes tipos de dados como por exemplo um feixe de fios, onde cada fio no cabo representa um elemento diferente do aglomerado [20]. Os gráficos são comumente usados para exibir dados. Normalmente estes dados são coletados em um Array e então reproduzidos em forma gráfica [20].
2.6 Captura de Movimento
Captura de movimento ou MoCap (motion capture) é o processo de capturar os movimentos de um objeto no espaço físico e transferir esses movimentos para o espaço virtual. A captura de movimentos se faz através da leitura de dados como posicionamento, velocidade, aceleração e ângulos do objeto. Existem vários processos para se obter a captura de movimento, como sistemas ópticos, sistemas não ópticos, plataforma wii e Kinect [27]. 2.6.1 Sistemas Ópticos
Os sistemas ópticos capturam os movimentos através de câmeras conectadas a um computador. Possui dois tipos de sistemas que são: com marcadores ou sem marcadores [25].
50
2.6.1.1 Com Marcadores
Nesse processo são colocados marcadores no objeto e filmado com uma câmera acoplada a um computador para fazer a detecção do objeto. Os marcadores podem ser emissores de luz ou refletores de luz infravermelha. A figura 19 mostra uma imagem do software de captura de movimento e um modelo de câmera do processo de sistemas não ópticos com marcadores [27].
Figura 19 - tela de software de captura de movimento, lado direito câmera
de captura de movimento [28].
2.6.1.2 Sem Marcadores
A captura de movimentos sem marcadores é feita de forma simples, onde se compara duas imagens estáticas em sequência como em um filme. Esse processo emprega a visão computacional e processamento de imagens [27].
2.6.2 Sistemas Não Ópticos
Sistemas de captura de movimento não ópticos não utilizam câmeras, utilizam outros dispositivos para fazer o processo de captura de movimento do objeto, podem ser realizado através de dispositivos magnéticos ou mecânicos [27].
51
2.6.2.1 Magnético
Nesse processo é utilizado sensores que são colocados no objeto para capturar seus movimentos. Essa captura é feita através da distância entre os sensores com um transmissor magnético [27]. 2.6.2.2 Mecânico Nesse processo a captura de movimento é feita através de um dispositivo similar a um esqueleto, esse dispositivo é colocado nas juntas do corpo de uma pessoa e ligado a um potenciômetro. Quando a pessoa se movimenta o potenciômetro mede os ângulos das junções do corpo e envia as informações para um computador. A figura 20 mostra um exemplo de equipamento de captura de movimento de modo mecânico [27].
Figura 20 - Equipamento para captura de movimento no modo mecânico
[29].
2.6.3 Plataforma Wii
O system wii é um processo que possui um controle sem fio para captura de movimento. O controle é dotado de um emissor infravermelho e um acelerômetro que detecta os
52
movimentos em três dimensões (X, Y e Z). A posição do controle e sua movimentação são captadas por uma câmera de sensor infravermelho localizado próximo a tela do computador ou televisão do usuário. A figura 21 mostra um controle do system wii [30].
Figura 21 - Controle do system Wii [30].
2.6.4 Captura de imagem por câmeras de profundidade
As câmeras de profundidade capturam as imagens através da distância entre as câmeras em relação ao ponto do objeto. Elas utilizam dois métodos para obter as informações de profundidade que são o método ativo e o método passivo [27] [31]. 2.6.4.1 O método ativo
O método ativo utiliza aparelhos como emissor infravermelho, sensor de laser e sensor de padrão de luz. A captura ativa possui distância de profundidade máxima restringida e baixa resolução, porem permite a utilização de aplicações em tempo real. Existem dois processos de captura ativa, que são, captura através de sensores de padrões de luz e captura por "Time-of-Flight" (tempo de vôo) [27] [31]. O "Time-of-Flight" utiliza a emissão de ondas e a recepção da reflexão do pulso. Para isso o sensor envia um
53
pulso e contabiliza o tempo necessário para receber o sinal refletido em cada um dos pontos da imagem simultaneamente [27] [31]. O tempo que o pulso leva para atingir o sensor e refletí-lo é diretamente proporcional à distância dos objetos. Há diversos processos na captura de profundidade de imagens que utilizam o tempo de vôo “ToF”, como, o pulso de fonte de luz, a luz modulada e o ranged. Elas se diferenciam umas das outras devido ao tipo de feixe de luz utilizado [27] [31]. 2.6.4.2 O método passivo
O método passivo utiliza duas ou mais câmeras para fazer a captura de imagem. Esse método emprega muitos recursos computacionais, pois é necessário conseguir a estimativa da distância fazendo a intercalação entre as imagens [27] [31]. Existem algumas vantagens das câmeras de profundidade sobre as câmeras tradicionais, como a facilidade do processamento de imagem e a exibição de objeto através do formato [27] [31].
2.6.5 Visão 3D
A imagem tridimensional ou visão 3D copia a maneira dos animais enxergarem. É gerada porque cada um de nossos olhos vê uma imagem simultânea ligeiramente diferente (chamado de paralaxe), o nosso cérebro une essas imagens gerando a sensação de imagem tridimensional. Para captura de imagem utiliza duas câmeras, onde cada uma gera uma imagem. Um software processa as informações do objeto entre essas imagens geradas por essas câmeras, gerando assim a imagem tridimensional [31].
54
2.6.6 Dispositivo Kinect
O kinect é um dispositivo com sensor de movimento fabricado pela Microsoft que permite que o usuário não precise de joystick para interagir com jogos [32]. Segundo LaBelle (2011),
“O Kinect é um dispositivo que vai muito além das tentativas anteriores de criar um controle baseado na captura de movimentos, usando a captura de vídeo, áudio e sensores de profundidade o Kinect é capaz de detectar movimentos, identificar rostos, reconhecer voz e sons e o discurso de jogadores, o que proporciona aos mesmos a utilização dos seus próprios corpos como controles. Ao contrário dos demais dispositivos do tipo, ele não requer um acessório com acelerômetro ou dispositivo com o qual o jogador precise manter contato físico direto para operar” [32].
A figura 22 mostra um modelo de dispositivo Microsoft Kinect.
Figura 22 –Microsoft kinect [32].
O kinect possui sensores que percebem todos os movimentos do objeto a sua frente. Ele reconhece todo o corpo do objeto gerando um esqueleto digital através de informações
55
apanhadas de seus sensores, e enviam estas informações na forma digital, também registram movimentos no escuro. Hoje existem três modelos desses dispositivos que são o Kinect one, Kinect for Windows e Kinect for Xbox 360 [33]. O kinect for Windows possui microfones com melhores atributos e o recurso “Near Mode”, uma capacidade de perceber o usuário mais próximo ou na posição sentada. Possui também uma leitura de esqueleto melhor que os demais devido a modificações em seus algoritmos, melhor API (interface para programação de aplicativos), não necessita de adaptador, pois possui conexão USB e um hardware particular [33]. O kinect for 360 possui a principal diferença entre os sensores, que é seu cabo de comunicação com um adaptador. Esse adaptador possui um modelo de entrada único e específico que permite a comunucação com o computador [33]. O dispositivo kinect possui vários recursos como eixo motorizado, acelerômetro, sensor infravermelho, sensor RGB, emissor de luz infravermelho e alguns microfones. A figura 22 apresenta uma visão do interior do sensor com indicativos de onde estão localizados estes recursos [33]. 2.6.6.1 Acelerômetro
O acelerômetro é um dispositivo usado para medir a aceleração de um objeto. No kinect o acelerômetro faz medições nas três dimensões X, Y e Z, seu uso se aplica em todas as situações em que a orientação do sensor é alterada [34].
2.6.6.2 Eixo motorizado
Outra peça importante do kinect é seu eixo motorizado. Através dele pode-se alterar o ângulo de visão que o sensor capta no ambiente. Esse eixo se movimenta somente para cima e para baixo [35]. O kinect tem uma visão de 43,5 graus na vertical e 57.5 graus na horizontal. Com o eixo motorizado pode-
56
se alterar este ângulo da vertical em mais 27 graus para cima e 27 graus para baixo. [34]
2.6.6.3 Câmeras kinect
As câmeras do kinect atuam na qualidade da imagem e quantidade de fps (quadros por segundo) que o sensor processa. As câmeras detectam movimentos em 3D e gravam esta movimentação por meio de 24 fps [34] [35]. No formato RGB (red-green-blue) do kinect, cada pixel de imagem contem uma quantidade de cor vermelha, azul e verde. A cor do pixel é a soma desses três valores [34] [35]. No formato IR (infravermelho) surge uma imagem escura com vários pontos luminosos,esses pontos são lançados pelo emissor de luz infravermelho no ambiente. No formato IR vemos como o kinect “enxerga” o ambiente [34] [35].
2.6.6.4 Sensor de profundidade do kinect O sensor de profundidade possui uma faixa ajustável e se adapta independente do físico da pessoa como altura ou largura. Adaptam-se também as condições de ambiente como a iluminação. Ele é constituído de um sensor monocromático e um projetor de laser infravermelho que convertem as informações em dados de profundidade. A figura 23 mostra um diagrama de sensor de profundidade do kinect. [32] [33].
57
Figura 23: Diagrama do sensor de profundidade do Kinect [32].
2.6.6.5 Fluxo de esqueleto do usuário
Esqueleto do usuário é a capacidade do kinect de perceber o usuário e suas articulações, com ele podemos identificar as coordenadas X, Y e Z de qualquer parte do objeto. Seu esqueleto possui vinte articulações, onde cada uma tem suas próprias coordenadas. A figura 24 mostra onde se localizam as coordenadas de esqueleto do usuário. O kinect reconhece e identifica o esqueleto do usuário através de um conjunto de processamentos e sensores. Para fazer o reconhecimento de diversos biotipos de esqueletos, foi utilizado o sistema de motion capture (Mocap). Esse fluxo é o mais importante do kinect, pois toda aplicação do kinect consiste em movimentos [34].
58
Figura 24 - Coordenadas de esqueleto do usuário [36].
59
3. DESENVOLVIMENTO Esse capitulo apresenta etapas do trabalho e seu desenvolvimento está dividido em: diagrama funcional, estrutura do braço robótico, software de controle, comunicação e programação. 3.1 Diagrama funcional O diagrama funcional visa esclarecer o funcionamento do controle do braço robótico por meio de captura de movimento. O trabalho consiste em capturar os movimentos realizados por qualquer usuário, através do dispositivo Kinect. Os dados capturados pelo dispositivo são enviados para um computador através de uma porta USB. Os dados recebidos são processados pelo software LabVIEW, que de acordo com a programação (controle por malha fechada) estabelecida, envia e recebe dados ao controlador NXT da Lego por meio de outra porta USB. O NXT da Lego possui três saídas (A, B e C) ligadas aos servomotores, que possuem controle de posição por ser programado em malha fechada e que são responsáveis por executar os movimentos no braço robótico, conforme movimentos feitos pelo usuário. O diagrama funcional apresentado pela figura 25 exemplifica o ciclo do funcionamento desse trabalho.
60
Figura 25: Diagrama funcional [37].
Onde: (I) Usuário; (II) Dispositivo kinect; (III) Computador com plataforma LabVIEW; (IV) Controlador NXT da Lego; (V) Braço robótico. 3.2 Estrutura do braço robótico Nesse tópico será apresentada a estrutura do braço robótico, onde serão descritos o material adotado para esse projeto, a montagem do braço robótico, o cálculo de graus de liberdade, as relações de transmissão de movimento e componentes utilizados (servomotores e NXT).
61
3.2.1 Material Adotado O material adotado para montagem do braço robótico foi o kit Lego Mindstorms por estar disponível no IFSC. Esse kit é considerado uma ferramenta essencial para robótica educacional, possuindo enorme variedade de peças para montagens mecânicas. Também possui componentes para automação dessas montagens, como servomotores, sensores e controladores, por exemplo. É um material de fácil montagem, fácil manuseio e com uma estrutura final bastante agradável. Vale destacar que o trabalho esta focado no controle e não na estrutura física do braço em si. 3.2.2 Montagem Para montagem do braço robótico, foram tomados dois cuidados importantes. A primeira é analisar o peso das partes que compõe o braço robótico, pois quanto mais pesada for sua estrutura, maior será a potência que os servomotores deverão ter para movê-las. A segunda questão a ser vista é o centro de massa do braço robótico, esse deve ser bem localizado afim de não prejudicar sua movimentação. Inicialmente alguns modelos de braço robótico foram montados para realização de testes e análises, porém nenhum servia ao propósito desejado. A maioria não se enquadrava nas exigências mínimas de estrutura mecânica, por faltar componentes (engrenagens) essenciais para transmissão de movimento, ou possuiam centro de massa deslocado ou ainda arquitetura final não eficaz. A figura 26 mostra a primeira concepção do braço robótico desenvolvido para esse trabalho, que se mostrou ineficaz devido ao peso de sua garra.
62
Figura 26: Primeiro braço robótico [37].
Após várias montagens e testes, o último modelo desse trabalho é baseado ao modelo Buil-robotArm (9695) da Lego Mindstorms, porém com algumas alterações. A garra do modelo Buil-robotArm não pode ser produzida por falta de componentes no Kit Lego utilizado, e teve de ser modificada. A posição do servomotor que movimenta a cintura do braço robótico (rotação), também foi modificada, pois influenciava no movimento de elevação do braço robótico. Alterou-se também a posição do servomotor de elevação, a fim de eliminar o problema, porém sem ter êxito, o defeito ainda persiste. Após essas alterações, o modelo apresentado nesse trabalho é um manipulador articulado de 3 graus de liberdade (rotação, elevação e garra). O modelo possui três servomotores, um em cada eixo de movimentação, controlados por um controlador NXT da Lego e descritos mais adiante ainda nesse tópico. A figura 27 mostra modelo original Buil-robotArm (9695) da Lego, já a figura 28 mostra o modelo desenvolvido nesse trabalho.
63
Figura 27: Modelo Buil-robotArm (9695) [38].
Figura 28: Modelo Desenvolvido [37].
3.2.3 Cálculo de Graus de liberdade Para o cálculo de graus de liberdade adotou-se o critério de GRUEBLER E KUTZBACH [18]. (M = 3*(N − 1) − 2*P1 − P2) Onde: M = Número de Graus de Liberdade do Mecanismo;
64
N = Número total de Elos do mecanismo (incluindo o solo); P1 = Número de juntas com 1 Grau de Liberdade; P2 = Número de juntas com 2 Graus de Liberdade. A figura 29 mostra a análise realizada no levantamento de dados para cálculo do número de graus de liberdade do braço robótico desse trabalho. Sendo: N = 3 P1 = 1 P2 = 1 M = 3*(N − 1) − 2*P1 − P2 M = 3
Figura 29: Análise do Braço Robótico [37]
3.2.4 Transmissão de Movimentos A transmissão de movimentos desse modelo de braço robótico é realizada de duas maneiras. A transmissão direta pelo eixo do servo motor e a transmissão de movimento realizada por relação de engrenagens. A transmissão por engrenagens são responsáveis pela transferência de movimento de um eixo para outro [39]. No caso da garra, optou-se por um modelo de transmissão direta, que nesse modelo escolhido possibilita uma abertura máxima de aproximadamente151ᵒ. Para o cálculo de abertura da garra utilizou-se regras trigonométricas, baseando-se
65
através das medidas da garra do braço robótico. As barras laterais da garra desse trabalho medem 46,5mm enquanto que a medida da abertura total da garra é 90mm. Conforme mostra a figura 30.
Figura 30: Medidas de abertura da garra [37].
Onde:
Co = Cateto oposto ao ângulo (a ou b); H = Hipotenusa; a e b = ângulos desejada Temos: Co = 45; H = 46,5; Então: a= arcsin (Co/H); a= 75,407°; a=b; Portanto, o ângulo total de abertura é a somatória dos dois ângulos. Ɵ = a+b; Ɵ = 150,815°. Para o movimento do eixo de rotação do braço robótico, a transmissão de movimento se faz através de engrenagens como destaca a figura 31, onde a engrenagem acoplada ao eixo do servomotor possui vinte e quatro dentes (24t) e a engrenagem
66
que transmite o movimento de rotação do braço robótico tem sessenta dentes (60t). A relação entre engrenagens dessa transmissão é de 2:5, isso nos permite dizer que a cada duas voltas e meia da engrenagem (24t) produzirá apenas uma volta da engrenagem (60t) [39].
Figura 31: Engrenagens eixo de rotação [37].
Já para o eixo de elevação, a transmissão de movimentos também é feita por engrenagens. Nesse caso é usado uma engrenagem de doze dentes (12t) acoplada ao eixo do servomotor, e outra de trinta e seis dentes (36t) no eixo de elevação. Essa relação é de 1:3, ou seja, a cada três voltas da engrenagem de (12t), a de elevação (36t) fará uma volta completa, o que significa que para um giro completo 360ᵒ da engrenagem de elevação (36t), o servomotor precisa girar 1080ᵒ. As engrenagens que executam o movimento de elevação são destacadas na figura 32 [39].
Figura 32: Engrenagens do eixo de elevação [37].
67
3.2.5 Servomotores No trabalho proposto, são utilizados 03 servomotores, o primeiro faz o movimento de rotação, o segundo o movimento de elevação e o terceiro controla o movimento da garra. Os servomotores Lego contêm um sensor interno (Encoder) que permite medir e controlar sua posição e velocidade. Esses servomotores também possuem um bom torque, minimizando a necessidade de reduções de rotação para aumentar o torque, seu peso estimado é de 80g. A figura 33 mostra a estrutura interna dos servomotores Lego [40].
Figura 33: Estrutura de um servomotor Lego Mindstorms [41].
3.2.6 Controlador NXT
O controlador NXT da Lego é o que podemos chamar de “cérebro do robô”. Ele possui quatro entradas (1, 2, 3 e 4) para sensores (toque, luz, ultrassom e som), e três saídas (A, B e C) que controlam e alimentam três servomotores. O controlador NXT da Lego, ou “Smart Brick” (“Tijolo inteligente/programável”) é mostrado pela figura 34 [41].
68
Figura 34: Controlador NXT do kit Lego [41].
3.3 Softwares de controle
Este item apresenta as pesquisas realizadas sobre softwares utilizados para realizar o controle do braço robótico proposto nesse trabalho.
3.3.1 Visual Studio O primeiro software a ser testado nesse trabalho foi o Visual Studio. Esse é um software produzido pela Microsoft que possui suporte para o dispositivo kinect, e é bastante utilizado em variadas aplicações. Após várias tentativas realizando pequenos programas, encontrou-se grande dificuldade em se utilizar o Visual Studio, que utiliza como plataforma de programação a linguagem C. Essa dificuldade não está na linguagem de programação, e sim na configuração do banco de funções que requer conhecimentos mais avançados. Outro problema encontrado com o Visual Studio foi à comunicação entre ele e o controlador NXT da Lego, que é complexa e também limitada. Uma alternativa sugerida pelos autores é de se utilizar um programa em outra plataforma que faça a intermediação de comunicação entre o controlador NXT
69
da Lego e o Visual Studio. Como esta opção se mostrou bastante complexa, descartou-se a utilização do Visual Studio.
3.3.2 Microsoft Robotics Developer Studio 4 (RDS)
Em pesquisas de fóruns dedicados a softwares que possuem comunicação com controlador NXT da Lego, encontrou-se um da Microsoft, o Robotics Developer Studio 4 (RDS), que utiliza programação em bloco, chamada de VPL (Visual Programming Language). Apesar de se ter tido grandes dificuldades em se adaptar com as infinidades de opções que Robotics Developer Studio 4(RDS) contém, a implementação desse software utilizando o controlador NXT da Lego é muito boa. Porém quando se tenta implementar o dispositivo kinect, se obtém um grande problema, o software não reconhece as bibliotecas de funções do kinect. Devido a esse problema com a biblioteca do dispositivo kinect, optou por pesquisar outro software mais amigável.
3.3.3 LabVIEW for Lego
Como terceira opção, utilizou-se a plataforma LabVIEW for Lego midstorn 2012, que possui suporte para o controlador NXT da Lego. Esta versão, também apresenta a opção de adicionar novas bibliotecas ao programa, chamadas pela plataforma LabVIEW de Add-ons.. Em uma dessas bibliotecas se encontra o Kinesthesia Toolkit for Microsoft Kinect da Universidade de Leeds, que mostrou ser uma ferramenta importante para o desenvolvimento desse trabalho. Inicialmente obteve-se problemas com a plataforma LabVIEW, onde ela não reconhecia as bibliotecas do Kinesthesia Toolkit. Porém após pesquisas, descobriu-se que à versão da plataforma LabVIEW for Lego midstorn 2012, utiliza a versão NET 4.0 como padrão. Já o Kinesthesia Toolkit requer uma versão NET 4.5, o que gera conflito entre as duas versões. Por
70
isso fez-se alteração do formato padrão da plataforma LabVIEW, que passou a reconhecer a biblioteca do Kinect. Uma vez instalado o Kinesthesia Toolkit, facilitou bastante a programação comparado com os outros softwares já citados nos itens anteriores. Após a realização de alguns testes, utilizando o controlador NXT da Lego juntamente com o dispositivo Kinect, optou-se em utilizar a plataforma LabVIEW for Lego midstorn 2012 para realizar a programação.. 3.4 Captura de movimento Este tópico aborda os assuntos relacionados a captura de movimento, sendo dividido em: Dispositivo kinect, kinesthesia e funcionamento do programa kinesthesia.
3.4.1 Dispositivo Kinect O Kinect é o dispositivo utilizado para fazer a captura de movimentos desse trabalho. Optou-se por esse dispositivo devido às diversas aplicações encontradas e também por estar disponível para pesquisas no IFSC Campus Joinville. Seu principal componente é a câmera TOF (time off light) ou câmera de tempo de vôo que entrega um modelo de cena em 3D e um software sofisticado para detecção de posição do corpo em tempo real como já foi mencionado anteriormente [31]. Ele é um hardware compacto e independente, sua saída de dados possui boa qualidade. Suas aplicações vão além dos jogos, tanto que foi projetado um dispositivo Kinect especificamente para o uso do Windows ("Kinect for Windows", 2012) [32]. Através de estudos realizados, a distância recomendada para seu uso deve ser de 1 a 3 metros de distância do dispositivo Kinect. Possui capacidade de identificar vários pontos (articulações) do esqueleto humano [34].
71
3.4.2 Kinesthesia O kinesthesia é um kit de ferramentas que consiste de vários subVIs. Esses subVIs podem ser incorporados a plataforma LabVIEW para acessar os fluxos de dados do dispositivo Kinect. O kit permite que o usuário possa interagir facilmente com a câmera RGB, câmera de profundidade, rastreamento do esqueleto e funcionalidades que o Kinect oferece em qualquer sistema LabVIEW [42]. O fluxo de dados e posições do esqueleto é gerado a partir do dispositivo kinect utilizando dados da câmara de profundidade e da câmera RGB. No painel frontal do programa de captura de movimento, aparece a imagem do usuário e outra imagem de um esqueleto. Esse esqueleto se movimenta conforme a orientação do usuário, a figura 35 abaixo demonstra as imagens de funcionalidade do kit kinesthesia [42].
Figura 35: A Funcionalidade do Kinesthesia [43].
O braço robótico desse trabalho se movimenta na vertical, horizontal e rotacional (em torno de seu próprio eixo), onde as coordenadas (X, Y e Z) do usuário capturadas pelo dispositivo kinect são utilizadas para realizar a programação.
72
A programação de controle desse trabalho se faz da seguinte maneira. O plano cartesiano “Z” é utilizado pela mão esquerda do usuário, onde é feito o controle de abertura e fechamento da garra do braço robótico. A mão direita do usuário é usada nos planos cartesiano “Y” e “X”, controlando o movimento de elevação e rotação do braço robótico, respectivamente. Foram escolhidos esses membros e planos cartesianos pela praticidade de se controlar o braço robótico, ao invés de utilizar outra parte do corpo. Nesse trabalho de captura de movimento, apenas o fluxo de dados do esqueleto é utilizado. Isso não significa que outros dados não possam ser utilizados em futuros trabalhos, como por exemplo, os microfones embutidos do dispositivo Kinect. Toda a parte de controle dos movimentos desse braço robótico será visto a partir do tópico 3.6. 3.4.2.1 Funcionamento do programa do kinesthesia O kit de ferramentas não requer nenhuma licença própria, podendo simplesmente ser baixado do site da National Instrument (NI). A figura 36 mostra o diagrama de blocos do kit de ferramentas kinesthesia.
Figura 36: Programa do Kinesthesia toolKit baixado da NI [37].
Para melhor entendimento o programa do Kinesthesia
toolkit foi dividido em três etapas:
73
Na primeira etapa, mostrada pela figura 37, estão as configurações de entrada. O item “1” (VI initialise) inicializa o dispositivo kinect, sendo utilizado para criar uma entrada do dispositivo kinect na memória do computador. O item “2” (VI Configure) seleciona as opções disponíveis para os fluxos de dados do Kinect, como câmera RGB, câmera de profundidade e resolução da imagem de informações do esqueleto. No item “3” (VI initialise 3D Skeleton), é inicializado um display 3D que mostra o esqueleto do usuário [45].
Figura 37: Configuração de entrada do kinsthesia toolkit [37].
A segunda etapa, mostrada pela figura 38, é realizada dentro de um loop while, que é onde ocorre a captura e a exibição dos dados do dispositivo Kinect. O item “1” (read) lê e processa os fluxos de dados do dispositivo kinect para que ele possa ser exibido. O item “2” (render the skeleton) processa e exibi o esqueleto de um usuário no espaço 3D. O (display collor data) item “3” converte em formato 2D o formato de exibição de imagem, que é realizado em16fps (16 quadros por segundo) através do (Wait Until Next ms Multiple Function) item “4”. O item “5” é a condição de saída do loop while, sendo possíveis duas condições: o botão stop acionado ou erro de comunicação do programa [45].
74
Figura 38: Loop while e componentes [37].
Na terceira e ultima etapa, se encontra o VI Kinect close, mostrado pela figura 39. Esse VI é utilizado para fechar todas as referências abertas que são criadas durante o funcionamento do dispositivo kinect [46].
Figura 39: VI Kinect close [37].
3.5 Comunicação A comunicação entre as partes do sistema que compõe o trabalho é realizada através de cabos USB e cabos conectores RJ12. Entre o dispositivo Kinect e o computador, é utilizado o cabo USB tipo “A” host ou hub. Para comunicação do computador com o NXT, utiliza-se o cabo USB tipo “A” host ou hub (entrada no computador) e cabo USB tipo “B” periférico (conexão com o NXT).
75
Por ultimo, a comunicação entre o NXT e seus servomotores é realizada através de cabos conectores para Lego EV3 NXT, estilo padrão RJ12 nas duas extremidades. 3.6 Programação Nesta etapa do trabalho, é descrito a maneira que os dados enviados pelo dispositivo Kinect são reconhecidos na plataforma LabVIEW, e também são apresentados dois modelos de programações desenvolvidas durante esse trabalho. 3.6.1 Reconhecimento de dados (Kinect/LabVIEW) Esse tópico busca esclarecer ao leitor de que maneira a plataforma LabVIEW reconhece os dados que o dispositivo Kinect envia no momento em que o usuário executa movimentos de comando do braço robótico. Para que esses movimentos sejam reconhecidos, a plataforma LabVIEW através do programa do Kinesthesia toolkit, utiliza coordenadas no plano cartesiano (X, Y e Z) referente a movimentos do esqueleto do usuário capturados pelo dispositivo Kinect. Essas coordenadas são enviadas do dispositivo Kinect e recebidas pelo programa desenvolvido com os seguintes dados numéricos: Variam com os movimentos do usuário de -1 a +1 para os planos X e Y; O plano Z varia de acordo com a distância entre o ponto do esqueleto e o dispositivo Kinect em metros [36]. O ponto zero de cada junta é estabelecido sempre que o programa é iniciado e o dispositivo Kinect captura o esqueleto do usuário. Partindo do ponto zero, todos os movimentos realizados pelo usuário em qualquer coordenada cartesiana (X, Y e Z), irão variar seus dados dentro das faixas em cada plano cartesiano.
76
3.6.2 Programação em malha aberta (1º programa)
O primeiro programa desenvolvido para esse trabalho foi
uma programação feita em malha aberta, utilizada
experimentalmente para o controle do braço robótico
apresentado na figura 26 (primeiro braço robótico), sendo
desenvolvida por meio de comparações.
Para esse modelo de programa são escolhidos dois
valores entre a faixa de dados numéricos determinada em cada
plano cartesiano, conforme mencionado no tópico 3.6.1. Esses
valores serão os pontos de ativação dos servomotores, e sua
lógica de programação é simples. Quando o valor enviado ao
programa desenvolvido na plataforma LabVIEW pelo dispositivo
Kinect, estiver entre os valores definidos na programação o
servomotor permanece parado. Já se o valor enviado for menor
que o valor mínimo definido, o servomotor liga em um sentido de
rotação (ex: horário), caso o dado enviado for maior que o valor
máximo definido o servomotor liga no sentido de rotação inverso
(anti-horário). O fluxograma da figura 40 apresenta um exemplo
de programação, onde selecionou-se o ponto do esqueleto
(Kinect) como sendo a mão esquerda do usuário, com
movimentos no plano “Y”, escolhido para simular o controle de
elevação do braço robótico. Os valores (0 e 0,6) foram
escolhidos aleatoriamente para o controle do servomotor para
esse exemplo, afim de melhorar o entendimento do leitor, pois se
encontram conforme tópico 3.6.1 dentro da faixa do plano
cartesiano “Y”, cujo valor varia de -1 à +1. Portanto quando o
valor enviado pela posição da mão esquerda do usuário
ultrapassar o valor de zero vírgula seis (0,6), o servomotor liga
em sentido horário. Agora se a mão do usuário se movimentar no
plano “Y” até o valor enviado ficar entre os dois valores, o
servomotor desliga (Para). Se o usuário continuar movimentado
a mão no plano “Y” até o valor enviado ficar menor que (0), o
servomotor liga em sentido anti-horário. Lembrando que o valor
77
(0) é o valor inicial, ou seja, é gerado apartir do momento em que
o dispositivo kinect reconhece o esqueleto do usuário.
Figura 40: Programação em malha aberta [37].
Esse método de programação foi descartado porque o
usuário não consegue ter o controle exato sobre a posição do
braço robótico, o que não satisfaz o propósito desse trabalho. A
partir daí iniciou-se um novo modelo de programação utilizando
um controle em malha fechada, que permitiu obter melhor
controle sobre o posicionamento do braço robótico.
78
3.6.3 Programação em malha fechada (2º programa)
A programação em malha fechada se diferencia da
programação de malha aberta por fazer o controle através de
uma referencia fornecida a partir de sensoriamento. Este método
de programação permite obter um controle bem mais preciso
sobre as saídas do controlador, o que resulta em um melhor
controle sobre o posicionamento do braço robótico.
Para a elaboração desse programa foram utilizadas cinco
etapas encadeadas. O encadeamento é definido aqui como um
ou mais subdiagramas, que são executados sequencialmente
conforme ordem pré-estabelecidas na programação. As cinco
etapas criadas nessa programação possuem sua sequência de
execução mostrada através da figura 41 e definidas como:
1. Posicionamento inicial da garra e do eixo de elevação do
braço robótico;
2. Posicionamento inicial do eixo de rotação do braço
robótico;
3. Programação do controle de posicionamento do braço
robótico por captura de movimentos;
4. Posicionamento final da garra e do eixo de elevação do
braço robótico;
5. Posicionamento final do eixo de rotação do braço
robótico.
Figura 41: Cinco etapas da programação [37].
79
Somente a etapa 3 é desenvolvida com o método de
malha fechada, as demais etapas de posicionamento inicial (1 e
2) e final (4 e 5) foram elaboradas em malha aberta.
3.6.3.1 Posicionamento inicial e final do braço robótico
As etapas 1 e 2 do programa citadas no tópico 3.6.3,
determinam o posicionamento inicial do braço robótico que são
realizadas toda vez que o usuário inicia o programa. Já as etapas
4 e 5 do programa determinam a posição final do braço robótico
e são executadas após o encerramento da etapa 3. As etapas 1,
2, 4 e 5 foram elaboradas para que o braço robótico permaneça
sempre na mesma posição, tanto no início como no termino do
programa.
As etapas 1 e 4 possuem a mesma lógica de
programação e determinam o posicionamento da garra e do eixo
de elevação do braço robótico, sendo que a etapa 1 é realizada
no inicio e a etapa 4 no final do programa. Vale a pena salientar
que os dois posicionamentos ocorrem simultaneamente durante
essas etapas do programa. Para o melhor entendimento do que
ocorrem durante as duas etapas, primeiro será comentado
apenas sobre a parte do programa que posiciona a garra e em
seguida sobre o eixo de elevação.
A entrada e a saída (“Porta 1” e “Porta C” do controlador
NXT da Lego) respectivamente, foram escolhidas entre as
opções disponíveis desse controlador, para realizar o controle de
posição e movimento da garra. Onde a “Port 1” é utilizada para
conexão do sensor fim de curso e “Porta C” utilizada para o
servomotor. Para essas duas etapas foram elaboradas a
seguinte lógica de programação: Liga servomotor em sentido
horário até acionar o sensor fim de curso, desliga servomotor,
inverte rotação para o sentido anti-horário por um determinado
80
tempo e por fim desliga o servomotor. Essa ordem de
programação é explicada a seguir dividida em três passos:
1. Aciona servomotor (“Porta C”) em sentido horário - O
sentido de rotação inicial do servomotor é definido de
acordo com o posicionamento do sensor fim de curso.
Nesse protótipo de braço robótico o sensor está
localizado na parte superior da garra. Portanto quando o
servomotor é acionado no sentido horário, provoca o
movimento de abertura da garra, fazendo com que a
parte móvel da garra sempre vá de encontro com a chave
fim de curso.
2. Aciona o sensor de fim de curso (“Porta 1”) – Esta
operação é realizada para se estabelecer um ponto de
referencia no programa, e, a partir desse ponto definir
qualquer posição inicial para a garra.
3. Desliga servomotor e aciona servomotor (“Porta C”) em
sentido anti-horário por um determinado tempo e desliga
o servomotor – Quando a parte móvel da garra aciona o
sensor fim de curso, o servomotor desliga. Neste
momento o ponto de referencia já esta estabelecido e o
tempo que o motor fica acionado em sentido anti-horário,
é quem determina a posição inicial da garra. Percorrido
esse tempo o servomotor novamente desliga na posição
desejada.
Lembrando que durante as etapas 1 e 4 são
determinados dois posicionamentos, o da garra já mencionado
acima e do eixo de rotação comentado a seguir.
Para determinar a posição do eixo de elevação utilizou-se
a “Porta 2” (entrada) e “Porta B” (saída) do controlador NXT da
Lego. Essas portas foram escolhidas para realizar o controle da
posição e movimento no eixo de elevação do braço robótico.
Onde a “Port 2” é utilizada para conexão do sensor fim de curso
e “Porta B” utilizada para o servomotor. Executa a mesma lógica
de programação da garra: Liga servomotor (“Porta B”) em sentido
anti-horário até acionar o sensor fim de curso (“Porta 2”), desliga
81
servomotor, inverte rotação para sentido horário por um
determinado período de tempo e por fim desliga o servomotor.
Neste caso o servomotor é acionado inicialmente no sentido anti-
horário. O motivo é que o sensor fim de curso para esse
movimento está localizado para detectar a descida do braço
robótico, e com a rotação do servomotor no sentido anti-horário,
o braço robótico executa esse movimento. Assim esta lógica
sempre fará que o braço robótico vá nessa direção e acione o
sensor fim de curso. O restante da programação obedece às
mesmas lógicas de posicionamento utilizadas para garra,
mencionadas acima neste tópico.
Como nas etapas 1 e 4, as etapas 2 e 5 também possuem a
mesma lógica de programação, porém atuam somente sobre o
posicionamento do eixo de rotação do braço robótico. Conforme
acontece nos posicionamentos da garra e do eixo de elevação, o
posicionamento do eixo de rotação também obedece a mesma
lógica de programação: Liga servomotor em sentido horário até
acionar o sensor fim de curso, desliga o servomotor, liga
servomotor em sentido anti-horário por um determinado período
de tempo e por fim desliga o servomotor. Para controle desse
eixo utilizou-se a “Porta 3” (entrada) para conectar o sensor fim
de curso e “Porta A” (saída) para o servomotor, responsáveis por
controlar a posição e os movimentos sobre esse eixo do braço
robótico. Nesse eixo, o sensor fim de curso está posicionado
para detectar o movimento de rotação no sentido horário do
braço robótico, e para produzir esse movimento é necessário
acionar o servomotor no sentido horário. As demais ordens
possuem a mesma lógica de programação dos outros eixos,
portanto sempre que o programa entrar nessas etapas (2 e 5) o
braço robótico fará somente o posicionamento do eixo de
rotação. O fluxograma mostrado pela figura 42 apresenta as
lógicas de modo estrutural ocorridas durante as etapas 1 ou 4.
82
Figura 42: Fluxograma de posicionamento da garra e eixo de elevação do
braço robótico [37].
O fluxograma apresentado pela figura 43 apresenta as
lógicas de modo estrutural ocorridas durante as etapas 2 ou 5.
Figura 43: Fluxograma de posicionamento do eixo de rotação do braço
robótico [37]. 3.6.3.2 Programação por captura de movimentos (Kinect)
O controle do braço robótico através da captura de
movimentos ocorre quando o programa entra na etapa 3, sendo
essa, a parte mais importante desse trabalho, pois nela esta a
83
programação que controla o posicionamento do braço robótico. É
nela que está o programa kinesthesia, mencionado no tópico
3.4.3, responsável por transformar em dados numéricos os
movimentos do usuário detectados pelo dispositivo kinect.
Ao entrar na etapa 3 o programa executa o kinesthesia e
a zeragem dos ângulos de posicionamento dos três eixos (garra,
elevação e rotação), mostrados no painel frontal e comentado no
tópico 3.6.3.4 adiante. Essa zeragem é realizada pelo VI Reset
rotation. Relembrando que todo VI é semelhante a uma função
ou sub-rotina em outras linguagens de programação, como já
mencionado no tópico 2.3 desse trabalho. O VI reset rotation,
conforme a porta configurada (A, B ou C), limpa a contagem de
rotação interna do servomotor, deixando seu ângulo sempre
indicando zero. Após zerar os ângulos e ver as configurações de
entradas do kinesthesia, o programa é elaborado dentro de um
loop while. Um loop while é uma demonstração de fluxos de
controle que se usa para executar um bloco de código
repetidamente até que uma determinada condição seja atendida
[46]. No programa apresentado, essa condição é o botão STOP
que determina o fim da etapa 3, ou seja, enquanto essa condição
não é atendida o programa fica dentro do loop while executando
o controle de posição dos servomotores.
A programação elaborada dentro do loop while para
posicionar um eixo do braço robótico se repete para os demais
eixos, mudando apenas as coordenadas e/ou o ponto do
esqueleto (membro do usuário) que movimentam esses eixos.
Para o controle de posição da garra, optou-se em utilizar o ponto
do esqueleto referente à mão esquerda do usuário realizando
movimentos no plano cartesiano “Z”, escolhido para produzir os
movimentos de abertura e fechamento da garra. O controle de
elevação é realizado através do ponto do esqueleto referente à
mão direita do usuário realizando movimentos no plano
cartesiano “Y”, escolhido para produzir os movimentos de erguer
e baixar o braço robótico. Já o controle de rotação, é realizado
através do ponto do esqueleto referente à mão direita do usuário,
84
porem realizando movimentos no plano cartesiano “X”,
produzindo os movimentos de giro no braço robótico, já
comentado no tópico 3.4.2. Visando um melhor entendimento do
programa, é descrito essa programação de uma maneira
genérica (qualquer eixo), cuja lógica é descrita a seguir.
Dentro do loop while o programa kinesthesia transforma
os sinais de movimentos captados pelo dispositivo Kinect em
uma matriz de coordenadas cartesianas X, Y e Z. O sinal
recebido referente a coordenada desejada para o controle do
eixo é multiplicado por um valor constante, a fim de relaciona-lo
com o sinal recebido do sensor encoder. O sinal do sensor
encoder é fornecido ao programa através das portas de saídas
do controlador NXT (A, B e C) ligadas aos servomotores de cada
eixo do braço robótico. O VI que monitora o sensor encoder no
programa é o read rotation, ele indica a posição em graus
(ângulo) do servomotor através das portas de saida do
controlador NXT. Com esses dois sinais (Kinect e encoder), faz-
se uma subtração entre os dois valores. Portanto quando houver
uma diferença entre o sinal enviado pelo dispositivo Kinect e o
sinal do sensor encoder, esta será a vista como um erro. Esse
erro é quem controla a potencia para o posicionamento correto
do servomotor, sendo assim, quanto maior o erro, maior será a
potencia que o servomotor receberá para corrigir sua posição.
Para exemplificar melhor o que acontece nessa lógica do
programa comenta-se:
Se a mão do usuário é o setpoint do controlador, quando
o usuário altera a posição de sua mão ele altera junto o setpoint,
isto faz com que o controlador imediatamente envie um sinal
para corrigir o posicionamento do servomotor procurando
eliminar a diferença (erro). Para executar essa correção o
controlador utiliza como referencia o sinal do sensor encoder
sabendo assim a posição do servomotor.
Para se obter um posicionamento do braço robótico com
mais precisão, esse programa utiliza um controle PI. Controle PI
é uma técnica de controle que utiliza ações proporcionais (Kp) e
85
integrais (Ki) com objetivo de eliminar erros de controle [47]. Kp e
Ki são coeficientes de ganho onde:
Kp é o ganho proporcional, esta ação ajuda a eliminar as
oscilações das variáveis deixando o sistema mais estável, porém
não garante o valor desejado [47].
Ki é um ganho integral, esta ação elimina totalmente o
desvio de erro, faz com que a variável fique sempre próxima ao
valor desejado [47].
Desta forma esse programa irá mover servomotores em
X, Y e Z, com base na saída do dispositivo kinect usando o
acompanhamento do esqueleto. O programa seleciona um ponto
do esqueleto e usa o X, Y e Z coordenadas para fornecer
potencia aos servomotores. Os servomotores são conectados a
um controlador NXT da Lego em portas A, B e C,
respectivamente. Toda essa lógica de programação ocorrida na
etapa 3 e elaborada em plataforma LabVIEW é mostrada em
Anexo A e mostrado pelo fluxograma de modo estrutural da
figura 50.
Figura 50: Fluxograma de representação da etapa 3 [37].
86
3.6.3.3 Programação de segurança de posicionamento do braço
robótico
Durante a etapa 3 viu-se a necessidade de elaborar uma
programação que estabeleça limites (mínimos e máximos) de
segurança para os eixos do braço robótico. Essas limitações
servem para que o braço robótico não ultrapasse certos ângulos
de rotação, impedindo-o de danificar peças, componentes ou até
mesmo forçar os servomotores desnecessariamente.
Para elaboração dessa parte do programa utilizou-se dois
sinais, o angulo de rotação do servomotor e o sinal enviado pelo
movimento do esqueleto (mão do usuário). Caso utilizasse
apenas um desses dois sinais, quando algum dos eixos do braço
robótico chegasse ao valor (limite) programado ele pararia, e,
não se movimentaria mais. Para que isso não aconteça, foi
necessária a utilização dos dois sinais como referência. Essa
lógica é apresentada nos parágrafos seguintes de maneira
genérica, ou seja, é utilizada a mesma lógica para estabelecer os
limites de segurança em todos os eixos desse braço robótico.
Para estabelecer essa lógica, determinam-se no
programa os valores dos ângulos máximos e mínimos em que os
servomotores devem atuar. Lembrando que o ângulo de atuação
dos servomotores muda em cada eixo, e, que se deve atentar-se
para relação de engrenagens utilizada em cada eixo do braço
robótico conforme descrito no tópico 3.2.4. Da mesma maneira
se estabelece no programa valores de posição máximos e
mínimos para atuação de movimentos do esqueleto (mão do
usuário), dentro dos valores já apresentados no tópico 3.6.1.
Neste caso os valores de posição estabelecidos devem ser
alterados sempre que se inicia o programa, pois este valor muda
conforme característica física de cada usuário (altura) ou até
mesmo com a distância em que o usuário se posiciona diante do
dispositivo Kinect .
87
Com os valores máximos e mínimos determinados,
utilizam-se os limites máximos (posição esqueleto e ângulo)
comparando-os com a posição momentânea de seus respectivos
sinais. Desta maneira se impõe que quando os dois valores
momentâneos forem maiores que os valores máximos
estabelecidos o eixo do braço robótico deve permanecer parado.
Caso um desses dois valores não atingir o máximo estabelecido,
o eixo do braço robótico continua realizando movimentos. Essa
mesma lógica foi estabelecida para os valores mínimos. O
fluxograma mostrado pela figura 51 apresenta a lógica utilizada
para assegurar o posicionamento máximo e mínimo dos eixos do
braço robótico.
Figura 51: Programação de segurança de posicionamento do braço robótico
[37].
88
3.6.4 Painel frontal O painel frontal desse trabalho é utilizado para que o usuário visualize algumas informações que acontecem com o braço robótico durante sua operação. A figura 52 mostra as informações exibidas no painel frontal, onde:
1. Visualização do esqueleto captado pelo dispositivo Kinect em 3d.
2. Informações relacionadas ao eixo de rotação do braço robótico.
3. Informações relacionadas ao eixo de elevação do braço robótico.
4. Informações relacionadas ao movimento da garra do braço robótico.
5. Botão de parada da programação.
Figura 52: Painel frontal [37]
Os itens dois, três e quatro citados acima, mostram as informações referentes ao eixo de rotação, elevação e movimentos da garra do braço robótico, que são melhores esclarecidas abaixo.
89
Na figura 53, temos as informações sobre o eixo de rotação do braço robótico. No item um é mostrado o ângulo de rotação em que o braço robótico se encontra. No item dois aparecem os leds que indicam as limitações do eixo de rotação do braço robótico. Quando acesso, indica que o eixo encontra-se em um dos limites estabelecidos pela programação, não podendo mais se mover para aquele sentido. O item três mostra os valores dos ganhos Ki e Kp programados nesse trabalho e também o item rotação, que é a posição da mão do usuário utilizada para estabelecer as limitações do braço robótico. O item quatro exibi as informações dos ângulos em (X, Y e Z) relacionadas a mão do usuário que controla o movimento do eixo de rotação do braço robótico.
Figura 53: Painel frontal informações de rotação [37].
As informações referentes ao eixo de elevação e movimentos da garra do braço robótico possuem as mesmas informações esclarecidas sobre o eixo de rotação descrito acima.
90
91
4. EPÍLOGO Neste capitulo serão apresentadas os resultados obtidos e os problemas encontrados separando-os em três partes: montagem do braço robótico, elaboração da programação e analise do conjunto (software e hardwares). Assim como as considerações finais e as oportunidades de melhorias desenvolvidas nesse trabalho de conclusão de curso. 4.1 Montagem do braço robótico Apesar de não ser o principal foco desse trabalho, os resultados obtidos no desenvolvimento e montagem do braço robótico foram satisfatórios. O kit Lego utilizado de ensaio nesse trabalho se apresentou como uma excelente ferramenta, o que proporcionou agilidade e facilidade na realização de montagens. Além disso, apresenta também uma grande variedade de peças e componentes que permite ótima flexibilidade de mudanças nas estruturas com grande facilidade e com um bom resultado final. Por se tratar de um de braço robótico de apenas três graus de liberdade, sua montagem não foi complexa. Porém apresentou um problema crônico no modelo montado quanto ao deslocamento dos eixos de rotação e elevação. Quando o braço robótico faz o movimento de rotação no sentido horário, o eixo de elevação realiza um movimento de descida, e quando faz o movimento de rotação no sentido anti-horário, o eixo de elevação realiza um movimento de subida. Isso ocorre devido à engrenagem de elevação ser do tipo cônica e toda estrutura de elevação encontrar-se ligada a base de rotação. Então quando ocorre o movimento de rotação, a engrenagem cônica ligada ao servomotor de elevação permanece inerte, enquanto que a engrenagem ligada ao eixo da estrutura de elevação realiza o movimento junto com a engrenagem de rotação. Isso proporciona um deslocamento involuntário dos dentes da engrenagem da estrutura de elevação. Por se tratar de um trabalho em que o braço robótico é utilizado apenas para executar movimentos de acordo com os comandos do usuário,
92
este problema é praticamente imperceptível, já que o próprio usuário acaba corrigindo a altura do braço robótico. Mecanicamente não foi encontrada nenhuma alternativa que eliminasse esse defeito. 4.2 Elaboração da Programação A programação realizada nesse trabalho foi o maior desafio encontrado. A definição do tipo de linguagem de programação e software a ser utilizado foi de grande importância para o alcance do êxito. O kit kinesthesia, ferramenta do LabVIEW fornecida pela National Instruments, foi essencial para obtenção dos dados coletados pelo dispositivo kinect, facilitando muito o desenvolvimento dessa programação. Outro ponto essencial para realização desse trabalho, também é fornecido pela National Instruments, a versão do LabVIEW for Lego. Essa versão do LabVIEW permitiu total interação com o controlador NXT da Lego, e através dele conseguiu-se atingir os objetivos iniciais apresentados. Através da tela onde é apresentada o painel frontal, pode-se ter todas as informações necessárias fornecidas pelo programa como: o deslocamento nos ângulos dos eixos do braço robótico, as distancias e indicações das limitações do braço robótico entre outras informações. O diagrama de bloco apresenta toda programação realizada nesse trabalho, que é extenso, porém de fácil entendimento. Em relação a problemas encontrados nessa etapa do trabalho pode-se dizer que foram grandes os desafios, e, em dois desses ainda não se obteve respostas, pois se tratam de configurações do software. Um deles é que toda vez que se executa a programação desenvolvida, é necessário abrir primeiramente o programa kinesthesia, pois se não o dispositivo kinect não é reconhecido na programação. O outro desafio é que algumas VI’s só funcionavam nessa plataforma LabVIEW for Lego, se ás copiassem de um programa modelo e as transferissem para o programa realizado.
93
Caso se utilizasse essas VI’s da paleta de funções o programa não funcionava. O ponto negativo dessa programação é que toda vez que se inicia o programa, o dispositivo kinect executa novas leituras de distancias nas coordenadas (X, Y e Z), isso provoca a necessidade de ajustes no programa sempre que é reinicializado. Mesmo que os usuários permaneçam na mesma posição (distancia) em relação ao dispositivo Kinect, existe uma pequena variação nas leituras de valores devido as caracteristicas físicas de cada usuário, por exemplo sua altura. 4.3 Análise do Conjunto (Software e Hardwares) Os resultados obtidos no funcionamento do conjunto software e hardwares, apresentados nesse trabalho são julgados pelos autores como satisfatórios. Porém três questões para o melhor funcionamento do conjunto foram levantadas e esclarecidas a seguir: Qual a distância recomendada para o controle do braço robótico entre o usuário e o dispositivo Kinect? Devido as característica do dispositivo utilizado para capturar movimentos nesse trabalho, recomenda-se que a distância entre o usuário e o dispositivo Kinect esteja entre 1 a 3 metros. Os autores notaram que a distância mais precisa para o controle desse braço robótico, o usuário deve permanecer a uma distância de 2 metros do dispositivo Kinect e o mesmo deve estar a uma altura de 0,92 metros (900mm) do solo. Porém o artigo do Professor Kourosh Khoshelham da Universidade de Twente (Enschede, Holanda) questiona a precisão e resolução dos dados de profundidade do kinect, segundo ele o dispositivo proporciona uma visão que influenciam a exatidão dos dados e provocam um erro aleatório na medição de profundidade que aumenta com o aumento da distância para o sensor, e varia de alguns milímetros até cerca de 4 cm na gama máxima do sensor o que e pode explicar alguns bugs que apresentam em nossa programação [48].
94
Quanto à movimentação de pessoas ao redor, existe influencia para o controle do braço robótico? Sim, outra questão desse trabalho é que no campo de atuação do dispositivo Kinect no momento em que o usuário opera o braço robótico, não poderá haver movimentação de outras pessoas, pois o dispositivo captará todos os movimentos de esqueletos que estarão em seu campo de atuação e o sistema entrará em conflito, sendo assim o usuário principal perderá completamente o controle do braço robótico. Se houver o cruzamento das mãos do usuário, há interferencia sobre o controle do braço robótico? O usuário também deverá ter atenção na posição inicial das mãos no momento em que iniciar o controle do braço robótico. É importante que elas estejam separadas a uma distância aproximada de um metro, para que o controle do eixo de rotação não interfira no controle da garra, pois se as mãos se cruzarem o dispositivo perde a referência de um dos pontos o que provoca o descontrole no braço robótico. 4.4 Considerações finais Nesse trabalho de conclusão de curso foi desenvolvido o tema “Controle de braço robótico através da captura de movimento”. Nele estão relacionados pesquisas referente a robótica, captura de movimentos e software de programação. O contexto apresenta também o desenvolvimento de um braço robótico montado com peças Lego, assim como a programação realizada com a plataforma LabVIEW em conjunto com dispositivo Kinect, responsáveis por controlar o braço robótico.. Desta maneira, os autores consideram que o objetivo desse trabalho obteve êxito. E que todos os resultados atingidos, só foram possíveis pelos conhecimentos adquiridos nas unidades curriculares do curso de mecatrônica, as quais permitiram grande integração de diferentes áreas como mecânica, eletroeletrônica e automação. Vale apena deixar registrado que para realizar um
95
projeto como esse são exigidas várias horas de dedicação, principalmente na parte de programação. Outra parte que exige bastante dedicação são as pesquisas, uma vez que não existem muita literatura sobre esses contextos. Esses motivos proporcionaram atrasos no cronograma planejado pelos autores. Entretanto esse trabalho poderá despertar uma grande oportunidade de buscar novos conhecimentos sobre essa técnologia, e motivar o IFSC a investir em desenvolvimentos com novos temas utilizando esse método de controle para diversas aplicações, integrando cada vez mais as unidades curriculares deste curso. 4.5 Oportunidades de melhoria O trabalho “Controle de braço robótico através da captura de movimento” aqui descrito é apenas uma pequena demonstração desse tipo de tecnologia. Existem várias possibilidades de se melhorar o desenvolvimento desse trabalho e aumentar o conhecimento de novos acadêmicos quanto ao uso dessa tecnologia. Aqui os autores citam algumas possibilidades de melhorias:
A. Utilizar um modelo de braço robótico com mais graus de liberdade. No mercado existem vários modelos didáticos disponíveis.
B. Utilizar outra tecnologia para fazer o controle do braço robótico que não seja o controlador NXT da Lego. Pode se citar o Arduino.
C. Utilizar outra tecnologia para fazer aquisição de dados de movimentos que não seja o dispositivo Kinect. Pode se citar as descritas nesse trabalho na parte de revisão bibliográfica e as novas maneiras que surgirem.
D. Utilizar outro software de programação. Utilizo-se a plataforma LabVIEW, porém, pode ser realizado em outras plataformas.
E. Fazer uso para outros fins, voltado mais para um uso real como o da fisioterapia por exemplo. Pois hoje já existem
96
alguns lugares que utilizam o dispositivo Kinect para recuperação de movimentos em pacientes.
Essas oportunidades de melhorias podem ser utilizadas para a continuidade dos estudos sobre essa tecnologia, além de oferecer oportunidades de novos conhecimentos a novos acadêmicos.
97
REFERENCIAS
1. FUNDAMENTOS DE ROBÓTICA E MECATRÔNICA (MEC001). Disponivel em: http://www.newtoncbraga.com.br/index.php/robotica/777-fundamentos-de-robotica-e-mecatronica-mec001.html. Acesso em 05/2015
2. PFIEFER, Evandro Cezar. Desenvolvimento de robô
protótipo para detecção e desarmamento de bombas em plataforma LEGO NXT. Disponível em http://fei.edu.br/~flaviot/LARC2008/TDP/50799.pdf. Acesso em 05/2015
3. ALYSSON, RAFAEL. ROBÓTICA. Disponivel em: www.natalnet.br/redmine/attachments/download/.../Aula_1-Robótica.ppt.
4. ESTUDO SOBRE INTELIGENCIA ARTIFICIAL. Disponivel em: http://www.citi.pt/educacao_final/trab_final_inteligencia_artificial/robotica.html. Acesso em 02/2015.
5. Oliveira, Jordy silva de. Robótica industrial - 2012. Disponivel em: <http://pt.slideshare.net/jordyoliveira1/trabalho-robtica-industrial>. Acesso em 02/2015.
6. AYRES, Marcelo. Conheça a história dos robos. Disponivel em:
http://tecnologia.uol.com.br/ultnot/2007/10/01/ult4213u150.jhtm. Acesso em 02/2015.
7. KLIPP, Telmo dos Santos. Proposta de uma arquitetura para alocação de tarefas em grupos de robôs móveis basead a em acordo bizantino – 2013. Disponivel em: <http://larm.ufsc.br/files/2013/04/TCC-Telmo-2013.pdf>. Acesso em 02/2015
98
8. PEREIRA, Gabriela Quirino. O uso da robótica
educaional no ensino fundamental: relatos de um experimento – 2010. Disponivel em: <https://dcc.catalao.ufg.br/up/498/o/Gabriela2010.pdf>. Acesso em 02/2015.
9. ROSÁRIO, João Mauricio. Princípios de Mecatrônica. São Paulo: Pearson, 2005. 356 p. Disponivel em: <http://ufsc.bvirtual.com.br/editions/986-principios-de-mecatronica.dp>. Acesso em 02/2015.
10. SILVA, Marlon Hugo Rodrigues da. LETRADO, O ROBO DIDÁTICO. Disponivel em: http://pgene.ufabc.edu.br/conteudo/ensino/disciplinas/Robotica/FundamentosRobotica.html. Acesso em 02/2015.
11. LIZARRALDE apud em (AGUIRRE, 2007 P 349). Disponível em: http://www.pee.ufrj.br/teses/textocompleto/2011082201.pdf. Acesso em 04/2015
12. KICH, Guilherme de Mello. Projeto conceitual de um robô SCARA – 2012. Disponivel em <https://chasqueweb.ufrgs.br/~rafael.laranja/CCA99002/RELATORIO_FINAL2.pdf>. Acesso em 04/2015.
13. BRAZOS ROBOTICOS. Grupo de investigacion de robótica. Disponivel em: http://www.gruposrobotica.com/group/brazosroboticos. Acesso em 03/2015.
14. CLASSIFICAÇÃO DOS ROBÔS. Disponivel em: https://tegruposete7.wordpress.com/classificacao-dos-robos/. Acesso em 02/2015.
15. JR, Alvim. O Braço Mecanico. Disponivel em: sites.google.com/site/professoralvimjr/aulas/aaula1/foto1/o-braco-mecanico. Acesso em 04/2015.
99
16. CORDEIRO, Alexandre C. ROBOS PARALELOS
INDUSTRIAIS. Disponivel em: https://prezi.com/s_rzuihig1e1/robos-paralelos. Acesso em 02/2015.
17. GOZZI, Juliano. Curso automação industrial. Aula 2 – Estrutura e características gerais dos robôs. Disponivel em <http://www.faatesp.edu.br/publicacoes/aula2.pdf>. Acesso em 02/2015.
18. BONI, Paulo. Mecânismos e máquinas: Graus de liberdade – 2013. Disponivel em http://www.joinville.ifsc.edu.br/~pauloboni/MECANISMOS/PDF%20-%20Aula%20II%20-%20Grau_de_Liberdade.pdf. Acesso em 04/2015.
19. HERMINI, Helder Anibal. Automação rigida e flexivel. Definições e aspectos construtivos - 2004. Disponivel em <http://www.fem.unicamp.br/~hermini/Robotica/aulas/NotasdaAula2.doc>. Acesso em 02/2015.
20. BOTARRO, Marcio. Instrumentação Virtual em laboratório. Introdução ao LabVIEW. Disponivel em:
http://www.iee.usp.br/destaques/Livro_LabVIEW1.pdf Acesso em 04/15.
21. MANUAL DE TREINAMENTO DO LABVIEW BASICO 1.
National Instruments Corporation - novembro de 2001. Disponivel em <https://fenix.tecnico.ulisboa.pt/downloadFile/3779573643293/LabView.pdf>. Acesso em 02/2015.
22. TUTORIAL. Disponivel em: http://www.esi2.us.es/~asun/LCPC06/TutorialLabview.pdf. Acesso em 06/04/2015.
23. CONCEITOS BÁSICOS DO AMBIENTE LABVIEW. Disponivel em: http://www.ni.com/getting-started/labview-
basics/pt/environment#frontPanel. Acesso em 03/2015.
100
24. MAIA, Edgar Martins moura. Introdução ao LabVIEW -
2002. Disponivel em <http://www.lamce.eeec.ufg.br/informacao/introducao_labview.pdf>. Acesso em 04/2015.
25. LabVIEW USER MANUAL. National Instruments Corporation – janeiro de 1998. Disponivel em <http://www.ni.com/pdf/manuals/320999b.pdf>. Acesso em 03/2015.
26. HALVORSEN, Hans-Petter. Introduction to LabVIEW – 2014. Disponivel em <http://home.hit.no/~hansha/documents/labview/training/Introduction%20to%20LabVIEW/Introduction%20to%20LabVIEW.pdf>. Acesso em 04/2015.
27. BRUCKHEIMER, Alessandro Diogo. Detecção corporal 3D na reabilitação virtual – 2011. Disponivel em <http://www.pergamum.udesc.br/dados-bu/000000/000000000013/00001398.pdf>. Acesso em 02/2015.
28. Arruda, Giselle Sant’Iago. A captura de movimento como ferramenta de criação. http://www.med.nyu.edu/rehabengineering/research/locomotion.html. Acesso em 03/2015.
29. MOTION CAPTURE VIDEOS. Disponivel em: http://www.motion-capture-system.com/gallery.html. Acesso em 03/2015.
30. COMO FUNCIONA O NITENDO WII. Disponivel em:
http://www.tecmundo.com.br/video-game-e-
jogos/2504-como-funciona-o-nintendo-wii.htm. Acesso
em 03/2015.
31. QUEIROZ, Murilo. Um cientista explica o Microsoft kinect. Disponivel em: http://blog.vettalabs.com/index.html%3Fp=609. Acesso em 28/02/2015.
101
32. DESENVOLVIMENTO PARA O MICROSOFT KINECT-
PARTE 1 INTRODUÇÃO. Disponivel em: https://arturbarth.wordpress.com/2013/10/09/desenvolvimento-com-o-microsoft-kinect-parte-1-introducao/. Acesso em 25/05/2015.
33. MICROSOFT KINECT – Casa do código. Disponivel em: http://www.casadocodigo.com.br/pages/sumario-kinect .Acesso em 25/02/2015.
34. CARDOSO, Gabriel Shade. MICROSOFT KINECT Criando aplicações interativas com o Microsoft Kinect. São Paulo: Casa do cádigo, 160 pág.
35. BOHRER, Márcio. Como funciona o kinect. Disponivel em: http://www.oficinadanet.com.br/post/11069-como-funciona-o-kinect. Acesso em 24/02/2015.
36. COMEÇANDO A USAR O SDK DO KINECT. Disponivel em: http://www.100loop.com/destaque/comeando-a-usar-o-sdk-do-kinect/. Acesso em 04/2015.
37. Autores
38. BUILDING INSTRUCTIONS-LEGO EDUCATION. Disponivel em: https://education.lego.com/fr-fr/lesi/support/product-support/mindstorms-education-nxt/nxt-resource-set-9695/building-instructions. Acesso em 08/2014.
39. COMO DETERMINAR A RELAÇÃO DE TRANSMISSÃO DE ENGRENAGENS. Disponivel em:http://pt.wikihow.com/Determinar-a-Rela%C3%A7%C3%A3o-de-Transmiss%C3%A3o-de-Engrenagens. Acesse em 03/2015.
40. SOUZA, Kleber Marcio de. Identificação e controle unidirecional em robos moveis utilizando kit robotica lego midstorms -2014. Disponivel em
102
<http://www.uel.br/pos/meel/disserta/2014_KLEBER_MARCIO_SOUZA.pdf>. Acesso em 02/2015.
41. ESTUDO, SIMULAÇÃO E CONSTRUÇÃO DE ESTRUTURAS. Disponivel em: http://www.ebah.com.br/content/ABAAAfu4sAL/estudo-simulacao-construcao-estruturas-roboticas-utilizando-se-lego-mindstorms-8527-nxt?part=3. Acesso em 02/2015.
42. ADAPTANDO E DESENVOLVIMENTO JOGOS PARA USO. Disponivel em: http://www.sbgames.org/sbgames2011/proceedings/sbgames/papers/tut/1-kinect_FAAST%20_Final_MesmoComColunas.pdf. Acesso em 26/02/2015.
43. VITÓRIA RECORDE PARA ESTUDANTES DE ENGENHARIA MECÂNICA. http://translate.google.com.br/translate?hl=pt-BR&sl=en&u=http://www.engineering.leeds.ac.uk/faculty/news/2012/success-for-students-at-global-level.shtml&prev=search. Acesso em 02/2015.
44. JORDAN, Gustavo. Desenvolvimento livre do Kinect. Disponivel em: http://www.openclipart.org/people/harmonic/Vitruvian_Man.svg. Acesso em 02/2015.
45. LabVIEW LEGO MINDSTORMS NXT Module Help. National Instrument – 2013.
46. TUTORIAL. Para loops e while loops. Disponivel em: http://www.ni.com/white-paper/7588/en/. Acesso em 05/2015.
47. CONTROLE PID BÁSICO-UFSC. Disponivel em: http://user.das.ufsc.br/~aarc/ensino/posgraduacao/DAS6613/PID_Novus.pdf. Acesso em 05/2015
103
48. HOW ACCURATE IS THE KINECT? Disponivel em:
http://www.vision-systems.com/articles/2012/06/how-accurate-is-the-kinect.html . Acesso em 03/2015.
104
105
ANEXO A – Diagrama de blocos do programa de controle de um braço robótico.
106