UNIVERSIDADE ANHEMBI MORUMBI
ANA PAULA TEIXEIRA SANTOS
ANDRE LUÍS MOSER
FELIPE MOREIRA CRUZ
LUCAS GONÇALVES ODA
THIAGO MATOS ROCCO
KINLIB - PROTÓTIPO DE ENSINO DE LIBRAS
UTILIZANDO O KINECT
São Paulo
2011
ANA PAULA TEIXEIRA SANTOS
ANDRE LUÍS MOSER
FELIPE MOREIRA CRUZ
LUCAS GONÇALVES ODA
THIAGO MATOS ROCCO
KINLIB - PROTÓTIPO DE ENSINO DE LIBRAS
UTILIZANDO O KINECT
Trabalho de Conclusão Curso apresentado como
exigência parcial para a obtenção do título de
Bacharel em
Ciência
da
Computação
da
Universidade Anhembi Morumbi.
Orientador: Msc. Simone de Abreu
São Paulo
2011
K63
Kinlib : protótipo em ensino de libras utilizando o kinect /
Ana Paula Bento Teixeira [et al.]. – 2011.
79f.: il.; 30 cm.
Orientadora: Simone de Abreu.
Trabalho de Conclusão de Curso (Graduação em Ciência da
Computação) – Universidade Anhembi Morumbi, São Paulo,
2011.
Bibliografia: f.75-78.
1. Ciência da Computação. 2. Libras. 3. Acessibilidade.
4. Ensino-ferramenta. I. Título.
CDD 004
ANA PAULA TEIXEIRA SANTOS
ANDRE LUÍS MOSER
FELIPE MOREIRA CRUZ
LUCAS GONÇALVES ODA
THIAGO MATOS ROCCO
KINLIB - PROTÓTIPO DE ENSINO DE LIBRAS
UTILIZANDO O KINECT
Trabalho de Conclusão Curso apresentado como
exigência parcial para a obtenção do título de
Bacharel em
Ciência
da
Computação
da
Universidade Anhembi Morumbi, sob a orientação da
Prof.ª Simone de Abreu.
Aprovado em
___________
Prof.ª Msc. Simone de Abreu
___________
Prof.ª Greice Martins
___________
Prof.ª Msc. Roberta Beatriz Aragon Bento
AGRADECIMENTOS
Agradecemos aos professores, por todo suporte durante o desenvolvimento
do projeto, principalmente a Professora Simone de Abreu nossa orientadora que nos
incentivou a prosseguir com nosso objetivo inicial.
Agradecemos às nossas famílias e amigos, por toda paciência durante esse
período.
Eu André, agradeço muito a minha esposa Juliana Starosky e a meu querido
filho Gabriel pela compreensão e ajuda nos momentos mais difíceis e nas longas
noites que me mantive a frente de meu notebook nas quais, infelizmente, não podia
estar ao lado deles.
Eu Ana Paula, agradeço ao meu marido Everson Silva Santos que esteve ao
meu lado em todos os momentos e por toda paciência.
Agradecemos primeiramente a Deus, que permitiu que tudo isso fosse
possível.
RESUMO
Este trabalho tem como intuito mostrar e explicar o desenvolvimento de um
protótipo para ensino da Língua Brasileira de Sinais (LIBRAS), utilizando um sistema
de captura de movimentos e “SDKs“ de código aberto desenvolvido pela
comunidade OpenSource. Mostrando assim que, com um baixo investimento é
possível criar uma ferramenta de ensino para deficientes auditivos que visa facilitar a
difusão da língua de sinais. O sistema de captura escolhido foi o Microsoft Kinect,
conectado a um computador rodando Microsoft Windows. Este projeto aborda o
desenvolvimento de um protótipo de ensino, o entendimento do framework
Candescent e cenários de teste.
PALAVRAS-CHAVE: Acessibilidade. Microsoft Kinect. Ferramentas de código
aberto. Língua Brasileira de Sinais.
ABSTRACT
This work has the intention to show and explain the development of a
prototype to teach Brazilian Sign Language (LIBRAS), using a movement capture
system and Open Source “SDKs” developed by the community Open Source,
showing that even with low investment it is possible to create a tool to teach the
hearing impaired aiming to promote the sign language. The movement capture
system chosen was the Microsoft Kinect, connected to a computer running Microsoft
Windows. This project addresses the development of a prototype of teaching,
understanding of framework Candescent and test scenarios.
KEYWORDS: Accessibility. Microsoft Kinect. Open source tools. Brazilian Sign
Language.
LISTA DE FIGURAS
Figura 1 - Alfabeto em Libras (Língua de Sinais Brasileira) ...................................... 18
Figura 2 - Alfabeto em Signwriting ............................................................................ 21
Figura 3 - Dicionário de Libras .................................................................................. 22
Figura 4 - ASUS Wavi Xtion ...................................................................................... 24
Figura 5 - The PrimeSensor ...................................................................................... 25
Figura 6 - Estrutura OpenNI ...................................................................................... 25
Figura 7 - Esqueleto de Calibração (FAAST) ............................................................ 26
Figura 8 - Na esquerda o Vídeo-Game Xbox 360 e na direita o Microsoft Kinect ..... 27
Figura 9 - Sensores Kinect ........................................................................................ 30
Figura 10 - Movimento padrão de reconhecimento do kinect .................................... 31
Figura 11 - Visão Infravermelho, pattern do Kinect ................................................... 32
Figura 12 - Arquitetura do framework Candescent .................................................... 37
Figura 13 - Visualização do esqueleto SDK Microsoft ............................................... 40
Figura 14 - Execução do Candescent a partir do Visual Studio ................................ 42
Figura 15 - Seleção de middleware (OpenNI/SDK Microsoft) ................................... 43
Figura 16 - Coleta de dados de imagem através do framework Candescent ............ 44
Figura 17 - Coleta de dados em Infravermelho no Candescent ................................ 45
Figura 18 - Sobreposição das imagens de infravermelho e detecção ....................... 45
Figura 19 - Detecção de mãos e dedos no framework Candescent 1 ....................... 46
Figura 20 - Detecção de mãos e dedos no framework Candescent 2 ....................... 46
Figura 21 - Exibição de imagens no framework Candescent .................................... 47
Figura 22 - Interação com imagens no framework Candescent ................................ 47
Figura 23 - Manipulação de imagens no framework Candescent.............................. 48
Figura 24 - Mecanismos fornecidos pelo framework Candescent ............................. 48
Figura 25 - Componentes da arquitetura do KINLIB 1 .............................................. 51
Figura 26 - Componentes da Arquitetura do KINLIB 2 .............................................. 53
Figura 27 - Diagrama de classe dos componentes do KINLIB .................................. 54
Figura 28 - Sinais reconhecidos pelo KINLIB ............................................................ 55
Figura 29 - Diagrama de Seqüência dos componentes do KINLIB ........................... 56
Figura 30 - Estrutura projeto KINLIB no Visual Studio 2010 ..................................... 58
Figura 31 - Código de apresentação de informações no Painel de Informações ...... 59
Figura 32 - Estruturas de armazenamento e pesquisa de Gestos no KINLIB ........... 60
Figura 33 - Algoritmos de interpretação de Gestos do KINLIB .................................. 61
Figura 34 - Acionamento dos métodos de interpretação de Gestos no KINLIB ........ 62
Figura 35 - Layout do KINLIB no Microsoft Visual Studio 2010 ................................. 63
Figura 36 - Layout do KINLIB .................................................................................... 64
Figura 37 - Layout do aplicativo KINLIB em execução .............................................. 64
Figura 38 - Conexão do KINLIB ao Kinect via OpenNI .............................................. 65
Figura 39 - Quadro de informações do KINLIB ......................................................... 66
Figura 40 - Acionamento dos métodos de interpretação de Gestos no KINLIB ........ 67
Figura 41 - Interpretação e reconhecimento do “Número 1” do KINLIB .................... 68
Figura 42 - Interpretação e reconhecimento do “Número 2” do KINLIB .................... 69
Figura 43 - Interpretação e reconhecimento do “Número 3” do KINLIB .................... 69
Figura 44 - Interpretação e reconhecimento do “Número 4” do KINLIB .................... 70
LISTA DE TABELAS
Tabela 1 - Características da língua de Sinais (LIBRAS) .......................................... 20
Tabela 2 - Especificação técnica da câmera Kinect .................................................. 29
Tabela 3 - Requisitos para instalação do SDK .......................................................... 34
Tabela 4 - Vantagens e Desvantagens dos Frameworks .......................................... 38
Tabela 5 - Analise dos Acertos e Erros no processo de reconhecimento dos dedos 70
LISTA DE ABREVIATURAS E SIGLAS
API
Application Programming Interface
BSD
Berkeley Software Distribution
CMOS
Complementary Metal-Oxide-Semiconductor
E3
Electronic Entertainment Expo
FAAST
Flexible Action and Articulated Skeleton Toolkit
GDI
Graphics Device Interface
INES
Instituto Nacional de Educação de Surdos
IR
Infra Red
LED
Light-emitting diode
LIBRAS
Língua Brasileira de Sinais
NI
Natural Interaction
OPENNI
Open Natural Interaction
PC
Personal Computer
PCL
Point Cloud Library
RAM
Random Access Memory
RGB-D
Red Green Blue Dense
ROS
Robot Operating System
SDK
Software Development Kit
TOF
Time of Flight
WPF
Windows Presentation Foundation
SUMÁRIO
1
INTRODUÇÃO .......................................................................................... 14
1.1
OBJETIVO ................................................................................................. 14
1.2
JUSTIFICATIVA ......................................................................................... 15
1.3
ABRANGÊNCIA ......................................................................................... 15
1.4
ESTRUTURA DO TRABALHO .................................................................. 16
2
LÍNGUA DE SINAIS .................................................................................. 17
2.1
SURGIMENTO DA LÍNGUA DE SINAIS.................................................... 17
2.2
LIBRAS: LÍNGUA DE SINAIS BRASILEIRA .............................................. 17
2.2.1 Métodos utilizados no aprendizado de Libras ...................................... 19
2.2.2 Características da língua de sinais ........................................................ 20
2.3
SOFTWARES E PROJETOS PARA ENSINO DE LIBRAS ....................... 21
2.3.1 SignWriting............................................................................................... 21
2.3.2 Ve-Libras .................................................................................................. 22
2.3.3 Dicionário de Libras ................................................................................ 22
2.3.4 TLibras ...................................................................................................... 23
3
CAPTURA DE MOVIMENTO .................................................................... 24
3.1
FORMAS DE CAPTURA DE MOVIMENTOS ............................................ 24
3.2
MICROSOFT KINECT ............................................................................... 26
3.3
HISTÓRIA, TECNOLOGIA E SOFTWARE ................................................ 27
3.4
CARACTERÍSTICAS DO KINECT ............................................................. 28
4
FRAMEWORKS ........................................................................................ 33
4.1
OPENNI ..................................................................................................... 33
4.2
SOFTWARE DEVELOPMENT KIT (SDK) ................................................. 33
4.3
ROBOT OPERATING SYSTEM (ROS) ..................................................... 35
4.4
CANDESCENT NUI ................................................................................... 36
4.4.1 Funcionalidades ...................................................................................... 36
4.4.2 Arquitetura do Candescent ..................................................................... 37
5
METODOLOGIA ........................................................................................ 39
5.1
INSTALAÇÃO, ANALISE E RESULTADOS DOS FRAMEWORKS ........... 39
6
PROJETO.................................................................................................. 50
6.1
MODELAGEM ........................................................................................... 50
6.1.1 Arquitetura do KINLIB ............................................................................. 50
6.1.2 Design ....................................................................................................... 54
6.2
DESENVOLVIMENTO ............................................................................... 57
6.2.1 Estrutura do projeto ................................................................................ 57
6.2.2 Desenvolvimento do projeto ................................................................... 58
6.3
PROTÓTIPO.............................................................................................. 63
6.3.1 Conexão ao Kinect................................................................................... 65
6.3.2 Quadro de informações........................................................................... 65
6.4
TESTES ..................................................................................................... 67
7
CONCLUSÃO ............................................................................................ 72
7.1
TRABALHOS FUTUROS ........................................................................... 73
REFERÊNCIAS BIBLIOGRAFIAS ...................................................................... 74
ANEXO A – Exemplo de código com as funções de mapeamento ................ 78
14
1 INTRODUÇÃO
Cada vez mais o mundo se preocupa com a acessibilidade para os
deficientes físicos, seja com rampas para os paraplégicos, closed caption para os
deficientes auditivos em televisores, braile em elevadores para os deficientes
visuais, entre outros.
E para auxiliar a comunicação dos deficientes auditivos, foi desenvolvida a
língua de sinais e o alfabeto manual, que utiliza os movimentos das mãos, braços e
da face para simbolizar palavras e expressões (CUORE, 2009).
No Brasil essa linguagem foi adaptada dando origem a Língua Brasileira de
Sinais mais conhecida como LIBRAS, atualmente a única forma de ensino dessa
linguagem é realizada, através de aulas presenciais, apostilas ou vídeos, não existe
uma forma dinâmica que possa aplicar exercícios e corrigi-los sem que haja outra
pessoa envolvida (MONTEIRO, 2006).
Sendo assim, surge uma nova tecnologia que permite a captura de
movimentos do corpo humano, possibilitando a criação de um protótipo de ensino de
LIBRAS de forma relativamente simples e de baixo custo.
O Microsoft Kinect foi lançado inicialmente com o intuito de ser uma nova
forma de controle de jogos, desenvolvido para ser utilizado no video game Xbox 360
(MICROSOFT, 2011).
O seu conceito é utilizar apenas o corpo do jogador como controlador, sem a
necessidade de um joypad ou joystick. Porém, logo após o seu lançamento,
centenas de pessoas começaram a explorar outras possibilidades do hardware,
lançando APIs e escrevendo programas com os mais variados usos (WASH, 2010).
Permitindo também sua utilização em pesquisas médicas, como cirurgias e
em reabilitação de pacientes através de fisioterapia, fazendo com que as máquinas
possam enxergar o mundo, em três dimensões e em tempo real (REVERBEL, 2011).
1.1 OBJETIVO
O objetivo do trabalho é desenvolver um protótipo de ensino de Libras
simplificado e interativo denominado KINLIB, que irá utilizar a Língua de Sinais
Brasileira e os recursos de captura de movimentos do Microsoft Kinect. No qual o
15
usuário irá realizar o movimento indicado e o dispositivo irá informar se a reprodução
estava correta ou não.
Esse protótipo visa facilitar o aprendizado de deficientes auditivos e
profissionais da área de Libras, e ampliar a divulgação desse novo dispositivo de
captura de movimento.
1.2
JUSTIFICATIVA
Com o lançamento do periférico desenvolvido pela Microsoft para controle de
jogos utilizando apenas o corpo humano, abriu-se a possibilidade de criar softwares
com interface simplificada a um custo relativamente baixo e de complexidade
reduzida.
Despertando o interesse do grupo em desenvolver um protótipo, para
utilização desses recursos em prol dos deficientes auditivos, proporcionando a essas
pessoas uma forma prática e divertida de aprendizado.
1.3
ABRANGÊNCIA
Neste trabalho será utilizado apenas APIs desenvolvidas pela comunidade
OpenSource e eventuais SDKs liberados pela empresa Microsoft, não serão
desenvolvidos novos algoritmos para manipulação do hardware.
O protótipo reconhecerá apenas os movimentos das mãos e dedos.
Não serão desenvolvido APIs novas, e também não será utilizado o microfone
do Kinect para realização do projeto de ensino utilizando a língua de sinais LIBRAS.
Neste projeto não serão utilizados todos os sinais de LIBRAS ou do alfabeto
manual, devido sua complexidade no reconhecimento dos dedos através do
equipamento de estudo, e também não será implementado o reconhecimento facial
através do Microsoft Kinect.
O dispositivo utilizado para realização do projeto será o Microsoft Kinect um
sensor de captura de movimento desenvolvido pela empresa Microsoft para ser
utilizado no video game Xbox, tornando os jogos mais interativos onde o próprio
usuário controla as ações do jogo.
16
1.4
ESTRUTURA DO TRABALHO
A estrutura deste trabalho está divida em seis capítulos, em que no segundo
capítulo é abordada a história da língua de sinais no Brasil (LIBRAS) e em outros
países e suas características, e fazendo um comparativo com outros dispositivos de
ensino de Libras utilizando algum tipo de tecnologia.
No terceiro capítulo são analisados alguns dispositivos de captura de
movimentos, as características e especificações do Microsoft Kinect e sua ligação
com a língua de sinais.
No quarto capítulo são analisados os frameworks desenvolvidos pra o Kinect.
No quinto capítulo é descrito a metodologia utilizada para o desenvolvimento
do projeto.
No sexto e último capítulo é realizada a arquitetura, modelagem, Interface e
desenvolvimento do protótipo de ensino utilizando a língua Brasileira de sinais e o
Microsoft Kinect, seguido de conclusão, projetos futuros e referências bibliográficas.
17
2
LÍNGUA DE SINAIS
Este capítulo aborda o surgimento da língua de sinais, as características da
língua Brasileira de sinais, sua relação com a tecnologia e o que vem sendo
desenvolvido através da tecnologia para auxiliar, no desenvolvimento do deficiente
auditivo.
2.1
SURGIMENTO DA LÍNGUA DE SINAIS
A língua de sinais surgiu na Europa por volta do século XVI, quando iniciou as
primeiras metodologias voltadas ao desenvolvimento e a comunicação dos
deficientes auditivos, pois até então eram tratados pela sociedade como seres
invisíveis, nesta época surgiram as primeiras representações, através de gestos do
alfabeto (OLIVEIRA, 2011).
O instituto Nacional de Jovens Surdos, localizado em Paris na França, iniciou
o desenvolvimento da metodologia desenvolvida por Charles Michel de I’Epée,
realizada para instruir jovens surdas, através da datilografia, alfabeto manual e
gestos desenvolvidos por ele (RAMOS, 2006).
Através desses métodos outros países passaram a desenvolver suas próprias
metodologias para auxiliar na comunicação entre surdos e ouvintes (RAMOS, 2006).
A língua de sinais auxilia o deficiente auditivo no seu desenvolvimento e
comunicação com outros deficientes e com os ouvintes. A língua de sinais não é
baseada somente no alfabeto, também é baseada em expressões e gestos, que
podem possuir diversas representações (PACHECO, ESTRUC e ESTRUC, 2008).
Atualmente cada país possui uma língua de sinais particular, com movimentos
significativos para cada expressão, ou seja, essa linguagem não é universal, nem
padronizada, cada palavra pode ser interpretada de forma independente variando
conforme o país (PACHECO, ESTRUC e ESTRUC, 2008).
As palavras e sensações também podem ser expressadas de forma distintas,
dependendo da região, e devido à necessidade de comunicação, cada país
desenvolveu uma metodologia e métodos para se comunicar com os deficientes
auditivos. (PACHECO, ESTRUC e ESTRUC, 2008).
2.2
LIBRAS: LÍNGUA DE SINAIS BRASILEIRA
18
No Brasil a língua de sinais teve seu início por volta de 1856 através do
Professor francês Ernest Huet, sendo portador de deficiência auditiva, trouxe ao
Brasil o alfabeto gestual Frances, e através desse alfabeto começou a surgir à
língua brasileira de sinais (Figura 1), até chegar ao que é atualmente, conhecida
como LIBRAS (RAMOS, 2006).
Figura 1 - Alfabeto em Libras (Língua de Sinais Brasileira)
Fonte: ARAUJO (2007)
Porém, todo o processo até a língua de sinais, chegar de fato a ser
reconhecida, passou por diversas dificuldades, muitos pais tinham vergonha de ter
filhos surdos, não permitindo sua inclusão na sociedade (MONTEIRO, 2006).
Naquela época qualquer tipo de gesto era considerado algo fora dos padrões,
e os próprios deficientes se sentiam desestimulados a se comunicar, o que acabou
prejudicando no avanço da língua de sinais. Com o passar dos anos, a comunicação
foi ganhando real importância e o deficiente auditivo, passou a ser reconhecido na
sociedade como um individuo. A primeira escola para surdos no Brasil foi fundada
em 1857, Instituto Nacional da Educação de Surdos (INES), no estado do Rio de
Janeiro, esse instituto abrigava deficientes auditivos de todas as regiões Brasileiras
(MONTEIRO, 2006).
A comunicação através de sinais no Brasil passou por diversas dificuldades, e
chegou a ser proibida, sendo praticada informalmente nas escolas. Somente em 24
19
de Abril de 2002, foi sancionada a lei nº 10.436 que regulamentaria a língua de
sinais brasileira (LIBRAS), e após esse período, a língua de sinais sofreu diversas
alterações, por essa razão não pode ser dita como sendo uma língua universal, pois
possuem também características regionais. Os deficientes auditivos vêm ganhado
espaço na sociedade, mas ainda existe uma grande necessidade de modificações
para que a comunicação entre ouvintes e surdos seja plena (RAMOS, 2006).
Em 22 de dezembro de 2005, pelo decreto n º5.626 foi regulamentada a Lei
que estabelece a LIBRAS como disciplina curricular de caráter obrigatório na
formação de professores, devido à grande dificuldade de aprendizado do deficiente
auditivo, e sua inclusão na sociedade (CUORE, 2009).
A língua Brasileira de sinais possui uma estrutura gramatical independente,
sendo um sistema lingüístico legítimo que oferece ao surdo a integração com a
sociedade, o que demonstra que essa linguagem possui uma grande semelhança a
língua oral (OLIVEIRA, 2011).
Pode-se, dizer que essa linguagem é desenvolvida através de gestos,
realizada por movimentos das mãos e expressões faciais utilizados como forma de
comunicação, sendo extremamente complexa. Pois utilizada o próprio corpo e seus
movimentos da forma mais expressiva possível, demonstrando atitudes e
sentimentos dos mais diversos (RAMOS, 2006).
2.2.1 Métodos utilizados no aprendizado de Libras
Conforme orientações do curso de libras realizado por Jonas Pacheco (2008)
existem alguns métodos que devem ser realizados para facilitar o aprendizado em
LIBRAS e uma comunicação eficiente com o deficiente auditivo:
A. Para que todo sinal seja realizado corretamente, é necessário
observar, a configuração da mão, articulações, movimentos e
expressões faciais.
B. O foco principal deve ser o rosto e não as mãos, dessa forma sendo
ampliado seu campo de visão.
20
C. Haverá casos onde o sinal realizado terá mais de um significado, ou
não exista a palavra na língua de sinais, nestes casos o recomendado
é que seja utilizada uma palavra semelhante.
D. Em caso de termos muito técnicos deve-se soletrar a palavra, ou digitálo para a melhor compreensão do deficiente auditivo.
2.2.2 Características da língua de sinais
Como relatado anteriormente por Jonas Pacheco (2008), a língua de sinais
possui características lingüísticas muito parecidas com a linguagem oral e escritas
da língua portuguesa, conforme descritas na tabela 1 a seguir:
Tabela 1 - Características da língua de Sinais (LIBRAS)
Características da língua de sinais
Variações Lingüísticas
São
variações
que
podem
ser
definidas por regiões, culturas e
sociais;
Iconicidade e Arbitrariedade
São
representações
através
de
gestos e imagens;
Estrutura Gramatical
Forma
como
as
palavras
são
representadas através de tipos de
movimentos e expressões;
Estrutura Sintática
Forma como são representados e
montadas estruturalmente a frases
para o entendimento do surdo;
Formação de Palavras
Formações de palavras de qualquer
tipo.
Alfabeto Manual
Representação
língua de sinais.
Fonte: PACHECO, ESTRUC E ESTRUC (2008)
do
alfabeto
na
21
2.3
SOFTWARES E PROJETOS PARA ENSINO DE LIBRAS
Apesar de vivermos na era da tecnologia, os recursos existentes ainda são
bastante limitados, em prol dos deficientes auditivos. No final da década de 80
surgiu à tecnologia assistida que foi desenvolvida, com o intuito de proporcionar ao
deficiente físico, uma interação com o mundo a sua volta, da forma mais
independente possível utilizando recursos e metodologias, que promova a
funcionalidade e capacitação de pessoas com deficiência física (PONTES e ORTH,
1999).
Existe no mercado alguns protótipos e softwares desenvolvidos para ensino
da Língua Brasileira de Sinais (Libras), neste projeto analisamos alguns como:
2.3.1 SignWriting
Com o auxilio da tecnologia vem sendo desenvolvido algumas ferramentas
que utilizam a língua de sinais, através de representações escrita visual, um
exemplo é uma ferramenta de representação gráfica chamada SignWriting, que
utiliza símbolos visuais, esse sistema foi desenvolvido em 1974 por Valerie Sutton
na Califórnia, para auxilio na alfabetização de deficientes auditivos (SOUZA e
PINTO, 2003).
Figura 2 - Alfabeto em Signwriting Fonte: NETO (2008)
Para utilizar a escrita gráfica SignWhiting, como mostra a (Figura 2) foi
desenvolvido o software Sign Webmessage com o intuito de tornar mais simples a
22
comunicação entre os surdos e ouvintes, devido o sistema permitir a interação entre
ambas as línguas, portuguesa ou Libras. (SOUZA e PINTO, 2003)
2.3.2 Ve-Libras
O software VE-LIBRA é um protótipo que traduz a fala e a escrita para língua
de sinas desenvolvido por Noelle Nascimento Buffa Furtado, ex-aluna do curso de
engenharia da Faculdade Veris.
O software funciona da seguinte forma: o sistema grava a voz de uma
pessoa e através de um processo de reconhecimento de voz, ocorre a conversão de
fala em texto, que é traduzido por um programa chamado Rybená, que é um tradutor
de textos em português para Libras (PORTA, 2010).
2.3.3 Dicionário de Libras
O software LibrasNet (Figura 3) é uma aplicação destinada ao ensino de
libras, o programa funciona como um dicionário, onde ao selecionar um determinado
tema, lista se uma serie de palavras, ao clicar na palavra abre um vídeo, realizados
por surdos e filhos de surdos (DICIONARIO DE LIBRAS, 2011).
Figura 3 - Dicionário de Libras Fonte: LIBRASNET (2010)
O dicionário de Libras é fornecido gratuitamente e para sua utilização é
necessário instalar um plugin da Adobe o Shockwave (DICIONARIO DE LIBRAS,
2011).
23
2.3.4 TLibras
O TLIBRAS é um projeto destinado à construção de um tradutor automatizado
de Português para LIBRAS, para ser utilizando em sala de aula, através da
televisão, em videos, internet, entre outros, onde será utilizado sinais animados
(ACESSIBILIDADE BRASIL, 2011).
24
3
CAPTURA DE MOVIMENTO
Este capítulo aborda os tipos de capturas de movimentos existentes, os
dispositivos que utilizam esse recurso como o Microsoft Kinect, descrevendo suas
características, desenvolvimento e tecnologia utilizada.
3.1
FORMAS DE CAPTURA DE MOVIMENTOS
Existem novas formas de captura de movimento no mercado conforme a
tecnologia avança. Um exemplo é o novo produto desenvolvido pela ASUS para
PCs, fabricado pela empresa PrimeSense, a mesma que atuou como parceira da
Microsoft e se juntou com a Asus para desenvolver um sistema semelhante para os
PCs, essa novidade se chama WAVI Xtion (Figura 4), que é uma câmera 3D que faz
o reconhecimento de profundidade. (ASUS, 2011)
O Produto funciona através de conexão Wireless, e será possível transmitir as
imagens capturadas para uma TV, seu lançamento foi realizado na data de 30 de
maio de 2011 na Computex 2011, e virá acompanhada de três títulos: MayaFit, Beat
Booster e DanceWall, todos com foco na diversão em família. (GUGELMIN, 2011)
Figura 4 - ASUS Wavi Xtion Fonte: AGOSTINI (2011)
Outro dispositivo que utiliza recursos semelhantes à tecnologia licenciada da
PrimeSense é o The PrimeSensor (Figura 5) é um dispositivo de entrada do
computador do usuário, contendo exemplos de projetos similares ao Kinect, que
possui somente duas câmeras RGB, Infravermelho IR (Infra-Red serve para
reconhecer movimento e profundidade) e microfones, não possui o motor de
inclinação como o Kinect. Contém as bibliotecas previstas no openkinect.org, ou
seja, libfreenect, que com a liberação de novos SDK’s (Software Development Kit,
isto é, Kit de Desenvolvimento de Software ou Aplicativos) para projetos Open
25
source, irá permitir que novos programadores possam realizar a integração do
software com o hardware, podendo desenvolver novos recursos através da captura
de movimentos (BOURKE, 2010).
Figura 5 - The PrimeSensor Fonte: BOURKE (2010)
A arquitetura utilizada no Microsoft Kinect e em outros dispositivos do mesmo
tipo, pode ser classificada em três fases conforme demonstrado a seguir (Figura 6)
(H-ONLINE, 2010):
Figura 6 - Estrutura OpenNI Fonte: H-ONLINE (2010)
I.
Application (Aplicação): onde são localizados os dispositivos como
vídeo games, TV, Navegadores entre outros, que permite a
visualização por parte do usuário de seus movimentos;
26
II.
Driver OpenNI: onde é realizada a junção entre a interface, middleware
e os componentes gestuais, ou seja, que captura os movimentos das
mãos e corpo, (esse drive por ser OpenSource, possui seu código
fonte aberto);
III.
Hardware: definido pelos dispositivos de áudio e vídeo, e sensores de
captura de movimento do usuário ou objetos.
O OpenNI inclui uma API (Application Programming Interface) ou Interface de
Programação de Aplicações, completa para controlar as câmeras 3D incluídas no
hardware da Microsoft Kinect (OPENNI, 2011).
Esse aplicativo tem uma vasta documentação online, como por exemplo,
“Flexible Action and Articulated Skeleton Toolkit (FAAST)”. O FAAST é um
middleware desenvolvido pela Universidade da Califórnia do Sul, que reconhece o
usuário, neste software são incluídas mais de vinte e quatro articulações do
esqueleto humano, e apartir desse esqueleto (Figura 7) é possível adicionarmos
eventos e gerar várias animações (KINECTHACKS, 2010).
Figura 7 - Esqueleto de Calibração (FAAST) Fonte: USC (2011)
3.2
MICROSOFT KINECT
O produto escolhido para a realização deste projeto é o Microsoft Kinect,
desenvolvido pela empresa Microsoft Corporation, uma empresa multinacional de
27
tecnologia, dos Estados Unidos da América, que desenvolve e fabrica licenças e
suporta uma ampla gama de produtos e software para dispositivos de computador, e
nos últimos anos vem desenvolvendo também consoles de vídeo game (Figura 8)
(MICROSOFT, 2011).
Figura 8 - Na esquerda o Vídeo-Game Xbox 360 e na direita o Microsoft Kinect
Fonte: MICROSOFT (2011)
Em sua área de produção o Microsoft Kinect, possui parte de seu processo
terceirizado por outras empresas como a PrimeSense, uma empresa Israelense líder
em detecção 3D e reconhecimento, que foi responsável pela parte técnica da
tecnologia utilizada no Kinect (GOHRING, 2010).
Seu desenvolvimento de hardware e software foi baseado na tecnologia
desenvolvida pela empresa Rare (Rareware) que é uma empresa desenvolvedora
de video game Britânica fundada em 1983.Em 2002 a empresa Rare foi adquirida
pela empresa Microsoft, sendo a desenvolvedora do jogo chamado Kinect Sports
lançado em 2010, e que atualmente desenvolve para outras empresas do ramo de
video games como a Nintendo (REYNOLDS, 2010).
3.3
HISTÓRIA, TECNOLOGIA E SOFTWARE
O Microsoft Kinect foi anunciado pela primeira vez em Junho de 2009, na
conferência E3 (Electronic Entertainment Expo), que acontece anualmente para
expor novas tecnologias de computadores e vídeo-game (EURO GAMER, 2011).
Inicialmente o Kinect ganhou o apelido (ou código) do criador dessa
tecnologia chamado de Project Natal, onde o “Natal” referencia a cidade de Natal
28
no Rio Grande do Norte. O autor Brasileiro Alex Kipman, que escolheu o nome como
um tributo a seu País. Além disso, ele sabia que Natal também significa nascer, em
latim. Considerado a data da nova geração de entretenimento, a Microsoft enviou
uma mensagem para salvar a estréia num evento chamado “World Premiere” Project
Natal para demonstração na E3 2010 (EURO GAMER, 2011).
O evento que aconteceu num domingo, 13 de junho e contou com uma
performance do Cirque du Soleil, anunciando que o sistema iria ser chamado
oficialmente, uma junção das palavras “kinetic” (cinética, em potuguês) e “connect”
(conectividada, devido a possibilidade de usá-lo para video chat), que descrevem os
principais aspectos da iniciativa, a empresa também anunciou que a data de
lançamento norte-americano seria em 4 de novembro de 2010 (WASH, 2010).
O orçamento de publicidade do Kinect, foi U$ 500 milhões, uma quantia maior
que o investimento no lançamento do console Xbox 360, a campanha de marketing
“Você é o controle!”, teve objetivo de atingir novos públicos, incluindo os anúncios
nas caixas de cereais Kellogg’s e garrafas de Pepsi, entre outras formas de
propaganda. (LEVINE, 2010).
3.4
CARACTERÍSTICAS DO KINECT
Uma das caracteristicas do Kinect é a câmera. Esse periférico é baseado no
estilo add-on webcam, que permite aos usuários controlar e interagir sem a
necessidade de usar um Joystick, através da uma interface natural usando gestos e
comando de voz (LEVINE, 2010).
A técnica 3D utilizada na câmera do Kinect é conhecida como time-of-flight
(TOF), que foi baseada no eco; você emite um som ou pulso de rádio, e mede o
tempo que demorá até o som bater em um determinado objeto e retornar, sendo
assim, podemos cálcular a distância entre o objeto que o som atingiu, pois
conhecemos a velocidade do som ou da luz, o mesmo processo da câmera
fotografica, só que neste caso cada sensor possui um radar independente, de
qualquer forma, seria muito complicado realizar esse cálculo se o objeto estivesse a
uma longa distância, devido o tempo para se realizar esse cálculo, pensando nisso e
que foi determinado a distânica entre o objeto e o raio de luz, para que o cálculo
pudesse ser mais simples (QUEIROZ, 2010) .
29
Conforme a Tabela 2, segue informações técnicas da câmera do dispositivo.
Tabela 2 - Especificação técnica da câmera Kinect
ESPECIFICAÇÃO
Campo
de
visão
(Horizontal, 58º H, 45º V, 70º D
vertical, Diagonal)
Profundidade
do
tamanho
da VGA (640x480)
imagem
Resolução espacial x/y (a 2m de 3mm
distância do sensor)
Profundidade da resolução z(a 2m 1cm
de distância do sensor)
Rendimento máximo da imagem 60FPS
(frame-rate)
Alcance da operação
0.8m to 3.5m
Tamanho de imagens a cores
UXGA(1600x1200)
Audio, Microfones incorporados
Dois
Audio – entradas digitais
Quatro
Interface dos dados/alimentação de USB 2.0
energia
Consumo
2.25W
Ambiente da operação
Fechado,
todas
as
condições de iluminação
Temperatura ambiente
0º C – 40ºC
Fonte: EUROGAMER(2011).
A Figura 9 demonstra suas funcionalidades, o dispositivo fica sobre uma base
com eixo-motorizado, permitindo que o sensor se mova de acordo com as
necessidades do usuário (ABRÃO, 2010).
Tendo como principal obrigatoriedade que o usuário fique a uma distância
mínima de 1,2 metros e máxima de 3,5 metros, para que o dispositivo possa
reconhecer o usuário como jogador (ABRÃO, 2010).
30
Figura 9 - Sensores Kinect Fonte: GUGELMIN (2010)
A área de jogabilidade para usuário capturado pelo dispositivo é de 6m², um
campo de visão angular de 57° graus na horizontal e de 43° graus na vertical,
enquanto o pivô motor é capaz de inclinar-se até 27° para cima ou para baixo,
conforme pode ser visto na Figura 9 (ABRÃO, 2010).
Esse sensor funciona em qualquer condição de iluminação, onde o periférico
projeta o infravermelho IR, e o sensor CMOS (complementary metal-oxidesemiconductor),
na
língua
portuguêsa
significa
semicondutor
metal-óxido-
complementar. É um tipo de tecnologia empregada na fabricação de circuitos
integrados de lógica digital (portas-lógicas, flip-flops, contadores, decodificadores,
etc.), microprocessadores, memórias RAM, entre outros, tudo isso para capturar
informações em 3D (ABRÃO, 2010).
A outra câmera, RGB-D (permitindo distinção do eixo Z, reconhecendo
objetos em 3D) é utilizada em celulares, que reconhece o rosto e exibe vídeos, esse
dispositivo tem resolução de 640x480 pixels e captura imagem em 30 vezes por
segundo (QUEIROZ, 2010).
O segredo são os feixes infravermelhos, lançados sob o ambiente e que fica
imperceptível, assim o sensor CMOS, (Figura 10) faz o restante da análise, que é a
uma câmera ativa de detecção de profundidade utilizando uma abordagem
estruturada de luz (usando o que parece ser um laser L.E.F. infravermelho e
espelhando uma matriz de micro pontos), que também envia profundidade de
31
imagens de 640x480 pixels, embora pareça que nem todos os pixels são mostrados
em cada frame (QUEIROZ, 2010).
Figura 10 - Movimento padrão de reconhecimento do kinect
Fonte: GUGELMIN (2010)
O microfone multidirecional faz com que o sensor identifique a acústica do
ambiente não capturando os ruídos, reconhecendo somente a voz do usuário. Esses
microfones são espaçados um a esquerda e os outros três a direita, voltados para
baixo de forma que a frente do dispositivo permança livre, e o reconhecimento de
voz possui um sistema chamado de open-mic, pronto para receber o comando do
usuário (FISHER, 2010).
Já o driver do dispositivo, é um software de baixo nível que depende do
hardware e do sistema operacional específicos, para atuar como um tradutor entre o
dispositivo, o hardware, aplicações ou sistemas operacionais que utiliza-lo
permitindo assim que o Kinect seja instalado como um dispositivo, podendo interagir
com programas de computador de nível superior (MAN e MINTZ, 2011).
Esse equipamento pode ser utilizado para o desenvolvimento multi-plataforma
e multi-programação em PCs e outros dispositivos, aproveitando a cor e
profundidade (RGB-D) de detecção de câmera, acelerômetros e microfones ou
controlar o motor em rotação e inclinação (QUEIROZ, 2010).
Os benefícios dessa tecnologia são amplos e potencialmente, podem ser
aplicados em diversas áreas como a robótica, virtual multi-touch, interação homemmáquina, vigilância, educação, captura de movimento, ou objetos de rastreamento,
32
captura de vídeo 3D ou detecção de imagem (scanning), entre outros (MAN e
MINTZ, 2011).
Figura 11 - Visão Infravermelho, pattern do Kinect
Fonte: STANFORD (2011)
A Figura 11 mostra uma câmera com sensor que envia os raios
infravermelhos. O cálculo da distância entre o objeto, baseia-se no raio de retorno.
Quanto menor é a distância, mais “brilhante” é o ponto (FISHER, 2010).
Então, o Kinect pode ser definido como um dispositivo, onde o sensor de
profundidade projeta o laser infravermelho combinado com o sensor CMOS
monocromática, que capta dados de vídeo em 3D, sob quaisquer condições de luz
ambiente, sendo a distância de detecção do sensor de profundidade ajustável, e o
software
é
capaz
automaticamente,
de
calibrar
o
sensor
baseado
nas
caraciterísticas física do jogador e seu ambiente, acomodando a presença de
móveis ou outros obstáculos para reconhecimento total do corpo (BOURKE, 2010).
E possível localizar um exemplo de código com as funções utilizadas para
mapear apartir das câmeras do Kinect uma imagem em 3D, que foi desenvolvido por
Mattheus Fischer, e possivel visualizar um trecho desse código em ANEXO A
(FISHER, 2010).
33
4
FRAMEWORKS
Este capítulo aborda os tipos de frameworks existentes desenvolvidos para
ser utilizado em conjunto com o dispositivo Microsoft Kinect, descrevendo suas
características e funcionalidades.
4.1
OPENNI
O Microsoft Kinect utiliza como já citado anteriormente, o framework OpenNI
que foi desenvolvido para realizar a interação entre dispositivos, aplicações e
middleware, essa organização sem fins lucrativo, fornece sua API em código aberto
(OPENNI, 2011).
OpenNI que significa Open Natural Interaction, é um framework multi-idioma e
multi-plataforma que define as APIs para o desenvolvimento de aplicações utilizando
dispositivos de interação natural (OPENNI, 2011).
O OpenNI, fornece diversos módulos e bibliotecas, que permite o
desenvolvedor utiliza-lo com qualquer equipamento que possua um sensor, esse
algoritmo pode ser calculado pela entrada de dados no sensor, podendo ser o corpo
humano, mãos, mapas (OPENNI, 2011).
Esse framework atende as seguintes linguagens: C++ e C#, e sua principal
vantagem é ser utilizado em outros sensores visuais e dispositivos além do Microsoft
Kinect (SEN, 2011).
O framework OpenNI permite conectar sensores que enviam dados brutos ao
middleware que vai analisar esses dados e encaminhar para outros middleware,
onde finalmente esses dados serão enviados para a aplicação, que pode ser um
dispositivo, como uma TV ou vídeo game (SEN, 2011).
4.2
SOFTWARE DEVELOPMENT KIT (SDK)
O Software Development Kit (SDK) Beta da Microsoft Research foi desenvol-
vido para facilitar pesquisas acadêmicas e auxiliar as comunidades a desenvolver
novas ferramentas através da tecnologia do sensor do Microsoft Kinect em
computadores que executa o Windows Seven (RESEARCH MICROSOFT, 2011).
A seguir a tabela 4 indica os principais requisitos de hardware e software para
a instalação do SDK (RESEARCH MICROSOFT, 2011).
34
Tabela 3 - Requisitos para instalação do SDK
REQUISITOS DE
HARDWARE:
REQUISITOS DE SOFTWARE:
Computador com um - Windows seven compatível com placa
processador dual - gráfica que suporte o Microsoft ® DirectX ®
core 2,66 GHz ou 9.0c (x86 ou x64)
mais rápido
Capacidades
2GB de RAM
- Microsoft Visual Studio ® 2010 Express
ou outra edição do Visual Studio 2010
- Microsoft. NET Framework 4 (instalado
com o Visual Studio 2010). Para C++
amostras Skeletal Viewer
Kinect para Xbox 360 - DirectX Software Development Kit Junho
® sensor
de 2010 ou versão posterior.
edição especial que
inclui cabo USB
- DirectX End-User Runtime Web Installer
Para a amostra de - Plataforma Microsoft Speech - Runtime
fala (x86 apenas)
Server = Versão 10.2 (Edição x86)
- Plataforma Microsoft Speech - Software
Development Kit, Versão 10.2 (Edição x86)
- Kinect para Windows Runtime versão 0.9.
(modelo acústico da Microsoft Speech
Plataforma SDK beta).
Fontes: Research Microsoft (2011)
O SDK Beta da Microsoft possui (RESEARCH MICROSOFT, 2011):
I.
Drivers para a utilização do dispositivo Kinect em um computador que está
executando o Windows Seven;
II.
APIs e interfaces do dispositivo, juntamente com a documentação
técnica para desenvolvedores;
III.
Amostras de código fonte.
O Windows SDK beta para Kinect inclui drivers e APIs, para os fluxos de
35
sensor e rastreamento de movimento humano, documentação, instalação e recursos
materiais. Esse material fornece capacidades para os desenvolvedores que criam
aplicativos com C++, C# ou Visual Basic, usando o Microsoft Visual Studio 2010
(RESEARCH MICROSOFT, 2011).
Para o rastreamento do esqueleto é necessário que as figuras em movimento
não fiquem muito próximas a câmera, pois pode produzir resultados não confiáveis
ou ímpar. A faixa ideal é de aproximadamente cerca de 1,2 a 3,5 metros
(RESEARCH MICROSOFT, 2011).
Esse framework suporta o rastreamento de pipeline esqueleto, mas não inclui
suporte para
velocidade
ou
rotação.
Existem
duas versões da amostra
SkeletalViewer que estão no SDK beta (RESEARCH MICROSOFT, 2011):
I.
C++ versão que usa o Microsoft ® Direct3D ® 9 e do Windows display
gráfico (GDI) para renderizar imagens em uma janela;
II.
C# versão que demonstra o uso da interface Microsoft Research Kinect
Nui usa o gerenciados e Windows Presentation Foundation (WPF) para
processamento e gerenciamento de janelas.
4.3
ROBOT OPERATING SYSTEM (ROS)
O Robot Operating System, mais conhecido como ROS, é um conjunto de
ferramentas e bibliotecas que visa ajudar o desenvolvedor. Foi criado em 2007 pelo
Laboratório de AI de Stanford, nele é feita a parte de abstração em relação ao
hardware, sua funcionalidade mais utilizada em troca de mensagens em nós
(ROS.ORG, 2011).
O ROS atualmente tem sua versão recomendada para Ubuntu tendo o
Windows como parcialmente atendido, apesar de ser mais utilizado em robôs, este
trabalho tem uma biblioteca chamada PCL que será utilizada em conjunto com o
ROS, por isso é de extrema importância conhecer o ROS e suas funcionalidades
uma vez que em conjunto com o PCL o ROS consegue atender o requisito de
trabalhar com as mãos.
36
O ROS também é multi-plataforma, com isso qualquer desenvolvedor pode
utilizar-lo, pois possui interação com equipamentos como o Kinect (ROS.ORG,
2011).
4.4
CANDESCENT NUI
Conhecido sob o nome de Candescent, o framework Candescent NUI é uma
coleção de componentes de software que formam um framework desenvolvido por
um grupo de estudantes independentes e foi disponibilizado na Internet para
compartilhamento e desenvolvimento cooperativo, através do mundo de uma
plataforma de software para visualização, reconhecimento e manipulação de gestos
humanos através de dispositivos de detecção de movimentos, como por exemplo, o
dispositivo Kinect da Microsoft (STEGMUELLER, 2011).
Desenvolvido na linguagem de programação C# e tendo como base para o
framework Candescent encontra-se disponível para livre download no site do
CandescentNui sob a modalidade de licenciamento New BSD License (BSD)
(STEGMUELLER, 2011).
4.4.1 Funcionalidades
O Candescent é um framework que permite aos seus desenvolvedores a
possibilidade de através do seu uso abstrair uma série de conceitos e técnicas que
são necessários de serem entendidos e desenvolvidos quando da construção de
sistemas de software e/ou algoritmos de manipulação e reconhecimento de gestos
(STEGMUELLER, 2011).
Suportando essa abstração que é muito importante para os desenvolvedores
que
utilizam
este
framework no
capitulo
a
seguir será
abordado
mais
detalhadamente às funcionalidades deste framework.
O Candescent disponibiliza uma série de funcionalidades que são suportadas
através de suas classes e métodos, e que permitem ao desenvolvedor criar e
estender
mecanismos
de
detecção
e
reconhecimento
de
gestos,
essas
funcionalidades são suportadas por componentes de softwares e algoritmos
construídos em C# e que constituem o cerne do framework do Candescent.
37
Em sua versão mais recente, a versão Release Candidate 9489, o
Candescent disponibiliza um projeto que permite a visualização de exemplos de
funcionalidades que atualmente são suportadas no framework (STEGMUELLER,
2011).
4.4.2 Arquitetura do Candescent
A arquitetura do framework Candescent descreve o conjunto de componentes
físicos e lógicos que permitem seu funcionamento. Cada camada da arquitetura do
framework (Figura 12) endereça um componente que é acionada por outro
componente em outra camada e que aciona outros componentes em outras
camadas (STEGMUELLER, 2011).
Figura 12 - Arquitetura do framework Candescent
Fonte: Autores (2011)
O framework Candescent está localizado entre a camada de aplicação
(camada da arquitetura onde se localizam as aplicações onde os usuários
interagem) e a camada de middleware, camada onde se localizam os softwares que
38
são responsáveis por disponibilizar meios de acesso aos dispositivos de captura de
movimento (STEGMUELLER, 2011).
Através da tabela 4 é possível visualizar as vantagens e desvantagens dos
frameworks analisados.
Tabela 4 - Vantagens e Desvantagens dos Frameworks
FRAMEWORK
OPENNI
SDK MICROSOFT
VANTAGENS
- Multi-plataforma;
DESVANTAGENS
- Baixo nível;
- Módulos e bibliotecas;
- Perfeita conexão com o Kinect;
- Reconhecimento de
- Reconhecimento do esqueleto
Mãos e dedos;
humano;
ROS
CANDESCENT NUI
- Software livre;
- Instalação complicada;
- Documentação;
- Execução de códigos;
- Mãos e dedos;
- Falta documentação,
- Processo de Instalação,
- Complexidade;
- Variedades de bibliotecas;
Fonte: Autores (2011)
39
5
METODOLOGIA
Uma prova de conceito se baseia no princípio de que é possível se provar
que algo possa ser imaginado, desenhado e construído atendendo a requisitos préestabelecidos como, por exemplo, requisito de qualidade, de preço, de tecnologia de
normas e independentemente de quais requisitos atendidos a premissa é a mesma,
se provar que o conceito funciona (MARTINS, 2010).
O desenvolvimento desse trabalho tem como objetivo a prova de conceito de
que tecnologias de captura e reconhecimento de movimentos podem ser utilizadas
como ferramentas para interpretação de gestos e sinais e para suportar as inúmeras
variáveis inseridas nesse contexto, várias pesquisas foram iniciadas, várias
instalações de componentes de software foram realizadas, testes executados e
análises feitas.
Este capítulo aborda o conjunto de procedimentos (metodologia) realizados
durante o projeto incluindo os procedimentos de instalação, análise e resultados
obtidos referentes às pesquisas feitas sobre os frameworks selecionados para o
desenvolvimento do protótipo KINLIB.
Este estudo foi fundamental para a escolha do framework que melhor atendese o desenvolvimento do KINLIB.
5.1
INSTALAÇÃO, ANALISE E RESULTADOS DOS FRAMEWORKS
Como já informado anteriormente, o Microsoft Kinect foi desenvolvido para
utilização no vídeo game Xbox 360, e para realizar esse projeto foi necessário a
instalação do dispositivo em um computador, sendo assim possível sua analise
interna e desenvolvimento.
A instalação do OpenNI foi realizada em um sistema operacional Windows
Seven Profissional de 64 bits e para que o computador reconheça o Kinect foi
necessário utilizar os seguintes aplicativos (KINECTHACKS, 2010):
1 - Driver para reconhecimento do kinect: dpinst-amd64.exe;
2 - OPENNI-Win32-1.0.0.23.exe;
3 - SensorKinect-Win32-5.0.0.exe;
4 - NITE-Win32-1.3.0.17.exe.
40
Além dos aplicativos informados anteriormente, são necessários alguns
arquivos XML's do NITE e do OpenNI, localizados no site dos desenvolvedores dos
Frameworks (KINECTHACKS, 2010).
O ambiente de desenvolvimento e testes utilizado foi o Visual Studio C+ e a
linguagem utilizada C++. Também foi necessário utilizar o SDK do DIRECTX, o
pacote do Visual Studio 2010 e o drive Nvidia CG. Além desse procedimento de
instalação, existem outros para a plataforma Windows e versões anteriores, também
é possível utilizar outras linguagens de programação para o desenvolvimento de
novos recursos do Microsoft Kinect, contudo para este framework não foram
realizados testes em plataformas de 32 bits (KINECTHACKS, 2010).
A vantagem de se utilizar OpenNI é porque ele trabalha sobre Windows e
Linux, dando maior liberdade de desenvolvimento, porém esse framework é muito
complexo para ser instalado, além disso juntamente com esses SDK’s ele
apresentou conflito na máquina.
O SDK da Microsoft como informado anteriormente é o framework liberado
pela própria Microsoft para que estudantes, acadêmicos e desenvolvedores,
pudessem exploras os recursos e funcionalidades do Kinect e desenvolver outras
aplicações voltadas para o dispositivo.
Para o procedimento de Instalação do SDK da Microsoft, o instalador deve
ser baixado no site da Microsoft Research, lembrando que essa é a versão beta,
sendo suportado apenas pelo Windows Seven (RESEARCH MICROSOFT, 2011).
Figura 13 - Visualização do esqueleto SDK Microsoft
Fonte: MICROSOFT RESEARCH (2011)
41
A vantagem de utilizar o SDK é sua perfeita conexão com o Microsoft Kinect
uma vez que possui todos os drives necessários e códigos fontes de exemplos para
poder manipular o dispositivo, esse framework permite também reconhecer até dois
esqueletos simultaneamente (Figura 13) utilizando o Kinect.
A desvantagem encontrada ao utilizar o SDK da Microsoft é que o ele ainda
não permite o reconhecimento dos dedos e palma das mãos (Figura 13) fazendo
com que esse framework fosse inviável para a realização do presente trabalho.
O ROS é um framework desenvolvido a principio para utilização em Robôs,
porém esse framework foi selecionado para analise devido o grande número de
desenvolvedores o utilizar em conjunto com o Kinect.
Para o procedimento de instalação e analise do ROS foi utilizado os
comandos do próprio site do ROS, onde se deve primeiramente adicionar o http no
arquivo source.list, após atualizar o sistema e instalar a chave do mesmo, deve-se
usar o comando apt-get para instalar o pacote ros-electric-desktop-full (ROS.ORG,
2011).
Para criar o ambiente do ROS é necessário criar a pasta chamada
ros_workspace no home do usuário, como está sendo baseando na versão estável
do ROS, está sendo usado o Ubuntu 11.04. Apos criar o ambiente deve-se executar
o arquivo setup.sh através do comando (. setup.sh) (ROS.ORG, 2011).
A simulação do ROS no kinect deve-se aos exemplos executados do próprio
site, onde se deve criar o ambiente de acordo com a estrutura de pastas e através
do comando roslauch executar o mesmo, no caso foi utilizado o exemplo do
hand_tracking que foi criado através do comando rosmake nome do projeto. Depois
de criado deve-se criar a estrutura de diretórios com os arquivos responsáveis pela
execução, para executar o projeto precisa estar na pasta lauch e executar o
comando roslaunch (ROS.ORG, 2011).
Uma das vantagens do ROS e a vasta documentação que permite ao
desenvolvedor conhecimento amplo em relação a ferramenta, o software e livre
neste caso seu código e aberto, o que torna possível trabalhar em baixo nível.
Devido sua utilização principalmente no Linux, encontramos dificuldades na
montagem do ambiente de teste, e execução dos códigos de exemplo.
O Candescent é um framework que possui algumas premissas de instalação
que devem ser atendidas para que funcione sem problemas, seja através de seus
executáveis ou através da compilação dos seus códigos fontes.
42
Os componentes de software ou middlewares que o framework Candescent
necessita são o OpenNI, o Kinect Drivers, e o NITE os quais são pré-requisitos para
a instalação do Candescent. Os middlewares citados, o OpenNI, o Kinect Drivers, e
o NITE, irão dar suporte apenas a seleção de middleware do OpenNI quando da
execução do Candescent, por isso, caso seja preciso selecionar o middleware SDK
Kinect quando da execução do Candescent é necessário instalar o SDK Microsoft do
Kinect na máquina.
Como alternativa para a instalação do pacote de software para o OpenNI é
possível acessar fazer o download de um instalador (disponibilizado gratuitamente),
o qual realiza de forma transparente e automática toda a instalação OpenNI, o
Kinect Drivers, e o NITE (BREKEL, 2011).
Com relação ao processo de instalação do SDK Kinect da Microsoft é
necessário acessar o site da Microsoft e fazer o download do instalador do SDK
(RESEARCH MICROSOFT, 2011).
Após a instalação de todos os componentes de software mencionados, o
Candescent (Figura 14) poderá ser executado.
Figura 14 - Execução do Candescent a partir do Visual Studio
Fonte: Autores (2011)
Através dessa profunda análise foi tomada a decisão de escolher o
Candescent como framework de suporte para construção da prova de conceito do
projeto.
43
Entre
os
pontos
levados
em
consideração
está
principalmente
à
funcionalidade de captura de movimentos das mãos e dedos a qual foi um
diferencial de todos os outros frameworks estudados e será a base para inicio do
desenvolvimento da prova de conceito.
Essa funcionalidade é fundamental dentro do framework Candescent no
sentido de ser a funcionalidade que gera as informações fundamentais para a
exibição das linhas e contornos das mãos e dedos e a partir das quais é possível se
determinar a posição corrente de cada elemento em tela. E essas funcionalidades
são detalhadas a seguir:
A. Seleção de Middleware
Essa funcionalidade é uma das mais importantes do framework, pois permite
ao desenvolvedor escolher e selecionar através de qual middleware o framework irá
funcionar interagindo com o dispositivo físico de detecção de movimento. O
Candescent permite a seleção de dois middleware (Figura 15), o OpenNI e o SDK
Kinect.
O OpenNI e SDK, atuais alternativas no framework Candescent, possuem
cada um suas vantagens e desvantagem as quais devem ser levadas em conta no
momento da escolha e isso possibilita ao desenvolvedor a capacidade de trabalhar
com o middleware que mais possui conhecimento e experiência.
Figura 15 - Seleção de middleware (OpenNI/SDK Microsoft)
Fonte: Autores (2011)
44
B. Coleta de dados em RGB
A coleta de dados de imagem é fundamental para que qualquer framework
que se proponha a detecção de movimento funcione e tenha alto grau de eficiência e
qualidade, pois é através dos dados das imagens coletadas (Figura 16), que todo o
processamento computacional e gráfico acontece.
Essa funcionalidade de coleta de dados de imagem não é primariamente um
mérito do framework Candescent, mais sim dos dois middlewares, OpenNI e SDK da
Microsoft que trabalham abaixo do Candescent trazendo esses dados do dispositivo
físico, contudo, o framework Candescent possui o mérito de conter estruturas de
dados e algoritmos capazes de absorver esses dados e expô-los em um nível de
abstração mais elevado aos desenvolvedores que o utilizam.
Figura 16 - Coleta de dados de imagem através do framework Candescent
Fonte: Autores (2011)
C. Coleta de dados de IR
Uma das funcionalidades mais interessantes que o framework Candescent
suporta é a capacidade de coletar os dados de IR (infravermelho) provenientes dos
equipamentos físicos de captura de movimento, como por exemplo, o Kinect.
A coleta de imagem em infravermelho (Figura 17) permite a detecção de
profundidade da cena exposta ao equipamento físico de captura de imagem bem
como o reconhecimento de movimento e é somente através da capacidade do
45
framework Candescent absorver essa funcionalidade que o desenvolvedor pode
utilizar os recursos de reconhecimento de movimento.
Figura 17 - Coleta de dados em Infravermelho no Candescent
Fonte: Autores (2011)
Ainda como parte da funcionalidade de coleta de dados de imagem em
infravermelho IR o framework Candescent possui a característica de fusão de
imagens, sobreposição de imagens permitindo ao desenvolvedor a capacidade de
visualizar ao mesmo tempo os dados coletados da imagem em infravermelho e as
informações geradas pelo framework, como por exemplo, conforme mostra a Figura
18, a detecção em tempo real de movimento.
Figura 18 - Sobreposição das imagens de infravermelho e detecção
Fonte: Autores (2011)
46
D. Detecção de mãos e dedos
A funcionalidade de detecção de mãos e dedos é uma das funcionalidades
mais interessantes que existem no framework, pois antes de qualquer outro ponto,
essa funcionalidade é totalmente desenvolvida dentro do framework Candescent
através do processamento dos dados obtidos dos dispositivos de captura de
movimento suportados.
Através das funcionalidades de captura de dados de RGB e IR o framework
Candescent realiza uma série de processamentos com o auxilio de suas estruturas
de dados e algoritmos permitindo a detecção de pontos dentro do mapa da imagem
processada. O rastreamento desses pontos permite ao desenvolvedor manipular
suas estruturas a fim de detectar não somente a quantidade de mãos e dedos como
também a sua posição nas coordenadas X, Y e Z (Figuras 19 e 20).
Figura 19 - Detecção de mãos e dedos no framework Candescent 1
Fonte: Autores (2011)
Figura 20 - Detecção de mãos e dedos no framework Candescent 2
Fonte: Autores 2011)
47
E. Manipulação de imagens
Outra funcionalidade muito interessante do framework Candescent é a
possibilidade de ver através do aplicativo de exemplo, a fusão das funcionalidades
de captura de dados de infravermelho e detecção de movimentos de mãos e dedos
aplicados à manipulação de imagens (Figura 21).
Figura 21 - Exibição de imagens no framework Candescent
Fonte: Autores(2011)
A funcionalidade de captura de infravermelho fornece ao desenvolvedor a
possibilidade de detecção do movimento e profundidade das mãos e dos dedos.
Através da funcionalidade de detecção de mãos e dedos é possível se
determinar a trajetória que a imagem deve percorrer. No caso do aplicativo de
exemplo é uma fotografia (Figura 22).
Figura 22 - Interação com imagens no framework Candescent
Fonte: Autores (2011)
48
Figura 23 - Manipulação de imagens no framework Candescent
Fonte: Autores (2011)
Na Figura 23 é possível verificar a funcionalidade de manipulação de imagens
em funcionamento na qual o usuário através de um dispositivo de captura de
movimentos, como por exemplo, o Kinect, pode, ao movimentar suas mãos,
manipular as imagens exibidas na tela.
Figura 24 - Mecanismos fornecidos pelo framework Candescent
Fonte: Autores (2011)
49
É essa funcionalidade do framework Candescent que será estendida através
de várias novas classes e algoritmos a fim de complementar essa versão do
framework do Candescent com um novo módulo adicional de interpretação dos
movimentos capturados, sejam esses movimentos das mãos ou dos dedos (Figura
24), realizando dessa forma não somente a apresentação dos movimentos
capturados das mãos e dedos, mas sim a captura, análise, interpretação e
apresentação dos resultados obtidos.
50
6
PROJETO
Este capítulo tem como objetivo abordar as fases envolvidas no ciclo de vida
de desenvolvimento do protótipo que suportará a prova de conceito de
reconhecimento de sinais através da análise dos dados coletados no dispositivo
físico de captura, da interpretação de movimentos e do reconhecimento dos gestos
das mãos e dedos.
Utilizando o dispositivo físico Microsoft Kinect para captura de movimentos e
o framework Candescent como base da arquitetura de software.
Ao final desse capítulo será possível entender através de registros
documentais o processo de construção do KINLIB, incluindo as decisões sobre os
protótipos das telas, das decisões de modelagem da arquitetura e componentes core
para interpretação e reconhecimento dos dedos, e os mecanismos de testes a fim de
garantir que a prova de conceito seja possível e viável.
6.1
MODELAGEM
Baseado na premissa de suportar a prova de conceito de reconhecimento de
sinais, o protótipo KINLIB tem como uma das suas principais metas o suporte ao
reconhecimento dos dedos e através do uso e customização das funcionalidades
embarcadas e disponíveis dentro do framework Candescent.
Visando a necessidade de atender aos requisitos funcionais da prova de
conceito, o projeto construiu a modelagem do aplicativo com o objetivo que essa
modelagem fosse ao mesmo tempo totalmente aderente à plataforma e arquitetura
do Candescent, e flexível ao ponto de permitir a construção de customizações que
visa desenvolver o reconhecimento dos dedos.
Para composição e documentação da modelagem do KINLIB são expostos a
seguir os dois principais componentes produtos da fase de Modelagem do KINLIB.
6.1.1 Arquitetura do KINLIB
A arquitetura de software é o conjunto de componentes de softwares
organizados de forma estruturada que servirá de base para provisão de serviços ao
aplicativo a ser desenvolvido.
51
No escopo da Prova de Conceito do KINLIB, a arquitetura foi projetada
baseando-se nos componentes de software encontrados durante a pesquisa
bibliográfica e que principalmente atenderam as necessidades funcionais do escopo
da Prova de Conceito, como por exemplo, e crucial, capacidade de capturar e
reconhecer movimentos.
Nesse cenário, dois componentes foram cruciais no desenho de escopo da
arquitetura do KINLIB, são eles o OpenNI e Candescent.
O OpenNI como já comentado nos capítulos anteriores, é responsável, dentro
da arquitetura de software do KINLIB, pela leitura e disponibilização para os
aplicativos de mais alto nível dos dados das imagens capturadas, sejam em RGB ou
Infravermelho permitindo dessa forma que outros componentes de software, com
abstrações ainda maiores sejam construídas, como no caso, o próprio framework
Candescent, que está presente na arquitetura do KINLIB como parte integrante e
crucial da Prova de Conceito.
O KINLIB foi desenvolvido como uma customização do Candescent,
adicionando componentes de software, algoritmos e estendendo funcionalidades
existentes criando dessa forma uma versão personalizada, com o objetivo de
atender as necessidades da Prova de Conceito do KINLIB.
A Figura 25 apresenta a arquitetura em alto nível da Protótipo KINLIB e as
camadas existentes.
Figura 25 - Componentes da arquitetura do KINLIB 1
Fonte: Autores(2011)
52
É possível identificar claramente na Figura 25 duas camadas acima do
framework Candescent e isso existe devido ao fato do KINLIB criar no nível lógico,
ainda que dentro do Candescent, duas camadas de abstração adicionais, sendo
uma camada dedicada aos componentes de reconhecimento de gestos e a outra
camada é a própria Prova de Conceito do KINLIB, que está no topo da arquitetura
consumindo todos os recursos disponibilizados pela arquitetura.
A seguir são descritas cada uma das camadas da Arquitetura do KINLIB.
A) Camada de Componentes de Hardware:
Na arquitetura de software do KINLIB se encontram os dispositivos físicos de
captura de movimento. Conforme indicado na Figura 25 existem três tipos possíveis
de captura de movimento, mesmo que ainda unificados dentro de um mesmo
equipamento físico, no caso o Kinect.Os tipos de captura de movimentos indicado
são: o áudio, a imagem normal e a imagem em infravermelho. Através da captura de
áudio é possível haver reconhecimento do mesmo e interação com o usuário. As
câmeras de RGB e Infravermelho permitem não somente a visualização de imagens
normais, quanto à detecção de movimentos em infravermelho.
O KINLIB não faz uso do suporte a áudio do Kinect, pois usa somente as
câmeras de RGB e Infravermelho dentro da prova de conceito.
B) Camada de Middleware:
A camada de middleware é a camada na qual se encontram os componentes
de software do aplicativo de middleware que é responsável pela abstração das
funcionalidades do componente físico de captura de movimentos. Atualmente na
versão Release Candidate 9489, o framework Candescent suporta a conexão com
dois tipos de middleware, o OpenNI e o SDK Microsoft, contudo apenas o OpenNI
está sendo utilizado no KINLIB conforme indicado na Figura 25.
C) Camada de Framework (Candescent):
A camada de framework é a camada mais importante do projeto de Prova de
Conceito do KINLIB uma vez que é onde se localiza dois componentes cruciais do
53
projeto, o framework Candescent e dentro dele o módulo de interpretação de gestos,
chamado de “Gesture Recognition Components Implementation”, ele é o
componente dentro da arquitetura do KINLIB responsável por abstrair as
funcionalidades dos níveis mais abaixo da arquitetura e por fornecer as condições
para que o módulo de interpretação de gestos possa ser desenvolvido.
O módulo de interpretação de gestos está logicamente acima da camada do
framework Candescent apesar de tecnicamente ser um projeto dentro dele. Dessa
forma, como um projeto dentro da solução do Candescent, o KINLIB pode utilizar-se
de todos os recursos disponibilizados pelo Candescent. Dentro do módulo de
interpretação de gestos do KINLIB está a lógica de interpretação de gestos
capturados pelo dispositivo físico. A Figura 26 demonstra os componentes lógicos
da arquitetura do KINLIB envolvidos na interpretação de gestos.
Repare que diferentemente da Figura 25, a arquitetura apresentada na Figura
31 se diferencia da arquitetura original do Candescent por apresentar mais um
componente, o componente #3, localizado logo após a etapa de processamento de
dados de imagem e antes da etapa apresentação dos mesmos, o qual é chamado
de etapa de Reconhecimento de Dados. Essa nova etapa, suportado por um novo
componente de software, permite ao Candescent, através do KINLIB, a capacidade
de reconhecimento de gestos pré-determinados.
Figura 26 - Componentes da Arquitetura do KINLIB 2
Fonte: Autores(2011)
54
D) Camada de Usuário (KINLIB)
Visa atender as expectativas dos usuários quando o KINLIB foi desenvolvido
uma nova tela para interação do usuário, conforme já visto anteriormente.
Essa tela é suportada pela camada da arquitetura que é chamada de Camada
de Usuário. Nessa tela são apresentados valores, dados e informações cruciais ao
entendimento da Prova de Conceito. É a partir dessa camada que todas as
chamadas de métodos são acionadas e então todo o processamento do KINLIB é
iniciado e é justamente por essa razão que essa camada se localiza no topo da
arquitetura.
6.1.2 Design
A fase de Design é a fase que antecede o desenvolvimento e é por meio
dessa fase que os principais artefatos de software são gerados. No protótipo KINLIB
a modelagem foi criada a partir do estudo, análise e construção dos diagramas de
classe e diagramas de seqüência para posterior desenvolvimento do projeto.
A primeira atividade na fase de Design foi à criação do diagrama de classe
que representa os componentes de software responsáveis pelo KINLIB dentro da
ferramenta de desenvolvimento Visual Studio 2010.
Figura 27 - Diagrama de classe dos componentes do KINLIB
Fonte: Autores(2011)
55
A Figura 27 representa o Diagrama de Classe que indica as classes e
interfaces envolvidas no pacote de reconhecimento de gestos e o qual é composto
por três classes e uma interface.
As classes indicadas na Figura 27 foram desenhadas para serem as classes
responsáveis pela interpretação e reconhecimentos dos dedos que possibilita a
representação da linguagem de Sinais que são capturados através do dispositivo
físico, que no caso do KINLIB, é o Kinect. As funções de cada uma das classes e
interfaces são descritas brevemente a seguir:
A) Classe “Gesture”
É responsável por suportar as estruturas de armazenamento e pesquisa dos
nomes dos gestos que são reconhecidos através do KINLIB e que são quatro: o
gesto que representa os números um, dois, três e quatro. A Figura 28 indica a
representação desses gestos na língua de Sinais.
Figura 28 - Sinais reconhecidos pelo KINLIB
Fonte: Autores(2011)
B) Classe “RecognitionData”
Estrutura simples de Value Object que é responsável por transportar as
informações de identificador único do gesto (ID) bem como o texto que representa o
seu nome (Nome do gesto).
A classe “RecognitionData” é instanciada a cada vez que um novo gesto é
reconhecido e então a mesma é enviada a camada de apresentação do KINLIB e
então apresentada em tela.
56
C) Classe “RecognitionGesture”
Foi criada com o objetivo de ser a classe que concentraria os algoritmos de
reconhecimento de gestos, ou seja, a classe que é responsável por determinar se
algum dos gestos reconhecidos pelo KINLIB (Figura 28) foi possível de ser
reconhecido.
Para realizar esse trabalho de reconhecimento de gestos, a classe
“RecognitionGesture” possui um método chamado “scanGesture” o qual contém
todas as regras de reconhecimento de gestos.
D) A Interface ”IRecognitionGesture”
A criação dessa interface se destinou a permitir o encapsulamento das
funcionalidades da classe “RecognitionGesture” no sentido que somente as
funcionalidades – métodos – existentes na interface ”IRecognitionGesture” poderiam
ser visíveis ao projeto KINLIB uma vez que a classe “RecognitionGesture” realiza a
interface “IRecognitionGesture”.
A segunda grande atividade foi entender em que momento o conjunto de
classes e interfaces seriam utilizados dentro do KINLIB incluindo quem iria os
acionar, como iriam ser acionado e quem eles iriam acionar. Para atender essa
demanda foi criado um Diagrama de Seqüência, o qual é apresentado na Figura 29.
Figura 29 - Diagrama de Seqüência dos componentes do KINLIB
Fonte: Autores(2011)
57
É possível verificar que o Diagrama de Seqüência inicia no método “Paint” e a
partir dele aciona as classes envolvidas no reconhecimento e exibição das
informações.
6.2
DESENVOLVIMENTO
O desenvolvimento do projeto KINLIB foi realizado na ferramenta Visual
Studio 2010 utilizando-se a linguagem C#. A escolha da linguagem de programação
C# também ocorreu devido ao fato do framework Candescent ter sido desenvolvido
nessa linguagem o que permitiu ao projeto integrar e transacionar com o framework
de modo transparente.
Visando demonstrar como o projeto do KINLIB foi desenvolvido, a seguir
serão apresentadas as visões de como o projeto foi estruturado e como os códigos
desenvolvidos suportaram o reconhecimento de gestos dentro do KINLIB.
6.2.1 Estrutura do projeto
A estrutura do projeto KINLIB foi baseada na mesma estrutura de Solução do
Candescent uma vez que seria transparente ao projeto a integração do KINLIB ao
Candescent.
Para suportar integração entre a Solução do Candescent e o projeto do
KINLIB (dentro do Visual Studio 2010) o projeto adotou a estratégia de criar um novo
projeto, chamado “CCT.NUI.Recognition”, dentro da Solução do Candescent o qual
está atrelado através de referência entre os projetos. Dessa forma, todos os
componentes da Solução do Candescent ficam disponíveis ao KINLIB e vice-versa.
Todos os projetos possuem a mesma precedência de “CCT.NUI” no nome do
projeto, logo, com exceção do projeto “Recognition” ainda existem mais quatro
projetos dentro da solução do Candescent, sendo eles “Core”, o qual possuí todas
as classes core do framework, o projeto “HandTracking” o qual possui as classes
que dão suporte a detecção das mãos, o projeto “Samples” a qual possui a tela
inicial do KINLIB, e por ultimo o projeto “Visual” o qual possui as classes atreladas a
camada de apresentação.
Na Figura 30 é apresentada a estrutura do projeto KINLIB e da Solução
Candescent dentro do Visual Studio 2010.
58
Figura 30 - Estrutura projeto KINLIB no Visual Studio 2010
Fonte: Autores(2011)
6.2.2 Desenvolvimento do projeto
O
projeto
KINLIB
gerou
vários
desafios
durante
a
sua
fase
de
desenvolvimento, programação propriamente dita, uma vez que houve a
necessidade de entendimento de boa parte do framework Candescent (estrutura e
dinâmica) para que fosse possível a perfeita utilização/consumo dos recursos
providos pelos seus componentes de software e a perfeita integração entre o KINLIB
e ele. Uma grande parte desse esforço foi realizada na fase de Modelagem,
contudo, a parte prática desse desafio ficou para a fase de desenvolvimento no qual
foram realizados os testes e a verificação de sucesso da Prova de Conceito.
Para atingir esse objetivo foram desenvolvidas algumas customizações e
extensões de componentes de software do framework Candescent e a integração
deles, contudo, o mais importante foi entender perfeitamente a onde integrar esses
desenvolvimentos e customizações.
59
A seguir são listados os principais pontos de desenvolvimento feitos para se
atingir os objetivos do protótipo KINLIB com as explicações do porque e como foram
realizadas.
A) Exibição das informações
Figura 31 - Código de apresentação de informações no Painel de Informações
Fonte: Autores(2011)
Um dos primeiros problemas encontrados durante o desenvolvimento foi a
criação de uma nova tela principal (customizada) que permitisse a visualização das
informações coletadas, processadas e interpretadas pelo Candescent e KINLIB.
Para a exibição dessas informações na tela principal foi criada a classe
“PanelInformation”, classe a qual recebeu esse nome por ser responsável de exibir
60
as informações processadas pelo KINLIB dentro de um novo painel de informações
que é exibido à direta na tela principal.
O principal método dessa classe (Figura 31) é “drawDataInformation”, o qual
é responsável por exibir e atualizar as informações dentro do Painel de Informação
da tela principal. Existem mais um método dentro dessa classe que se chama
“drawLabelInformation” o qual possui a responsabilidade de imprimir dentro do
painel de informações apenas os títulos das informações, como por exemplo, o título
“Status”, “Gesto reconhecido” entre outros.
B) Gestos (Sinais)
Visando suportar o reconhecimento dos gestos foi criada uma classe, já
demonstrada anteriormente, chamada “Gesture” a qual possui estruturas de
informações para armazenagem e pesquisa dos tipos de Gestos reconhecidos.
Os Gestos reconhecidos pelo KINLIB (nessa versão) são os Gestos de
“Número 1”, “Número 2”, “Número 3” e “Número 4”. A Figura 32 demonstra as
estruturas internas da classe.
Figura 32 - Estruturas de armazenamento e pesquisa de Gestos no KINLIB
Fonte: Autores(2011)
61
C) Reconhecimento de Gestos
Figura 33 - Algoritmos de interpretação de Gestos do KINLIB
Fonte: Autores(2011)
A classe mais importante do protótipo KINLIB é a classe criada chamada
“RecognitionGesture” a qual é responsável por conter toda a lógica de
reconhecimento de padrões para a tentativa de interpretação dos Gestos
processados. Através dessa classe é possível determinar se um dos movimentos
previamente suportados pelo KINLIB foi ou não reconhecido e em caso positivo um
Value Object é retornado ao chamador da execução o qual obtêm através dessa
estrutura o identificador e o nome do gesto reconhecido.
Os algoritmos criados para reconhecimento dos Gestos são simples, porém
demonstram de forma eficaz a confirmação de que é possível se integrar uma lógica
de interpretação de Gestos à arquitetura do Candescent fazendo com que ele não
somente capte, processe e exiba as informações como também interprete os Gestos
reconhecidos e essa classe é prova de que essa abordagem é possível. Na Figura
62
33 é demonstrada a classe “RecognitionGesture” e seu principal método, o
“scanGesture” que é responsável por conter as regras de interpretação de gestos.
D) Acionamento do Reconhecimento de Gestos
Figura 34 - Acionamento dos métodos de interpretação de Gestos no KINLIB
Fonte: Autores(2011)
O protótipo KINLIB possui classes e interfaces que são responsáveis pela
camada de apresentação do projeto e as quais são herdadas do framework
Candescent.
Através do estudo e customização de algumas dessas classes é
possível realizar o trabalho de integração do framework Candescent com o protótipo
KINLIB através do uso dos componentes de software descritos nos itens A, B, C e D
anteriormente.
A principal classe da camada de apresentação a ser customizada foi a classe
“HandLayer”, a qual é responsável por exibir em tela as informações do contorno da
mão, da ponta dos dedos e dos círculos indicando o centro da palma e do centro da
mão.
Essa classe foi customizada para acionar os componentes de software
responsáveis pela interpretação dos gestos quando da apresentação das
63
informações em tela, permitindo dessa forma ao KINLIB interpretar os gestos e
alimentar o painel de informações com os resultados obtidos, conforme demonstrado
na Figura 34.
6.3
PROTÓTIPO
Uma das fases mais importantes no ciclo de vida do desenvolvimento de
software e o desenvolvimento do protótipo na qual a forma de acesso e manipulação
do software é definida e desenhada. Através da técnica da criação de um protótipo é
possível gerenciar de forma simples e com baixo custo às expectativas dos usuários
e pessoas envolvidas na utilização do mesmo. Construído na linguagem C# dentro
da ferramenta de desenvolvimento Microsoft Visual Studio 2010, o Layout do
protótipo do KINLIB é demonstrado nas Figuras 35 e 36.
O KINLIB foi elaborado e desenhado tendo como meta a necessidade do
software suportar a Prova de Conceito de Reconhecimento de Sinais e atendendo
ao mesmo tempo requisitos funcionais como usabilidade, fácil entendimento e
visualização das funcionalidades propostas.
O protótipo atende um dos mais importantes requisitos coletados durante o
projeto que foi a restrição de reconhecimento dos dedos de somente uma das mãos
por vez, dado que essa restrição é proveniente do mecanismo de interpretação
desenvolvido no KINLIB.
Figura 35 - Layout do KINLIB no Microsoft Visual Studio 2010
Fonte: Autores(2011)
64
Figura 36 - Layout do KINLIB
Fonte: Autores(2011)
As preocupações com usabilidade, entendimento e visualização foram
endereçadas no Layout do KINLIB através do desenvolvimento de mecanismos na
tela de apresentação que são possíveis de serem vistos em tempo de execução do
protótipo conforme a Figura 37.
Figura 37 - Layout do aplicativo KINLIB em execução
Fonte: Autores (2011)
65
Esses mecanismos desenvolvidos e inseridos no protótipo facilitam o
entendimento do protótipo KINLIB e são descritos nas seções a seguir.
6.3.1
Conexão ao Kinect
O mecanismo de conexão ao Kinect foi inserido no KINLIB como uma forma
de permitir ao usuário a possibilidade de visualizar o momento em que o software
KINLIB se conecta ao dispositivo físico de detecção de movimento, no caso o Kinect,
através do middleware OpenNI (Figura 38).
Dessa forma é possível ao usuário final, que utiliza o protótipo KINLIB, saber
e detectar quando o seu dispositivo físico apresenta problemas ou quando a
conexão entre o aplicativo e o hardware, não pode ser feita com sucesso por
qualquer motivo.
Figura 38 - Conexão do KINLIB ao Kinect via OpenNI
Fonte: Autores(2011)
6.3.2
Quadro de informações
O quadro de informações foi um mecanismo criado dentro do Layout do
KINLIB de forma a auxiliar os usuários a visualizarem as informações produzidas
pelo software, uma vez que o objetivo do KINLIB é suportar a prova de conceito e
66
para tal todas as principais informações devem estar disponíveis e de fácil
visualização.
Exibidas dentro do quadro estão às informações a seguir:
1.
Status: Indica o status do KINLIB com relação ao reconhecimento de
sinais e apresenta os valores “Reconhecendo”, quando o software está
tentando reconhecer os padrões nos gestos lidos, e quando nenhum
movimento das mãos e dedos está sendo realizado, o que impede a
tentativa de reconhecimento de sinais pelo software;
2.
Quantidade de mãos: Exibe a quantidade de mãos detectadas pelo
KINLIB e exibidas na tela de apresentação;
3.
Quantidade de dedos: Exibe a quantidade total de dedos detectados
pelo KINLIB e exibidas na tela de apresentação;
4.
Gesto reconhecido: Informação de que alguns dos gestos (dedos)
possíveis
de
serem
reconhecidos
pelo
KINLIB
foram
lidos,
processados, interpretados e reconhecidos como um gesto válido na
língua dos sinais;
5.
Nome do sinal: Uma vez reconhecido como um gesto válido, essa
informação indica o nome de qual gesto foi reconhecido.
Figura 39 - Quadro de informações do KINLIB
Fonte: Autores(2011)
67
A Figura 39 a seguir demonstra o quadro de informações do KINLIB quanto a
execução e funcionamento do mesmo.
6.4
TESTES
O protótipo KINLIB teve como proposta central a realização da Prova de
Conceito para validação da possibilidade de interpretação e reconhecimento de
gestos através de um dispositivo físico, que no KINLIB foi o dispositivo Kinect da
Microsoft. Essa premissa, definida no início do projeto, é o requisito funcional
principal que serviu de insumo e guia para toda a fase de Testes no KINLIB.
Os testes realizados nessa fase irão garantir não somente que os quatro
gestos, serão reconhecidos e interpretados de forma correta, mas também irão
garantir, de forma indireta, que toda a integração entre o protótipo KINLIB e o
framework Candescent esteja funcionamento de forma adequada, conforme foi
modelado e desenvolvido. Para cada um dos gestos possíveis de serem
reconhecidos, os gestos referentes aos números 1, 2, 3, 4, foram executados testes
individuais e coletadas evidências garantindo dessa forma a formalização do
sucesso dos testes. A seguir são descritos os testes realizados e as evidências
coletadas no protótipo KINLIB.
A) Caso Base – Nenhum gesto
Figura 40 - Acionamento dos métodos de interpretação de Gestos no KINLIB
Fonte: Autores(2011)
68
Foi definido como premissa o cenário de Teste de Caso Base, ou seja, o
reconhecimento de nenhum dedo como premissa para o inicio dos testes. Na Figura
40 é demonstrado o não reconhecimento de gestos.
B) Teste do Gesto “Número 1”.
Figura 41 - Interpretação e reconhecimento do “Número 1” do KINLIB
Fonte: Autores(2011)
Os testes referentes à interpretação e reconhecimento do número 1 é
demonstrado na Figura 41.
Pode ser notado que o teste foi realizado com sucesso e o KINLIB
reconheceu o gesto.
C) Teste do Gesto “Número 2”.
O teste referente à interpretação e reconhecimento do número 2 é
demonstrado na Figura 42.
Pode ser notado que o teste foi realizado com sucesso e o KINLIB
reconheceu o gesto.
69
Figura 42 - Interpretação e reconhecimento do “Número 2” do KINLIB
Fonte: Autores(2011)
D) Teste do Gesto “Número 3”.
Os testes referentes à interpretação e reconhecimento do número 3 é
demonstrado Figura 43.
Pode ser notado que o teste foi realizado com sucesso e o KINLIB
reconheceu o gesto.
Figura 43 - Interpretação e reconhecimento do “Número 3” do KINLIB
Fonte: Autores(2011)
70
E) Teste do Gesto “Número 4”.
Figura 44 - Interpretação e reconhecimento do “Número 4” do KINLIB
Fonte: Autores(2011)
Os testes referentes à interpretação e reconhecimento do número 4 é
demonstrado na Figura 44. Pode ser notado que o teste foi realizado com sucesso e
o KINLIB reconheceu o gesto.
A tabela 5 a seguir demonstra uma analise dos acertos e erros no processo
de reconhecimentos dos dedos utilizando o protótipo KINLIB e o dispositivo de
captura de movimentos Microsoft Kinect, com uma amostragem de 30 gestos para
cada dedos possível de reconhecimento.
Tabela 5 - Analise dos Acertos e Erros no processo de reconhecimento dos dedos
GESTO
ACERTOS
ERROS
NENHUM DEDOS
70%
30%
UM DEDO
24%
76%
DOIS DEDOS
40%
60%
TRÊS DEDOS
37%
63%
QUATRO DEDOS
20%
80%
Fonte: Autores (2011)
71
Através
dessa
analise
é
possível
identificar
a
complexidade
no
reconhecimento dos dedos, ao serem posicionados diretamente na frente do Kinect,
e o quanto foi um desafio realizar o protótipo KINLIB.
72
7
CONCLUSÃO
O protótipo KINLIB foi criado com o objetivo de ser uma prova de conceito da
possibilidade do uso da tecnologia de captura de movimentos, através do dispositivo
Microsoft Kinect, no auxílio ao ensino da Língua de Sinais. O protótipo KINLIB tinha
de provar que através da captura de movimentos, do processamento das imagens,
da interpretação e apresentação do reconhecimento dos dedos, seria possível
desenvolver um protótipo para auxiliar as pessoas portadoras de deficiências
auditivas e profissionais da área de Libras através de uma ferramenta de apoio ao
processo de aprendizado da Língua de sinais.
O protótipo KINLIB foi desenvolvido visando atingir esse objetivo e apoiado
através do ciclo de desenvolvimento de software ele foi projetado, desenhado,
construído e testado conseguindo atender as premissas estipulados no inicio do
projeto.
Muitos desafios e dificuldades foram encontrados ao longo da construção do
protótipo do KINLIB. Toda a pesquisa bibliográfica realizada ao longo do inicio do
projeto e a qual incluiu a pesquisa, análise e teste de mais de cinco frameworks que
pudessem atender as premissas técnicas e funcionais para o protótipo KINLIB foi
uma das maiores dificuldades que o projeto enfrentou somando-se a isso todo o
esforço e dedicação para selecionar o Candescent como framework final.
Após o processo de seleção do framework de suporte à arquitetura, o
Candescent, ter sido finalizado surgiu então a segunda maior dificuldade e um
grande desafio que foi integrar um framework tecnicamente desconhecido ao projeto
KINLIB. Por possuir classes, métodos e especialmente algoritmos que envolviam a
captura e processamento de imagens específicas e de domínio somente das
pessoas que o desenvolveram, o Candescent se tornava um desafio a ser superado
por possuir um domínio de informações com alto grau de complexidade. Esse
problema foi superado com o estudo do framework Candescent, de suas
funcionalidades e de seus recursos técnicos, principalmente através da técnica da
geração e análise dos seus diagramas de seqüência o que permitiu entender o seu
fluxo de execução, métodos acionados e respectivos retornos e assim determinar
como e a onde seria a melhor estratégia de uso para integração dele com o KINLIB.
Ao final do projeto de Prova de Conceito KINLIB, todos os gestos propostos
para serem reconhecidos foram passíveis de reconhecimento através da captura de
73
dados de imagens em RGB e Infravermelho com o auxílio do middleware OpenNI,
processados com a ajuda do framework Candescent, interpretados através do
projeto KINLIB e finalmente apresentados em tela através da integração Candescent
e KINLIB, o que nos possibilitou o reconhecimento dos dedos.
Dada todas as evidências coletadas conclui-se que o Protótipo de Ensino de
Libras foi concluído com sucesso e que pode servir como uma ferramenta de apoio
ao ensino da Língua de Sinais Brasileira.
7.1
TRABALHOS FUTUROS
Como trabalhos futuros a equipe do projeto sugere a extensão do alfabeto
reconhecido pelo KINLIB, dos atuais quatro números para todas as vinte e três letras
do alfabeto do manual de LIBRAS, visando assim ampliar o auxílio ao ensino, ao
desenvolvimento de pessoas deficientes auditivas, auxiliar aos profissionais e
especialistas dessa área com esse trabalho.
Um próximo estágio de maturidade desse projeto poderia ser em longo prazo
não apenas o reconhecimento de gestos referentes a letras, mas sim o
reconhecimento de seqüência de gestos, interpretando dessa forma também frases
e expressões faciais.
Apesar de ainda não realizado, o projeto KINLIB poderá ser compartilhado
juntamente a seus criadores com o intuito de expandir as funcionalidades
atualmente existentes no framework Candescent contribuindo com todas as pessoas
e equipes interessadas na evolução desse tipo de projeto ao redor do mundo todo.
74
REFERÊNCIAS BIBLIOGRAFIAS
ABRÃO,
B.
G.
Tecmundo,
2010.
Disponivel
em:
<http://www.tecmundo.com.br/7021-kinect-a-analise-completa-do-baixaki-com-videoe-infografico.htm#ixzz1LDHC7oYl>. Acesso em: 21 Março 2011.
ACESSIBILIDADE BRASIL. Projetos. Acessibilidade Brasil, 2011. Disponivel em:
<www.acessobrasil.org.br>. Acesso em: 2 Agosto 2011.
AGOSTINI, M. D. Tomshw. Asus WAXI Xtion Kinect sbarca nel mor dei PC, 2011.
Disponivel em: <http://www.tomshw.it/cont/news/asus-wavi-xtion-kinect-sbarca-nelmondo-dei-pc/28839/1.html >. Acesso em: 6 Maio 2011.
ARAÚJO, A. P. InfoEscola. Linguagem de Sinais Brasileiras (Libras), 2007.
Disponivel em: <http://www.infoescola.com/portugues/lingua-brasileira-de-sinaislibras/>. Acesso em: 22 Abril 2011.
ARAÚJO, A. P. InfoEscola. Linguagem de Sinais Brasileiras (Libras). Disponivel
em:
<http://www.infoescola.com/portugues/lingua-brasileira-de-sinais-libras/>.
Acesso em: 22 Abril 2011.
ASUS.
Event
Asus
WAXI,
2011.
Disponivel
em:
<http://event.asus.com/wavi/product/WAVI_Xtion.aspx>. Acesso em: 24 Abril 2011.
BOURKE, P. Initial tests with the Kinect. Paul Bourke, 2010. Disponivel em:
<http://paulbourke.net/miscellaneous/kinect/>. Acesso em: 16 Abril 2011.
BRADSKI, G.; KAEHLER, A. Learning OpenCV Computer Vision with the
OpenCV Library. 1ª Edição. ed. [S.l.]: O'Relly Media, 2008.
BREKEL.
www.brekel.com.br,
2011.
Disponivel
<http://www.brekel.com/?page_id=160>. Acesso em: 13 Setembro 2011.
em:
CHIGASHI, A. H.; COSME, D. R. C.; SHEWCHENKO, L. D. Visão Computacional
Aplicada á Unidade de Processamento Gráfico. Centro Universitário da FEI. São
Paulo. 2009.
CUORE, P. R. E. C. A Importância De Conhecer A Estrutura Lingüística Da
Libras Para O Educador, Campo Grande, 30 maio 2009. Disponivel em:
<http://www.artigonal.com/educacao-artigos/a-importancia-de-conhecer-a-estruturalinguistica-da-libras-para-o-educador-945026.html>. Acesso em: 01 maio 2011.
DIAS, J. B.; SOUZA, K. P. D.; PISTORI, H. II Workshop de visão computacional.
Conjunto de Treinamento para Algortmos de Reconhecimento de Libras, São
Carlos, 16-18 Outubro 2006.
DICIONARIO DE LIBRAS. Dicionario de Libras, 2011.
<http://www.dicionariolibras.com.br>. Acesso em: 2 Agosto 2011.
Disponivel
em:
75
EURO GAMER. PrimeSense: Beyond Natal. EuroGame.net, 2011. Disponivel em:
<http://www.eurogamer.net/articles/digitalfoundry-primesense-article?page=3>.
Acesso em: 19 Abril 2011.
FILHO, J. D. B. Diferenciação entre Computação Grafica e Processamento de
imagens. Revista URCAMPUS, 20, n. 4, Setembro 2010.
FISHER,
M.
Matt's
Webcorner,
2010.
Disponivel
em:
<http://graphics.stanford.edu/~mdfisher/Kinect.html>. Acesso em: 21 Março 2011.
GITHUB. GitHub, 2011. Disponivel em: <https://github.com/robbeofficial >. Acesso
em: 14 Outubro 2011.
GOHRING, N. Mundie: Microsoft's Research Depth Enabled Kinect. PC World,
2010.
Disponivel
em:
<http://www.pcworld.com/businesscenter/article/202184/mundie_microsofts_researc
h_depth_enabled_kinect.html>. Acesso em: 19 Março 2011.
GUGELMIN,
F.
TECMUNDO,
2011.
Disponivel
em:
<http://www.tecmundo.com.br/10421-asus-anuncia-o-wavi-xtion-sistema-de-capturade-movimentos-para-pc.htm>. Acesso em: 31 Agosto 2011.
H-ONLINE. H-Online. Official open source driver for Kinect, 2010. Disponivel em:
<http://www.h-online.com/open/news/item/Official-open-source-driver-for-Kinect1152601.html >. Acesso em: 24 Abril 2011.
INES. INSTITUTO NACIONAL DE EDUCAÇÃO DE SURDOS, 2001. Disponivel em:
<http://www.ines.gov.br/paginas/relat-gestao2000.htm>. Acesso em: 08 Junho 2011.
INTEL CORPORATION. Open Source Computer Vision Library Reference
manual. INTEL. [S.l.]. 2011.
JORDAN, G. Planeta DEBIAN. Conhecendo o projeto OpenKinect, 2011.
Disponivel em: <http://planeta.debian-sp.org/>. Acesso em: 28 Maio 2011.
KINECTHACKS. Kinecthacks, 2010. Disponivel em: <http://www.kinecthacks.nl/>.
Acesso em: 21 Março 2011.
LEVINE, B. Oh, Wait -- Microsoft Now Says Kinect Is Open 'By Design'. News
Factor,
2010.
Disponivel
em:
<http://www.newsfactor.com/story.xhtml?story_id=76172>. Acesso em: 19 Março
2011.
LIBRASNET.
Librasnet,
2010.
Disponivel
em:
<http://www.librasnet.com.br/shockwave/menu/menu.htm>. Acesso em: 2 Agosto
2011.
76
MAN, A.; MINTZ, M. J. All Hands: Touch-Free Is Fast Overtaking Touch-Screen.
NOcamels, 2011. Disponivel em: <http://nocamels.com/2011/04/all-hands-touchfree-is-fast-overtaking-touch-screen/>. Acesso em: 1 Abril 2011.
MARTINS, J. C. C. Gerenciando Projetos de Desenvolvimento de de Software
com PMI, RUP e UML. 5ª Edição. ed. Rio de Janeiro: BRASPORT Livros e
Multimidia LTDA, 2010.
MICROSOFT. Microsoft, 2011. Disponivel em: <www.microsoft.com>. Acesso em:
26 Abril 2011.
MONTEIRO, M. S. História dos Movimentos dos Surdos e o Reconhecimento da
Libras no Brasil. ETD - Educação Temática Digital, Campinas, v. 7, n. 2, p. 292302, Junho 2006. ISSN 1676-2592.
NETO, O. Projeto Libras é Legal - FENEIS/SC, 2008. Disponivel em:
<http://rocha.ucpel.tche.br/signwriting/dicionario-basico/dicionario-basico.htm>.
Acesso em: 28 Maio 2011.
OLIVEIRA, P. M. T. D. Sobre Surdos. Site de Jonas Pacheco, 2011. Disponivel em:
<http://www.surdo.org.br/informação.php?lg=pt&info=Historiadossurdos>.
Acesso
em: 21 Abril 2011.
OPENNI. OpenNI.org, 2011. Disponivel em: <http://openni.org/>. Acesso em: 25
Abril 2011.
PACHECO, J.; ESTRUC, E.; ESTRUC, R. Curso Básico de LIBRAS. [S.l.]:
www.surdo.org.br, v. 8, 2008.
PONTES, A. M.; ORTH, A. I. II Workshop Sobre Fatores Humanos em Sistema
Computacionais. Uma proposta de Interface de Software Orientada à Linguagem
de Sinais, Campinas, out. 1999.
PORTA, G. BH Legal, 2010. Disponivel em: <http://www.bhlegal.net/blog/ve-librassoftware-livre-traduz-fala-e-escrita-para-a-lingua-de-sinais/>. Acesso em: 14 Julho
2011.
QUEIROZ,
M.
Tecnologia
Inteligente,
2010.
Disponivel
em:
<http://blog.vettalabs.com/2010/10/29/um-cientista-explica-o-microsoft-kinetic/>.
Acesso em: 28 Maio 2011.
RAMOS, C. R. LIBRAS: A Língua de Sinais dos Surdos Brasileiros, Petrópolis,
2006. Disponivel em: <http://www.editora-arara-azul.com.br/pdf/artigo2.pdf>. Acesso
em: 21 abr. 2011.
RESEARCH MICROSOFT. Kinect for Windows SDK Beta, 2011. Disponivel em:
<http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/guides.aspx>.
Acesso em: 20 Agosto 2011.
77
RESEARCH MICROSOFT. Programming Guide. Research Microsoft. [S.l.], p. 33.
2011.
RESEARCH MICROSOFT. SkeletalViewer Walkthroungh C++ and C#. Research
Microsoft. [S.l.], p. 45. 2011.
REVERBEL,
P.
Revista
Veja,
2011.
Disponivel
em:
<http://veja.abril.com.br/noticia/vida-digital/o-barato-do-kinect>. Acesso em: 07
Junho 2011.
REYNOLDS,
M.
Digital
Spy,
2010.
Disponivel
em:
<http://www.digitalspy.co.uk/gaming/news/a284690/rare-kinect-will-be-our-mainfocus.html?rss>. Acesso em: 23 Abril 2011.
ROS.ORG. www.ros.org, 2011. Disponivel em: <www.ros.org>. Acesso em: 22
Agosto 2011.
SEN,
F.
Installing
Kinect
in
Windows,
2011.
<http://nui.mlog.taik.fi/2011/03/26/installing-kinect-in-windows/>.
Outubro 2011.
Disponivel
em:
Acesso em: 16
SOUZA, V. C. D.; PINTO, S. C. C. D. S. XIV Simpósio Brasileiro de Informática na
Eduacação. Sign WebMessage: Uma ferramenta para comunicação via web
através da Língua Brasileira de Sinais - Libras, São Leopoldo, 2003. p. 395-404.
STANFORD.
http:
//www.stanford.edu/,
2011.
<http://www.stanford.edu/>. Acesso em: 1 Julho 2011.
Disponivel
em:
STEGMUELLER, S. Hand and finger tracking with Kinect depth data. Candescent
NUI, 2011. Disponivel em: <http://candescentnui.codeplex.com/>. Acesso em: 4
Agosto 2011.
TECHGURU.
TECHGURU,
2010.
Disponivel
em:
<http://www.techguru.com.br/microsoft-aprova-modificacoes-no-kinect/>. Acesso em:
1 Julho 2011.
USC. USC Institute for Creative Technologies. Projects ICT USC EDU, 2011.
Disponivel em: <http://projects.ict.usc.edu/mxr/faast/>. Acesso em: 02 Junho 2011.
USC INSTITUTE FOR CREATIVE TECHNOLOGIES. Projects ICT USC EDU, 2011.
Disponivel em: <http://projects.ict.usc.edu/mxr/faast/>. Acesso em: 02 Junho 2011.
WASH, R. PrimeSense Supplies 3-D-Sensing Technology to “Project Natal” for Xbox
360.
Site
da
Microsoft
Corporation,
2010.
Disponivel
em:
<http://www.microsoft.com/Presspass/press/2010/mar10/0331PrimeSensePR.mspx>. Acesso em: 05 Abril 2011.
78
ANEXO A – Exemplo de código com as funções de mapeamento
// Funções de mapeamento que permite calibrar a câmera do Kinect
float RawDepthToMeters(int depthValue)
{
if (depthValue < 2047)
{
return float(1.0 / (double(depthValue) * -0.0030711016 + 3.3309495161));
}
return 0.0f;
}
// Vetor que guarda o valor da distância através de coordenadas
Vec3f DepthToWorld(int x, int y, int depthValue)
{
static const double fx_d = 1.0 / 5.9421434211923247e+02;
static const double fy_d = 1.0 / 5.9104053696870778e+02;
static const double cx_d = 3.3930780975300314e+02;
static const double cy_d = 2.4273913761751615e+02;
// Esse trecho permite calcular a profundidade que o raio ultravioleta alcança
Vec3f result;
const double depth = RawDepthToMeters(depthValue);
result.x = float((x - cx_d) * depth * fx_d);
result.y = float((y - cy_d) * depth * fy_d);
result.z = float(depth);
return result;
}
// Gera uma Matriz que guarda as informação de cada vetor e suas coordenadas
Vec2i WorldToColor(const Vec3f &pt)
{
static const Matrix4 rotationMatrix(
Vec3f(9.9984628826577793e-01f, 1.2635359098409581e-03f, - 1.7487233004436643e-02f),
Vec3f(-1.4779096108364480e-03f, 9.9992385683542895e-01f, -1.2251380107679535e-02f),
Vec3f(1.7470421412464927e-02f, 1.2275341476520762e-02f, 9.9977202419716948e-01f));
static const Vec3f translation(1.9985242312092553e-02f, -7.4423738761617583e-04f, 1.0916736334336222e-02f);
static const Matrix4 finalMatrix = rotationMatrix.Transpose() * Matrix4::Translation(-translation);
static const double fx_rgb = 5.2921508098293293e+02;
static const double fy_rgb = 5.2556393630057437e+02;
static const double cx_rgb = 3.2894272028759258e+02;
static const double cy_rgb = 2.6748068171871557e+02;
// Resultado gera uma imagem colorida cores em 3D
const Vec3f transformedPos = finalMatrix.TransformPoint(pt);
const float invZ = 1.0f / transformedPos.z;
Vec2i result;
result.x = Utility::Bound(Math::Round((transformedPos.x * fx_rgb * invZ) + cx_rgb), 0, 639);
result.y = Utility::Bound(Math::Round((transformedPos.y * fy_rgb * invZ) + cy_rgb), 0, 479);
return result;
}
Download

Kinlib - Escola de Engenharia e Tecnologia