Construindo Uma DSL Para Reconhecimento De Gestos Utilizando Kinect
Total Page:16
File Type:pdf, Size:1020Kb
UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMÁTICA GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Construindo uma DSL para reconhecimento de gestos utilizando Kinect TRABALHO DE GRADUAÇÃO Jobert Gomes Prado Sá Recife, Pernambuco, Brasil Dezembro de 2011 Construindo uma DSL para reconhecimento de gestos utilizando Kinect Trabalho apresentao ao Programa de Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco como requisito parcial para obtenção do grau de Bacharel em Ciência da Computação. Jobert Gomes Prado Sá (autor) [email protected] André Luís de Medeiros Santos (orientador) [email protected] Geber Lisboa Ramalho (co-orientador) [email protected] i Assinaturas Dezembro de 2011 __________________________________ Prof. Ph.D. André Luís de Medeiros Santos (orientador) __________________________________ Prof. Ph.D. Geber Lisboa Ramalho (co-orientador) __________________________________ Prof. Ph.D. Sérgio Castelo Branco Soares (avaliador) __________________________________ Jobert Gomes Prado Sá (graduando) ii Agradecimentos Gostaria de agradecer aos meus pais, Tasso e Luiza, pela atenção e dedicação que tiveram com minha educação por toda minha vida. Não tenho dúvidas de que fui guiado por um excelente caminho que me fez ser a pessoa que sou hoje. Ao meu irmão por toda paciência que teve por noites que passei acordado estudando e trabalhando em projetos. A todos meus parentes que sempre se mostraram interessados no avanço dos meus estudos. Aos meus orientadores, Geber Ramalho e André Santos, bem como todos que contribuíram para a realização deste trabalho, direta ou indiretamente. A todos os meus colegas, professores e funcionários do Centro de Informática, que me acompanharam ao longo de todos esses anos. iii Abstract This paper proposes the use of a DSL for use in software product lines for the Kinect sensor. Initially we discuss the evolution of interfaces in a historical perpective to analyze the potential of the device under study in the market. The concepts of natural user interfaces and its principles and concepts involved in software factories are discussed. With these understandings, a methodology called SharpLudus is put into practice in order to build a DSL to a restricted domain of Kinect games, the genre of sports games. With the results provided by the use of this methodology a DSL called Kinetic Gesture Language (KGL) is defined, demonstrating efficiency, increasing productivity and reducing the development time. An analysis detailing aspects of the use of this generated tool is done in a case study. Keywords: Games, NUI, Natural User Interfaces, Software Factories, DSL. Resumo Este trabalho propõe a utilização de uma DSL para utilização em linhas de produtos de software para o sensor Kinect. Inicialmente será discutida a evolução das interfaces em uma perspectiva histórica a fim de analisar o potencial de mercado do dispositivo em estudo. Os conceitos de interfaces naturais e seus princípios bem como os conceitos envolvidos em fábricas de software são discutidos. Com esses entendimentos, uma metodologia chamada SharpLudus é colocada em prática com o objetivo de construir uma DSL para um domínio restrito de jogos para Kinect, os jogos do gênero esportivo. Com os resultados dessa metodologia é definida uma DSL chamada Kinetic Gesture Language (KGL), demonstrando eficiência em termos de aumento de produtividade e redução de tempo na área de desenvolvimento. É feita uma análise detalhando os aspectos da utilização desta ferramenta gerada por meio de um estudo de caso. Palavras-chave: Jogos, NUI, Interfaces Naturais do Usuário, Fábricas de Software, DSL. iv Sumário 1. Introdução .......................................................................................................................... 9 1.1. Motivação .................................................................................................................. 10 1.2. Objetivos e Contribuições ......................................................................................... 11 1.3. Desafios ..................................................................................................................... 11 1.4. Organização do Documento ...................................................................................... 12 2. Evolução das Interfaces e Jogos ...................................................................................... 13 2.1. Interface de Linha de Comando ................................................................................ 13 2.2. Interface Gráfica do Usuário e Dispositivos de Entrada ........................................... 14 2.3. Interface Natural do Usuário ..................................................................................... 16 2.3.1. Kinect..................................................................................................................... 18 3. Fábricas de Software e Linguagens de Domínio Específico ........................................... 22 3.1. Fundamentos das Fábricas de Software .................................................................... 22 3.2. Construindo Fábricas de Software e Produtos de Software ...................................... 23 3.3. Linguagens de Domínio Específico .......................................................................... 23 3.3.1. DSLs Gráficas........................................................................................................ 24 3.3.2. Language Workbenches ........................................................................................ 25 3.3.3. DSLs e Frameworks para NUIs ............................................................................. 26 4. Análise de Domínio ......................................................................................................... 29 4.1. Metodologia .............................................................................................................. 29 4.1.1. Estabelecimento da Visão e Escopo ...................................................................... 30 4.1.2. Funcionalidades do Domínio Sob Análise ............................................................ 30 4.1.3. Seleção de Amostras de Linha de Produção .......................................................... 30 4.1.4. Execução da Análise do Domínio ......................................................................... 30 4.1.5. Extração de Semelhanças e Variabilidades ........................................................... 31 4.1.6. Validação do Domínio ........................................................................................... 31 4.1.7. Análise Incremental e Critério de Parada .............................................................. 31 4.2. Escopo, Funcionalidades e Seleção de Amostras...................................................... 32 4.2.1. Visão e Escopo ...................................................................................................... 32 4.2.2. Funcionalidades Sob Análise ................................................................................. 32 4.2.3. Seleção das Amostras ............................................................................................ 33 4.3. Análise do Domínio .................................................................................................. 34 4.3.1. Execução da Análise .......................................................................................... 34 v 4.3.2. Extração de Semelhanças e Variabilidades........................................................ 41 4.3.3. Validação do Domínio ....................................................................................... 45 4.3.4. Critério de Parada .............................................................................................. 46 5. Construção da Linguagem de Domínio Específico ......................................................... 47 5.1. Modelagem de Uma DSL .......................................................................................... 47 5.2. Requisitos Identificados ............................................................................................ 48 5.3. Especificação da Linguagem KGL ........................................................................... 48 5.3.1. Definição da KGL .............................................................................................. 48 5.3.2. KGL e Editor Visual .......................................................................................... 52 5.3.3. Validadores Semânticos da KGL ....................................................................... 54 5.3.4. Geração de Código e Framework ...................................................................... 57 5.3.5. Reconhecimento de Gestos ................................................................................ 58 5.3.6. Adequação aos Requisitos ................................................................................. 59 6. Estudo de Caso ................................................................................................................. 60 6.1. Implementação .......................................................................................................... 60 6.2. Análise dos Resultados.............................................................................................. 63 7. Conclusões ....................................................................................................................... 64 7.1. Contribuições ...........................................................................................................