SlideShare uma empresa Scribd logo
Controle de um Braço Robótico Utilizando o Sensor
Microsoft Kinect
Willian Rodrigues Alves​1​
, Reinel Beltrán Aguedo², Priscila Gomes de Souza¹, João
Batista Hidaka de Oliveira Gaia¹
1​
Fundação Desembargador Paulo Feitoza - FPFTECH
Manaus – AM – Brazil
2​
Fundação Centro de Análise, Pesquisa e Inovação Tecnológica - FUCAPI
Manaus – AM – Brazil
{wiilliian.alves, reinelbeltran71, priscila.gsouza21,
hidaka.gaia}@gmail.com
Abstract.​ This paper presents the process of developing a control system for a
robotic arm capable of performing tasks by recognizing patterns of movements of
a human arm captured by the Microsoft Kinect sensor through the skeletal
tracking algorithm. The control system was developed with Open Source tools
available in the community by creating a basic user interface that displays the
monitored skeleton, allowing you to control servo motors individually in each
skeleton member. Built with servo motors purchased in electronic commerce
companies and pieces printed on a 3D printer prototype of the robotic arm helps
disabled people to perform tasks that were previously only possible to be made
with third-party assistance, generating greater independence, better quality of
life, increased self-esteem and greater freedom.
Resumo. Este artigo apresenta o processo de desenvolvimento de um sistema de
controle para um braço robótico capaz de executar tarefas através do
reconhecimento de movimentos padrões de um braço humano capturados pelo
sensor Microsoft Kinect através do algoritmo de rastreamento esquelético. O
sistema de controle foi desenvolvido com ferramentas Open Source disponíveis
na comunidade, criando uma interface de usuário básica que exibe o esqueleto
monitorado, permitindo controlar servo motores individualmente em cada
membro do esqueleto. Construído com servo motores adquiridos em empresas de
comércio eletrônicos e peças impressas em uma impressora 3D o protótipo do
braço robótico auxilia deficientes físicos a realizar tarefas que antes só eram
possíveis de serem realizadas com auxílio de terceiros, gerando maior
independência, melhor qualidade de vida, aumento da autoestima e maior
liberdade.
Palavras-chave:​ braço robótico, arduino, processing, kinect.
1. Introdução
Um estudo realizado pela Pesquisa Nacional de Saúde em parceria com o Ministério da
Saúde divulgado em agosto do ano passado, demonstrou que 6,2% da população brasileira
possui algum tipo de deficiência. Entre essas deficiências, existem quatro tipos: física,
auditiva, intelectual e visual. O estudo mostra também que 1,3% dos brasileiros são
deficientes físicos, e desse total 46,8% estão limitados a um grau intenso ou muito intenso
de limitações e somente 18,4% desse grupo frequentam serviços de reabilitação (EBC,
2015).
Pesquisas sobre novas tecnologias na área assistiva utilizando a interação natural evoluem
constantemente em possíveis soluções para maior autonomia de deficientes físicos. Por
meio dessas, pessoas com deficiências são capazes de realizar tarefas que antes eram
impossíveis, onde para garantir essas possibilidades é extremamente importante a
disponibilização de produtos de acessibilidade que potencializam plenamente as
capacidades de cada usuário em particular.
A tecnologia com sensor Microsoft Kinect veio para revolucionar a maneira de interação
com o mundo exterior, por exemplo, operar uma ferramenta de trabalho, como um
computador, com gestos vai proporcionar novas possibilidades às pessoas com deficiência
física. Com isso surgem soluções que possibilitam a criação de sistemas embarcados e/ou
inteligentes que permitam melhorar a qualidade de vida dessas pessoas através da
acessibilidade.
Por exemplo, o projeto Gameterapia (criado em 2014 pela instituição Casa de David), que
trata-se de uma terapia alternativa que utiliza como ferramentas videogames, mais
diretamente o NINTENDO WII® e Xbox360 Kinect, para a reabilitação clínica,
favorecendo a modernização terapêutica com o uso da realidade virtual nas intervenções
em arteterapia, esportes (modo geral), fisioterápicas e terapêuticas ocupacionais onde a
atividade cerebral e motora de deficientes é estimulada (CASA DE DAVID, 2014).
Outro exemplo, é o dos estudantes da Universidade Konstanz, Alemanha, que
desenvolveram um novo sistema chamado de Auxílio de Navegação para Deficientes
Visuais (NAVI) que utiliza o sensor Kinect para ajudar deficientes visuais a se deslocarem
dentro de ambientes fechados. No projeto, além das duas câmeras infravermelhas do
sensor Kinect, é utilizada uma câmera comum para mapear o ambiente em que a pessoa se
encontra e dar orientações via um fone de ouvido sobre o caminho e obstáculos, o sistema
precisa de uma série de dispositivos para funcionar tais como: sensores que vibram ao
redor da cintura, uma mochila com um laptop para rodar o software do sistema e um
capacete com o Kinect anexado. Apesar de não parecer confortável, o sistema é capaz de
orientar a pessoa pelo caminho e utiliza imagens de realidade aumentada para indicar
obstáculos (HEILIG, 2011).
Na literatura é apontado que “a utilização de tecnologia permite ampliar e enriquecer o
desenvolvimento sócio afetivo e cognitivo, em indivíduos com deficiência, favorecendo
um maior grau de autonomia, perpassando as dificuldades oriundas de suas limitações”
(ASSISTIVA, 2016).
O objetivo do trabalho é desenvolver uma aplicação para o controle de um braço robótico,
que irá ser controlado através de gestos utilizando o sensor Kinect. Sensores do dispositivo
Kinect são utilizados para reconhecer o movimento do braço esquerdo do usuário
deficiente e reproduzir no braço robótico. Neste contexto, a principal motivação deste
trabalho consiste em contribuir para a criação de sistemas aplicados em tecnologias
assistivas que tenham como característica uma metodologia de interação natural, isto é,
permitir que o usuário desempenhe suas funções mais independente através de uma
interface intuitiva.
2. Das Ferramentas
Nesta seção serão apresentadas as tecnologias e conceitos utilizados no desenvolvimento
deste trabalho.
Kinect - sensor de movimentos da Microsoft para videogames Microsoft Xbox 360 e
Microsoft Xbox One, este disponibiliza uma série de características dadas a seguir: uma
câmera, um sensor de profundidade, um sensor de movimentos. O sensor permite o
rastreamento do esqueleto (reconhece e pode representar o esqueleto), reconhecimento
facial (podendo a partir da leitura facial fazer o login do usuário nos consoles de jogos),
reconhecimento de voz (microfones estrategicamente posicionados dentro do sensor).
Todas estas características e funcionalidades integradas no sensor são comandadas e
controladas por um processador e softwares próprios da Microsoft permitindo que os
usuários interajam de forma intuitiva e sem qualquer dispositivo intermediário (XBOX,
2016).
Processing - ​linguagem de programação de código aberto e ambiente de desenvolvimento
integrado (IDE), construído para as artes eletrônicas e comunidades de projetos visuais
com objetivo de ensinar noções básicas de programação de computador em um contexto
visual e para servir como base para cadernos eletrônicos. O projeto foi iniciado em 2001
por Casey Reas e Ben Fry, ambos ex-membros do Grupo de Computação do MIT Media
Lab. A linguagem tem por base as capacidades gráficas da linguagem de programação Java
(PROCESSING, 2016).
Arduino - plataforma eletrônica de placa única e código aberto capaz de ler entrada como
sensor de luzes, um clique no botão e transformar em saída, ativar um motor, ligar um led
com simples conjunto de instruções para o microcontrolador na placa escritos na própria
IDE Arduino com objetivo de criar produtos acessíveis de custo baixo e descomplicados
para uso de usuários que não possuem conhecimento técnico (ARDUINO, 2016).
3.​ ​Sistema de controle do braço robótico
3.1 O braço robótico
Segundo pesquisas, um braço robótico é formado por elos, juntas, acionadores e um
sistema de controle. O braço é fixado na base, o punho contém várias juntas entre si que
possibilitam a orientação do efetuador na posição referente à tarefa a ser realizada. Na
extremidade do punho existe um efetuador (ferramenta ou mão) destinada a alcançar a
tarefa exigida pela aplicação (GROOVER, 1988).
Uma das principais características que definem os robôs é o chamado "Graus de
Liberdade" que este possui. Graus de liberdade corresponde dizer os números e tipos de
movimentos do braço robótico em si.
De acordo com esse conceito foi possível construir um protótipo de braço robótico,
seguindo os passos:
1. Definir quantos graus de liberdade teria o braço robótico: baseado em modelos
encontrados na literatura consultada. Foi definido 4 graus de liberdade e mais a
pinça foi o suficiente para modelar o braço humano.
2. Modelagem do braço robótico: a modelagem foi feita na ferramenta de CAD
SolidWorks, onde o dimensionamento físico do braço foi feito de acordo com os
pontos de encaixe dos servo motores comerciais, além de considerar a capacidade
de carga de cada servo motor, para algumas peças foram necessários cálculos, dos
quais também foram decisivos na escolha das medidas e formas de cada peça.
3. Prototipagem do braço robótico: uma vez feita a simulação, foi usada uma
impressora 3D do tipo Rip Rap para a impressão do braço robótico.
4. A partir de modelos similares foi possível realizar o dimensionamento, a confecção
e montagem física do braço robótico.
Figura 1. Braço robótico construído
A figura 1 mostra o braço robótico construído, o qual é composto pelas seguintes partes:
1 - Garra articulada, 2 - articulação da garra, 3 - braço articulado, 4 - base articulada.
3.2 O sistema de controle
Na figura 2 é apresentada a estrutura do sistema de controle do braço robótico, onde deve
reproduzir os movimentos de um braço humano.
No sistema, o Sensor Kinect é usado para reconhecer o braço humano além de detectar os
movimentos destes. O Sensor envia a informação via comunicação serial pela porta USB a
um computador, onde se encontra o software de comando e controle do braço robótico. A
interface entre o computador e o braço é o Arduíno (o braço robótico irá retirar um pão de
uma posição e mover para outra posição, controlado através de comandos enviados pelo
dispositivo Kinect ao microcontrolador).
Figura 2. Sistema de controle do braço robótico
Para controlar o braço robótico, o usuário deverá se posicionar em frente ao Kinect, que
reconhece o usuário pelo gesto do braço humano, o sistema supervisório filtra os dados do
Kinect para enviar as coordenadas ao braço robótico através do Arduino.
Para o sistema supervisório, o rastreamento de usuário vai tentar encontrar razoavelmente
um objeto em movimento no campo de visão do Kinect e irá acompanhar o seu
movimento, como o grande objeto em movimento na cena é geralmente uma pessoa, o
sistema irá reconhecê-lo como um “usuário”, embora até mesmo um móvel qualquer em
movimento pode ser detectado como um usuário.
Quando o usuário for detectado, o SimpleOpenNI pode reconhecer os dados de esqueleto e
obter coordenadas de todas as articulações do corpo do usuário. A calibração (como o
processo é chamado) é totalmente automático. Foi usado como plataforma de programação
a IDE Processing junto com a biblioteca simpleOpenNI. Esta biblioteca permite usar o
Sensor Kinect no IDE Processing.
Em primeira instância deve ser definido qual braço humano seria replicado pelo braço
robótico. Uma vez definido, o braço é criado e o esqueleto rastreado (skeleton tracking)
com o Sensor Kinect sem a necessidade do uso de recurso adicional de hardware e
software.
O SimpleOpenNI é uma evolução do OpenNI e NITE, porém nem todas as funcionalidades
destas são suportadas, entretanto isso significa oferecer um acesso mais simples a
funcionalidades essenciais.
OpenNI define Production Node (OPENI2, 2012) ​“nós de produção” conjunto de
componentes que estabelecem o processo de criação de dados necessários para aplicações
baseadas em NUI. Cada nó encapsula a funcionalidade que se relaciona com a geração do
tipo de dados específicos. Esses nós de produção são os elementos fundamentais da
interface OpenNI. No entanto, a API dos nós de produção apenas define a linguagem. A
lógica de geração de dados deve ser implementada pelos módulos que se conectam. Cada
nó de produção tem um tipo e pertence a uma das seguintes categorias: Produção de nós de
dispositivo sensor e Produção de nós de middleware.
As coordenadas estão em um sistema de coordenadas x, y e z que tem início [0,0,0] como
mostrado na figura 3 e as unidades são milímetros. Este coordenadas podem ser facilmente
convertidos em coordenadas (onde x, eixo dos y é o mesmo que na imagem profundidade e
a coordenada z representam a distância entre o sensor).
Figura 3. Sistema de coordenadas
O código da SimpleOpenNI funciona em um loop infinito. Os eventos de detecção geram
chamadas de callbacks ou de retornos (como a detecção de um novo usuário), mas o acesso
a seus dados pode ser feito de forma síncrona no loop principal da aplicação.
Na figura 4 é mostrado os pontos que são capturados pelo rastreamento de esqueleto, que
nada mais é que os dados do esqueleto de um usuário dentro do campo de visão do Kinect
capturando partes de cada região do corpo, possibilitando de forma fácil a criação de
aplicações baseadas em gestos com a simples chamada do método
simpleopenni.startTrackingSkeleton(int userid).
Figura 4. Skeleton Tracking
Foi possível gerar o esqueleto rastreado do usuário e o próximo passo foi juntar a parte do
braço esquerdo com o método getJointSkeleton (id_usuario, ponto, posicao), com essas
coordenadas salvas, foi chamada a comunicação serial para comunicar-se com Arduino e
passar esses dados ao servo motores de cada junta do braço robótico.
Inicialmente foram importadas as bibliotecas na IDE do processing e posteriormente o
sistema foi escrito com o seguinte código:
import SimpleOpenNI.*;
import cc.arduino.*;
import processing.serial.*;
O configuração:
size(640, 480); //tamanho da tela
context = new SimpleOpenNI(this); //objeto da SimpleOpenNI
context.enableDepth(); //pegar a profundidade
context.enableUser(); //habilitar o rastreamento de usuario
context.setMirror(true); // habilitar o rastreamento de forma espelhada
arduino = new Arduino(this, Arduino.list()[0], 57600); //objeto do arduino
arduino.pinMode(6, Arduino.SERVO); // controle de servo
4. Experimentos e Resultados
Inicialmente foram executados pequenos testes para representar o braço robótico sendo
acionado, a captura de imagens com o sensor Kinect, foi criado um ambiente preparado
para o acionamento de ambos, o sistema reconheceu gestos do braço esquerdo do
deficiente com o Kinect para os seguintes movimentos: o usuário levantou o braço e o
braço robótico executou uma ação replicados no braço robótico como mostra a figura 5 e
figura 6.
Figura 5. Teste executados (Braço levantado para cima)
Figura 6. Teste executados (Braço levantado para o lado)
Em todos os testes foram demonstrados boa estabilidade, tanto em relação aos movimentos
quanto com relação a detecção de movimentos de controle feito pelo Kinect, A integração
da placa Arduino do controlador e dos softwares se deu de forma não muito complexa. As
maiores dificuldades encontradas com relação ao sistema de controle foi no uso da
biblioteca SimpleOpenNI por ser de código legado. Já na detecção de movimentos e
controles feitos pelos algoritmos implementados utilizando o Kinect as dificuldades foram
com a calibração da taxa de comunicação entre o Processing e o Arduino sendo utilizado
métodos empiricos.
Os testes realizados parecem promissores, uma vez que a captura dos movimentos e
execução no braço robóticos é realizada com sucesso.
5. Conclusões
Este trabalho apresenta uma solução tecnológica para amenizar dependências enfrentadas
por pessoas com deficiência física. Os resultados obtidos nos testes foi possível comprovar
que o sistema de controle é viável, se comporta de forma estável e alcançou o objetivo,
sendo assim, a solução proposta mostrou-se um caminho a mais para ajudar a quem tem
necessidades especiais.
Como trabalho futuro, pretende-se executar melhorias na plataforma. Propõe-se melhorias:
na implementação da comunicação entre Arduino e o controlador (protocolo), na estrutura
física, no código de controle dando mais inteligência e autonomia, melhorando a suavidade
dos movimentos ou seja acrescentando várias outras tarefas a serem realizadas pelo braço
robótico com maior precisão. Este trabalho já está sendo utilizado como referência por
outro trabalho em andamento que é o de criar um exoesqueleto e acoplar no braço
deficiente do usuário e implementação de técnicas de inteligência artificial.
7. Referências
CAMPAGNOLO B.P., ​Adaptando e desenvolvendo jogos para uso com o Microsoft
Kinect​, Proceedings of SBGames, Salvador - BA, 2011.
LEVY P.C., ANTONIO N.S., SOUZA T.R.B., CAETANO R., SOUZA P.G., ​ActiveIris:
uma solução para comunicação alternativa e autonomia de pessoas com deficiência
motora severa​, In Proceedings of the 12th Brazilian Symposium on Human Factors in
Computing Systems (IHC'2013), Brazilian Computer Society, Porto Alegre - RS, 2013. p.
42-51.
DINIZ J.N., XAVIER F.P., GALENO C.O.Q.L., ​Incentivo ao desenvolvimento e
pesquisa em robótica educacional utilizando o Kinect Sensor​, COBENGE - Juiz de
Fora - MG, 2014.
HEILIG M., ​NAVI – Navigational Aids for the Visually Impaired, ​A student project in
the course Blended Interaction, University of Konstanz, Germany, 2011.
GROOVER M. P.; Weiss, M.; Nagel, R. N.; Odrey, N. G. ​Robótica. Tecnologia e
Programação​. McGraw-Hill, São Paulo, 1989.
BARRETO C. L.; OLIVEIRA L. C.; DA SILVA L. O. T. ​Aplicação da realidade
aumentada para automação de um braço robótico através do reconhecimento gestual
utilizando o kinect​, Universidade Federal de Uberlândia - UFU, Uberlândia - MG, 2012.
ALVES W. G.; BROSCO M. C.; CAMILLO V.; COSTA F.O.; SILVA M.C.; SILVA
L.A.; KUNKEL M.E; ​Protótipo de exoesqueleto para reabilitação de membros
superiores​, XXIV Congresso Brasileiro de Engenharia Biomédica - CBEB, 2014.
RIBEIRO L.C.; FARIAS A.B.; AMARAL E.M.A. ​Sistema de controle de uma
plataforma robótica experimental baseado em visão computacional utilizando kinect​,
Mostra Nacional de Robótica (MNR) - Instituto Federal de Educação, Ciência e
Tecnologia do Espirito Santos - Serra - ES, 2012.
ASSISTIVA, 2016 - Assistiva Tecnologia e Educação.
Disponível em: <http://www.assistiva.com.br/tassistiva.html/>
Acesso em: 16 de Agosto de 2016.
LABDEGARAGEM, 2012 - Laboratório de Garagem.
Disponivel em:​ ​<http://labdegaragem.com/profiles/blogs/tutorial-arduino-com-servomotor/>
Acesso em: 20 de Setembro de 2016.
PROCESSING, 2016 - Processing.
Disponivel em: <https://processing.org/>
Acesso em: 22 de Setembro de 2016.
ARDUINO, 2016 - Arduino.
Disponivel em: <https://www.arduino.cc/en/Guide/Introduction>
Acesso em: 01 de Outubro de 2016.
KOLLMORGEN, 2016 - Servo Motor.
Disponivel em: ​<http://www.kollmorgen.com/pt-br/products/motors/servo/servo-motores/>
Acesso em: 01 de Outubro de 2016.
EBC, 2015 - Empresa Brasil de Comunicação S/A.
Disponivel em​: <http://www.ebc.com.br/noticias/2015/08/ibge-62-da-populacao-tem-algum-tipo-de-deficiencia>
Acesso em: 04 de Outubro de 2016.
CASA DE DAVID, 2014 - Instituição sem fins lucrativos
Disponivel em: <http://casadedavid.net.br>
Acesso em: 06 de Outubro de 2016.
XBOX, 2016 - Microsoft.
Disponivel em: ​<http://support.xbox.com/pt-BR/browse/xbox-360/getting-started/Kinect>
Acesso em: 10 de Outubro de 2016.
CARDOSO G. S. ​Microsoft Kinect: Crie aplicações interativas​, ed. Casa do Código, 2014.
Disponível em: <https://books.google.com.br/books?id=DW6CCwAAQBAJ>
Acesso em: 11 de Outubro de 2016.

Mais conteúdo relacionado

PPTX
Web vitals
PDF
Pssst, hey you! Not everyone likes videos! - WP Accessibility Day-2.pdf
PPT
финансылык план 6 кадам
PPT
Сердечная недостаточн.-2014-2015.ppt
PDF
digiinfo website project report
PPTX
Frontend-and-Backend-in-App-Development.pptx
PDF
PDF
Robótica na reabilitação de pessoas com limitações (2011)
Web vitals
Pssst, hey you! Not everyone likes videos! - WP Accessibility Day-2.pdf
финансылык план 6 кадам
Сердечная недостаточн.-2014-2015.ppt
digiinfo website project report
Frontend-and-Backend-in-App-Development.pptx
Robótica na reabilitação de pessoas com limitações (2011)

Semelhante a Controle de um braço robótico utilizando o sensor Microsoft Kinect (20)

PDF
Protótipo de mão robótica de baixo custo (2012)
PDF
IX_CEEL_099
PDF
Apresentação TCC - Braço Robótico para fins didáticos
PDF
FIAP - Singularity University - Artigo 2012
PDF
Cyber Hand
PDF
cbeb2014_submission_714
PDF
Projeto integrador
PDF
Vector robotic arm r700
PDF
Acessibilidade e hardware livre
PPTX
trabalho de robótica.pptxnklangooNSIOBGIUBjdsjgbD
PDF
Projeto, controle e análise de um manipulador robótico modular
PDF
Jogos, Computação e Robótica
PDF
Dupla de Robôes Cooperativos
PDF
Visao computacional aplicada em um braco robotico didatico
PDF
PDF
Neurogress WP Português (Portuguese)
ODP
Projeto Garra Mecanica com Servo Motor e Arduino - Marcos Oliveira
PPT
PDF
robotica educacional para ensino médio.pdf
PDF
Ledfour artigo arhte 20122 definitivo
Protótipo de mão robótica de baixo custo (2012)
IX_CEEL_099
Apresentação TCC - Braço Robótico para fins didáticos
FIAP - Singularity University - Artigo 2012
Cyber Hand
cbeb2014_submission_714
Projeto integrador
Vector robotic arm r700
Acessibilidade e hardware livre
trabalho de robótica.pptxnklangooNSIOBGIUBjdsjgbD
Projeto, controle e análise de um manipulador robótico modular
Jogos, Computação e Robótica
Dupla de Robôes Cooperativos
Visao computacional aplicada em um braco robotico didatico
Neurogress WP Português (Portuguese)
Projeto Garra Mecanica com Servo Motor e Arduino - Marcos Oliveira
robotica educacional para ensino médio.pdf
Ledfour artigo arhte 20122 definitivo
Anúncio

Último (11)

PPTX
Eng. Software - pontos essenciais para o início
PDF
Jira Software projetos completos com scrum
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Tipos de servidor em redes de computador.pptx
PPT
Conceitos básicos de Redes Neurais Artificiais
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Utilizando code blockes por andre backes
PDF
Manejo integrado de pragas na cultura do algodão
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
Eng. Software - pontos essenciais para o início
Jira Software projetos completos com scrum
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Tipos de servidor em redes de computador.pptx
Conceitos básicos de Redes Neurais Artificiais
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Utilizando code blockes por andre backes
Manejo integrado de pragas na cultura do algodão
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Viasol Energia Solar -Soluções para geração e economia de energia
Anúncio

Controle de um braço robótico utilizando o sensor Microsoft Kinect

  • 1. Controle de um Braço Robótico Utilizando o Sensor Microsoft Kinect Willian Rodrigues Alves​1​ , Reinel Beltrán Aguedo², Priscila Gomes de Souza¹, João Batista Hidaka de Oliveira Gaia¹ 1​ Fundação Desembargador Paulo Feitoza - FPFTECH Manaus – AM – Brazil 2​ Fundação Centro de Análise, Pesquisa e Inovação Tecnológica - FUCAPI Manaus – AM – Brazil {wiilliian.alves, reinelbeltran71, priscila.gsouza21, hidaka.gaia}@gmail.com Abstract.​ This paper presents the process of developing a control system for a robotic arm capable of performing tasks by recognizing patterns of movements of a human arm captured by the Microsoft Kinect sensor through the skeletal tracking algorithm. The control system was developed with Open Source tools available in the community by creating a basic user interface that displays the monitored skeleton, allowing you to control servo motors individually in each skeleton member. Built with servo motors purchased in electronic commerce companies and pieces printed on a 3D printer prototype of the robotic arm helps disabled people to perform tasks that were previously only possible to be made with third-party assistance, generating greater independence, better quality of life, increased self-esteem and greater freedom. Resumo. Este artigo apresenta o processo de desenvolvimento de um sistema de controle para um braço robótico capaz de executar tarefas através do reconhecimento de movimentos padrões de um braço humano capturados pelo sensor Microsoft Kinect através do algoritmo de rastreamento esquelético. O sistema de controle foi desenvolvido com ferramentas Open Source disponíveis na comunidade, criando uma interface de usuário básica que exibe o esqueleto monitorado, permitindo controlar servo motores individualmente em cada membro do esqueleto. Construído com servo motores adquiridos em empresas de comércio eletrônicos e peças impressas em uma impressora 3D o protótipo do braço robótico auxilia deficientes físicos a realizar tarefas que antes só eram possíveis de serem realizadas com auxílio de terceiros, gerando maior independência, melhor qualidade de vida, aumento da autoestima e maior liberdade. Palavras-chave:​ braço robótico, arduino, processing, kinect.
  • 2. 1. Introdução Um estudo realizado pela Pesquisa Nacional de Saúde em parceria com o Ministério da Saúde divulgado em agosto do ano passado, demonstrou que 6,2% da população brasileira possui algum tipo de deficiência. Entre essas deficiências, existem quatro tipos: física, auditiva, intelectual e visual. O estudo mostra também que 1,3% dos brasileiros são deficientes físicos, e desse total 46,8% estão limitados a um grau intenso ou muito intenso de limitações e somente 18,4% desse grupo frequentam serviços de reabilitação (EBC, 2015). Pesquisas sobre novas tecnologias na área assistiva utilizando a interação natural evoluem constantemente em possíveis soluções para maior autonomia de deficientes físicos. Por meio dessas, pessoas com deficiências são capazes de realizar tarefas que antes eram impossíveis, onde para garantir essas possibilidades é extremamente importante a disponibilização de produtos de acessibilidade que potencializam plenamente as capacidades de cada usuário em particular. A tecnologia com sensor Microsoft Kinect veio para revolucionar a maneira de interação com o mundo exterior, por exemplo, operar uma ferramenta de trabalho, como um computador, com gestos vai proporcionar novas possibilidades às pessoas com deficiência física. Com isso surgem soluções que possibilitam a criação de sistemas embarcados e/ou inteligentes que permitam melhorar a qualidade de vida dessas pessoas através da acessibilidade. Por exemplo, o projeto Gameterapia (criado em 2014 pela instituição Casa de David), que trata-se de uma terapia alternativa que utiliza como ferramentas videogames, mais diretamente o NINTENDO WII® e Xbox360 Kinect, para a reabilitação clínica, favorecendo a modernização terapêutica com o uso da realidade virtual nas intervenções em arteterapia, esportes (modo geral), fisioterápicas e terapêuticas ocupacionais onde a atividade cerebral e motora de deficientes é estimulada (CASA DE DAVID, 2014). Outro exemplo, é o dos estudantes da Universidade Konstanz, Alemanha, que desenvolveram um novo sistema chamado de Auxílio de Navegação para Deficientes Visuais (NAVI) que utiliza o sensor Kinect para ajudar deficientes visuais a se deslocarem dentro de ambientes fechados. No projeto, além das duas câmeras infravermelhas do sensor Kinect, é utilizada uma câmera comum para mapear o ambiente em que a pessoa se encontra e dar orientações via um fone de ouvido sobre o caminho e obstáculos, o sistema precisa de uma série de dispositivos para funcionar tais como: sensores que vibram ao redor da cintura, uma mochila com um laptop para rodar o software do sistema e um capacete com o Kinect anexado. Apesar de não parecer confortável, o sistema é capaz de orientar a pessoa pelo caminho e utiliza imagens de realidade aumentada para indicar obstáculos (HEILIG, 2011). Na literatura é apontado que “a utilização de tecnologia permite ampliar e enriquecer o desenvolvimento sócio afetivo e cognitivo, em indivíduos com deficiência, favorecendo um maior grau de autonomia, perpassando as dificuldades oriundas de suas limitações” (ASSISTIVA, 2016). O objetivo do trabalho é desenvolver uma aplicação para o controle de um braço robótico, que irá ser controlado através de gestos utilizando o sensor Kinect. Sensores do dispositivo Kinect são utilizados para reconhecer o movimento do braço esquerdo do usuário
  • 3. deficiente e reproduzir no braço robótico. Neste contexto, a principal motivação deste trabalho consiste em contribuir para a criação de sistemas aplicados em tecnologias assistivas que tenham como característica uma metodologia de interação natural, isto é, permitir que o usuário desempenhe suas funções mais independente através de uma interface intuitiva. 2. Das Ferramentas Nesta seção serão apresentadas as tecnologias e conceitos utilizados no desenvolvimento deste trabalho. Kinect - sensor de movimentos da Microsoft para videogames Microsoft Xbox 360 e Microsoft Xbox One, este disponibiliza uma série de características dadas a seguir: uma câmera, um sensor de profundidade, um sensor de movimentos. O sensor permite o rastreamento do esqueleto (reconhece e pode representar o esqueleto), reconhecimento facial (podendo a partir da leitura facial fazer o login do usuário nos consoles de jogos), reconhecimento de voz (microfones estrategicamente posicionados dentro do sensor). Todas estas características e funcionalidades integradas no sensor são comandadas e controladas por um processador e softwares próprios da Microsoft permitindo que os usuários interajam de forma intuitiva e sem qualquer dispositivo intermediário (XBOX, 2016). Processing - ​linguagem de programação de código aberto e ambiente de desenvolvimento integrado (IDE), construído para as artes eletrônicas e comunidades de projetos visuais com objetivo de ensinar noções básicas de programação de computador em um contexto visual e para servir como base para cadernos eletrônicos. O projeto foi iniciado em 2001 por Casey Reas e Ben Fry, ambos ex-membros do Grupo de Computação do MIT Media Lab. A linguagem tem por base as capacidades gráficas da linguagem de programação Java (PROCESSING, 2016). Arduino - plataforma eletrônica de placa única e código aberto capaz de ler entrada como sensor de luzes, um clique no botão e transformar em saída, ativar um motor, ligar um led com simples conjunto de instruções para o microcontrolador na placa escritos na própria IDE Arduino com objetivo de criar produtos acessíveis de custo baixo e descomplicados para uso de usuários que não possuem conhecimento técnico (ARDUINO, 2016). 3.​ ​Sistema de controle do braço robótico 3.1 O braço robótico Segundo pesquisas, um braço robótico é formado por elos, juntas, acionadores e um sistema de controle. O braço é fixado na base, o punho contém várias juntas entre si que possibilitam a orientação do efetuador na posição referente à tarefa a ser realizada. Na extremidade do punho existe um efetuador (ferramenta ou mão) destinada a alcançar a tarefa exigida pela aplicação (GROOVER, 1988). Uma das principais características que definem os robôs é o chamado "Graus de Liberdade" que este possui. Graus de liberdade corresponde dizer os números e tipos de movimentos do braço robótico em si.
  • 4. De acordo com esse conceito foi possível construir um protótipo de braço robótico, seguindo os passos: 1. Definir quantos graus de liberdade teria o braço robótico: baseado em modelos encontrados na literatura consultada. Foi definido 4 graus de liberdade e mais a pinça foi o suficiente para modelar o braço humano. 2. Modelagem do braço robótico: a modelagem foi feita na ferramenta de CAD SolidWorks, onde o dimensionamento físico do braço foi feito de acordo com os pontos de encaixe dos servo motores comerciais, além de considerar a capacidade de carga de cada servo motor, para algumas peças foram necessários cálculos, dos quais também foram decisivos na escolha das medidas e formas de cada peça. 3. Prototipagem do braço robótico: uma vez feita a simulação, foi usada uma impressora 3D do tipo Rip Rap para a impressão do braço robótico. 4. A partir de modelos similares foi possível realizar o dimensionamento, a confecção e montagem física do braço robótico. Figura 1. Braço robótico construído A figura 1 mostra o braço robótico construído, o qual é composto pelas seguintes partes: 1 - Garra articulada, 2 - articulação da garra, 3 - braço articulado, 4 - base articulada. 3.2 O sistema de controle Na figura 2 é apresentada a estrutura do sistema de controle do braço robótico, onde deve reproduzir os movimentos de um braço humano. No sistema, o Sensor Kinect é usado para reconhecer o braço humano além de detectar os movimentos destes. O Sensor envia a informação via comunicação serial pela porta USB a um computador, onde se encontra o software de comando e controle do braço robótico. A interface entre o computador e o braço é o Arduíno (o braço robótico irá retirar um pão de uma posição e mover para outra posição, controlado através de comandos enviados pelo dispositivo Kinect ao microcontrolador).
  • 5. Figura 2. Sistema de controle do braço robótico Para controlar o braço robótico, o usuário deverá se posicionar em frente ao Kinect, que reconhece o usuário pelo gesto do braço humano, o sistema supervisório filtra os dados do Kinect para enviar as coordenadas ao braço robótico através do Arduino. Para o sistema supervisório, o rastreamento de usuário vai tentar encontrar razoavelmente um objeto em movimento no campo de visão do Kinect e irá acompanhar o seu movimento, como o grande objeto em movimento na cena é geralmente uma pessoa, o sistema irá reconhecê-lo como um “usuário”, embora até mesmo um móvel qualquer em movimento pode ser detectado como um usuário. Quando o usuário for detectado, o SimpleOpenNI pode reconhecer os dados de esqueleto e obter coordenadas de todas as articulações do corpo do usuário. A calibração (como o processo é chamado) é totalmente automático. Foi usado como plataforma de programação a IDE Processing junto com a biblioteca simpleOpenNI. Esta biblioteca permite usar o Sensor Kinect no IDE Processing. Em primeira instância deve ser definido qual braço humano seria replicado pelo braço robótico. Uma vez definido, o braço é criado e o esqueleto rastreado (skeleton tracking) com o Sensor Kinect sem a necessidade do uso de recurso adicional de hardware e software. O SimpleOpenNI é uma evolução do OpenNI e NITE, porém nem todas as funcionalidades destas são suportadas, entretanto isso significa oferecer um acesso mais simples a funcionalidades essenciais. OpenNI define Production Node (OPENI2, 2012) ​“nós de produção” conjunto de componentes que estabelecem o processo de criação de dados necessários para aplicações baseadas em NUI. Cada nó encapsula a funcionalidade que se relaciona com a geração do tipo de dados específicos. Esses nós de produção são os elementos fundamentais da interface OpenNI. No entanto, a API dos nós de produção apenas define a linguagem. A lógica de geração de dados deve ser implementada pelos módulos que se conectam. Cada nó de produção tem um tipo e pertence a uma das seguintes categorias: Produção de nós de dispositivo sensor e Produção de nós de middleware.
  • 6. As coordenadas estão em um sistema de coordenadas x, y e z que tem início [0,0,0] como mostrado na figura 3 e as unidades são milímetros. Este coordenadas podem ser facilmente convertidos em coordenadas (onde x, eixo dos y é o mesmo que na imagem profundidade e a coordenada z representam a distância entre o sensor). Figura 3. Sistema de coordenadas O código da SimpleOpenNI funciona em um loop infinito. Os eventos de detecção geram chamadas de callbacks ou de retornos (como a detecção de um novo usuário), mas o acesso a seus dados pode ser feito de forma síncrona no loop principal da aplicação. Na figura 4 é mostrado os pontos que são capturados pelo rastreamento de esqueleto, que nada mais é que os dados do esqueleto de um usuário dentro do campo de visão do Kinect capturando partes de cada região do corpo, possibilitando de forma fácil a criação de aplicações baseadas em gestos com a simples chamada do método simpleopenni.startTrackingSkeleton(int userid). Figura 4. Skeleton Tracking Foi possível gerar o esqueleto rastreado do usuário e o próximo passo foi juntar a parte do braço esquerdo com o método getJointSkeleton (id_usuario, ponto, posicao), com essas coordenadas salvas, foi chamada a comunicação serial para comunicar-se com Arduino e passar esses dados ao servo motores de cada junta do braço robótico.
  • 7. Inicialmente foram importadas as bibliotecas na IDE do processing e posteriormente o sistema foi escrito com o seguinte código: import SimpleOpenNI.*; import cc.arduino.*; import processing.serial.*; O configuração: size(640, 480); //tamanho da tela context = new SimpleOpenNI(this); //objeto da SimpleOpenNI context.enableDepth(); //pegar a profundidade context.enableUser(); //habilitar o rastreamento de usuario context.setMirror(true); // habilitar o rastreamento de forma espelhada arduino = new Arduino(this, Arduino.list()[0], 57600); //objeto do arduino arduino.pinMode(6, Arduino.SERVO); // controle de servo 4. Experimentos e Resultados Inicialmente foram executados pequenos testes para representar o braço robótico sendo acionado, a captura de imagens com o sensor Kinect, foi criado um ambiente preparado para o acionamento de ambos, o sistema reconheceu gestos do braço esquerdo do deficiente com o Kinect para os seguintes movimentos: o usuário levantou o braço e o braço robótico executou uma ação replicados no braço robótico como mostra a figura 5 e figura 6. Figura 5. Teste executados (Braço levantado para cima)
  • 8. Figura 6. Teste executados (Braço levantado para o lado) Em todos os testes foram demonstrados boa estabilidade, tanto em relação aos movimentos quanto com relação a detecção de movimentos de controle feito pelo Kinect, A integração da placa Arduino do controlador e dos softwares se deu de forma não muito complexa. As maiores dificuldades encontradas com relação ao sistema de controle foi no uso da biblioteca SimpleOpenNI por ser de código legado. Já na detecção de movimentos e controles feitos pelos algoritmos implementados utilizando o Kinect as dificuldades foram com a calibração da taxa de comunicação entre o Processing e o Arduino sendo utilizado métodos empiricos. Os testes realizados parecem promissores, uma vez que a captura dos movimentos e execução no braço robóticos é realizada com sucesso. 5. Conclusões Este trabalho apresenta uma solução tecnológica para amenizar dependências enfrentadas por pessoas com deficiência física. Os resultados obtidos nos testes foi possível comprovar que o sistema de controle é viável, se comporta de forma estável e alcançou o objetivo, sendo assim, a solução proposta mostrou-se um caminho a mais para ajudar a quem tem necessidades especiais. Como trabalho futuro, pretende-se executar melhorias na plataforma. Propõe-se melhorias: na implementação da comunicação entre Arduino e o controlador (protocolo), na estrutura física, no código de controle dando mais inteligência e autonomia, melhorando a suavidade dos movimentos ou seja acrescentando várias outras tarefas a serem realizadas pelo braço robótico com maior precisão. Este trabalho já está sendo utilizado como referência por outro trabalho em andamento que é o de criar um exoesqueleto e acoplar no braço deficiente do usuário e implementação de técnicas de inteligência artificial. 7. Referências CAMPAGNOLO B.P., ​Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect​, Proceedings of SBGames, Salvador - BA, 2011.
  • 9. LEVY P.C., ANTONIO N.S., SOUZA T.R.B., CAETANO R., SOUZA P.G., ​ActiveIris: uma solução para comunicação alternativa e autonomia de pessoas com deficiência motora severa​, In Proceedings of the 12th Brazilian Symposium on Human Factors in Computing Systems (IHC'2013), Brazilian Computer Society, Porto Alegre - RS, 2013. p. 42-51. DINIZ J.N., XAVIER F.P., GALENO C.O.Q.L., ​Incentivo ao desenvolvimento e pesquisa em robótica educacional utilizando o Kinect Sensor​, COBENGE - Juiz de Fora - MG, 2014. HEILIG M., ​NAVI – Navigational Aids for the Visually Impaired, ​A student project in the course Blended Interaction, University of Konstanz, Germany, 2011. GROOVER M. P.; Weiss, M.; Nagel, R. N.; Odrey, N. G. ​Robótica. Tecnologia e Programação​. McGraw-Hill, São Paulo, 1989. BARRETO C. L.; OLIVEIRA L. C.; DA SILVA L. O. T. ​Aplicação da realidade aumentada para automação de um braço robótico através do reconhecimento gestual utilizando o kinect​, Universidade Federal de Uberlândia - UFU, Uberlândia - MG, 2012. ALVES W. G.; BROSCO M. C.; CAMILLO V.; COSTA F.O.; SILVA M.C.; SILVA L.A.; KUNKEL M.E; ​Protótipo de exoesqueleto para reabilitação de membros superiores​, XXIV Congresso Brasileiro de Engenharia Biomédica - CBEB, 2014. RIBEIRO L.C.; FARIAS A.B.; AMARAL E.M.A. ​Sistema de controle de uma plataforma robótica experimental baseado em visão computacional utilizando kinect​, Mostra Nacional de Robótica (MNR) - Instituto Federal de Educação, Ciência e Tecnologia do Espirito Santos - Serra - ES, 2012. ASSISTIVA, 2016 - Assistiva Tecnologia e Educação. Disponível em: <http://www.assistiva.com.br/tassistiva.html/> Acesso em: 16 de Agosto de 2016. LABDEGARAGEM, 2012 - Laboratório de Garagem. Disponivel em:​ ​<http://labdegaragem.com/profiles/blogs/tutorial-arduino-com-servomotor/> Acesso em: 20 de Setembro de 2016. PROCESSING, 2016 - Processing. Disponivel em: <https://processing.org/> Acesso em: 22 de Setembro de 2016. ARDUINO, 2016 - Arduino. Disponivel em: <https://www.arduino.cc/en/Guide/Introduction> Acesso em: 01 de Outubro de 2016. KOLLMORGEN, 2016 - Servo Motor. Disponivel em: ​<http://www.kollmorgen.com/pt-br/products/motors/servo/servo-motores/> Acesso em: 01 de Outubro de 2016. EBC, 2015 - Empresa Brasil de Comunicação S/A. Disponivel em​: <http://www.ebc.com.br/noticias/2015/08/ibge-62-da-populacao-tem-algum-tipo-de-deficiencia> Acesso em: 04 de Outubro de 2016. CASA DE DAVID, 2014 - Instituição sem fins lucrativos
  • 10. Disponivel em: <http://casadedavid.net.br> Acesso em: 06 de Outubro de 2016. XBOX, 2016 - Microsoft. Disponivel em: ​<http://support.xbox.com/pt-BR/browse/xbox-360/getting-started/Kinect> Acesso em: 10 de Outubro de 2016. CARDOSO G. S. ​Microsoft Kinect: Crie aplicações interativas​, ed. Casa do Código, 2014. Disponível em: <https://books.google.com.br/books?id=DW6CCwAAQBAJ> Acesso em: 11 de Outubro de 2016.