TENDÊNCIAS E
TÉCNICAS EM
REALIDADE
VIRTUAL E
AUMENTADA
Av. Bento Gonçalves, 9500 - Setor 4 - Prédio 43.412 - Sala 219 - Bairro Agronomia
CEP 91.509-900 - Porto Alegre - RS - Tel. (51) 3308-6835 - Fax (51) 3308-7142
Home: www.sbc.org.br - E-mail: [email protected]
Paulo Roberto Freire Cunha (UFPE)
Presidente
Lisandro Zambenedetti Granville (UFRGS)
Vice-Presidente
Renata de Matos Galante (UFRGS)
Diretor Administrativo
Carlos André Guimarães Ferraz (UFPE)
Diretor de Finanças
Altigran Soares da Silva (UFAM)
Diretor de Eventos e Comissões Especiais
Mirella Moura Moro (UFMG)
Diretora de Educação
José Viterbo Filho (UFF)
Diretora de Publicações
Claudia Lage Rebello da Motta (UFRJ)
Diretora de Planejamento e Programas Especiais
Marcelo Duduchi Feitosa (CEETEPS)
Diretora de Secretarias Regionais
Edson Norberto Cáceres (UFMS)
Diretor de Divulgação e Marketing
Roberto da Silva Bigonha (UFMG)
Diretor de Relações Profissionais
Ricardo de Oliveira Anido (UNICAMP)
Diretor de Competições Científicas
Raimundo José de Araújo Macêdo (UFBA)
Diretor de Cooperação com Sociedades Científicas
Avelino Francisco Zorzo (PUC-RS)
Diretor de Articulação de Empresas
Tendências e Técnicas em
Realidade Virtual e Aumentada
Publicação anual | Salvador | v. 4 | p. 1-216 | 2014
Editores
Daniela Gorski Trevisan
Rosa Maria E. Moreira da Costa
Rafael Rieder
Marcio Sarroglia Pinho
Produção gráfica
Canal 6 Projetos Editoriais - www.canal6.com.br
Dados Internacionais de Catalogação na Publicação (CIP)
Tendências e Técnicas em Realidade Virtual e Aumentada.
Sociedade Brasileira de Computação - SBC. -- (2011 --) - .
Porto Alegre, RS: a Instituição, 2010-
.
v. 4
Anual
ISSN 2177-6776
1. Realidade Virtual, Realidade Aumentada I. Trevisan,
Daniela Gorski. II. Costa, Rosa E. Moreira da. III. Rieder, Rafael.
IV. Pinho, Marcio Sarroglia.
Este periódico foi especialmente editado, em
tiragem limitada, a partir de conteúdos desenvolvidos para os minicursos apresentados
durante o XVI Simpósio de Realidade Virtual
e Aumentada, realizado em Salvador, de 12 a
15 de Maio de 2014, promovido pela Sociedade Brasileira de Computação e organizado
pelo Centro Integrado de Manufatura e Tecnologia, SENAI Unidade CIMATEC.
Salvador, BA
2014
CDD 006
Índice para catálogo sistemático:
1. Realidade Virtual e Aumentada: Ciência da Computação 006
TODOS OS DIREITOS RESERVADOS: Permitida a reprodução total ou parcial desde que citada a fonte (Tendências e Técnicas em
Realidade Virtual e Aumentada, Porto Alegre-RS, Brasil). Na ausência da indicação da fonte ou expressa autorização da Instituição,
é proibida a sua reprodução total ou parcial, por qualquer meio ou processo, especialmente por sistemas gráficos, microfílmicos,
fotográficos, reprográficos, fonográficos ou videográficos. Vedada a memorização e/ou recuperação total ou parcial, bem como a
inclusão de quaisquer partes desta obra em qualquer sistema de processamento de dados. Essas proibições aplicam-se também às
características da obra e à sua editoração. A violação dos direitos autorais é punível como crime (art. 184 e §§, do Código Penal, cf.
Lei no. 6.895, de 17-12-1980) com pena de prisão e multa, conjuntamente com busca e apreensão e indenizações diversas (arts. 122,
123, 124 e 126, da Lei no. 5.988 de 14-12-1973, Lei dos Direitos Autorais).
Sumário
Prefácio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem. . . 9
Calebe de Paula Bianchini e Luciano Silva
Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde. . . . . . . 33
Alexandre Fonseca Brandão, Gustavo Jordan Castro Brasil, Diego Roberto Colombo
Dias, Sara Regina Meira Almeida, Gabriela Castellano e Luis Carlos Trevelin
Realidade Aumentada e suas Aplicações na Área de Saúde . . . . . . . . . . . . . . . . . . . . 49
Ezequiel Roberto Zorzal e Fátima de Lourdes dos Santos Nunes
Interfaces de Controle em Sistemas de Realidade Virtual. . . . . . . . . . . . . . . . . . . . . . . 63
Alexandre Cardoso, Edgard Lamounier Júnior, Alexandre Carvalho Silva e Gesmar de
Paula Santos Júnior
Projeção Holográfica em Ambientes de Realidade Virtual. . . . . . . . . . . . . . . . . . . . . . . 69
Manoela Rogofski Brum e Rafael Rieder
Computação Sêntica: Fundamentos e Aplicações em RV/RA. . . . . . . . . . . . . . . . . . . . 82
Luciano Silva
Construção de aplicações de Realidade Cruzada Projetiva utilizando
openFrameworks e ARDUINO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Christopher Shneider Cerqueira e Claudio Kirner
5
Interação Gestual em Ambientes Tridimensionais. . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Maria Amelia Eliseo e Darlan Silva Alves Delmondes
O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes
Virtuais de Ensino e Aprendizagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Ilana de Almeida Souza-Concilio e Beatriz de Almeida Pacheco\
Development of Interactive Applications for Google Glass . . . . . . . . . . . . . . . . . . . . . 167
Caio Novaes Lins, João Marcelo Teixeira, Rafael Alves Roberto e Veronica Teichrieb
Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada. . 189
Luciano Silva
6
Prefácio
O Symposium on Virtual and Augmented Reality (SVR) acontece anualmente e é um evento promovido pela Sociedade Brasileira de Computação (SBC). Este evento é composto por várias atividades,
dentre as quais se destacam os Minicursos e o Pré-simpósio.
Os minicursos visam oferecer aos participantes do SVR um conjunto de informações atualizadas
sobre aspectos tecnológicos, humanos e científicos na área de Realidade Virtual e Aumentada. Já o
Pré-simpósio apresenta tutoriais condensados sobre temas introdutórios e discute as principais perspectivas da área.
As propostas recebidas foram avaliadas por um comitê editorial, que avaliou e selecionou aquelas
com temas básicos, intermediários e avançados, de modo a fomentar as discussões dos trabalhos que
serão apresentados e discutidos durante o SVR 2014.
Este número da Revista Tendências e Técnicas em Realidade Virtual e Aumentada reúne os textos
de apoio preparados de forma didática, pelos autores dos minicursos e do pré-simpósio, visando a disseminação do conhecimento e a expansão das pesquisas na área.
Agradecemos à comunidade pelo interesse, enviando propostas e compartilhando conhecimentos
e, em especial, a todos aqueles que colaboraram na edição deste número da revista.
Daniela Gorski Trevisan
Rosa Maria E. Moreira da Costa
Rafael Rieder
Márcio Sarroglia Pinho
7
9
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Sistemas de Realidade Aumentada Móvel
Suportados por Computação em Nuvem
Calebe de Paula Bianchini
Luciano Silva
Abstract
Augmented Reality Systems (AR) that allow mobility of sensing systems (cameras, GPS, accelerometers)
are called AR mobile systems. Even with the growth of computational power and storage of mobile devices, many AR operations still need to be performed in systems with higher processing and storage capacities. Thus, this chapter aims to present the basis of cloud computing, via cloudlets, as a feasible environment for development of mobile AR applications that require distribution processing.
Keywords: cloudlets, Mobile AR, AR, Cloud Computing, Distributed Systems.
Resumo
Sistemas de Realidade Aumentada (RA) que permitem mobilidade dos sistemas de sensoriamento (câmeras, GPS, acelerômetros) são chamados de sistemas de RA móvel. Mesmo com o crescimento do poder
computacional e de armazenamento dos dispositivos móveis, muitas operações de RA ainda precisam
ser efetuadas em sistemas com maiores capacidades de processamento e armazenamento. Assim, este
capítulo tem como objetivo apresentar as bases da Computação em Nuvem, via cloudlets, como ambiente
viável para desenvolvimento de aplicações de RA móvel que necessitem de distribuição de processamento.
Palavras-chave: cloudlets, RA móvel, RA, Computação em Nuvem, Sistemas Distribuídos.
9
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
1.1 Introdução
Sistemas de RA móvel permitem a mobilidade dos seus sensores. Muitas vezes, mesmo com esta
mobilidade e devido ao poder de processamento e armazenamento dos dispositivos que dão suporte
aos sensores, ainda é necessário realizar operações mais complexas em estações com maiores capacidades de processamento e armazenamento. Além disto, espera-se que estes serviços extra-dispositivo
estejam disponíveis de forma pervasiva, ou seja, em todo lugar.
Dentro deste contexto, a Computação em Nuvem apresenta-se como um ambiente muito viável para suporte à distribuição e pervasividade de processamento e armazenamento. Neste ambiente,
processamento e armazenamento essenciais ficam vinculados aos dispositivos móveis e, tarefas mais
complexas, em nuvens locais e públicas.
Na Computação em Nuvem, existe uma forma de ser organizar o acesso aos serviços por uma
arquitetura conhecida como cloudlet. Numa cloudlet, tem-se um agente de integração, que disponibiliza facilidades de comunicação e invocação de serviços. Recentemente, esta forma de organização
permitiu levar aplicações de RA, com necessidades de distribuição de processamento e armazenamento, para nuvens.
Com o objetivo de introduzir o tema a alunos, professores e pesquisadores de RA, este capítulo
apresenta as bases essenciais para integração de aplicações de RA com Computação em Nuvem, especificamente sob a arquitetura de cloudlets. A apresentação está organizada da seguinte forma:
• inicialmente, são apresentados os principais conceitos de Computação em Nuvem, mostrando as suas várias formas de implementação;
• em seguida, são revisados os conceitos fundamentais de RA e são apresentados os fundamentos de RA móvel;
• finalmente, através de um exemplo concreto, é mostrada como é possível a integração dispositivos móveis com sistemas de nuvem, tendo como mediador uma cloudlet.
Ao final do texto, são sugeridas algumas referencias bibliográficas que aprofundam os temas tratados neste capítulo.
1.2 Fundamentos em Computação em Nuvem
1.2.1 Modelo de Computação em Nuvem
O modelo de Computação em Nuvem, como é definido e apresentado nos dias atuais, só foi possível devido à evolução natural da Computação e da Internet. Na verdade, porém, esse conceito remonta
os primórdios da própria Internet, quando Leonard Kleinrock, da ARPANET, comentou que um modelo de computação utilitária (utility computing) surgiria com o amadurecimento e sofisticação das
redes de computadores de forma semelhante às redes de água, de energia elétrica, de telefone, dentre
outras commodities já consolidadas e de uso pessoal (Buyya, 2013).
10
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Dessa forma, na Computação em Nuvem, os usuários podem fazer uso dos serviços disponíveis
sem precisarem considerar a localização de onde esses provedores de serviços se encontram. Além
disso, um dos princípios desse modelo considera que o usuário paga apenas pelo serviço consumido,
ou seja, pay-per-use.
Considerando que esse modelo está influenciando toda a Computação, fica nítido perceber seus
resultados no projeto de sistemas computacionais, no desenvolvimento de aplicações, na entrega de
soluções e na execução de softwares. De forma mais geral, todas as áreas que são regidas por qualquer
tipo de serviço, não somente software, mas também capacidade de processamento, storage, redes de
computadores, e até mesmo infraestrutura, podem ser construídas e oferecidas como Computação em
Nuvem. A Figura 1 apresenta uma visão geral da Computação em Nuvem, representando a interconectividade entre diversos dispositivos.
Figura 1. Visão geral da Computação em Nuvem.
Fonte: (Lisboa, 2014).
Em função da possibilidade de abstração que o termo Computação em Nuvem possui, perceptível
na imagem da Figura 1, esse termo tem sido usado para diversas situações no mundo de TI, permitindo
uma mistura de tecnologias, serviços e conceitos. Apesar do símbolo de uma Nuvem já ser utilizado há
um bom tempo para representar uma rede de computadores, na Computação em Nuvem tem um forte
apelo à centralidade da Internet.
Assim, diversas definições têm sido utilizadas para a Computação em Nuvem, sendo que algumas
das principais são apresentas a seguir:
• Segundo (NIST, 2011), “a computação em nuvem é um modelo que permite uma rede de
acesso, de forma ubíqua e conveniente, à um conjunto de recursos computacionais (como,
por exemplo, redes de computadores, servidores, storages, aplicações e serviços) que são ra11
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
•
•
•
•
•
1
2
3
4
5
6
pidamente provisionados com o menor esforço possível ou a menor quantidade de interação
com um provedor.”1
Segundo (Hwang, 2011), “computação em nuvem é um paradigma de computação de alta
vazão (high-throughput) em que uma infraestrutura fornece diversos serviços por meio de
grandes datacenters. Esse modelo permite que usuários compartilhem recursos de qualquer
lugar, a qualquer momento, por meio de dispositivos interconectados.”2
Segundo (Armbrust, 2009), “computação em nuvem se refere tanto aos aplicativos disponíveis como serviço na Internet quanto o hardware e a infraestrutura de software básico nos
datacenters que oferecem esse serviço.”3
Segundo (Gartner, 2014): “computação em nuvem é um estilo de computação no qual escalabilidade e elasticidade de recursos de TI são entregues como serviço para clientes externos
por meio da Internet.” 4
Segundo (Buyya, 2013), “computação em nuvem é um tipo de sistema paralelo e distribuído
que consiste de uma rede de computadores interconectados e que são dinamicamente provisionados, apresentados como um ou mais recursos computacionais unificados com acordos
de nível de serviço estabelecidos entre os clientes e provedores.”5
Segundo (Erl, 2013), “computação em nuvem é uma forma especializada de computação distribuída que introduz modelos utilitários para prover recursos remotos, de forma escalável
e mensurável”.6
Tradução literal da definição apresentada em (NIST, 2011): “Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly
provisioned and released with minimal management effort or service provider interaction.”
Tradução literal da definição apresentada em (Hwang, 2011): “Cloud computing is a high-throughput computing (HTC) paradigm whereby the infrastructure provides the services through a
large data center or server farms. The cloud computing model enables users to share access to
resources from anywhere at any time through their connected devices.”
Tradução literal da definição apresentada em (Armbrust, 2009): “Cloud Computing refers to both
the applications delivered as services over the Internet and the hardware and systems software
in the datacenters that provide those services.”
Tradução literal da definição apresentada em (Gartner, 2014): “Gartner defines cloud computing
as a style of computing in which scalable and elastic IT-enabled capabilities are delivered as a
service using Internet technologies.”
Tradução literal da definição apresentada em (Buyya, 2013): “A cloud is a type of parallel and distributed system consisting of a collection of interconnected and virtualized computers that are dynamically provisioned and presented as one or more unified computing resources based on service-level
agreements established through negotiation between the service provider and consumers”.
Tradução literal da definição apresentada em (Erl, 2013): “Cloud computing is a specialized form
of distributed computing that introduces utilization models for remotely provisioning scalable
and measured resources.”
12
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
É possível perceber que, em função dessa quantidade de definições, o termo Computação em
Nuvem ainda não está totalmente estabelecido. Alguns autores tem se esforçado para relatar o estadoda-arte da Computação em Nuvem até então, visando não só encontrar algum ponto em comum nas
definições existentes, mas também estabelecer algum critério comparativo entre elas (Vaquero, 2008)
(Zhang, 2010). Pode-se afirmar que, dentre as definições atuais, aquela apresentada pelo NIST (2001) é
mais bem aceita pela comunidade. Assim, neste trabalho, a definição do NIST (2011) é mais apropriado
para estudo da Computação em Nuvem.
As principais características da Computação em Nuvem são aquelas que refletem exatamente as
mudanças que esse novo paradigma traz. Essas características podem ser divididas em cinco grandes
categorias:
• Autosserviço sob demanda: é a possibilidade de o cliente fazer suas próprias escolhas de
recursos computacionais, como servidores e redes, em diversos provedores. Conforme essas
escolhas, a Computação em Nuvem é reconfigurada de acordo com sua expectativa e, dessa
forma, passa a atender melhor suas necessidades. Além disso, a interação com o cliente se dá
de forma transparente e automática, sem a necessidade de intervenção humana.
• Extenso acesso por rede: os recursos computacionais utilizados na Computação em Nuvem
podem ser acessados e configurados por meio de protocolos e mecanismos padronizados,
por meio dos diversos tipos de dispositivos, como tablets, celulares e computadores. Questões
de heterogeneidade não devem ser percebidas no acesso a esses recursos computacionais, ou
seja, plataformas thin ou thick client, linguagens de programação e/ou sistema operacionais
não devem interferir no acesso e na qualidade.
• Agrupamento de recursos: os provedores de recursos computacionais para a Computação
em Nuvem devem atender diversos clientes (mult-tenant model) gerenciando os recursos
físicos ou virtuais dinamicamente para que possam ser alocados e realocados conforme a
demanda do cliente. Os clientes também não devem ter a exata noção de localização dos recursos, mas possuir um grau natural de abstração, como estado, pais, datacenter, etc.
• Elasticidade: os recursos podem aumentar e diminuir elasticamente. Em alguns casos, essa
elasticidade pode ser feita de forma automática, visando um aumento rápido na escalabilidade, ou uma diminuição, conforme demanda. Para os clientes, a visão de escalabilidade permite visualizar recursos de forma infinita e disponível a qualquer momento. É neste contexto
que uma camada abstrata e virtualizada permite diversas formas de elasticidade.
• Medição de Serviço: sistemas de Computação em Nuvem devem automaticamente controlar
e otimizar o uso dos recursos por meio de técnicas de medição. Essas medidas representam
um grau de abstração apropriado tanto para os clientes quanto para os provedores (largura
de branda, grau de processamento, tamanho de armazenamento, etc). Assim, os recursos
podem ser monitorados, controlador e relatados em um grau de transparência para os dois
lados envolvidos: cliente e provedor. SLA (Service Level Agreement) é uma forma natural de
garantir que os recursos possuem certo grau de qualidade (QoS).
Outra forma de analisar a Computação em Nuvem é em relação à implantação da “Nuvem”. Ou
seja, quem são os responsáveis pela administração e quais são os limites estabelecidos sobre a infraes13
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
trutura permitem tipificar uma Nuvem. Nesse caso é possível analisar como se dá a relação entre as
diversas Nuvens, entre os diversos provedores. Sabe-se, porém, que cada provedor possui sua forma
única de administrar a infraestrutura e os serviços disponíveis. A Figura 2 apresenta uma junção de
tipos diferentes de Nuvem, destacando a relação entre os diversos provedores por meio da Internet.
Figura 2. Limites administrativos: nuvem pública, privada e híbrida.
Fonte: (Hwang, 2011)
De forma geral, os tipos de Nuvem são:
• Pública: esta Nuvem está disponível para uso do público em geral. A Nuvem pode pertencer
a empresas, governos ou universidade, ou uma combinação deles, que gerenciam e disponibilizam os recursos e serviços para serem utilizados por qualquer usuário. Cada provedor de
Nuvem Pública possui sua política administrativa e de garantias de serviço, e pode oferecer
mecanismos diferenciados de pay-per-use. Neste caso, é muito comum o uso de padrões já
estabelecidos de mercado para o oferecimento de recursos e serviços.
• Privada: uma Nuvem privada só está disponível para uso de uma única empresa, sendo esta
responsável pela administração, gerenciamento e disponibilização dos serviços. Normalmente é implantando em uma intranet (mas não é exclusivo), e permite que seus usuários tenham
acesso a uma Nuvem de forma rápida e exclusiva. Nesse caso, imagina-se que uma Nuvem
Privada ofereça serviços mais eficientes, ágeis, úteis e simples, com o custo de utilizar padrões
específicos da própria empresa. Da mesma forma, outros mecanismos de faturamento sobre
os serviços podem ser utilizados.
14
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
•
•
Comunitária: uma Nuvem comunitária considera que, dado algum interesse em comum,
como missão, segurança, requisitos, valores, etc., usuários específicos de diversas organizações façam uso de seus recursos e serviços. Nesse caso, esta Nuvem pode ser proprietária
a uma ou mais organizações, sendo estas responsáveis pelo seu gerenciamento, controle e
administração. Por envolver diversas organizações, as políticas administrativas seguem o interesse comum estabelecido e cada organização poderá oferecer recursos e serviços que contribuam para a Nuvem Comunitária. Neste caso, mecanismos específicos de faturamento devem ser estabelecidos para que a Nuvem não tenha seus recursos e serviços comprometidos.
Híbrida: esta Nuvem é formada pela combinação de, pelo menos, duas Nuvens dos outros
tipos. Apesar dessa integração, cada Nuvem ainda é única em sua essência e mantém suas
propriedades. Elas são integradas por mecanismos padronizados ou proprietários que permite portabilidade de dados, serviços e recursos. Nessa implantação, as políticas de gerenciamento, controle e administração podem ser utilizadas para que seja escolhido o que há de
melhor cada tipo de Nuvem.
Uma Nuvem deve ser organizada com uma pilha de hardwares e softwares caracterizando sua
arquitetura. Cada arquitetura define os serviços que podem ser oferecidos por uma Nuvem. A Figura 3
apresenta a organização em pilha de uma Nuvem com seus possíveis tipos de serviços.
Figura 3. Arquitetura de uma Nuvem.
Fonte: Adaptado de (Buyya, 2013)
15
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
A primeira camada, Cloud Resources, representa os recursos iniciais necessários para uma Nuvem:
a infraestrutura física de hardware. A próxima, Cloud Hosting Platforms, é um conjunto de softwares
de administração, gerenciamento e controle para as aplicações que devem funcionar nos melhores recursos disponíveis. Virtualização e máquinas virtuais são as técnicas mais utilizadas nessa camada. A
combinação destas duas camadas em uma arquitetura é chamada de Infrastructure-as-a-Service (IaaS).
A próxima camada, Cloud Programming Environment and Tools, oferece ambientes e ferramentas para o desenvolvimento de serviços para uma Nuvem. Assim, usuários podem desenvolver suas
próprias aplicações utilizando APIs e middlewares específicas. Por isso, a arquitetura que utiliza essa
camada é conhecida como Platform-as-a-Service (PaaS).
Por fim, a última camada, Cloud Applications, representa todos os serviços e aplicações disponíveis para usuários. Normalmente, nesta camada estão as aplicações para web. Esta arquitetura é melhor
conhecida como Software-as-a-Service (SaaS).
Além dessas definições de arquitetura, alguns outros autores ainda apresentam outras categorias,
como pode ser observado em (Youseff, 2008) e (Linthicum, 2014).
1.2.2 Infrastructure-as-a-Service (IaaS)
A intenção de um IaaS é fornecer recursos de processamento, storage, rede, ou qualquer outro
recurso computacional de hardware ou infraestrutura física de tal forma que um consumidor (ou usuário) possa utilizar esses recursos para implantar qualquer tipo de software, incluindo sistemas operacionais ou aplicações.
Esse é o formato mais comum da Computação em Nuvem. Os provedores conseguem entregar
as mais diversas e complexas configurações desses recursos. Para isso, virtualização é a tecnologia
mais utilizada.
Virtualização é um termo guarda-chuva que representa um grau de abstração de um ambiente computacional. A intenção principal da virtualização é permitir o compartilhamento de recursos
computacionais, como CPU, disco memória, ou, até mesmo, bibliotecas e softwares. Além do compartilhamento, existem outras principais características de ambientes virtualizados, como agregação,
emulador e isolamento. No caso de IaaS, virtualização normalmente é utilizado para representar a
abstração de um hardware.
Máquinas virtuais (VM – virtual machines) são as unidades básicas mais comum de um provedor
de IaaS. É possível configurar quantidade de processadores, tamanho de memória e de disco. Ainda
é possível utilizar imagens de VM previamente configurada para organizar uma Nuvem: desde MVs
com apenas o sistema operacionais, até mais elaboradas com servidores web e LAMP7. As soluções
utilizadas para essa camada de virtualização permitem balanceamento, isolamento, área de segurança
restrita e ajustes nas VMs.
7
LAMP é um acrônimo para Linux-Apache-MySQL-PHP, uma infraestrutura preparada para executar aplicações em PHP em um servidor Apache, com banco de dados MySQL, em um sistema operacional Linux.
16
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Na perspectiva do consumidor (o usuário), há um melhor aproveitamento da infraestrutura, diminuição de custos de manutenção e administração e no capital investido em infraestrutura.
A Figura 4 descreve os componentes básicos de uma infraestrutura de IaaS. No topo, a camada
oferece serviços por meio de interfaces gráficas (normalmente, Web 2.0) para o usuário. Nesta camada
também pode estar serviços que, por meio de uma API, outras aplicações podem se integrar com o
provedor de IaaS.
Figura 4. Modelo de referência da um IaaS.
Fonte: (Buyya, 2013)
Na camada central, estão as disponíveis as principais características de uma solução IaaS. É nesta
camada que o gerenciamento de VMs, principal recurso desta arquitetura, é realizado por meio do
componente de escalonamento. Este, por sua vez, aloca a execução das VMs nos recursos disponíveis
e interage com outros componentes dessa camada para a combinação de novas tarefas: contabilização
e precificação, monitoramento, reserva, QoS/SLA, gerenciamento de imagens, gerenciamento de VMs
ativas, e interação com componentes de terceiros.
Na camada mais baixa está a infraestrutura física, que podem ser totalmente heterogênea. É esta
camada que deve ser construída para atender as necessidades e objetivos da Nuvem. Assim, essa infraestrutura pode ser formada por servidores, cluster, supercomputadores ou todos esses agregados.
Os fornecedores de IaaS mais conhecidos são Amazon, GoGrid, Joyent, Rightscale, Terremark,
Rackspace, ElasticHosts, e Flexiscale.
17
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
1.2.3 Platform-as-a-Service (PaaS)
Um provedor de PaaS deve permitir que um consumidor (ou usuário) seja capaz de implantar nessa arquitetura uma aplicação adquirida ou criada em linguagens de programação, bibliotecas, plataformas ou ferramentas compatíveis com o provedor. Esse usuário não controla ou gerencia as camadas
inferiores da Nuvem, como rede, servidores, sistemas operacionais ou storages, mas tem controle sobre
a aplicação e possíveis configurações da aplicação.
A Figura 5 apresenta as principais características de uma arquitetura PaaS. A camada intermediária possui as principais funcionalidades que basicamente está centrada no ambiente de execução
para as aplicações. Esta mesma camada não deve expor qualquer característica ou serviço da camada
inferior, ou seja, da infraestrutura, para qualquer aplicação implantada. Dessa forma, a infraestrutura
pode ser física ou uma arquitetura IaaS, proprietária ou não.
Figura 5. Modelo de referência de um PaaS.
Fonte: (Buyya 2013)
É nesta camada intermediária que estão os processos automatizados de implantação real da aplicação para a infraestrutura, bem como do gerenciamento do balanceamento de carga e controle das
bases de dados. Além disso, deve gerenciar a aplicação com base nas políticas estabelecidas pelo próprio usuário (configurações da aplicação). Também é reponsabilidade desta camada gerenciar e escalar
18
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
os recursos alocados para a aplicação sob demanda, possivelmente automaticamente, de acordo com
as necessidades do usuário.
Um provedor de PaaS deve oferecer interfaces de interação para o usuário, tanto para o desenvolvimento da aplicação quanto para sua implantação. Essa interface de interação pode ser disponibilizada
por meio de interface web, ou até mesmo por meio de linguagens de programação, APIs e bibliotecas.
Além disso, a aplicação desenvolvida para uma PaaS específica segue o modelo de desenvolvimento definidos pelo provedor. Algumas delas utilizam ambiente para linguagens de 4ª geração, programação visual ou ambiente de prototipação rápida (usando componentes previamente disponíveis no
ambiente). Outros provedores oferecem uma representação orientada a objetos e APIs específicas para
a criação de aplicações. Dessa forma, os desenvolvedores tem uma linguagem de programação clássica,
como Java, Python, C#, com algumas restrições para garantir escalabilidade e segurança.
De forma geral, uma arquitetura PaaS deve oferecer:
• Framework de execução: que garante a execução da aplicação do usuário;
• Abstração: permitindo a implantação e gerenciamento da aplicações na Nuvem;
• Automatização: implantar, gerenciar, e escalar a aplicação na infraestrutura física;
• Serviços de Nuvem: fornecer serviços e APIs, ou similares, facilitando a criação de aplicações
elásticas e escaláveis.
Nesse sentido, existem provedores totalmente proprietários, como o Force.com; provedores que
construíram sua arquitetura PaaS sobre padrões da indústria, como o Google AppEngine e o Microsoft Azure, mas ainda assim permanecendo parte da solução proprietária; e provedores que seguiram
padrões abertos, facilitando a migração das aplicações, como Appistry Cloud IQ Platform, Heroku,
e Engine Yard.
Além destes, existem também outros provedores conhecidos de PaaS, como o Longjump, AppSale, Joyent Smart, Platform, GigaSpaces XAP, DataSynapse, Manjrasoft Aneka, Apprenda, SaaSGrid
e DataGrid.
1.2.4 Software-as-a-Service (SaaS)
Um provedor de SaaS deve ser capaz de fornecer softwares deste próprio provedor, executados em
uma Nuvem, para um consumidor (ou usuário). Esse software pode ser acessado pelos mais diversos
dispositivos e clientes, como celulares e browsers, dentre outros. O usuário, por sua vez, não controla
a infraestrutura da Nuvem, nem mesmo a aplicação ou sua execução. No máximo, poderia ter acesso a
alguns ajustes de seu perfil ou configurações pessoais.
O conceito de SaaS não é tão recente assim, surgindo na década de 90. Sua aceitação se consolidou
em 2001, quando foi oficialmente padronizado e inicialmente definido. Naquele tempo, suas principais
características se assemelham muito ao conceito de hoje:
• O produto é vendido para o consumidor como acesso ao aplicativo;
• O software é gerenciado por uma empresa centralizadora;
• O serviço é vendido como “um-para-muitos”;
• O serviço é entregue conforme regras de contrato, conforme prometido.
19
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
De forma geral, SaaS é um modelo de entrega de software que provê acesso a aplicativos por meio
da Internet e de uma interface web. Esse modelo é atraente para os usuários, inclusive em função das
customizações individuais. É nesse formato, de acesso a um aplicativo por diferentes tipos de usuários,
que se consolidou o conceito de “um-para-muitos”. Exemplos de software de CRM8 e de ERP9, que são
utilizados por diversas empresas, podem ser encontrados nesse modelo.
Outra característica de SaaS é que os usuários não precisam fazer a implantação e/ou instalação
do software. O acesso é centralizado em um portal e, dadas as credenciais do usuário, ele utiliza o
aplicativo. Dessa forma, mediante contrato de faturamento, o usuário é cobrado conforme o uso dos
aplicativos e, dependendo do caso, há possíveis alterações e customizações do software.
Outra consequência desse modelo é a centralização no provedor do software. Os esforços são todos
concentrados no gerenciamento e manutenção da infraestrutura da arquitetura SaaS, assim como na
manutenção e na atualização do serviço oferecido, otimizando os recursos e distribuindo os custos pelos
diversos consumidores. Para o consumidor, esse custo é uma mínima fração da taxa de uso do serviço.
Considerando a pilha de hardware e software para uma arquitetura em Nuvem (apresentada na
Figura 3), a camada SaaS está no topo. Na verdade, essa camada não só representa SaaS, mas também
o conceito de “tudo-como-serviço” (Everything-as-a-Service), ou XaaS. Assim, alguns benefícios dessa
arquitetura se destacam:
• Redução de custo do software e TCO são evidentes;
• Melhora no nível do serviço;
• Desenvolvimento rápido;
• Aplicações totalmente reconfiguráveis;
• Integração de aplicações e dados (mesmos que rudimentar);
• Assinatura de serviço e pagamento sob demanda.
É nessa perspectiva que o SalesForce.com se tornou o exemplo de sucesso mais conhecido de SaaS.
Sobre sua plataforma, o Force.com, uma arquitetura PaaS, foi desenvolvido um serviço completo de
CRM. Além deste, existem outros serviços disponíveis, como o AppExchange, no qual é possível pesquisa, publicar e integrar outros serviços e aplicações aos existentes, tornando o SalesForce.com uma
ferramenta extensível e personalizável.
De forma semelhante, existem outros provedores de serviços relacionados ao gerenciamento empresarial e de relacionamento ao cliente, como o NetSuite e RigthNow. Estes dois permitem personalização da aplicação final, de acordo com as necessidades do consumidor/cliente.
Um outro tipo de SaaS existente são aqueles relacionados à redes sociais. Nesse segmento se destacam o Facebook e o LinkedIn, os quais permitem a adição de plug-ins e integração completa ao perfil
dos usuários desses sistemas.
8
9
CRM, ou Customer Relationship Management, é um software que simplifica o processo de gerenciamento de usuários e ajuda na identificação de estratégias de venda.
ERP, ou Enterprise Resource Planning, é um software que permite uma visualização integrada da
empresa na tentativa de facilitar seu gerenciamento e melhorar os fluxos de informação entre a perspectiva funcional e os recursos.
20
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Por fim, existem também serviços de automação de escritório, como o Box.net, Google Documents,
Zoho Office e Microsoft Office 365. Estes oferecem aplicativos de edição de texto, planilhas eletrônicas e
construção de apresentações totalmente desenvolvidas para a Internet. Dessa forma, esses documentos
podem ser gerenciados e modificados a partir de qualquer dispositivo, além de permitir que sejam
compartilhados entre diversos usuários.
1.3 Realidade Aumentada Móvel
1.3.1 Sistemas de Realidade Aumentada
Realidade Aumentada (RA) pode ser vista como a integração de informações virtuais (modelos bi
e tridimensionais, imagens, áudio, vídeo, dentre outros) a visualizações do mundo real. Azuma (1997)
define RA como um sistema que:
• combina elementos virtuais com o ambiente real
• é interativa e tem processamento em tempo real
• é concebida em três dimensões
A Figura 6 ilustra um sistema típico de RA onde, a partir de uma imagem captada por uma câmera, um marcador (símbolo) é substituído por um objeto tridimensional.
Figura 6. Sistema típico de RA.
Fonte: http://homes.dcc.ufba.br/~caiosba/mestrado
21
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Embora existam sistemas de RA não-baseados em marcadores, o uso destes elementos ainda é
bastante comum. Existem alguns marcadores bem conhecidos como, por exemplo, o marcador Hiro
mostrado na Figura 7:
Figura 7. Marcador Hiro
Fonte: www.artoolworks.com
O processo de substituição do marcador por um elem ento virtual é conhecido como fusão. Na
Figura 8, tem-se um exemplo de fusão com um modelo tridimensional:
Figura 8. Fusão do marcador Hiro com um objeto tridimensional
Fonte: http://homes.dcc.ufba.br/~caiosba/mestrado
22
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Marcadores mais sofisticados podem envolver codificação como, por exemplo, um QR-Code
(Figura 9).
Figura 9. QR-Code
Fonte: www.onvert.com
O código presente em um QR-code pode ser convertido em textos interativos, endereços WEB,
localizações geo-referenciadas ou mesmo chamadas para programas. A Figura 10 ilustra um exemplo
de um QR-code convertido para um post no programa Twitter:
Figura 10. Conversão de um QR-code para uma chamada de programa
Fonte: http://www.maximumpc.com/files/u46168/toxin20.jpg
Finalmente, um sistema de RA não precisa utilizar necessariamente um marcador (markless).
Nesta visão diferenciada, utiliza-se padrões geométricos bem-conhecidos (linhas, polígonos, texturas,
dentre outros) como suporte para fusão.
23
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
A Figura 11 ilustra um exemplo típico deste tipo de sistema, onde uma textura serviu como base
para geração de um mapa digital de elevação:
Figura 11. Geração de modelos digitais de elevação a partir de texturas
Fonte: http://www.ovelf.com/wp-content/uploads/GIS-map.png
Principalmente para sistemas de RA móvel, a não-dependência de um marcador é uma característica
bastante interessante, pois permite uma exploração maior de elementos reais como suporte para fusão.
1.3.2 Realidade Aumentada Móvel
Sistemas de RA que permitem mobilidade dos sistemas de sensoriamento (câmeras, GPS, acelerômetros) são chamados de sistemas de RA móvel. Atualmente, os sistemas de RA móvel mais representativos estão localizados em smartphones e tablets, conforme exemplo da Figura 12:
Figura 12. Ambiente de RA móvel instalado em um smartphone.
Fonte: http://www.mysocialagency.com
24
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Uma das razões do uso crescente de sistemas de RA móvel suporta-se no crescimento do poder
computacional (tanto CPU quanto GPU) e de armazenamento de dispositivos móveis como smartphones e tablets. Além disto, várias bibliotecas e frameworks bem conhecidos como, por exemplo, a
ARToolkit já possuem versões próprias para dispositivos móveis.
Além dos smartphones e tablets, também existem sistemas de AR móveis totalmente dedicados
para este fim. Nesta linha, existem sistemas baseados em óculos que só realizam o processo de sensoriamento e recepção das imagens fundidas, conforme exemplo da Figura 13:
Figura 13. Sistema de sensoriamento e recepção de imagens fundidas
Fonte: http://www.vuzix.com
Na arquitetura mostrada na figura acima, todo o processamento de fusão dos marcadores é realizado numa estação externa, interligada por redes de comunicação sem fio com o dispositivo. Numa
arquitetura contrária, alguns sistemas como o Google Glass, mostrado na Figura 14, já realizam processamentos e fazem armazenamento no próprio dispositivo:
Figura 14. Dispositivo Google Glass
Fonte: http://www.google.com/glass
25
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Com o advento do dispositivo Google Glass e a necessidade de se ter acesso móvel pervasivo em
vários ambientes, uma arquitetura que permitisse distribuir processamento/armazenamento entre dispositivos móveis e portais de serviços começou a se conformar. Neste contexto, o ambiente de computação em nuvem revelou-se com uma alternativa bastante viável para atender a estes requisitos.
1.3.3 Ambientes de Desenvolvimento para Realidade Aumentada Móvel
Várias bibliotecas e frameworks bem conhecidos em RA convencional já possuem versões para
dispositivos móveis.
A biblioteca ARToolkit (Artools, 2014), uma das mais conhecidas para desenvolvimento de RA
convencional, já possui versões para os dois principais sistemas operacionais móveis: iOS e Android. A
Figura 15 mostra exemplos desta biblioteca nos dois sistemas operacionais:
Figura 15. ARTookit em iOS(esquerda) e Android(direita).
Fonte: http://www.artoolworks.com
Ainda para a plataforma Android, existe a biblioteca AndAR (Google Code 2014), disponibilizada
sob licença GPL. A Figura 16 mostra um exemplo de uso da AndAR:
Figura 16. Exemplo de funcionamento da biblioteca AndAR
Fonte: http://www.artoolworks.com
26
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Para a plataforma Windows móvel (Windows Phone 8, por exemplo), existe a alternativa da biblioteca GART (Gart, 2014). Esta biblioteca permite o desenvolvimento de aplicações de RA que precisam
de suporte a georeferenciamento. A Figura 17 mostra o aplicativo Map Bings, que permite a localização
de facilidades em uma cidade, construído com base na biblioteca GART:
Figura 17. Aplicativo Map Bings, produzido pela biblioteca GART
Fonte: http://www.bing.com/maps/
O uso de todas as bibliotecas mostradas anteriormente requerem acesso via linguagem de programação. A Artoolkit for iOS requer o uso da linguagem Objective-C, a Artoolkit for Android requer
Java e, a GART, linguagens da plataforma. NET como C#. Porém, o desenvolvimento de aplicações
móveis para RA pode ser simplificado através do uso de ambientes que já geram código para a aplicação. Nesta linha, encontra-se o ambiente Unity3D que, além de permitir o desenvolvimento visual da
aplicação, ainda exporta código para diversos tipos de dispositivos móveis.
A Figura 18 mostra a extensão UART (Unity Augmented Reality Toolkit) (Gatech 2014), disponibilizada como um plugin para o Unity3D:
Figura 18. Toolkit UART, integrado ao ambiente Unity3D
Fonte: https://research.cc.gatech.edu/uart/
27
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Com o uso do UART, o desenvolvedor da aplicação somente especifica qual o marcador será utilizado e qual será o objeto que substituirá o marcador durante o processo de fusão.
1.4 Integração entre Sistemas de Realidade Aumentada Móvel e Nuvem
1.4.1 Conceito de Cloudlet
Uma cloudlet é um elemento arquitetural, importante na convergência entre Computação Móvel
e Computação em Nuvem. Ela representa o elemento intermediário em uma arquitetura de três camadas: dispositivo móvel – cloudlet – nuvem.
Uma cloudlet pode ser vista como como um “datacenter in a box”, cujo objetivo é trazer as facilidades de nuvens mais perto dos dispositivos móveis. Além disto, uma cloudlet pode ser vista com uma
infra-estrutura local de nuvem, normalmente internalizada como uma máquina virtual. A Figura 19
ilustra um cenário possível de uso de cloudlets:
Figura 19. Cenário de uso de cloudlet.
Fonte: (Satyanarayanan et al., 2009)
Neste cenário, tem-se uma infra-estrutura local de nuvem (Coffee shop), que funciona como um
mediador local para serviços mais complexos de nuvem (Yahoo!). Os diversos dispositivos móveis
(óculos, celular, luva e tablet) acessam localmente facilidades como geo-localização, busca, serviços de
data e hora, compartilhamento de fotos e vídeos via este mediador. Isto, permite, por exemplo utilizar
28
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
esquemas de cache nas cloudlets para respostas mais rápidas ou mesmo utilizar a cloudlet como uma
fachada comum para acessos a diversos recursos de nuvem mais complexos.
Assim, quando se decide pelo uso de cloudlets, três pontos precisam ser bem determinados:
• quais serviços estão disponíveis nos dispositivos
• quais serviços estão disponíveis nas cloudlets
• quais serviços estão disponíveis na nuvem
A decisão da localização dos serviços, geralmente, é determinada por requisitos de tempo. Latências de redes, muitas vezes, também impõem restrições de onde os serviços podem estar localizados.
1.4.2 Exemplo de Uso de Cloudlets em RA
Para exemplificar o uso de cloudlets em RA, será utilizado o cenário descrito por Verbelen et al.
(2012) e mostrado na Figura 20:
Figura 20. Serviços de tracking (esquerda) e fusão (direita)
Fonte: (Verbelen et al., 2012)
Neste cenário, há cinco serviços a serem disponibilizados:
• VideoSource: captura as imagens da câmera do dispositivo, gerando frames para serem analisados pelo serviço Tracker e fundidos com objetos 3D pelo serviço Renderer.
• Renderer: responsável por fundir objetos 3D com frames. Os objetos são posicionados de
acordo com as posições estimadas de câmera geradas pelo serviço Tracker.
• Tracker: responsável por calcular estimativas de posições de câmera, com base em um mapa
conhecido de pontos 3D gerado pelo serviço Mapper e nos frames gerados pelo serviço VideoSource.
• Mapper: de tempos em tempos, o serviço Tracker envia um frame (keyframe) para que o serviço Mapper, que gera um um conjunto de pontos com coordenadas 3D baseado em features
obtidas no frame.
• Realocalizer: quando não são encontradas features no frame, este serviço reposiciona a câmera para que o serviço Tracker possa continuar.
29
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Object Recognizer: nos keyframes recebidos pelo serviço Mapper, um Object Recognizer tenta
localizar objetos conhecidos. Quando um objeto é reconhecido, sua localização 3D é informada ao
Renderer para fusão.
Os serviços VideoSource e Renderer precisam ser executados no dispositivo. Já os serviços Tracker
e Relocalizer têm restrições de tempo real (< 50 ms). Os serviços Mapper e Object Recognizer não têm
requisitos estritos de tempo.
Assim, estes serviços podem ser agrupados conforme mostrado na Figura 21:
Figura 21. Agrupamento de serviços de RA
Fonte: (Verbelen et al., 2012)
Os serviços VideoSource e Renderer serão executados no dispositivo. Os serviços Tracker e Relocalizer serão incorporado em uma cloudlet e, Mapper e Object Recognizer, em uma infra-estrutura
de nuvem.
O esquema de implantação destes três grupos é mostrado na Figura 22:
Figura 22. Implantação de serviços de RA nos dispositivos, cloudlets e nuvem
Fonte: (Verbelen et al., 2012)
30
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Em cada ambiente (dispositivo, cloudlet e cloud) há um agente de comunicação, responsável pela
integração entre as diversas partes. Para que a comunicação seja comum, é importante a utilização
de envelopes de comunicação baseados em XML. Observe, também, que na nuvem pode-se utilizar
a organização dos serviços como máquinas-virtuais (VM) e o esquema de acesso também pode ser
organizado como uma cloudlet. Neste contexto, cloudlets da rede local são chamadas cloudlets ad hoc
e, aquelas localizadas na nuvem, de cloudlets elásticas.
1.5 Comentários Finais
Mesmo com o aumento do poder computacional e de armazenamento dos dispositivos móveis nos
últimos anos, alguns processos de RA ainda precisam estar localizados em estações com capacidade
computacional e armazenamento mais potentes. Dentre deste contexto, este pequeno texto introdutório teve o objetivo de apresentar a tecnologia de cloudlets como uma arquitetura viável para distribuição de processamento e armazenamento para aplicações de RA. Os autores esperam que ela possa ser
um ponto inicial de suporte para alunos, professores e pesquisadores que se interessem por aplicações
de RA distribuídas, com suporte a nuvem.
Referências
Azuma, R.T. A Survey of Augmented Reality. Presence: Teleoperators and Virtual Environments. 6 (4), Ago 1997.
Armbrust, M., Fox, A., Griffith, R., Joseph, A. D., Katz, R. H., Konwinski, A., Lee, G., Patterson,
D. A., Rabkin, A., Stoica, I., and Zaharia, M. Above the clouds: A Berkeley view of cloud computing. Technical report, 2009, EECS Department, University of California, Berkeley.
Buyya, R., Vecchiola, C., Selvi, S. T. Mastering Cloud Computing: Foundations and Applications Programming. New York: Morgan Kaufmann, 2013.
Erl, T., Puttini, R., Mahmood, Z. Cloud Computing: Concepts, Technology & Architecture. New York:
Prentice Hall, 2013.
Gatech. UART – Unity AR Toolkit. URL: https://research.cc.gatech.edu/uart/. Acessado em Março/2014.
Gart. Gart – Geo AR Toolkit. URL: http://gart.codeplex.com/. Acessado em Março/2014.
Gartner. Gartner IT Glossary - Cloud Computing. URL: http://www.gartner.com/it-glossary/cloud-computing/.
Acessado em Março/2014.
Google Code. AndAR – Android Augmented Reality. URL: https://code.google.com/p/andar/. Acessado em
Março/2014.
Hwang, K., Dongarra, J., Fox, G. C. Distributed and Cloud Computing: From Parallel Processing to the
Internet of Things. New York: Morgan Kaufmann, 2011.
31
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 9-32, maio/2014.
Bianchini, Calebe de Paula; Silva, Luciano. Sistemas de Realidade Aumentada Móvel Suportados por Computação em Nuvem.
Linthicum, D. Defining the Cloud Computing Framework. URL: http://cloudcomputing.sys-con.com/
node/811519. Acessado em Março/2014.
Lisboa, M. Computação na Nuvem. URL: http://marcosplisboa.wordpress.com/2011/05/03/61/. Acessado em
Março/2014.
NIST. The NIST Definition of Cloud Computing. NIST, 2011. URL: http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf. Acessado em Março/2014.
Satyanarayanan, M., B ahl, P., Caceres, R., Davies, N. The Case for VM-based Cloudlets in Mobile
Computing. IEEE Pervasive Computing, 8 (4), Outubro, 2009, pp. 2-11.
Vaquero, L.M., Rodero-Merino, L., Caceres, J., Lindner, M. A break in the clouds: towards a cloud
definition. SIGCOMM Comput. Commun. 39 (1), Dez 2008, pp. 50-55.
Verbelen, T., Simoens, P., Turck, F., Dhoedt, B. Cloudlets: Bringing the Cloud to the Mobile User. Proceedings of III ACM Workshop on Mobile Cloud Computing and Services (MCS’2012), Low Wood Bay, Reino
Unido, 2012, pp. 29-36.
Youseff, L.; Butrico, M.; Silva, D. Toward a Unified Ontology of Cloud Computing. Grid Computing Environments Workshop GCE’08, 1 (10), Nov. 2008, pp. 12-16.
Zhang, Q,. Cheng, L., Boutaba, R. Cloud computing: state-of-the-art and research challenges. Journal of
Internet Services and Applications. 1 (1), Springer-Verlag, 2010, pp. 7-18.
32
33
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
Realidade Virtual e Reconhecimento de Gestos
Aplicado as Áreas de Saúde
Alexandre Fonseca Brandão
Gustavo Jordan Castro Brasil
Diego Roberto Colombo Dias
Sara Regina Meira Almeida
Gabriela Castellano
Luis Carlos Trevelin
Abstract
This chapter provides solutions of interaction devices integrated applications in virtual environments
which support the areas of health focused on the physically active entertainment (against sedentary lifestyle) and rehabilitation of neuromuscular and musculoskeletal diseases. Virtual Reality is investigated
in the context of prevention of muscle atrophy and increase of the cognitive reserve through increased
motor tasks and neurostimulation of different areas of the cerebral cortex, associated with general motor
control and sensory and visual stimulus.
Resumo
Este capítulo apresenta soluções de aplicações integradas a dispositivos de interação em ambientes virtuais para dar suporte às áreas da saúde voltadas ao entretenimento fisicamente ativo (combate ao sedentarismo) e à reabilitação de enfermidades neuromusculares e musculoesqueléticas. A Realidade Virtual é explorada no contexto da prevenção de atrofia muscular e aumento da reserva cognitiva por meio
do aumento das tarefas motoras e da neuroestimulação de diferentes áreas do córtex cerebral, associados
ao controle motor geral e aos estímulos sensoriais e visuais.
1.1 Introdução
No cenário de crescente sedentarismo e inatividade física atual [Hallal et al., 2012; Malta e Silva,
2012; Das e Horton, 2012], a cultura e o estilo de vida são considerados estratégicos na prevenção e promoção da saúde. Atualmente existem tecnologias para jogos digitais que utilizam ambientes de Realidade Virtual (RV) que, além de ampliar alguns de nossos sistemas sensoriais, contribuem para a manutenção do condicionamento físico do indivíduo e possibilitam a reabilitação de pacientes com doenças
neuromusculares. Esses jogos digitais podem assegurar aos usuários uma forma não-convencional
33
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
(sem utilizar teclado e mouse) para interagir com ambientes virtuais por meio de interfaces gestuais,
de forma intuitiva, fisicamente ativa e essencialmente lúdica. Assim, a utilização desta tecnologia pode
colaborar no combate ao sedentarismo, proporcionando uma mudança de paradigma na interação das
jovens com ambientes virtuais e incorporar técnicas específicas para reabilitação cognitiva e funcional.
Considerando a cultura e o estilo de vida como estratégias de prevenção e promoção de saúde,
almejam-se atividades que recrutem grandes grupos musculares, como os músculos dos membros inferiores, de modo que ocorra intensa circulação sanguínea e, consequente, o aumento de gasto energético durante a realização de tal atividade. Um exemplo são os movimentos corporais que simulam
a caminhada, foco do aplicativo GestureMaps [Brandão et al., 2013], detalhado posteriormente, o qual
contempla estas exigências.
Os membros superiores, por sua vez, são extremamente solicitados para interação com interfaces
gestuais e, frequentemente, atrofiados devido à menor utilização acima do nível dos ombros. Ou seja,
os movimentos articulares necessários para as diversas tarefas no cotidiano dificilmente contemplam
toda a amplitude de movimento desta articulação, induzindo a atrofia muscular nesta região durante
o processo de senescência do indivíduo, o que torna a busca de novas técnicas de fortalecimento e reabilitação para o complexo articular do ombro um grande interesse social. Os aplicativos GestureChess
[Dias et al., 2013], GesturePuzzle [Brasil et al., 2011] e GestureChair [Brandão et al., 2013] serão apresentados dentro desta perspectiva.
Este capítulo está organizado da seguinte forma: a Seção 2 apresenta o uso de aplicações de RV
voltadas à saúde; a Seção 3 apresenta o uso de aplicações de RV que abrangem problemas relacionados
à atividade física e à neurociência, além de destacar a Interface Natural de Usuário e o conceito de jogos
voltados à reabilitação; a Seção 4 apresenta alguns dispositivos de entrada utilizados em aplicações voltadas à reabilitação, tais como o Kinect e algumas interfaces baseadas em estímulos cerebrais; a Seção
5 apresenta o conjunto de aplicações Gesture’s, as quais utilizam os conceitos apresentados no decorrer
deste capítulo; e a Seção 6 conclui e apresenta perspectivas para o tema.
1.2 Realidade Virtual e Aplicações nas Áreas de Saúde
A RV tem sido utilizada como meio de reabilitação e avaliação física em geral [De Mauro et al.,
2010; Paolini et al., 2013; Li e Sun, 2009] de modo mais intenso ao longo dos últimos anos. Isto se deve
à popularização dos consoles, os quais unem aos jogos digitais a interação por meio de gestos motores,
como o sensor de reconhecimento de gestos Kinect.
Brasil e Guimarães (2011) apresentaram a aplicação GesturePuzzle, a qual destaca o cansaço físico
como fator limitante ao tempo de interação do usuário com a interface não convencional baseada em gestos, evidenciando que um maior grau de fortalecimento da musculatura do complexo articular do ombro
poderia colaborar com o tempo de interação dos usuários desta tecnologia, como as iminentes Smart TVs.
De Mauro et al. (2010) apresentaram o projeto Hyper (Hybrid Neuroposthetic and Neurorobotic
devices for Functional Compensation and Rehabilitation of Motor Disorders), o qual focou no desenvolvimento de uma aplicação de RV combinada com uma interface de entrada Neurobótica, voltada à
reabilitação motora de pacientes que sofreram um Acidente Vascular Cerebral (AVC).
34
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
Paolini et al. (2013) apresentaram uma aplicação de RV integrada ao dispositivo Kinect. A aplicação teve o intuito de validar um método de posicionamento e orientação do pé em tempo real, utilizando o sistema de rastreamento fornecido pelo Kinect. Os autores utilizaram como aplicação o treinamento dos movimentos relativos à marcha.
No entanto, o uso de interfaces de entrada não convencionais vai além do uso apenas de dispositivos comerciais relacionados aos consoles. Connelly et al. (2010), por exemplo, desenvolveram uma
luva pneumática denominada PneuGlove, a qual é utilizada no processo de reabilitação após AVC. Eles
ofereceram aos pacientes um ambiente virtual bidimensional que permite sua exploração e a simulação
do gesto de preensão manual contando com a assistência da PneuGlove para a extensão após a flexão
dos dedos. Golomb et al. (2010) afirmam que ambientes virtuais utilizados para telerreabilitação podem melhorar a função dos membros superiores, especificamente mão e antebraço em adolescentes
com paralisia cerebral hemiplégica.
1.3 Realidade Virtual, Neurociência e Atividade Física
Atualmente têm-se buscado estratégias inovadoras para melhorar a função motora, como por
exemplo, a reabilitação do membro superior do paciente que sofreu um AVC. Para retreinar o movimento de indivíduos com limitações cognitivas e físicas, Rose et al. (2005) utilizaram aplicações de RV
para simular situações próprias do cotidiano por meio de estímulos multissensoriais.
Laver et al. (2011) avaliou o efeito do tratamento utilizando aplicações de RV na recuperação da
função cognitiva, da marcha, do equilíbrio e das atividades de vida diárias (AVDs) em pacientes que
sofreram um AVC. Os resultados apontam que ainda faltam evidências que demonstrem respostas significativas com relação ao uso de RV, quando estas são comparadas com as respostas obtidas na terapia
convencional. Porém, quando considerado apenas o tratamento de membro superior, estudos indicam
melhores resultados na reabilitação da função motora e funcional quando a terapia convencional é
associada à terapia com RV.
Turolla et al. (2013) demonstraram a efetividade da RV associada à terapia convencional no tratamento do membro superior em pacientes que sofreram um AVC em diferentes níveis de gravidade
motora. O aumento do feedback obtido na realização da própria tarefa pode facilitar a reaquisição da
habilidade motora comprometida. Além disso, a possibilidade de modificar as características do cenário virtual pode tornar as sessões de reabilitação mais atrativas e agradáveis.
Chang et al. (2011) apontaram o uso do dispositivo de rastreamento corporal Kinect na reabilitação de crianças com paralisia cerebral e atrofia muscular. Também utilizando uma aplicação com
interface semelhante, Ustinova et al. (2011) demonstraram que o uso do reconhecimento de gestos
aumentou a coordenação postural do braço em pacientes com traumatismo cranioencefálico.
Mirelman et al. (2011) utilizaram o treino de marcha com esteira e RV em pacientes com doença
de Parkinson, almejando avaliar a marcha e as habilidades em tarefas complexas. O ambiente virtual
consistiu de um ambiente “outdoor” com diferentes tipos de obstáculos, com os quais o paciente não
podia colidir, exigindo atenção, seleção de resposta e o processamento dos vários estímulos visuais
envolvidos no processo da percepção. Após o treinamento houve melhora significativa na velocidade,
tempo e comprimento do passo.
35
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
Kubicki et al. (2014) investigaram se o uso de aplicações de RV poderia melhorar a realização de
AVDs, principalmente a coordenação entre movimentos gerais e a postura de idosos. Após três semanas, o estudo revelou melhora significativa no controle das mãos, na velocidade para realizar tarefas e
no ajuste postural antecipatório. Esses resultados sugerem que algum nível de reaprendizagem motora
é mantido em indivíduos idosos com reserva funcional baixa.
1.3.1 Interface Natural de Usuário
A constante evolução dos componentes eletrônicos dos computadores, como processadores centrais e gráficos, memórias entre outros, abriram espaço, também, para a evolução das interfaces de
usuário e dispositivos de entrada. Devido à evolução após o lançamento dos computadores pessoais,
as interfaces de entrada tiveram sua evolução centrada no usuário com o objetivo de chegar a uma
interface intuitiva e natural.
Segundo Weiyuan Liu (2010), as interfaces computacionais começaram a ser desenvolvidas na
década de 1960. Neste período, existiam apenas máquinas com teclados semelhantes aos de máquinas
datilográficas, acrescidos de algumas teclas de funções. Neste mesmo período surgiram os terminais
de vídeo, denominados consoles, utilizados por operadores de sistema e programadores.
Na busca do melhor entretenimento, a indústria tem focado nos últimos anos em desenvolver uma
interface natural e realista para seus produtos, surgindo assim novos dispositivos de entrada para a
plataforma de consoles (video-games). Esses dispositivos reconhecem movimentos estáticos e dinâmicos classificando-os em gestos para uso específico. Este tipo de interface de entrada é conhecida como
Interface Natural de Usuário (NUI, do inglês Natural User Interface). A NUI é o termo comum usado
por designers e desenvolvedores de interfaces de computador, quando estes querem referir-se à interação com o computador de um modo efetivamente invisível, ou que torna-se invisível com sucessivas
interações realizadas [Gnecco, 2012].
Segundo Wigdor (2011), a NUI não é uma interface natural, mas sim uma interface que permite
que o usuário aja e sinta-a como se fosse natural. Uma boa interpretação de NUI é mudando a forma
de dizer “interface natural”, na qual ela não é definida como sendo uma interface natural de usuário,
mas sim uma interface de usuário natural.
Segundo Gnecco (2012), as interfaces mais comuns utilizam dispositivos de controle artificial,
cujo aprendizado é realizado por meio de dispositivos com botões, tais como teclado ou controle de
video-game, cuja a curva de aprendizagem pode ser alta. Contudo, a NUI possui como características de interface, apenas a exigência que o usuário seja capaz de interagir com o ambiente por meio
de interações previamente já conhecidas, como por exemplo, gestos e voz. A interface também exige
aprendizagem, porém é facilitada, pois não exige que o usuário seja apresentado a um novo dispositivo.
1.3.2 Jogos de Reabilitação – Serious Games
O termo game ou jogo pode ser determinado e classificado de várias formas, mas geralmente é
utilizado para definir uma competição física ou mental, que utiliza um conjunto de regras artificiais
com um objetivo a ser alcançado de forma lúdica, na maioria das vezes para entretenimento dos joga36
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
dores. No caso os jogos digitais, ou video-games, podem ser caracterizados por aplicações baseadas em
computação gráfica com foco na diversão do usuário. Os video-games atualmente são desenvolvidos
para várias plataformas, tais como computadores, consoles e smartphones. Entretanto, cada plataforma
difere em características, tais como capacidade de processamento, interface visual e de entrada, o que
tende a influenciar o usuário [Machado et al. 2009].
Os jogos digitais são geralmente projetados para simular aspectos da realidade e/ou ficção, entretanto, os serious games são desenvolvidos para abordar aspectos de treinamento, e não apenas visando
o entretenimento. Segundo Machado et al. (2009), os primeiros serious games surgiram na década de
80, impulsionados pelos simuladores militares desenvolvidos pelos Estados Unidos.
Segundo Zyda (2005), os serious games visam simular as situações práticas do cotidiano, com o
objetivo de proporcionar o treinamento de profissionais em situações de risco extremo e em treinamentos voltados a aprendizagem nas áreas da educação, formação empresarial, saúde, políticas públicas entre outras. Na computação, o termo serious games é tratado como sendo aplicações baseadas
em computação gráfica, desenvolvidas e praticadas em ambientes virtuais que possuem sistemas de
interação baseados em diversas interfaces de entrada. Essas aplicações também podem ser classificadas
na indústria como sendo uma sub-categoria de video-games.
Chagas et al. (2012) demonstraram que é altamente recomendado que trabalhadores possam dispor de tecnologia para treinar determinado gesto motor de modo contínuo a partir de serious games.
Assim, no ambiente proposto, os operadores são expostos a várias circunstâncias nas quais eles podem
exercitar seu conhecimento sobre determinado trabalho e aprender com situações adversas.
Neste contexto, as aplicações desta modalidade de jogos digitais encontram terreno fértil em situações de reabilitação músculo-esquelética e neurofuncional, onde o tratamento convencional, apesar
de eficaz, é por vezes considerado extenuante e enfadonho para o paciente, o que aumenta os casos de
interrupção momentânea e até a desistência do processo de tratamento e reabilitação. Assim, as áreas
da saúde são, de modo geral, carentes de desenvolvimento nacional de serious games que atendam especificamente nossa população, considerando as características individuais dos usuários, ao invés de
depender da importação de soluções já padronizadas para outra realidade e população.
1.4 Soluções e Dispositivos
A interação em aplicações de RV é uma das mais importantes de suas características, pois auxilia no processo de imersão do usuário. Os dispositivos de interação utilizados em aplicações de
RV tem evoluído, não ficando apenas restrito a dispositivos não convencionais, tais como luvas de
dados e rastreadores.
1.4.1 Dispositivo PrimeSense - Kinect
Os dispositivos de rastreamentos por câmera têm sido uma das atuais abordagens utilizadas como
meio de interação pela indústria de games, e de estudos relacionados à NUI [Gnecco et al. 2012].
37
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
Um exemplo proeminente é o dispositivo Microsoft Kinect. Ele foi lançado como um sensor de
movimento para o console Xbox 360, uma interface para usuário, a qual utiliza gestos e voz como meio
de interação com os jogos. No entanto, o dispositivo tem sido explorado e aplicado em outras áreas fora
do entretenimento, sendo um dispositivo altamente difundido no meio de aplicações que necessitem
utilizar rastreamento corporal.
O dispositivo Microsoft Kinect é composto por vários componentes eletrônicos que fazem dele um
sensor de movimento para captura de gestos em tempo real. Os componentes são: uma câmera RGB,
um sensor de profundidade, um vetor de microfones, um motor de inclinação e um acelerômetro de
três eixos. A interface de conexão do sensor é USB, padrão 2.0, o que permite que ele seja utilizado no
desenvolvimento de aplicações computacionais. A Figura 1 apresenta o dispositivo e seus componentes.
Figura 1. Dispositivo Microsoft Kinect
1.4.2 Interfaces Cérebro Máquina
Adicionalmente aos sistemas descritos, existe uma discussão recente na literatura científica sobre o fato de sistemas de interface cérebro-máquina (BCI, do inglês brain-computer interface) possuírem potencial para auxiliar na reabilitação de pacientes com deficiências motoras, particularmente
as resultantes de lesões no sistema nervoso central (SNC) devidas ao AVC [Birbaumer e Cohen, 2007;
Pfurtscheller et al., 2008; Daly e Wolpaw, 2008; Soekadar, Birbaumer e Cohen, 2011; Grosse-Wentrup,
Mattia e Oweiss, 2011]. Há inclusive, alguns poucos casos em que a função motora foi restaurada com o
auxílio de BCIs, com taxas de sucesso variadas, como p.ex., [Caria et al., 2011; Fok et al., 2011].
Os BCIs são sistemas que captam e interpretam sinais cerebrais de modo a permitir o controle de
aparelhos externos. Estes aparelhos podem ser, p. ex., um teclado, um cursor numa tela de computador,
um braço robótico ou uma cadeira de rodas. Os sistemas BCI surgiram inicialmente com o intuito de
fornecer um meio de comunicação a pacientes com deficiências motoras severas (pacientes no estado
“trancado”, ou “locked-in”, que perderam todo o controle motor), e para comandar neuropróteses (ou
seja, próteses acopladas ao sistema neural). No entanto, além dessas aplicações, usos recentes desses
sistemas envolvem neurofeedback em jogos de computador e controle de dispositivos diversos para
qualquer tipo de usuário.
38
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
O desenvolvimento de um sistema BCI requer, num primeiro momento, a definição da técnica a ser
usada para a medida dos sinais cerebrais, e a estratégia usada para a geração destes sinais. Estas estratégias consistem na forma de geração dos sinais cerebrais, captados por um sistema BCI, os quais podem
ser gerados de forma involuntária, como resposta a um dado estímulo sensorial, ou de forma voluntária,
baseados em pensamentos específicos engendrados pelo usuário.
Várias técnicas de aquisição de sinais cerebrais têm sido usadas em sistemas BCI, como a eletroencefalografia (EEG), a eletrocorticografia (ECoG), as sondas neurais, a ressonância magnética funcional
(fMRI, de functional magnetic resonance imaging), a magnetoencefalografia (MEG) e a espectroscopia
óptica (NIRS, de near-infrared spectroscopy). Segundo a técnica usada, o sistema BCI pode ser portátil
(EEG, NIRS) ou estacionário (fMRI, MEG); invasivo (sondas neurais), parcialmente invasivo (ECoG)
ou não invasivo (fMRI, EEG, MEG, NIRS); baseado em sinais de natureza elétrica, relacionados diretamente aos disparos neuronais (sondas neurais, ECoG, EEG, MEG), ou baseado em sinais de natureza
hemodinâmica, relacionados ao metabolismo e oxigenação do sangue cerebral decorrentes da ativação
neuronal (fMRI, NIRS).
Sinais cerebrais usados em BCI podem ser gerados de forma involuntária, como resposta a um
dado estímulo sensorial, ou de forma voluntária, baseados em pensamentos específicos engendrados
pelo usuário. No primeiro caso, exemplos são os sistemas BCI baseados em potenciais evocados visuais
(SSVEP, de steady-state visual evoked potential) e os baseados no potencial evocado P300. SSVEPs são
variações específicas que ocorrem no sinal de EEG provindo do córtex visual quando uma pessoa é sujeita a um estímulo visual que pisca com uma determinada frequência. Nesse caso, é possível identificar um aumento na amplitude do sinal de EEG na frequência correspondente à frequência do estímulo.
Dessa forma, é possível montar uma interface de estimulação em que diferentes opções para o usuário
(p. ex., diferentes direções que uma cadeira de rodas pode seguir) piscam com diferentes frequências.
Já o P300 consiste de um potencial com uma forma de onda específica, que aparece no traçado de EEG
por volta de 300 milissegundos após o acontecimento de um evento de baixa probabilidade, no qual o
usuário está focado. Neste caso, a interface de estimulação geralmente consiste em opções “apagadas”,
que “acendem” (ou brilham) de forma aleatória – o usuário foca a atenção na opção desejada, e quando
“acende”, seu cérebro dispara o P300 (com um atraso de 300 milissegundos). Ambos estes tipos de sistemas são chamados de sistemas síncronos, pois necessitam de um dispositivo externo para estimular
a geração do sinal cerebral, que fica sincronizado com o estímulo.
No segundo caso, de geração voluntária de sinais cerebrais, o exemplo mais explorado em sistemas
BCI é o de imaginação de movimento. Quando uma pessoa imagina a execução de um dado movimento, a resposta cerebral, tanto em termos dos sinais de EEG, quanto dos mapas de ativação obtidos com
fMRI, é muito similar à resposta que se obteria para a execução real do movimento. O córtex motor é
uma área cerebral bem localizada e mapeada; em particular, o lado esquerdo do córtex motor comanda
os membros do lado direito, e vice-versa. Portanto, usando fMRI é relativamente simples identificar o
membro (p. ex., a mão, ou pé) que executou (ou que se imaginou executar) o movimento. No caso dos
sinais de EEG, ocorre um fenômeno chamado de dessincronização relacionada a evento (ERD, de event-related desyncrhonization): quando uma pessoa realiza um movimento (ou se imagina realizando
este), o sinal de EEG do córtex motor contralateral ao movimento, na banda de frequências “m” (8 a 13
Hz), diminui sua amplitude, o que fica bem nítido pela diminuição do pico correspondente no espectro
39
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
de Fourier do sinal. Dessa forma, diferentes opções do sistema podem estar associadas à imaginação
de movimento de diferentes membros (os mais usados são: mão direita, mão esquerda, pés e língua).
Este tipo de sistema é geralmente chamado de assíncrono, já que, em princípio, não necessita de um
dispositivo externo para guiar a geração dos sinais.
As aplicações de BCIs para pacientes citadas acima são aplicações do tipo “assistivas”, que visam,
de alguma forma, melhorar a qualidade de vida do paciente, permitindo que ele recupere funcionalidades perdidas (comunicação, locomoção etc.). No entanto, como já mencionado, recentemente tem se
discutido bastante a potencialidade do uso de sistemas BCI em aplicações “restaurativas”, que visam
auxiliar a restauração da função motora no SNC de pacientes incapacitados [Daly e Wolpaw, 2008;
Soekadar, Birbaumer e Cohen, 2011]. Neste caso, os sistemas usados são os BCIs baseados em imaginação de movimento, descritos acima. Essa discussão se baseia em que a melhor forma de restaurar a
função motora cerebral consiste em induzir uma atividade cerebral que por sua vez, induzirá a plasticidade cerebral. Plasticidade cerebral é a propriedade do cérebro de se remodelar, ou rearranjar suas
sinapses. No cérebro sadio, é a responsável pela sedimentação de novos conhecimentos e aprendizados;
no cérebro doente, pode remapear funções perdidas devido a lesões em outras áreas cerebrais.
Duas estratégias utilizando este tipo de BCIs têm sido pensadas. Uma ideia é usar o BCI para
auxiliar a melhorar a produção dos sinais cerebrais relacionados ao movimento, ou seja, para treinar
o cérebro a normalizar estes sinais. Espera-se nesse caso, que ao influenciar uma plasticidade cerebral
que produza sinais cerebrais mais normais, a função cerebral normal também seja restaurada, melhorando o controle motor. A outra ideia consiste em fazer o processo reverso, ou seja, usar o BCI para
produzir sinais que movimentem um dispositivo externo (neuroprótese) que auxilie o movimento do
membro incapacitado. A “normalização” da função motora induziria uma subsequente plasticidade
cerebral que levaria à restauração do controle motor [Daly e Wolpaw, 2008].
Um ponto interessante é que um estudo desenvolvido pelos principais grupos de pesquisa em
BCI do mundo sugere que a restauração motora pode ser ainda mais eficaz quando o sistema BCI é
combinado com ambientes virtuais imersivos, que permitem que o usuário interaja de forma mais
natural com esse sistema [Future BNCI, 2012]. Embora já existam vários trabalhos que usam ambientes de realidade virtual para reabilitação, e outros que combinam ambientes virtuais com BCIs,
o desenvolvimento de sistemas de reabilitação acoplando BCIs a ambientes de realidade virtual ainda
está em seu estágio inicial em termos de pesquisas, com pouquíssimos trabalhos na área (ver, p. ex.,
[Ortner et al. 2012]).
1.5 Aplicações práticas
Com as atuais possibilidades de interação e soluções a partir do reconhecimento de gestos apresentadas na seções anteriores, foram desenvolvidos e aplicados alguns estudos no Laboratório de Visualização Imersiva, Interativa e Colaborativa (LaVIIC) os quais são apresentados nesta seção. Em
todas as aplicações o dispositivo utilizado como interface de entrada é o Microsoft Kinect.
40
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
1.5.1 Realidade Virtual e Desorientação Espacial
Segundo Pitta (2001), a desorientação espacial é um estado confusional caracterizado pelo prejuízo da concentração, lentidão da compreensão, dificuldade de percepção e elaboração das impressões
sensoriais, com prevalência em hospitais gerais que varia entre 10% e 30% dos pacientes idosos. Classificado na forma clínica de delirium, o estado confusional é classificado pela sigla CID – 10 (Classificação Internacional de Doenças – 10) como Transtornos Mentais e do Comportamento. Tal transtorno
causa perplexidade do paciente em relação ao ambiente e às pessoas do convívio familiar, ocasionando
lentidão das respostas solicitadas, e está associado a alterações de memória, diminuindo a capacidade
de registro de novas informações, aprendizados e, consequentemente, o ato de recordar. Ocorre também o prejuízo global das funções psíquicas e predomínio da perturbação da consciência com presença
de hiperatividade ou lentidão psicomotora.
A aplicação denominada GestureMaps (Figura 2) tem o intuito de prover a exploração virtual,
espacial e geográfica por meio da ferramenta Google® StreetView que possui uma galeria de fotos panorâmicas em 360 graus em pipeline à nível de rua. O usuário define o local que deseja explorar inserindo
o endereço desejado e experimenta uma maior sensação de imersão através de uma paralaxe de navegação ao longo da rua reproduzida no ambiente virtual.
Figura 2. Exemplo de uso do aplicativo GestureMaps
A aplicação tem seu controle implementado por gestos pré determinados (Figura 3), de modo que
para avançar no ambiente virtual é necessário que o usuário simule uma caminhada, com flexões de
quadril e joelho correspondentes ao deslocamento mínimo de 15 centímetros entre a posição inicial
e final da patela (osso livre da articulação do joelho). A mudança de direção durante a navegação no
Google StreetView é realizada por meio do movimento de rotação do tronco, ou de abdução do ombro
correspondente (direito ou esquerdo), em um intervalo entre 0 e 90 graus.
41
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
Figura 3. Gestos de comando do GestureMaps
1.5.2 Realidade Virtual e Dupla Tarefa: Gesture Chess
A realização de atividade motora e cognitiva, simultânea, é denominada tarefa dupla. Tal ação
presume o recrutamento muscular de diferentes segmentos corporais e a estimulação de diferentes
áreas do córtex cerebral, associadas ao controle motor geral e aos estímulos sensoriais e visuais. Este
recrutamento muscular, associado à sobrecarga mental, possui potencial para otimizar, desde as habilidades relacionadas ao equilíbrio de idosos, até o aumento da reserva cognitiva em adultos, jovens
e crianças. Acredita-se que tal reserva esteja associada à incidência de patologias neurodegenerativas,
como as doenças de Parkinson e Alzheimer.
O estudo de desenvolvimento e implementação do GestureChess (Figura 4) teve como objetivo
desenvolver uma aplicação para o controle de um jogo de xadrez, visando explorar o conceito de Dual
Task a partir de movimento dos membros superiores, com estimulação cognitiva e motora.
Figura 4. Exemplo de uso do aplicativo GestureChess
42
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
O controle da aplicação é realizado por meio de movimentos realizados pela mão do usuário. Para
controle nos eixos X e Y, são previamente descritos os movimentos. O primeiro de push (clique), o qual
cria virtualmente coordenadas espaciais 0,0, sendo que, a partir deste ponto, é possível associar os
movimentos da mão rastreada às coordenadas do mouse.
Na Figura 5(a) é ilustrado o posicionamento inicial do rastreamento, onde os valores para X e Y
são 0, o que permite que o ponteiro fique imóvel. No passo em que a mão é movimentada, o ponteiro
também será; no entanto, para que o jogo possa ser utilizado por pessoas com diferentes capacidades
motoras, um método para incrementar a posição do ponteiro foi implementada. Na Figura 5(b) é apresentado o posicionamento incremental nas posições Xn e Yn, o qual é variado de acordo com a velocidade imposta pela mão. Assim, mesmo que as mãos estejam paradas em X2 e Y2, a posição do cursor
continuará a ser incrementada, tendendo à Xn e Yn, permitindo que jogadas sejam executadas em todo
o tabuleiro, mesmo que o usuário possua limites na amplitude do movimento. Para que o ponteiro
volte a ficar imóvel, o usuário deve reposicionar sua mão no p(0,0). A partir deste controle é possível
simular um clique no espaço sobre a peça que o usuário deseja movimentar, e outro clique sobre o local
onde esta peça deverá ser reposicionada.
Figura 5. Rastreamento inicial(a) e final(b) que demonstra uma das possibilidades para incrementar a
posição do ponteiro
1.5.3 Realidade Virtual e Reabilitação do Membro Superior: GestureChair / GesturePuzzle
O complexo articular do ombro é classificado como uma articulação diartrodial (livremente
móvel), do tipo esferóide multiaxial ou enartrodial, o qual possui três graus de liberdade e larga
amplitude de movimento com rotação nos três eixos ortogonais X, Y e Z [Sacco e Tanaka 2008; Zatsiorsky 2004]. Apesar de esqueleticamente fraca, devido à frouxidão da cápsula fibrosa que envolve tal
articulação, os três ligamentos glenoumerais (superior, médio e inferior) reforçam sua estrutura em
conjunto com as extensões provenientes dos tendões dos músculos: peitoral maior e redondo maior
[Thompson e Floyd 2002].
43
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
O estudo do desenvolvimento da aplicação GesturePuzzle teve como foco a implementação de
uma interface de controle de um jogo de quebra-cabeça (Figura 6) por meio do movimento das mãos.
O usuário tem em seu ambiente virtual peças separadas de imagens em ordem aleatória, em que o
objetivo é executar o movimento e ordenar as peças. O movimento natural de segurar e soltar as peças
é reproduzido para alcançar a realidade, permitindo que o usuário explore livremente a articulação do
ombro em todos os planos de movimento (coronal, sagital e transverso).
Figura 6. Exemplo do aplicativo GesturePuzzle
O aplicativo GestureChair tem o objetivo de proporcionar às pessoas, que possuem seus movimentos restritos à parte superior do corpo, uma forma de interagir com o ambiente virtual (uma versão
livre do jogo PacMan, denominada KapMan), a partir da posição sentada. O usuário controla o personagem do jogo com movimentos manuais, o reconhecimento da mão do usuário ocorre a partir do
gesto wave (movimento similar ao tchau), e controla o jogo com movimentos manuais rápidos (Figura
7) denominados swipe (para cima, baixo, direita ou esquerda). A partir deste ponto o programa reconhece cada gesto e permite ao usuário controlar o jogo. Caso o usuário não fizer o movimento swipe
rápido o suficiente, o programa não interpreta nenhum gesto, prevenindo o reconhecimento de gestos
indesejáveis, o que poderia tornar o controle do jogo inviável.
Figura 7. Gestos de comando do GestureChair
44
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
1.6 Conclusões e Perspectivas
As pesquisas que combinam atividade física e RV são animadoras, apontando resultados promissores em diversas situações relativas às áreas da saúde. É necessário aumentar o número de estudos
randomizados, controlados e com amostra representativa da população, no sentido de evidenciar a
tecnologia disponível e criar novas terapias baseadas em RV que possam complementar o processo de
reabilitação, bem como consolidar a eficácia do tratamento a médio e longo prazo.
O conjunto de aplicações Gesture’s tem como objetivo geral prover uma forma de interação com
a máquina por meio de gestos motores, os quais incrementam a atividade física diária e demandam
maior gasto energético quando comparado à interação convencional (mouse e teclado), possibilitando
uma mudança de paradigma na forma de Interação Humano-Computador a médio e longo prazo.
Em trabalhos futuros, as aplicações apresentadas na seção 5 (Gesture’s) serão integradas a alguns
dos dispositivos BCI, visando explorar os efeitos relativos à neuromodulação, situações de aprendizagem motora e desempenho cognitivo durante a prática de atividade física convencional e/ou no contexto da reabilitação amparada por RV.
Referências
Birbaumer, N and Cohen, L. G. (2007) “Brain–computer interfaces: communication and restoration of
movement in paralysis”, J Physiol 579(3): 621-636.
Brandão, A. F; Brasil, G. J. C; Dias, D. R. C; Trevelin, L. C. (2013) “GestureMaps: Perspectivas para a
desorientação espacial”, In: IV International Colloquium of Gerontology, Revista do Hospital das Clínicas da
FMRP – USP, 46(4): 25, Ribeirão Preto.
Brandão, A. F; Soares, M. C; Brasil, G. J. C; Dias, D. R. C; Fabbro, A. C; Duarte, A. C. G. O; Trevelin, L. C. (2013) “Prevenção de atrofia muscular da articulação glenoumeral por meio de atividade física adaptada
a realidade virtual e reconhecimento de gestos”, In: Simpósio Sesc de Atividades Físicas Adaptadas, São Carlos.
Brasil, G. J. C. e Guimarães, M. P. (2011) “Um jogo de quebra-cabeça para interface natural de usuário”,
In: XIX Congresso de Iniciação Científica da UFSCar, São Carlos.
Chagas, J. F. S.; Neto, F. M. M.; Bonates, M. F.; Brasil, I. S.; Lima, R. M. (2012) “Um Jogo para Treinamento de Operadores de Sondas de Perfuração Terrestre”, 28(1).
Chang, Y. J.; Chen, S. F.; Huang, J. D. (2011) “A Kinect-based system for physical rehabilitation: a pilot
study for young adults with motor disabilities”, Res Dev Disabil. 32(6): 2566-2570.
Caria, A.; Weber, C.; Brötz, D.; Ramos, A.; Ticini, L. F.; Gharabaghi, A.; Braun, C.; Birbaumer,
N. (2011) “Chronic stroke recovery after combined BCI training and physiotherapy: A case report”, Psychophysiol 48: 578-582.
45
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
Connelly, L.; Jia, Y.; Toro, M. L.; Stoykov, M. E.; Kenyon, R. V.; Kamper, D. G. (2010) “A Penumatic
glove and immersive virtual reality environment for hand rehabilitative training after stroke”, IEEE – Transactions on Neural Systems and Rehabilitation Engineering, 18(5).
Daly, J. J.; Wolpaw, J. R. (2008) “Brain–computer interfaces in neurological rehabilitation”, The Lancet Neurol 8: 1032-1043.
Das, P. and Horton, R. (2012) “Rethinking Our Approach to Physical Activity”, The Lancet, 380: 189-190,
http://www.thelancet.com/journals/lancet/article/PIIS0140-6736(12)61024-1/fulltext. Março.
De Mauro, A; Carrasco, E; Oyarzun, D; Ardanza, A; Paloc, C; Gil, A; Florez, J. (2010) “Virtual
Reality System in Conjunction with Neurorobotics and Neuroprosthetics for Rehabilitation”, In: Information
Technology and Applications in Biomedicine (ITAB), 10th IEEE International Conference.
Dias, D. R. C.; Brandão, A. F.; Guimaraes, M. P.; Brega, J. R. F.; Brasil, G. J. C.; Trevelin, L. C.
(2013) “GestureChess - Interface Natural de Usuario na Atividade Motora e Cognitiva”, In: Workshop de Realidade Virtual e Aumentada, Jataí.
Fok, S.; Schwartz, R.; Wronkiewicz, M.; Holmes, C.; Zhang, J.; Somers, T.; Bundy, D.; Leuthardt, E. (2011) “An EEG-based brain computer interface for rehabilitation and restoration of hand control
following stroke using ipsilateral cortical physiology”, 33rd Ann Int Conf IEEE EMBS, 6277-6280.
Future BNCI (2012) “A road map for future directions in brain/neuronal computer interaction research”, Future
BNCI Project, www.brainable.org/Documents/Future_BNCI_Roadmap.pdf. Março.
Gnecco, B. B.; Dias, D. R. C.; Brasil, G. J. C.; Guimarães, M. P. (2012) “Desenvolvimento De Interfaces Naturais De Interação Usando O Hardware Kinect” In: Tendências e Técnicas em Realidade Virtual e
Aumentada, 2: 37-62.
Golomb, M. R.; McDonald, B. C.; Warden, S. J.; Yonkman, J.; Saykin, A. J.; Shirley, B.; Huber, M.;
Rabin, B.; Abdelbaky, M.; Nwosu, M. E.; Barkat-Masih, M.; Burdea, G. C. (2010) “In-Home Virtual
Reality Videogame Elerehabilitation in Adolescents With Hemiplegic Cerebral Palsy”. Arch Phys Med Rehabil
91(1): 1-8.
Grosse-Wentrup, M; Mattia, D; Oweiss, K. (2011) “Using brain–computer interfaces to induce neural
plasticity and restore function”, J Neural Eng 8: 5, Article ID 025004.
Hallal, P. C.; Bauman, A. E.; Heath, G. W.; Kohl, H. W.; Lee, I. M.; Pratt, M. (2012) “Physical Activity: More of The Same is Not Enough”, The Lancet, 380: 190-191, http://www.thelancet.com/journals/lancet/
article/PIIS0140-6736(12)61027-7/fulltext. Março.
Kubicki, A; Bonnetblanc, F; Petrement, G; Mourey, F. (2014) “Motor-prediction improvements after virtual rehabilitation in geriatrics: frail patients reveal different learning curves for movement and postural
control”, Neurophysiol Clin. 44(1): 109-118.
46
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
Laver, K. E.; George, S; Thomas, S; Deutsch, J. E.; Crotty, M. (2011) “Virtual reality for stroke rehabilitation”. Cochrane Database Syst Rev. 9: CD008349.
Li, S. and Sun, J. (2009) “Application of Virtual Reality Technology in the Field of Sport,” Education Technology And Computer Science, ETCS ‘09. First International Workshop, 2: 455-458.
Machado, L. S; Moraes, R. M; Nunes, F. L. S. (2009). “Serious Games para Saúde e Treinamento Imersivo”, In: Fátima L. S. Nunes; Liliane S. Machado; Márcio S. Pinho; Cláudio Kirner. (Org.). Abordagens Práticas
de Realidade Virtual e Aumentada. Porto Alegre: SBC, 31-60.
Malta, D. C. and Silva, J. B. (2012) “Policies to Promote Physical Activity in Brazil”, The Lancet, 380: 195196, http://www.thelancet.com/journals/lancet/article/PIIS0140-6736(12)61041-1/fulltext. Março.
Mirelman, A; Maidan, I; Herman, T; Deutsch, J. E.; Giladi, N; Hausdorff, J. M. (2011) “Virtual
reality for gait training: can it induce motor learning to enhance complex walking and reduce fall risk in patients with Parkinson’s disease?”, J Gerontol A Biol Sci Med Sci. 66(2): 234-240.
Ortner, R; Irimia, D. C.; Scharinger, J; Guger, C. (2012) “Brain-Computer Interfaces for stroke rehabilitation: evaluation of feedback and classification strategies in healthy users”, 4th IEEE RAS/EMBS Int Conf
Biomed Robotics Biomechatronics, 219-223.
Paolini, G; Peruzzi, A; Mirelman, A; Cereatti, A; Gaukrodger, S; Hausdorff; Della Croce,
U. (2013) “Validation Of a Method For Real Time Foot Position and Orientation Tracking with Microsoft Kinect
Technology For Use in Virtual Reality and Treadmill Based Gait Training Programs”, In: IEEE Trans Neural
Syst Rehabil Eng, 99: 1.
Pfurtscheller, G.; Müller-Putz, G. R.; Scherer, R.; Neuper, C. (2008) “Rehabilitation with braincomputer interface systems”, IEEE Comp Mag 41: 58-65.
Pitta, J. C. N. (2001) “Diagnóstico e conduta dos estados confusionais”, Psiquiatria na prática médica. Departamento de Psiquiatria - UNIFESP/EPM 34(4), http://www.unifesp.br/dpsiq/polbr/ppm/atu2_07.htm Março.
Rose, F. D.; Brooks, B. M.; Rizzo, A. A. (2005) “Virtual reality in brain damage rehabilitation: review”,
Cyberpsychol Behav. 8(3): 241-262.
Sacco, I. C. N.; Tanaka, C. “Cinesiologia E Biomecânica Dos Complexos Articulares”. Rio de Janeiro: Guanabara Koogan S.A., 2008. Cap. 2.
Soekadar, S. R.; Birbaumer, N.; Cohen, L. G. (2011) “Brain-computer-interfaces in the rehabilitation of
stroke and neurotrauma”, In: Kenji Kansaku (ed), Systems-Neuroscience and Rehabilitation, Springer, Tokyo.
Thompson, C. W.; Floyd, R. T. “Manual De Cinesiologia Estrutural”. Barueri: Editora Manole, 2002. Cap. 4 e 5.
Turolla, A; Dam, M; Ventura, L; Tonin, P; Agostini, M; Zucconi, C. (2013) “Virtual reality for the rehabilitation of the upper limb motor function after stroke: a prospective controlled trial”, J Neuroeng Rehabil. 10: 85.
47
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 33-48, maio/2014.
Brandão, Alexandre Fonseca. Realidade Virtual e Reconhecimento de Gestos Aplicado as Áreas de Saúde.
Ustinova, K. I; Leonard, W. A; Cassavaugh, N. D; Ingersoll, C. D. (2011) “Development of a 3D
immersive videogame to improve arm-postural coordination in patients with TBI”. J Neuroeng Rehabil. 8: 61.
Weiyuan, L. (2010) “Natural User Interface - Next Mainstream Product User Interface”: Computer-Aided
Industrial Design & Conceptual Design (CAIDCD), IEEE 11th International Conference, 1: 203-205.
Wigdor, D. and Wixon, D. “Brave Nui World: Designing Natural User Interfaces For Touch And Gesture”.
San Francisco: Morgan Kaufmann Publishers Inc. 2011.
Zatsiorky, V. M. “Biomecânica No Esporte: Performance do Desempenho e Prevenção de Lesão”, Rio de
Janeiro. Guanabara Koogan. S.A. 2004, Cap. 2 e 24.
Zyda, M. (2005) “From Visual Simulation to Virtual Reality to Games”, In: Computer, 38(9): 25-32.
48
49
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Realidade Aumentada e suas
Aplicações na Área de Saúde
Ezequiel Roberto Zorzal
Fátima de Lourdes dos Santos Nunes
Abstract
Augmented Reality can be applied in various areas of knowledge, among which we can highlight the use
of technology in healthcare. The purpose of this chapter is to present an analysis of Augmented Reality
applications in health and challenges in the area of survey. We analyzed 76 studies that presented research focused on the application of Augmented Reality in health, these studies were classified according to
the purpose of the application and from the type of Augmented Reality system employed.
Resumo
A Realidade Aumentada pode ser aplicada em diversas áreas do conhecimento, dentre elas, pode-se destacar a utilização da tecnologia na área da saúde. O objetivo deste capítulo é apresentar uma análise das
aplicações de Realidade Aumentada na saúde e o levantamento dos desafios da área. Foram analisados
76 trabalhos que apresentaram pesquisas com foco na aplicação da Realidade Aumentada na área da
saúde, estes trabalhos foram classificados em função da finalidade da aplicação e a partir do tipo do
sistema de Realidade Aumentada empregado.
1.1 Introdução
Pode-se definir Realidade Aumentada como a inserção de objetos virtuais no ambiente físico, apresentada ao usuário, em tempo real, com o apoio de algum dispositivo tecnológico, usando a interface do
ambiente real, adaptada para visualizar e manipular os objetos reais e virtuais [Kirner e Kirner, 2007].
O uso da Realidade Aumentada aplicada na saúde vem sendo alvo de pesquisas nos últimos anos
[Sielhorst, Feuerstein e Navab, 2008]. Diversos trabalhos estão sendo desenvolvidos com o objetivo de
implementar sistemas de visualização com Realidade Aumentada para fornecer interfaces acessíveis e
49
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
de fácil utilização que apoiam as intervenções médicas e apresentam informações do paciente [Navab
et al., 2012; Bichlmeier et al. 2009].
As áreas relacionadas à saúde têm sido beneficiadas nos últimos anos com os avanços tecnológicos
apresentados pela Realidade Aumentada. Acredita-se que tais avanços propiciaram um recurso ímpar
para o ensino e treinamento [Cardoso e Lamounier Jr., 2009]. Entretanto, o desenvolvimento de aplicações com Realidade Aumentada para auxiliar a área da saúde ainda enfrenta alguns desafios.
O capítulo está organizado em seis seções distintas. A Seção 3.1 apresenta a introdução do trabalho. Na Seção 3.2 é feita a apresentação dos critérios de pesquisa para a classificação das aplicações.
Nas Seções 3.3 e 3.4 são apresentadas, respectivamente, as classificações dos trabalhos analisados em
função da finalidade da aplicação e a classificação em função do tipo do sistema de Realidade Aumentada utilizado. A Seção 3.5 descreve os apontamentos dos principais desafios da área. Por fim, a Seção
3.6 apresenta as considerações finais.
1.2 Classificação das aplicações
Com a finalidade de analisar trabalhos correlatos à área de Realidade Aumentada aplicada à saúde
e mapear os principais desafios da área, a revisão deste trabalho tomou como base os artigos publicados nos últimos dez anos e que estão disponíveis na Web em diferentes bibliotecas digitais. Dentre
as bibliotecas examinadas a IEEE Xplore Digital Library e a ACM Digital Library se destacaram por
manterem uma maior concentração dos trabalhos analisados.
De acordo com Nunes et al. (2011) as pesquisas em Realidade Virtual e Aumentada na saúde
podem ser classificadas de diferentes formas, a partir de um contexto específico e em função do público-alvo. Com base nesta afirmação, os trabalhos levantados foram classificados a partir das seguintes
categorias: terapia, jogos, educação, treinamento e procedimentos. Cabe ressaltar que em muitos casos
as aplicações podem combinar diferentes categorias, por exemplo, pode-se citar o uso de jogos em
tratamentos terapêuticos [Vandermaesen et al. 2014], ou, ainda, aplicações desenvolvidas para treinamentos que são usadas na educação [Sutherland et al. 2013].
Os trabalhos também foram classificados conforme o tipo de display utilizado [Azuma et al. 2001]
envolvendo visão ótica ou visão por vídeo. De acordo com [Kirner e Zorzal 2005] essa classificação
acarreta em quatro tipos de sistemas: visão ótica direta, visão direta por vídeo, visão por vídeo baseado
em monitor e o sistema de visão ótica por projeção.
O sistema de visão ótica direta utiliza óculos ou capacetes com lentes que permitem o recebimento
direto da imagem real, ao mesmo tempo em que possibilitam a projeção de imagens virtuais devidamente ajustadas com a cena real. Uma maneira comum de se conseguir essa característica é usar uma
lente inclinada que permita a visão direta e que reflita a projeção de imagens geradas por computador
diretamente nos olhos do usuário.
O sistema de visão direta por vídeo utiliza capacetes com microcâmeras de vídeo acopladas. A
cena real, capturada pela microcâmera, é misturada com os elementos virtuais gerados por computador e apresentadas diretamente nos olhos do usuário, por meio de pequenos monitores montados
no capacete.
50
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
O sistema de visão por vídeo, baseado em monitor, utiliza uma câmera de vídeo para capturar a
cena real. Depois de capturada, a cena real é misturada com os objetos virtuais gerados por computador e apresentada no monitor. O ponto de vista do usuário normalmente é fixo e depende do posicionamento da câmera.
Por fim, o sistema de visão ótica por projeção, utiliza superfícies do ambiente real, nas quais são
projetadas imagens dos objetos virtuais, cujo conjunto é apresentado ao usuário que o visualiza sem a
necessidade de nenhum equipamento auxiliar.
Embora inicialmente para fazer uso dos sistemas de Realidade Aumentada eram necessários hardware e software customizados, nos últimos anos, devido ao avanço nas tecnologias de hardware e
principalmente com o surgimento dos telefones inteligentes (smartphones), experiências com Realidade Aumentada se tornaram comuns e amplamente disponíveis para uso em computadores pessoais,
portáteis e inclusive para dispositivos móveis. A mobilidade e a possibilidade de adquirir conhecimento a partir da aprendizagem móvel podem ser citadas como uns dos principais benefícios do uso da
Realidade Aumentada em dispositivos móveis.
Sendo assim, para apoiar a classificação das aplicações discutidas nesse trabalho, as mesmas foram classificadas nos seguintes agrupamentos: sistemas que utilizam óculos ou capacetes a partir de
visão direta ótica ou por vídeo; sistemas de projeção; sistemas de visão por vídeo baseados em monitores e dispositivos móveis.
1.3 Classificação por finalidade da aplicação
Foram selecionados 76 trabalhos que apresentaram as pesquisas focadas em aplicações de Realidade Aumentada na saúde, os quais foram classificados e categorizados conformem os critérios estabelecidos e apresentados na seção anterior.
A Figura 1 apresenta a classificação dos trabalhos analisados em função das categorias de utilização. Percebe-se que a maioria das aplicações, principalmente nos últimos anos, foi desenvolvida com
o foco maior em apoiar procedimentos médicos e no treinamento de usuários utilizando para isso
sistemas de Realidade Aumentada baseados no uso de monitores de vídeos ou capacetes. Este acontecimento deve estar associado ao grande interesse de transferências de tecnologias, que tem como objetivo
assegurar que o desenvolvimento científico e tecnológico seja acessível para um grupo maior de usuários que pode desenvolver e explorar a tecnologia em novos produtos, materiais e serviços.
Por outro lado, a área de saúde é um segmento de conhecimento especializado e repleto de situações únicas. Diante disso, tanto o ensino quanto o aprendizado exigem do professor, aluno e de todo o
sistema de ensino uma forma especial de lidar com a transmissão do conhecimento.
A vantagem do uso de ferramentas tecnológicas para o ensino na saúde é que, além da figura
estática, também se pode entender e demonstrar a dinâmica do movimento. Esse tipo de utilização
vem a vencer muitas das limitações atuais da demonstração prática do movimento do corpo humano
[Rolland, Wright e Kancherla, 1997].
51
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Figura 1. Classificação dos trabalhos analisados em função das categorias.
Dessa forma o uso da Realidade Aumentada é promissora dentro desse ramo do ensino. Espera-se
que a evolução desta tecnologia permita apoiar o ensino na saúde sem perder a qualidade de aprendizado que os procedimentos atuais têm promovidos pelo ensino tradicional.
Além do próprio ensino na saúde, o uso de imagens da anatomia humana, por exemplo, pode
ajudar a planejar os tratamentos cirúrgicos e clínicos e mesmo guiar a manipulação correta dos músculos durante as terapêuticas na fisioterapia. Isso pode promover melhores resultados devido à maior
precisão durante os tratamentos em saúde.
Portanto, o uso da Realidade Aumentada neste segmento tem um potencial de promover não só
um impacto na área de ensino, mas também na prática clínica de saúde e na própria relação médicopaciente. Além disso, pode culminar em um novo modo de a sociedade lidar com a anatomia humana
e com o próprio corpo.
Livros virtuais usando Realidade Aumentada já foram publicados e testados. Os testes e pesquisas
apontam que a implementação desse tipo de tecnologia em salas de aula aumenta significativamente a
absorção do conteúdo da disciplina ensinada aos alunos [Billinghurst e Dunser 2012]. Esta estratégia
poderá ser um bom complemento para o ensino da saúde.
1.4 Classificação em função do display
Como uma alternativa de baixo custo, os sistemas de visão por vídeo, baseado em monitor, vêm
sendo fortemente utilizados nas mais diversas categorias de aplicações. A Figura 2 apresenta o percentual dos trabalhos analisados a partir da classificação em função do display.
52
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Nota-se que a utilização dos sistemas de visão por vídeo baseado em monitor e o uso de capacetes
ou óculos especiais (sistemas de visão direta por vídeo ou ótica) compreendem aproximadamente 75%
dos trabalhos analisados.
Figura 2. Classificação dos trabalhos analisados em função dos displays.
Os sistemas de visão direta são apropriados para situações onde a perda da imagem pode ser
perigosa, como é o caso de um cirurgião realizando algum procedimento não simulado. Em locais
fechados, onde o usuário tem controle da situação, o uso da visão por vídeo é adequado e não oferece
perigo, pois em caso de perda da imagem pode-se retirar o capacete com segurança, se esse for o caso.
O sistema com visão por vídeo é mais barato e mais fácil de ser ajustado.
A maioria dos trabalhos que utilizaram sistemas de visão ótica, baseados em projeção, concentrase nas aplicações para procedimentos, treinamentos ou para uso educacional. Embora interessantes,
os sistemas baseados em projeção são dispendiosos e muito restritos às condições do espaço real, em
função da necessidade de superfícies de projeção. Já os trabalhos que foram desenvolvidos para serem
usados em dispositivos móveis apresentaram como principais características a mobilidade e facilidade
de uso, estes trabalhos concentram-se em sua grande maioria em aplicações para terapia e educação.
Apesar dos trabalhos analisados apresentarem baixa utilização em sistemas móveis, o crescimento
do poder computacional dos dispositivos móveis tem proporcionado o desenvolvimento de aplicações
com Realidade Aumentada nas mais diversas áreas do conhecimento. O crescente mercado de aplicativos para serem utilizados em dispositivos móveis deve impulsionar ainda mais o desenvolvimento de
novas aplicações que utilizam Realidade Aumentada, inclusive na área da saúde.
1.5 Principais desafios
De acordo com Navab et al. (2012) os três principais desafios do desenvolvimento das aplicações
de Realidade Aumentada na saúde estão relacionados aos problemas de registro dos objetos virtuais
inseridos ao ambiente real, a integração da tecnologia em procedimentos de alta complexidade e a dificuldade de inserir novas abordagens de ensino na cultura tradicional.
53
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Ainda, em Nunes, Machado e Costa (2009) é afirmado que apesar dos fatores positivos que incrementam a pesquisa na área no Brasil, as aplicações ainda são limitadas e, na maioria, no estágio atual
ainda não provêem o realismo necessário para aplicação na rotina profissional. Os autores ainda mencionam que o envolvimento de empresas que subsidiam as pesquisas em instituições internacionais
tem proporcionado um avanço mais rápido na área quando comparado àquele percebido no Brasil.
Este envolvimento ainda tem gerado aplicações práticas de qualidade que influenciam diretamente
no ensino em saúde e, com isso, proporcionam incremento no aprendizado e diminuição nos custos.
No projeto desenvolvido por Corato, Frucci e Di Baja (2012), que visa a realizar treinamentos para
melhorar a higiene das mãos dos cirurgiões em processos pré-operatórios, foram identificados outros
desafios, como a dificuldade na interpretação dos gestos em ambientes multiusuários ou em condições
de má iluminação, e a limitação do sistema de rastreamento que impede movimentos naturais do usuário. Estes problemas também foram apontados por Blum et al. (2012).
A eliminação de marcadores físicos, que comumente são utilizados em sistemas de rastreamento,
também é um desafio apontado por Abderrahim, Kallel e Bouhlel (2013).
Dentre os desafios em um nível mais próximo ao usuário, que já estão sendo estudados, estão
aqueles relacionados às interfaces do usuário. Para projetar aplicações interativas com boa ergonomia e usabilidade deve-se considerar quem irá utilizá-las e onde serão utilizadas. Outra preocupação
importante consiste em entender o tipo de atividades que os usuários estão realizando quando estão
interagindo com as aplicações. As aplicações devem ser projetadas para fornecer feedback adequado
aos usuários, assegurando que eles saibam os próximos passos durante a realização das tarefas. Estudar de forma detalhada os aspectos ergonômicos e de usabilidade para implementação de aplicações
de Realidade Aumentada na saúde é uma etapa importante para a solução de alguns desses desafios.
1.6 Considerações finais
O desenvolvimento de aplicações com Realidade Aumentada para auxiliar a área da saúde ainda
enfrenta alguns desafios e questões a serem respondidas. Como manter um controle realista da interação com os objetos virtuais considerando a reação mais próxima possível àquela que ocorreria no mundo real? Usar aplicações de Realidade Aumentada para complementar o ensino tradicional em saúde
pode melhorar o aprendizado e fornecer benefícios reais para o aluno? Como garantir a eficiência dos
sistemas de rastreamento e de projeção em intervenções cirúrgicas não simuladas?
Soluções para tais problemas são fundamentais para o desenvolvimento de novas abordagens tecnológicas capazes de apoiar de maneira eficiente o ensino em saúde, garantir a segurança ao paciente
no momento da intervenção, melhorar o desenvolvimento de produtos tecnológicos e facilitar a transferência do mesmo para o setor produtivo.
1.7 Agradecimentos
Os Autores agradecem à Coordenação de Aperfeiçoamento de Pessoal de Ensino Superior (CAPES)
pelo apoio financeiro oferecido por meio do Programa Nacional de Pós Doutorado (PNPD/CAPES).
54
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Referências
Abate, A. F., Nappi, M., Ricciardi, S., Tortora, G., Levialdi, S., e De Marsico, M. (2010) “Virtual
-ICSI: a visual-haptic interface for virtual training in intra cytoplasmic sperm injection.” In Proceedings of the
International Conference on Advanced Visual Interfaces, pp. 381-384. ACM, 2010.
Abderrahim, K. B., Kallel, M., Bouhlel, M. S. (2013) “Towards an interactive medical system by augmented reality”, IJCAIT 2013. International Journal of Computer Applications & Information Technology Vol.
2, Issue II Feb-March 2013 (ISSN: 2278-7720)
ACM Digital Library. http://dl.acm.org/
Asghar, Z., Hickey, S., e Kazmi, S. (2009). Developing mobile services for specific user groups using virtual environments. In Proceedings of the 8th International Conference on Mobile and Ubiquitous Multimedia
(MUM ‘09). ACM, New York, NY, USA, Article 17, 4 pages.
Ashab, H. A., Victoria A. Lessoway, Siavash Khallaghi, Alexis Cheng, Robert Rohling, and Purang Abolmaesumi. (2012) “AREA: An augmented reality system for epidural anaesthesia.” In Engineering in Medicine
and Biology Society (EMBC), 2012 Annual International Conference of the IEEE, pp. 2659-2663. IEEE, 2012.
Aung, Y. M., and Al-Jumaily, A., (2011) “Rehabilitation exercise with real-time muscle simulation based
EMG and AR,” Hybrid Intelligent Systems (HIS), 2011 11th International Conference on, vol., no., pp. 641, 646,
5-8 Dec. 2011.
Azuma, R. T., Baillot, Y, Behringer, R., Feiner, S., Julier, S., MacIntyre, B. (2001). “Recent Advances in Augmented Reality”. IEEE Computer Graphics and Applications, v. 21, n. 6, p. 34-47. 2001.
Balazs, D.; Attila, E., (2006) “Volumetric Medical Intervention Aiding Augmented Reality Device,” Information and Communication Technologies, 2006. ICTTA ‘06. 2nd, vol.1, no., pp. 1091, 1096.
Bichlmeier, C., Ben Ockert, Sandro Michael Heining, Ahmad Ahmadi, and Nassir Navab. (2008). Stepping
into the operating theater: ARAV; Augmented Reality Aided Vertebroplasty. In Proceedings of the 7th IEEE/
ACM International Symposium on Mixed and Augmented Reality (ISMAR ‘08). IEEE Computer Society,
Washington, DC, USA, 165-166.
Bichlmeier, C., Heining, C. M., Rustaee, M., e Navab, N. (2007). Laparoscopic Virtual Mirror for
Understanding Vessel Structure Evaluation Study by Twelve Surgeons. In Proceedings of the 2007 6th IEEE
and ACM International Symposium on Mixed and Augmented Reality (ISMAR ‘07). IEEE Computer Society,
Washington, DC, USA, 1-4.
Bichlmeier, C., Heining, S. M., Feuerstein, M. e Navab, N. (2009) “The Virtual Mirror: A New Interaction Paradigm for Augmented Reality Environments,” IEEE Trans. Medical Imaging, vol. 28, no. 9, pp.
1498-1510.
55
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Bichlmeier, C.; Euler, E.; Blum, T.; Navab, N., “Evaluation of the virtual mirror as a navigational aid for
augmented reality driven minimally invasive procedures,” Mixed and Augmented Reality (ISMAR), 2010 9th
IEEE International Symposium on, vol., no., pp. 91, 97, 13-16 Oct. 2010.
Billinghurst, M., e Dunser, A. (2012) “Augmented Reality in the Classroom,” Computer, vol. 45, no. 7, pp.
56-63, July, 2012.
Blum, T.; Heining, S. M.; Kutter, O.; Navab, N., (2009) “Advanced training methods using an Augmented Reality ultrasound simulator,” Mixed and Augmented Reality, 2009. ISMAR 2009. 8th IEEE International
Symposium on, vol., no., pp. 177, 178, 19-22 Oct. 2009.
Blum, T.; Kleeberger, V.; Bichlmeier, C.; Navab, N., (2012) “mirracle: Augmented Reality in-situ visualization of human anatomy using a magic mirror,” Virtual Reality Short Papers and Posters (VRW), 2012
IEEE, vol., no., pp. 169, 170, 4-8 March 2012
Bluteau, J., Itaru Kitahara, Yoshinari Kameda, Haruo Noma, Kiyoshi Kogure, and Yuichi Ohta. (2005). Visual support for medical communication by using projector-based augmented reality and thermal markers. In
Proceedings of the 2005 international conference on Augmented tele-existence (ICAT ‘05). ACM, New York,
NY, USA, 98-105.
Botella, C., Juani Bretón-López, Soledad Quero, Rosa Baños, and Azucena García-Palacios. (2010) “Treating
cockroach phobia with augmented reality.” Behavior Therapy 41, no. 3: 401-413.
Cardoso, A. e Lamounier Jr., E. A. (2009) “Aplicações de Realidade Virtual e Realidade Aumentada na
Educação e Treinamento”. In: Costa, R. M., Ribeiro, M. W. S. (Org.). Aplicações de Realidade Virtual e Aumentada. 1ed.Porto Alegre (RS): Sociedade Brasileira de Computação, v. 1, p. 69-89.
Corato, F., Frucci, M., e Di Baja, G. A. (2012). Virtual training of surgery staff for hand washing procedure. In Proceedings of the International Working Conference on Advanced Visual Interfaces (AVI ‘12), Genny
Tortora, Stefano Levialdi, and Maurizio Tucci (Eds.). ACM, New York, NY, USA, 274-277.
Dinevan, A.; Yee Mon Aung; Al-Jumaily, A., (2011) “Human computer interactive system for fast recovery
based stroke rehabilitation,” Hybrid Intelligent Systems (HIS), 2011 11th International Conference on, vol., no.,
pp. 647, 652, 5-8 Dec. 2011.
Dos Santos, A. D., De Carvalho, W. V., Melo Junior, A. J., Mendonça Junior, G., De Souza
Júnior, H. C. (2013) Workshop on Virtual, Augmented Reality and Games – Full Papers SBC – Proceedings
of SBGames 2013.
Eck, U.; Sandor, C.; Laga, H. (2013) “Visuo-haptic augmented reality runtime environment for medical
training,” Mixed and Augmented Reality (ISMAR), 2013 IEEE International Symposium on, vol., no., pp. 1, 4,
1-4 Oct. 2013.
Essig, H., Majeed Rana, Andreas Meyer, André M Eckardt, Horst Kokemueller, Constantin von See, Daniel
Lindhorst, Frank Tavassol, Martin Ruecker and Nils-Claudius Gellrich. Essig et al.: (2011) Virtual 3D tumor
56
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
marking-exact intraoperative coordinate mapping improve post-operative radiotherapy. Radiation Oncology
2011 6:159.
Fischer, J., Bartz, D., e StraSSer, W. (2004). Occlusion handling for medical augmented reality using a
volumetric phantom model. In Proceedings of the ACM symposium on Virtual reality software and technology(VRST ‘04). ACM, New York, NY, USA, 174-177.
Ford, S. T., Viola, I., Bruckner, S., Torp, H., e Kiss, G. (2012) “HeartPad: real-time visual guidance for
cardiac ultrasound.” In Proceedings of the Workshop at SIGGRAPH Asia, pp. 169-176. ACM, 2012.
Gomes, W. L.; Kirner, C. (2006). Desenvolvimento de Aplicações Educacionais na Medicina Com Realidade
Aumentada. Bazar: Software e Conhecimento Livres, (1): 1, 13- 20, Jul. 2006.
Görgü, L., Abey Campbell, Mauro Dragone, and Gregory M. P. O’Hare. (2010). Exergaming: a future of mixing
entertainment and exercise assisted by mixed reality agents. Comput. Entertain. 8, 4, Article 27 (December
2010), 3 pages.
Hamza-Lup, F.G.; Santhanam, A.P.; Imielinska, C.; Meeks, S.L.; Rolland, J.P., (2007) “Distributed
Augmented Reality With 3-D Lung Dynamics—A Planning Tool Concept,” Information Technology in Biomedicine, IEEE Transactions on, vol.11, no.1, pp. 40, 46, Jan. 2007.
Haouchine, N., Dequidt, J., Berger, M.-O., e Cotin, S. (2013) “Deformation-based Augmented Reality
for Hepatic Surgery.” In Medicine Meets Virtual Reality, MMVR 20. 2013.
Harischandra, J.; Perera, U., (2012) “Virtual stomach visualization and a stomach tumor detection system,” Biomedical Engineering and Sciences (IECBES), 2012 IEEE EMBS Conference on, vol., no., pp. 377, 382,
17-19 Dec. 2012.
Havukumpu, Juha, Pia Vähäkangas, Eija Grönroos, and Jukka Häkkinen. (2006) “Midwives experiences of
using HMD in ultrasound scan.” In Proceedings of the 4th Nordic conference on Human-computer interaction:
changing roles, pp. 369-372. ACM, 2006.
Henke, C. e Stantchev, V. (2009). Human Aspects in Clinical Ambient Intelligence Scenarios. In Proceedings of the 2009 IEEE/WIC/ACM International Joint Conference on Web Intelligence and Intelligent Agent
Technology - Volume 03(WI-IAT ‘09), Vol. 3. IEEE Computer Society, Washington, DC, USA, 341-344.
Hong, H., Hee Young Jeong, Rosa I. Arriaga, and Gregory D. Abowd. (2010). TriggerHunter: designing an
educational game for families with asthmatic children. In CHI ‘10 Extended Abstracts on Human Factors in
Computing Systems (CHI EA ‘10). ACM, New York, NY, USA, 3577-3582.
Howard, A. M., Roberts, L., Garcia, S., e Quarells, R. (2012). Using mixed reality to map human exercise demonstrations to a robot exercise coach. In Proceedings of the 2012 IEEE International Symposium on
Mixed and Augmented Reality (ISMAR) (ISMAR ‘12). IEEE Computer Society, Washington, DC, USA, 291-292.
57
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Hughes-Hallett, A., Mayer, E. K., Marcus, H.J., Cundy, T. P., Pratt, P. J., Darzi, A. W., and Vale,
J. A. (2014) “Augmented Reality Partial Nephrectomy: Examining the Current Status and Future Perspectives.”
Urology 83, no. 2: 266-273.
IEEE Xplore Digital Library. http://ieeexplore.ieee.org.
Johnson, A.S., Sun, Y. (2013) “Exploration of spatial augmented reality on person,” Virtual Reality (VR),
2013 IEEE, vol., no., pp. 59, 60, 18-20 March 2013.
Kamphuis, C., Barsom, E., Schijven, M., e Christoph, N. (2014). “Augmented reality in medical education?.” Perspectives on medical education: 1-12.
Khademi, M., Hondori, H. M., Dodakian, L., Lopes, C. V., e Cramer, S. C. (2013). An assistive tabletop keyboard for stroke rehabilitation. In Proceedings of the 2013 ACM international conference on Interactive
tabletops and surfaces(ITS ‘13). ACM, New York, NY, USA, 337-340.
Kirner, C. and Zorzal, E. R. (2005) “Aplicações Educacionais em Ambientes Colaborativos Realidade Aumentada”. XVI SBIE2005 - Simpósio Brasileiro de Informática na Educação, UFJF, Juiz de Fora, MG. 2005.
Kirner, C. e Kirner, T. G. (2007) “Virtual Reality and Augmented Reality Applied to Simulation Visualization”. In: El Sheikh, A.A.R.; Al Ajeeli, A.; Abu-Taieh, E.M.O.. (Org.). Simulation and Modeling: Current Technologies and Applications. 1 ed. Hershey-NY: IGI Publishing, 2007, v. 1, p. 391-419.
Lamounier, E., Arthur Bucioli, Alexandre Cardoso, Adriano Andrade, and Alcimar Soares. (2010) “On the
use of augmented reality techniques in learning and interpretation of cardiologic data.” In Engineering in Medicine and Biology Society (EMBC), 2010 Annual International Conference of the IEEE, pp. 610-613. IEEE, 2010.
Lapeer, R. J.; Rowland, R.S.; Min Si Chen, (2004) “PC-based volume rendering for medical visualisation
and augmented reality based surgical navigation,” Information Visualisation, 2004. IV 2004. Proceedings.
Eighth International Conference on, vol., no., pp. 67, 72, 14-16 July 2004.
Lee, C., Seunghoon Han, Sehui Kim, Mansik Jeon, Jeehyun Kim, e Chulhong Kim. (2014) “Intraoperative surgical photoacoustic microscopy (IS-PAM) using augmented reality.” In SPIE BiOS, pp. 89431Z-89431Z. International Society for Optics and Photonics, 2014.
Lin, j.-K.; Po-Hsun Cheng; Yen Su; Shao-Yu Wang; Hsiang-Wen Lin; Hsiao-Chi Hou; Wen-Cheng Chiang; SsuWei Wu; Jer-Junn Luh; Mei-Ju Su, (2011) “Augmented reality serious game framework for rehabilitation with
personal health records,” e-Health Networking Applications and Services (Healthcom), 2011 13th IEEE International Conference on, vol., no., pp. 197, 200, 13-15 June 2011.
Linte, Cristian A., James White, Roy Eagleson, Gerard M. Guiraudon, and Terry M. Peters. (2010) “Virtual and
augmented medical imaging environments: Enabling technology for minimally invasive cardiac interventional
guidance.” Biomedical Engineering, IEEE Reviews in 3 (2010): 25-47.
58
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Liu, W. P., Azizian, M., Sorger, J., Taylor,R. H., Reilly, B. K., Cleary, K., e Preciado, D. (2014)
“Cadaveric Feasibility Study of da Vinci Si–Assisted Cochlear Implant With Augmented Visual Navigation for
Otologic Surgery.” JAMA Otolaryngology–Head & Neck Surgery (2014).
Luo, X., Tiffany Kline, Heidi C. Fischer, Kathy A. Stubblefield, Robert V. Kenyon, and Derek G. Kamper. (2005)
“Integration of augmented reality and assistive devices for post-stroke hand opening rehabilitation.” In Engineering in Medicine and Biology Society, 2005. IEEE-EMBS 2005. 27th Annual International Conference of the,
pp. 6855-6858. IEEE, 2005.
Mithun, P., and N. R. Raajan. (2013) “Neural Network Based Augmented Reality for Detection of Brain Tumor.” International Journal of Engineering & Technology (0975-4024) 5, no. 2.
Munguía, A., Santana, P. C., Calderón, P., e González, F. (2010). A wearable augmented reality system to improve the quality of life of sedentary people. In Proceedings of the 3rd Mexican Workshop on Human
Computer Interaction(MexIHC ‘10), Eduardo H. Calvillo Gámez and Victor M. González y González (Eds.).
Universidad Politécnica de San Luis Potosí, San Luis Potosí, S.L.P. México, México, 11-14.
Navab, N., Blum, T., Wang, L., Okur, A. e Wendler, T., (2012) “First Deployments of Augmented Reality
in Operating Rooms,” Computer, vol. 45, no. 7, pp. 48-55, July.
Navab, N.; Traub, J.; Sielhorst, T.; Feuerstein, M.; Bichlmeier, C., (2007) “Action- and WorkflowDriven Augmented Reality for Computer-Aided Medical Procedures,” Computer Graphics and Applications,
IEEE, vol.27, no.5, pp.10,14, Sept.-Oct. 2007.
Nguyen, Thinh T., Hoeryong Jung, and Doo Yong Lee. “Markerless tracking for augmented reality for imageguided Endoscopic Retrograde Cholangiopancreatography. (2013) “ In Engineering in Medicine and Biology
Society (EMBC), 2013 35th Annual International Conference of the IEEE, pp. 7364-7367. IEEE, 2013.
Nilsson, S., and Björn Johansson. (2007) “Fun and usable: augmented reality instructions in a hospital setting.” In Proceedings of the 19th Australasian conference on Computer-Human Interaction: Entertaining User
Interfaces, pp. 123-130. ACM, 2007.
Nunes, F. L. S., Machado, L. S., Costa e R. M. E. M. (2009) “Realidade Virtual e Realidade Aumentada
aplicadas à Saúde”. In: Costa, R.M.; Ribeiro, M. W.S.. (Org.). Aplicações de Realidade Virtual e Aumentada. 1ed.
Porto Alegre (RS): Sociedade Brasileira de Computação, v. 1, p. 69-89.
Nunes, F. L. S.; Costa, R.; Machado, L.; Moraes, R. (2011) Realidade Virtual para Saúde no Brasil: conceitos, desafios e oportunidades. Revista Brasileira de Engenharia Biomédica 27(4): 243-258.
O’Neill, Kieran, and Annraoi de Paor. (2011) “The Potency of Optical and Augmented Reality Mirror Boxes in
Amputees and People with Intact Limbs.” Advances in Electrical and Electronic Engineering 5, no. 1-2 (2011):
310-315.
59
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Palma, S. R., Becker, B. C., Lobes, L. A., and Riviere, C. N. (2012). Comparative evaluation of monocular
augmented-reality display for surgical microscopes. In Engineering in Medicine and Biology Society (EMBC),
2012 Annual International Conference of the IEEE (pp. 1409-1412). IEEE.
Park, A.; Sutton, E.; Shekhar, R., (2010) “Computed tomography guided laparoscopy: Proof of concept,””
Control Automation Robotics &Vision (ICARCV), 2010 11th International Conference on, vol., no., pp. 213, 215,
7-10 Dec. 2010.
Peters, T.M.; Linte, C.A.; Wiles, A.D.; Hill, N.; Moore, J.; Wedlake, C.; Jones, D.; Bainbridge,
D.; Guiraudon, G., (2007) “Development of an augmented reality approach for closed intracardiac interventions,” Biomedical Imaging: From Nano to Macro, 2007. ISBI 2007. 4th IEEE International Symposium on, vol.,
no., pp.1004,1007, 12-15 April 2007.
Pioggia, G.; Carbonaro, N.; Anania, G.; Tognetti, A.; Tartarisco, G.; Ferro, M.; De Rossi,
D.; Gaggioli, A.; Riva, G., (2010) “Interreality: The use of advanced technologies in the assessment and
treatment of psychological stress,”Intelligent Systems Design and Applications (ISDA), 2010 10th International
Conference on, vol., no., pp.1047,1051, Nov. 29 2010-Dec. 1 2010.
Placitelli, A.P.; Gallo, L., (2011) “3D point cloud sensors for low-cost medical in-situ visualization,” Bioinformatics and Biomedicine Workshops (BIBMW), 2011 IEEE International Conference on, vol., no., pp.596,597,
12-15 Nov. 2011.
Qiao, C., Yongtian Wang, Dongdong Weng, and Hongyu Qi. (2011). An augmented reality based teeth shade
matching system. In Proceedings of the 10th International Conference on Virtual Reality Continuum and Its
Applications in Industry (VRCAI ‘11). ACM, New York, NY, USA, 371-374.
Quintana, E., e Favela, J. (2013) “Augmented reality annotations to assist persons with Alzheimers and
their caregivers.” Personal and ubiquitous computing 17, no. 6 (2013): 1105-1116.
Regenbrecht, H. T. and Hoermann, S. (2012). TheraMem: physical rehabilitation with augmented reflection technology. In Proceedings of the 13th International Conference of the NZ Chapter of the ACM’s Special
Interest Group on Human-Computer Interaction (CHINZ ‘12). ACM, New York, NY, USA, 89-89.
Reitinger, B, Pascal Werlberger, Alexander Bornik, Reinhard Beichel, and Dieter Schmalstieg. (2005). Spatial Measurements for Medical Augmented Reality. In Proceedings of the 4th IEEE/ACM International Symposium on Mixed and Augmented Reality(ISMAR ‘05). IEEE Computer Society, Washington, DC, USA, 208-209.
Rolland, J. P., Wright, D. L., e Kancherla, A. R. (1997) “Towards a novel augmented-reality tool to
visualize dynamic 3-D anatomy”. Stud Health Technol Inform. 1997; 39:337-48.
Samosky, J. T., Nelson, D. A., Wang, B., Bregman, R., Hosmer, A., Mikulis, B., e Weaver, R.
(2012) “BodyExplorerAR: enhancing a mannequin medical simulator with sensing and projective augmented
reality for exploring dynamic anatomy and physiology.” In Proceedings of the Sixth International Conference
on Tangible, Embedded and Embodied Interaction, pp. 263-270. ACM, 2012.
60
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Scharver, Chris, Ray Evenhouse, Andrew Johnson, and Jason Leigh. (2004) “Designing cranial implants in a
haptic augmented reality environment.” Communications of the ACM 47, no. 8 (2004): 32-38.
Seokhee J.; Knoerlein, B.; Harders, M.; Gabjong Han; Seungmoon Choi, (2010) “Breast cancer palpation system using haptic augmented reality,” Mixed and Augmented Reality (ISMAR), 2010 9th IEEE International Symposium on, vol., no., pp. 308, 308, 13-16 Oct. 2010.
Shamir, Reuben R., Martin Horn, Tobias Blum, Jan-Hinnerk Mehrkens, Yigal Shoshan, Leo Joskowicz, and
Nassir Navab. (2011) “Trajectory planning with Augmented Reality for improved risk assessment in image-guided keyhole neurosurgery.” In Biomedical Imaging: From Nano to Macro, 2011 IEEE International Symposium
on, pp. 1873-1876. IEEE, 2011.
Shelton, Damion, Bing Wu, Roberta Klatzky, and George Stetten. (2007) “Design and calibration of a virtual
tomographic reflection system.” In Biomedical Imaging: From Nano to Macro, 2007. ISBI 2007. 4th IEEE International Symposium on, pp. 956-959. IEEE, 2007.
Shen, Y., S. K. Ong, and A. Y. C. Nee. (2008) “An augmented reality system for hand movement rehabilitation.”
In Proceedings of the 2nd International Convention on Rehabilitation Engineering & Assistive Technology, pp.
189-192. Singapore Therapeutic, Assistive & Rehabilitative Technologies (START) Centre, 2008.
Sheng-Jhe Hsu, Wen-Sheng Tseng, Fu-Chieh Hsu, and Yung-Ying Lo. (2013). iSpine: a motion-sensing edutainment system for improving children’s spinal health. In CHI ‘13 Extended Abstracts on Human Factors in
Computing Systems (CHI EA ‘13). ACM, New York, NY, USA, 2635-2638.
Sielhorst, T., Feuerstein, M. e Navab, N. (2008) “Advanced Medical Displays: A Literature Review of
Augmented Reality”. J. Display Technology. vol 4, no 4., pp. 451-467.
Solanki, M.; Raja, V., (2010) “Haptic based augmented reality simulator for training clinical breast examination,” Biomedical Engineering and Sciences (IECBES), 2010 IEEE EMBS Conference on, vol., no., pp.265,269,
Nov. 30 2010-Dec. 2 2010.
Soler, L., Nicolau, A., Schmid, J., Koehl, C., Marescaux, J., Pennec, X. e Ayache, N. (2004).
Virtual Reality and Augmented Reality in Digestive Surgery. In Proceedings of the 3rd IEEE/ACM International
Symposium on Mixed and Augmented Reality(ISMAR ‘04). IEEE Computer Society, Washington, DC, USA.
Sonntag, D.; Toyama, T., (2013) “On-Body IE: A Head-Mounted Multimodal Augmented Reality System
for Learning and Recalling Faces,” Intelligent Environments (IE), 2013 9th International Conference on, vol.,
no., pp.151,156, 16-17 July 2013.
Sutherland, C.; Hashtrudi-Zaad, K.; Sellens, R.; Abolmaesumi, P.; Mousavi, P., (2013) “An
Augmented Reality Haptic Training Simulator for Spinal Needle Procedures,” Biomedical Engineering, IEEE
Transactions on, vol.60, no.11, pp. 3009, 3018, Nov. 2013.
61
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 49-62, maio/2014.
Zorzal, Ezequiel Roberto; Nunes, Fátima de Lourdes dos Santos. Realidade Aumentada e suas Aplicações na Área de Saúde.
Sutherland, C.; Hashtrudi-Zaad, K.; Sellens, R.; Abolmaesumi, P.; Mousavi, P., (2013) “An
Augmented Reality Haptic Training Simulator for Spinal Needle Procedures,” Biomedical Engineering, IEEE
Transactions on, vol.60, no.11, pp. 3009, 3018, Nov. 2013.
Thoranaghatte, Ramesh U., Jaime Garcia Giraldez, and Guoyan Zheng. (2008) “Landmark based augmented reality endoscope system for sinus and skull-base surgeries.” In Engineering in Medicine and Biology
Society, 2008. EMBS 2008. 30th Annual International Conference of the IEEE, pp. 74-77. IEEE, 2008.
Tivatansakul, S.; Ohkura, M., (2013) “Healthcare system design focusing on emotional aspects using
augmented reality — Relaxed service design,” Computational Intelligence in Healthcare and e-health (CICARE), 2013 IEEE Symposium on, vol., no., pp. 88, 93, 16-19 April 2013
Vandermaesen, M., De Weyer, T., Luyten, K., e Coninx, K. (2014). “PhysiCube: providing tangible interaction in a pervasive upper-limb rehabilitation system.”. In Proceedings of the 8th International Conference
on Tangible, Embedded and Embodied Interaction (TEI ‘14). ACM, New York, NY, USA, 85-92.
Vidal, F. P., Fernando Bello, Ken W. Brodlie, Nigel W. John, Derek Gould, R. Phillips, and N. J. Avis. (2006)
“Principles and applications of computer graphics in medicine.” In Computer Graphics Forum, vol. 25, no. 1,
pp. 113-137. Blackwell Publishing Ltd., 2006.
Wen, R., Nguyen, B. P., Chng, C.-B., e Chui, C-K. (2013) “In situ spatial AR surgical planning using projector-Kinect system.” In Proceedings of the Fourth Symposium on Information and Communication Technology,
pp. 164-171. ACM, 2013.
Wen, Rong, Liangjing Yang, Chee-Kong Chui, Kah-Bin Lim, and Stephen Chang. (2010) “Intraoperative visual
guidance and control interface for augmented reality robotic surgery.” In Control and Automation (ICCA), 2010
8th IEEE International Conference on, pp. 947-952. IEEE, 2010.
Wilson, K. L., Doswell, J. T., Fashola, O. S., Debeatham, W., Darko, N., Walker, T. M., Danner, O. K.,
Matthews, L. R., e Weaver, W. L. (2013) “Using Augmented Reality as a Clinical Support Tool to Assist Combat
Medics in the Treatment of Tension Pneumothoraces.” Military medicine 178, no. 9: 981-985.
Wrzesien, M., Burkhardt, J.-M., Raya, M. A., and Botella, C.. (2011). Mixing psychology and HCI in
evaluation of augmented reality mental health technology. In CHI ‘11 Extended Abstracts on Human Factors in
Computing Systems (CHI EA ‘11). ACM, New York, NY, USA, 2119-2124.
Wu, J.-R., Wang, M.-L., Liu, K-C., Hu, M.-H., e Lee, P.-Y. (2014). “Real-time Advanced Spinal Surgery via
Visible Patient Model and Augmented Reality System.” Computer methods and programs in biomedicine.
62
63
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 63-68, maio/2014.
Cardoso, Alexandre. Interfaces de Controle em Sistemas de Realidade Virtual.
Interfaces de Controle em Sistemas
de Realidade Virtual
Alexandre Cardoso
Edgard Lamounier Júnior
Alexandre Carvalho Silva
Gesmar de Paula Santos Júnior
Abstract
One fundamental aspect in Virtual Reality based environments is immersion. This feature is responsible for providing the user with the feeling of presence within the environment. Using 2D components
to develop control interface in 3D virtual environment is common procedure. However, due to a strong
conflict between 2D and 3D paradigms, reduction of the immersion feeling can occur. Thus, the objective
of this chapter is to demonstrate the main ways of representing and interacting with control interfaces
that preserves the feeling of immersion when 2D information must be evaluated during 3D interaction.
Resumo
Um dos aspectos fundamentais em ambientes baseado em técnicas de Realidade Virtual é a imersão.
Esta é uma característica responsável por produzir ao usuário a sensação ou sentimento de presença
no ambiente virtual. A utilização de componentes 2D para o desenvolvimento de interfaces de controle
em ambientes virtuais 3D é uma estratégia comum, mas devido ao forte confronto entre os paradigmas
bidimensional e tridimensional a mesma pode provocar redução da sensação de imersão ao usuário.
Baseado neste contexto, o objetivo deste trabalho é demonstrar as principais formas de representar e interagir com interfaces de controle, enfatizando o estado da arte sobre as principais técnicas responsáveis
por preservar a sensação de imersão durante a utilização destes recursos.
1.1 Introdução
Um dos diferencias de sistemas de Realidade Virtual refere-se à sensação de presença que tais
sistemas propiciam, o sentimento diferenciado de “estar lá” (Riva e Mantovani, 2012). Tal sensação é
o produto da experiência intuitiva aliado ao julgamento meta-cognitivo, relativo às sensações experimentadas pelos usuários. O conceito de presença está diretamente relacionado à condição de transformar, intuitivamente, intenções em ações, seja em ambientes reais, seja em ambientes virtuais.
63
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 63-68, maio/2014.
Cardoso, Alexandre. Interfaces de Controle em Sistemas de Realidade Virtual.
Neste contexto e, considerando a necessidade de suportar controle e operação de sistemas, com
uso de ambientes virtuais, destacam-se, os seguintes aspectos:
• Classificação das Interfaces de Controle;
• Integração das widgets (objetos de interface) com ambientes virtuais;
• Visualização dinâmica da informação, sem perda da sensação de imersão;
• Projeto direcionado à necessidades dos usuários;
• Métricas de Avaliação de Interface.
1.2 Classificação das Interfaces de Controle
A Realidade Virtual (RV) pode ser utilizada para a visualização de eventos, propriedades e comportamentos presentes em uma simulação. Ao mesmo tempo, uma simulação pode integrar a tecnologia da RV para demonstrar comportamentos específicos. Geralmente, um sistema de RV procura
reproduzir características presentes no mundo real. Essas mesmas características devem ser obtidas
através de simulações que podem ser realizadas por meio de SRV, definindo-se ações sobre objetos
específicos ou sobre todo a ambiente. A física, o movimento e a colisão entre objetos exemplificam a
simulação de comportamentos apresentadas em um ambiente virtual (Kirner & Siscoutto, 2008).
O uso da RV para o monitoramento de dados e comportamentos presentes em uma simulação
é possível e muito útil. Nesse caso, a RV é utilizada como um módulo da simulação possibilitando
análises visuais. Este módulo pode ser complexo e apresentar funções voltadas para uma visualização
realística e interativa de uma simulação. Para que isso aconteça, os objetos 3D devem ser modelados
em uma ferramenta de autoria e, posteriormente, ser integrado ao simulador. Ainda é necessária uma
interface especial que possibilita visualizações interativas, além da possibilidade de alteração de parâmetros que definem aspectos da simulação (Bellinger, 2004).
1.3 Integração do conteúdo 2D com 3D
Novas tendências no campo da Interação Homem-Computador (IHC) começaram a surgir com
a ascensão dos SRV, como Realidade Aumentada (R.A.), Interação Natural (I.N) e sistemas dotados de
grandes telas para exibição de aplicações tridimensionais. Nesse campo de desenvolvimento, a interação acontece em um contexto espacial com diferentes graus de liberdade. Com o tempo, pesquisadores
e desenvolvedores perceberam diferenças fundamentais entre as interfaces presentes em ambientes
tridimensionais e em computadores convencionais. Com isso, uma área de pesquisa separada passou
a ser necessária para estudar as técnicas de interação que as novas aplicações tridimensionais exigem
(Bowman et al. 2011).
Em uma interação 3D, as atividades de um usuário representam uma atuação sobre o ambiente em
um contexto tridimensional. Mas, isto não quer dizer que sistemas tridimensionais interativos exijam
interações 3D. Por exemplo, se um usuário explora o modelo em seu computador desktop escolhendo
pontos de vista dispostos em um menu tradicional, não ocorreu interações tridimensionais, não exigindo o uso de dispositivos 3D especiais de interação (Bowman et al. 2011).
64
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 63-68, maio/2014.
Cardoso, Alexandre. Interfaces de Controle em Sistemas de Realidade Virtual.
Técnicas de interação são métodos utilizados pelos usuários para completar alguma tarefa através de uma interface, sendo que suas vantagens e desvantagens dependem diretamente dos requisitos
particulares de um sistema. Dessa forma, padrões não são adotados e hardware e software devem ser
levados em consideração. Para que interações homem-máquina sejam naturais e intuitivas, metáforas
são utilizadas. Metáforas podem ser entendidas como modelos mentais que permitem ao usuário a
aplicação de conhecimentos cotidianos em um ambiente virtual (Schlattmann & Klein, 2007).
A seguir são apresentados os principais aspectos no processo de Interação 3D.
1.4 Técnicas de visualização da informação
1.4.1 Conceitos
A grande quantidade de informações torna o processo de busca, análise e compreensão dos dados
uma tarefa árdua, tanto para a máquina quanto para o homem. Pode-se considerar então que uma
tomada de decisão baseada em um grande volume de dados é uma tarefa difícil de realizar, mesmo esta
sendo uma tarefa realizada de forma muito mais rápida pela máquina do que pelo homem. Em todo
caso, ruídos (dados irrelevantes), vão estar dispostos nos bancos de informações e, ao mesmo tempo,
informações importantes poderão ser ignoradas devido ao grande volume de dados. Diante deste cenário, inovações surgiram para melhorar as formas de representar a informação (Zorzal, 2007).
A Visualização da Informação é um campo de estudo muito útil que auxilia no entendimento de
algum assunto através de representações visuais. A utilização do espaço tridimensional pode despertar o interesse em diversos tipos de usuário, não somente pela forma de representação dos dados, mas
também pelas novas propostas de interação. A Realidade Virtual e Aumentada apresentam formas de
visualização tridimensional facilitando a análise e compreensão dos dados que, por sua vez, podem
estar dispostos de forma intuitiva e interativa (Zorzal, 2007).
1.4.2 Técnicas de Visualização
Segundo Keim (2002) e Zorzal (2007), existem técnicas de visualização que possibilitam combinações para o surgimento de técnica híbridas como:
• Exibição 2D ou 3D: compreendem técnicas simples de apresentação como gráficos,
por exemplo;
• Exibição baseada em pixels: dados multidimensionais são utilizados e, através dos pixels do
dispositivo de exibição, cores são usadas para representar valores.
• Exibição Hierárquica: ocorre uma divisão dos dados para a criação de uma estrutura hierárquica. A técnica Dimensional Stacking exemplifica esta técnica de visualização.
1.5 Design Centrado no Usuário
Toda interface deve ser bem projetada a fim de obter melhor aproveitamento do software
e do uso do hardware disponível. Para o desenvolvimento destas interfaces, existem diversos
65
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 63-68, maio/2014.
Cardoso, Alexandre. Interfaces de Controle em Sistemas de Realidade Virtual.
padrões de design de interfaces que se encaixam com a plataforma e domínio da aplicação (Microsoft, 2013)
Um dos padrões e estilos de interação utilizados em SRV é o WIMP (Windows, Icons, Menus e
Pointers). Esse padrão é baseado no uso de janelas e widgets, que são sub-interfaces do mesmo sistema
direcionadas a uma ação específica. Por se tratar de um padrão antigo e muito utilizado em computadores pessoais o usuário comum assimila rapidamente suas funções. Assim, este padrão utiliza o conhecimento prévio e nível de experiência do usuário para manipular e interagir com maior facilidade
(Bowman et al., 2011).
O Design Centrado no Usuário (DCU) surgiu da Interface Humano Computador (IHC) e consiste
em uma metodologia de desing de software para desenvolvedores e designers. Essencialmente, esta
voltada a criar interfaces de sistemas que atendam às necessidades de seus usuários, garantindo boa
usabilidade. (Lowdermilk, 2013).
Ainda de acordo com Lowdermilk (2013), o DCU pode ser implementado para garantir que a
interface elaborada proporcione uma ótima experiência ao usuário, pois seu desenvolvimento fundamenta-se em colocar os usuários no centro do processo de desenvolvimento, eliminando ambiguidades
e enfatizando suas necessidades. Além do mais, há a questão da experiência por parte do usuário ao
design interfaces com estilos já conhecidos, englobando as funcionalidades, modelos mentais e quanto
elas são cativantes e agradáveis de ser utilizadas. Por fim, os processos de DCU não estão focados somente em estética ou em fazer com que tudo pareça mais bonito, embora possa ser importante em um
aplicativo, a estética não representa todo o cenário.
1.6 Métricas de Avaliação de Interface
Durante todo período de desenvolvimento e aplicação de um software deve-se ter o envolvimento
por parte dos potenciais usuários. Para análise de uma determinada estratégia, devem ser aplicados
diversos métodos como: reuniões, entrevistas, apresentação do software aos usuários, momentos de
observação durante a utilização da estratégia, aplicação de questionários de avaliação e formulários
para aplicação de tarefas para análise de desempenho.
Uma ferramenta para desenvolvimento de questionários de avaliação de interfaces é o QUIS
(Questionnaire for User Interaction Satisfaction). O QUIS foi projetado para avaliar a satisfação subjetiva dos usuários com aspectos específicos da interface homem-computador (QUIS, 2014).
Lowdermilk (2013) relata que os usuários podem dizer muito bem sobre o que está funcionando
e o que não está. No entanto uma maneira eficiente de perceber as necessidades dos usuários é observando-os diretamente. A seguir, apresentam-se os critérios analisados juntamente com os relatos dos
métodos de análise.
1.6.1 Reação à Utilização do Sistema
Critério que analisa a satisfação do usuário em relação à proposta do protótipo. Pode-se notar e
concluir os seguintes aspectos por parte dos usuários:
66
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 63-68, maio/2014.
Cardoso, Alexandre. Interfaces de Controle em Sistemas de Realidade Virtual.
•
•
•
Grau de interesse pela aplicação;
Qualidade da visualização utilizando técnicas de RV;
Dificuldade de utilização do sistema (navegar pelo ambiente, considerando todas as possíveis
formas de navegação).
1.6.2 Interface de Controle – Widgets 2D
Critério que analisa menu, sub menu, interface alternativa, janelas de controle e de apresentação
de dados. Pode-se observar e concluir os seguintes aspectos por parte dos usuários:
• Facilidade ou dificuldade de utilização e aprendizagem;
• Nível de eficiência para efetuar comandos de interação;
• Aparência e estética da aplicação;
• Sensação de integração ao ambiente 3D.
1.6.3 Camadas de Conteúdo
Critério que analisa a utilização, eficiência, visualização das Camadas de Conteúdo. Pode-se observar e concluir os seguintes aspectos por parte dos usuários:
• Apresentou fácil utilização e eficiência para o manuseio;
• Recurso adequado para atividades de monitoramento;
• Transmitiu boa sensação de integração ao ambiente virtual;
• Relatou-se necessidade da criação de recursos que permita ao usuário criar suas próprias
camadas de acordo com sua necessidade.
1.6.4 Capacidades e Aprendizagem da Interface
Critério que analisa a forma de apresentação da interface (velocidade das animações e transições,
layout), tempo de resposta e atualização. Pode-se observar e concluir os seguintes aspectos por parte
dos usuários:
• Velocidade de transição e animação;
• Layout e dimensões dos componentes;
• Facilidades de realizar tarefas (ações de interação);
• Tempo de aprendizagem;
• Velocidade de exibição dos conteúdos.
1.6.5 Capacidades e Aprendizagem da Interface
Critério que analisa a sensação de presença do usuário, considerando a integração das interfaces
de controle no ambiente virtual e o confronto o paradigmas (2D e 3D). Pode-se observar e concluir os
seguintes aspectos por parte dos usuários:
67
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 63-68, maio/2014.
Cardoso, Alexandre. Interfaces de Controle em Sistemas de Realidade Virtual.
•
•
•
Empatia, interesse e envolvimento com as atividades realizadas;
Sensação de realismo durante a execução de comandos;
Homogeneidade entre os componentes de controle 2D e o ambiente 3D.
1.6.6 Visualização Estereoscópica
Critério que analisa de forma geral a apresentação das interfaces de controle durante o uso dos
óculos 3D ativo. Pode-se observar e concluir os seguintes aspectos por parte dos usuários:
• Conforto na utilização de óculos de RV;
• Visualização dos efeitos de profundidade e paralaxe.
Referências
Bellinger, G. Modeling & simulation: An introduction. Disponível em: <http://www.systems-thinking.org/
modsim/modsim.html>. Acesso em 16/02/2014.
Bowman, D.; Kruijff, E.; LaViola, J.; Poupyrev, I. 3D User Interfaces – Theory and Practice, Addision
Wesley; 2011.
Keim, D. “Information Visualization and Visual Data Mining.” IEEE Transactions on Visualization and Computer Graphics, vol. 7, n. 1, jan-mar, 2002.
Kirner, C.; Sicoutto, R. Realidade Virtual e Aumentada: Conceitos, Projeto e Aplicações. Rio de Janeiro:
IX Symposium on Virtual and Augmented Reality, 2008. 292 p.
Lowdermilk, T. Design Centrado no Usuário, O’Reilly Novatec; 2013.
Microsoft. Windows User Experience Interaction Guidelines. Microsoft Download Center, 2012. Disponivel em:
<http://www.microsoft.com/en-us/download/confirmation.aspx?id=2695>. Acesso em: 19 de Novembro de 2013.
Quis. Questionnaire for User Interaction Satisfaction, 2014. Disponível em: <http://www.lap.umd.edu/quis>.
Acesso em: 07 de Janeiro de 2014.
Riva, Giuseppe e Mantovani, Fabrizia - Being There: Understanding the Feeling of Presence in a Synthetic
Environment and Its Potential for Clinical Change in “Virtual Reality in Psychological, Medical and Pedagogical Applications”, book edited by Christiane Eichenberg, Intech, September, 2012.
Schlattmann, M. e Klein, R. Simultaneous 4 gestures 6 DOF real-time two-hand tracking without any markers.
In: ACM Symposium on Virtual Reality Software and Technology (VRST ‘07). Newport Beach, California, pp. 39-42.
Zorzal, E. Estratégia para o desenvolvimento de aplicações Adaptativas de Visualização da Informação com
Realidade Aumentada; Tese (Doutorado em Ciências) – Faculdade de Engenharia Elétrica – UFU, Uberlândia, 2007.
68
69
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
Projeção Holográfica em Ambientes
de Realidade Virtual
Manoela Rogofski Brum
Rafael Rieder
Abstract
Holography is a photographic technique which enables three-dimensional images to be made from the coding of visual information that can be fully redesigned. There are different types of holograms, including
the real image holograms that enable to create or display moving images in three dimensions, depending
on the technology and materials used. The aim of this paper is to present the relationship between holography and virtual reality environments, showing the types of holograms, the commercial solutions, its
future applications and optimizations in order to improve visual quality and interaction, and a simple
example of their use.
Resumo
A Holografia é uma técnica fotográfica que permite que imagens tridimensionais sejam criadas a partir
da codificação de uma informação visual de modo que possa ser recriada integralmente. Existem diversos tipos de hologramas, entre os quais se destaca o holograma de imagem real, em que é possível gerar
ou apresentar imagens em movimento em três dimensões, dependendo da tecnologia e dos materiais
utilizados. O objetivo deste trabalho é apresentar a relação da holografia com os ambientes de Realidade Virtual, mostrando os tipos de hologramas, as soluções que existem no mercado, suas possíveis
aplicações e otimizações de projeto para melhor qualidade visual e maior interação, e um exemplo
simples de sua utilização.
1.1 Introdução
De acordo com Gimenez e Kirner (1997), a Realidade Virtual (RV) é uma técnica avançada de
interface do usuário que permite realizar imersão, interação e navegação em um ambiente sintético tri69
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
dimensional (3D), gerado por computador, utilizando canais multissensoriais. Geralmente a RV é classificada de acordo com os níveis de interação, imersão e navegação que proporciona (Hancock, 1995).
Realidade Aumentada (RA) é uma área da RV que utiliza uma tecnologia específica para aumentar o desempenho humano na realização de tarefas. A RA permite combinar imagens geradas no mundo virtual com imagens do mundo real por meio de câmeras ou capacetes parcialmente transparentes
provido de sensores. O objetivo é suplementar um cenário real com informações geradas pelo computador. Segundo Bajura (1995) os sistemas de RA devem registrar as imagens com precisão de forma a
levar o usuário a crer que os mundos real e virtual ocupam o mesmo espaço.
A holografia pode ser considerada uma forma de RA, pois também trata da projeção de objetos
virtuais em um ambiente real. Na RA é necessário um meio de visualização do objeto projetado. Na
holografia projetada, a projeção de imagens virtuais realmente acontece no mundo real e estas imagens
podem ser visualizadas sem o uso de dispositivos que permitam isso. Por isso, Rodrigues Filho (2008)
destaca que ela não pode ser confundida com uma simples forma de visualização em três dimensões,
pois contempla um processo de codificação de uma informação que posteriormente é recriada na íntegra.
A holografia pode enriquecer e facilitar a prática de atividades do cotidiano e auxiliar em várias
áreas do mercado, como a área acadêmica, a comercial, de comunicações e da medicina. Um exemplo
prático desse uso é a ”Mesa tática”, uma tela de projeções holográfica utilizada por um programa esportivo para ajudar na análise de lances das partidas e de esquemas táticos de cada time.
Para tanto, o objetivo deste trabalho é explicar, basicamente, o que é um holograma, sua origem
e variedades, e estudar como essa tecnologia pode ser integrada com os recursos da RV, de modo a
gerar novas aplicações que possam auxiliar as mais diversas atividades humanas. A Seção 5.2 trata
da concepção dos hologramas e traz uma explicação especifica sobre eles; a Seção 5.3 explica a diferença entre os tipos de hologramas, como são gerados e a sua aplicabilidade; a Seção 5.4 descreve os
dispositivos que podem ser utilizados para a interação com um ambiente virtual; a Seção 5.5 mostra
pesquisas na área da projeção holográfica computacional e quais as variadas formas de aplicação
desta tecnologia; um simples exemplo prático é apresentado na Seção 5.6; e a Seção 5.7 traz as considerações finais do trabalho.
1.2 Origem e Histórico dos Hologramas
Holografia significa gravação ou registro do todo. De acordo com Daibert (1998), ela foi concebida em 1948 pelo húngaro Denis Gabor, mas somente aplicada pela primeira vez nos anos 1960 com a
utilização do laser. Na época em que Gabor idealizou a técnica não havia a tecnologia necessária para
reproduzi-la integralmente. Para tanto, ele realizou um holograma simples a partir do uso de uma luz
filtrada de uma lâmpada com arco de mercúrio – o que lhe rendeu o prêmio Nobel.
A holografia é utilizada pela Física como uma sofisticada técnica fotográfica, de análise de materiais ou de armazenamento de dados. Em suma, ela é uma técnica de reprodução de uma imagem assim
como a fotografia ou o cinema. O que a difere e a particulariza é a sua característica de reproduzir o
todo em cada uma de suas partes. Olhando para apenas um trecho da imagem, o observador pode
enxergar a imagem por inteiro, assim como se estivesse olhando apenas por uma parte de uma janela
visualizaria a paisagem por inteiro (Figura 1).
70
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
Figura 1. Divisibilidade dos hologramas [How Stuffworks, 2007]
1.3 Tipos de Hologramas e Aplicações
Pode-se dizer que o campo de aplicação da holografia é vasto. Nas Artes, por exemplo, Hariharan
(2002) afirma que em 1968 ocorreu a primeira exposição de arte holográfica realizada na Cranbrook
Academy of Art, em Michigan. O autor também cita que Salvador Dalí foi o primeiro artista surrealista
a empregar a holografia artisticamente.
Outra área que especula a aplicabilidade da holografia é a que trata da gravação e armazenamento
de dados. Pela efetividade do processo de gravação e reconstrução que a holografia permite, existem
estudos e pesquisas que procuram utilizar as técnicas holográficas para o armazenamento de dados.
De acordo com Pégard (2011), o armazenamento holográfico regravável pode ser alcançado por meio
do efeito foto refrativo em cristais.
Rodrigues Filho (2008) destaca que hologramas também são utilizados na área da segurança em
CDs e DVDs originais, documentos, cartões de crédito e moedas de vários países devido à sua dificuldade de falsificação. Neste mesmo trabalho, o autor classifica hologramas em seis diferentes formas.
Hologramas de transmissão utilizam um, dois ou mais feixes de laser que atingem o filme pelo
mesmo lado. A imagem só pode ser vista através do laser, e é considerada bastante fiel à imagem real. A
Figura 2 e a Figura 3 apresentam, respectivamente, hologramas utilizando esta técnica.
71
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
Figura 2. Hologramas de transmissão com feixe simples [Rodrigues Filho, 2008].
Figura 3. Hologramas de transmissão com feixe duplo [Rodrigues Filho, 2008].
Já hologramas de reflexão trabalham com raios laser que atingem o filme por lados opostos. Esse
tipo de holograma pode ser visualizado com o auxílio de qualquer luz concentrada, como a luz do sol
ou a luz de uma lanterna. A Figura 3 e a Figura 4 apresentam, respectivamente, hologramas de reflexão
com um e dois feixes de luz.
Nos hologramas multiplex, a luz evidencia imagens diferentes de acordo com seu ângulo de incidência, podendo ser registradas diversas figuras em sequência com certo grau de animação holográfica. Os hologramas Arco-íris ou de Benton pertencem a esta categoria.
Figura 4. Hologramas de reflexão com feixe simples [Rodrigues Filho, 2008].
72
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
Figura 5. Hologramas de reflexão com feixe duplo [Rodrigues Filho, 2008].
Nos hologramas de canais múltiplos, duas ou mais imagens são visíveis de diferentes ângulos. Este
tipo de holograma se bifurca conforme a quantidade de imagens que podem ser vistas.
Hologramas de imagem real são hologramas de reflexão produzidos através de hologramas de
transmissão e dão a impressão de que a imagem está em frente ao filme de forma incrivelmente realista.
Já hologramas impressos são produzidos através de registros em materiais como mylar aluminizado, e fotossenssibilizados em dicromatos e polímeros. Em geral, são utilizados comercialmente em
aplicações de segurança, embalagem e propagandas.
1.4 Interações em Ambientes Virtuais Holográficos
De acordo com Prado (2012), é possível interagir em ambientes holográficos com o uso de dispositivos para reconhecimento de gestos que empregam sensores de profundidade, entre eles Microsoft
Kinect, ASUS Xtion e Prime Senses Prime Sensor.
Cada um destes dispositivos é composto de dois componentes básicos de hardware mostrados na
Figura 6: uma câmera RGB e sensores de profundidade [Moreira, 2013]. Eles também possuem um
array de microfones, útil para reconhecimento de voz, e não determinante para detecção de corpos e
gestos [Silveira 2011]. A câmera RGB é utilizada para retorno de vídeo ao usuário, reconhecimento de
rostos e outras características. O sensor de profundidade é composto por um emissor de luz infravermelha e um sensor CMOS (Complimentary Metal-Oxide Semiconductor) que funciona como uma câmera. Este sensor CMOS capta os padrões emitidos em infravermelho para identificar a profundidade
dos objetos presentes na cena, independente de questões de iluminação [Sá 2011]. Logo, o conjunto de
sensores de profundidade é o responsável pela detecção dos elementos.
73
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
Figura 6. Componentes dos principais sensores de profundidade no mercado [Prado 2012].
Conforme Barwinski (2009), pesquisadores da Universidade de Tóquio estão utilizando este tipo
de tecnologia para desenvolver um sistema que permite a interação com um objeto projetado (Figura
7). Os sensores são capazes de captar movimentos do usuário e permitir que o objeto virtual interaja
com qualquer coisa externa a ele, ao mesmo tempo em que ondas de ultrassom dão a impressão ao
usuário de que está realmente tocando o objeto.
Figura 7. Sistema holográfico interativo [Iwamoto, 2008].
74
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
1.5 Aplicações de Mercado e o Futuro da Tecnologia Holográfica
Pode-se dizer que o futuro da tecnologia holográfica corresponde a exemplos de projeções holográficas demonstradas em produções como no filme “Iron Man 3”, embora ainda não existam equipamentos capazes de produzir hologramas virtuais e de alta qualidade como as imagens apresentadas
pela Figura 8.
Figura 8. Imagens de hologramas do filme “Iron Man 3”.
Com relação a dispositivos e interfaces, Peyghambarian et al (2010) desenvolveram um novo tipo
de holograma capaz de projetar uma imagem 3D que se movimenta, e dispensa a necessidade de óculos
especiais ou qualquer outro dispositivo (Figura 9). Várias câmeras gravam a imagem, cada uma a partir
de uma perspectiva diferente. Um conjunto de lasers é utilizado para transcrever a imagem, pixel por
pixel, em uma tela feita com material foto refratário (polímero). O holograma desaparece naturalmente
após segundos ou minutos, dependendo dos parâmetros do sistema, mas ele também pode ser apagado
assim que uma nova imagem é gravada.
75
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
Figura 9. Sistema de holografia em tempo real [Amoroso, 2010].
Tori e Miranda (2012) descrevem um sistema que permite a visualização de objetos 3D como se
estivessem nas mãos do observador, e que reagem de acordo com os movimentos do usuário (Figura
10). Neste projeto, os objetos só podem ser visualizados com o uso de óculos e monitores 3D ou capacetes de visualização 3D.
Figura 10. Imagem conceitual da interação holográfica no projeto VIDA [Tori e Miranda, 2012]
A área de aplicação dos hologramas para o mercado é extensa. Eles podem ser úteis, por exemplo,
em sala de aula, como ferramenta para um melhor entendimento dos conceitos teóricos estudados
em disciplinas como História, Biologia e Geografia. Nestes ambientes, os alunos poderiam interagir
com elementos virtuais, despertando seu interesse pelo conteúdo, e permitindo maior amplitude na
análise dos detalhes.
Freitas (2010) relata em seu artigo que esta tecnologia já foi adotada por indústrias como a Embraer para o desenvolvimento dos projetos de seus aviões, e que pode ser utilizada pelas instituições
76
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
educacionais para o aprendizado de conceitos que envolvam imagens 3D, como Medicina, Construção
Civil e Arquitetura (Figura 11). Ele cita também a possibilidade de se ter um professor holográfico,
como um recurso para os alunos tirarem dúvidas e assistir às explicações da mesma forma como fariam se estivessem com um professor presente.
Figura 11. Maquete holográfica aplicada a projetos de Arquitetura.
Na Medicina, pode-se citar o uso da holografia no projeto CAVEman, da Universidade de Calgary.
De acordo com Shu (2007), trata-se de uma projeção holográfica de um corpo humano 4D, cujos órgãos
internos e sistema circulatório coloridos são exibidos ao usuário em uma caverna virtual (Figura 12)
Figura 12. Projeto CAVEman [Shu, 2007].
77
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
Outro exemplo é o trabalho realizado por Steil (2010), que utiliza hologramas para análise de
pesquisas de censo. O autor comenta que um holograma pode substituir um mapa, pois dá informação
do todo e da posição relativa de cada parte. Ele permite reconstruir uma imagem com informação
tridimensional, facilitando o entendimento do contexto de estudo.
1.6 Um Simples Exemplo Prático
Para ilustrar o uso da holografia, este trabalho apresenta a aplicação da técnica de holograma de
imagem real com projeção em uma placa de vidro – uma vez que pode ser produzido de forma simples
e proporciona um bom resultado.
Os materiais utilizados foram: um monitor, um computador, uma placa de vidro transparente, um
pano de fundo preto e uma imagem ou animação com fundo preto.
Nesta configuração, é importante salientar que quanto maior for o contraste do monitor, mais
apropriado ele é para este tipo de aplicação. Monitores de tubo costumam ter um contraste maior. Para
apoiar o vidro, foi construída uma base de madeira com as medidas especificadas na Figura 13.
Para exibir a holografia a partir de uma aplicação 3D, posiciona-se o monitor de forma horizontal
(“deitado”), recebendo a imagem ou animação da aplicação. Em frente ao monitor, deve-se posicionar
a placa de vidro na posição vertical, com um ângulo de inclinação de 45 graus. O pano de fundo pode
ser colocado atrás do vidro (não muito perto) para melhorar a visualização dos detalhes da imagem.
Porém, o uso do pano de fundo não é estritamente necessário, pois a imagem projetada continuará
visível. A quantidade de luz pode variar, porém quanto menos luz, mais nítida a imagem vai ficar na
projeção sobre a placa de vidro.
Figura 13. Imagem ilustrativa do projeto da base para o vidro.
78
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
O resultado é o reflexo de uma imagem ou animação projetada sobre a placa de vidro. Caso esta
placa tenha uma superfície extremamente lisa e transparente, a impressão é de que a imagem está
sendo projetada ilusoriamente no espaço. No exemplo apresentado pela Figura 14, o fundo de cena da
aplicação é preto. Neste caso, como a cor preta representa a ausência de cor, o fundo não será exibido
na imagem holográfica – somente a imagem ou animação. O ângulo de 45 graus de inclinação utilizado
faz com que a imagem pareça estar na vertical ou “em pé”, proporcionando maior realismo.
1.7 Considerações Finais
Nota-se que a tecnologia holográfica ainda está longe de chegar ao seu ápice como solução de
mercado. Nos últimos tempos iniciaram as pesquisas em prol da integração dos hologramas com a
tecnologia da informação. Estes trabalhos recentes buscam desenvolver equipamentos capazes de
fazer projeções holográficas, ou seja, utilizar a tecnologia holográfica para melhorar as tecnologias
de áreas como a RV.
Os recursos precisam ser melhorados e as diversas áreas da ciência precisam ser integradas a fim
de compartilhar conhecimentos. Assim, será possível construir equipamentos que possam reproduzir
projeções holográficas e se comunicar com sistemas capazes de responder aos movimentos e aos comandos de voz do usuário em prol da interação com objetos nestes cenários.
Figura 14. Exemplo de projeção holográfica.
79
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
Referências
Amoroso, D. (2010) “Pesquisadores exibem sistema de holografia em tempo real”, http://www.tecmundo.
com.br/holografia/6277-pesquisadores-exibem-sistema-de-holografia-em-tempo-real.htm, Novembro. Acessado em Março 2014.
Bajura, M. & Neumann, U. (1995) “Dynamic registration correction in video-based augmented reality
systems”, IEEE Computer Graphics and Application, 9, Setembro.
Barwinski, L. (2009) “Holografia Tátil: conheça a tecnologia que revoluciona a interatividade”, http://www.
tecmundo.com.br/realidade-aumentada/2575-holografia-tatil-conheca-a-tecnologia-que-revoluciona-a-interatividade.htm, Agosto. Acessado em Março 2014.
Daibert, L. (1998) “Holografia Histórico”, http://www.eba.ufmg.br/hololab, Julho. Acessado em Março 2014.
Daibert, L. (1998) “Holografia Histórico”, http://www.eba.ufmg.br/hololab, Julho. Acessado em Março 2014.
Freitas, M. (2006) “Do giz-de-cera ao professor holográfico”, In: Projeto Linha Direta, Em benefício da educação, Vila Velha: Editora Hoper, 2006. p. 73-77.
Gimenez, A. M. & Kirner, T. G. (1997) “Validation of real-time systems using a virtual reality simulation
tool”, In: IEEE International Conference on Systems, Man and Cybernetics, Florida, USA.
Hancock, D. (1995) “Viewpoint: virtual reality in search of middle ground”, IEEE Spectrum, 32 (1): 68, Janeiro.
Hariharan, P., Basics of Holography, Cambridge University Press, 2002.
Iwamoto, T. et al. (2008), “Airborne Ultrasound Tactile Display”, In: SIGGRAPH 2008, New Tech Demos,
Agosto.
Jones, K & Cygnus, M. W. (1993) “Virtual reality for manufacturing simulation”, In: Proceedings of the
Winter Simulation Conference, IEEE Computer Society Press, pp. 882-887, New York.
Miranda, F. A., Tori, R. (2012) “Holoface: O Paradigma Holográfico no Design de Informação e de Interação”. In: Congresso Brasileiro de Pesquisa e Desenvolvimento em Design, São Luís, Brasil.
Moreira, J. Z., Rieder, R. (2013) “Comparação de Técnicas de Processamento de Imagens para Reconhecimento de Gestos em Ambientes Interativos”. Trabalho de Conclusão do Curso de Ciência da Computação.
Instituto de Ciências Exatas e Geociências. Universidade de Passo Fundo (UPF), Brasil.
Pégard N. C., Fleischer J. W. (2011) “Optimizing holographic data storage using a fractional Fourier transform”, Opt. Lett. 36, 2551–2553.
Peyghambarian, N. et al. (2010) “Holographic three-dimensional telepresence using large-area photorefractive polymer”. Nature 468, 80–83, Novembro.
Prado, E. X. e Bruno, O. M. (2012) Reconhecimento de Gestos em Imagens de Profundidade Utilizando
Kinect. Instituto de Física de São Carlos. Universidade de São Paulo, Brasil.
80
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 69-81, maio/2014.
Brum, Manoela Rogofski; Rieder, Rafael. Projeção Holográfica em Ambientes de Realidade Virtual.
Rodrigues Filho, F. (2008) “Protótipo de sistema para projeção holográfica de imagem real”, http://www.
diretorio.ufrj.br/aurelionogueira/lamie/projetoholografia.htm. Acessado em Março 2014.
Sá, J. G. P. (2011) “Construindo uma DSL para Reconhecimento de Gestos Utilizando Kinect” Centro de Informática. Universidade Federal de Pernambuco. Brasil.
Shu X, Turinsky AL, Sensen CW, Maurer F (2007) “A Case Study of the Implementation of Agile Methods
in a Bioinformatics Project”. In Concas G.et al. (Eds.): XP 2007, LNCS 4536, Springer, Heidelberg, pp. 169-170.
Silveira, M. A. (2011) “Técnica de Navegação em Documentos Utilizando Microsoft Kinect”. Instituto de
Informática. Universidade Federal do Rio Grande do Sul. Brasil.
Steil, C. A. (2010) “Mapas e hologramas como metáforas para pensar os dados sobre religião no censo do IBGE
de 2010”, Debates do NER, 2 (24), 29-37.
81
82
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Computação Sêntica: Fundamentos
e Aplicações em RV/RA
Luciano Silva
Abstract
Sentic Computing is a multidisciplinary approach between Computing and Cognitive Sciences which uses
Affective Computing and Common Sense Reasoning to recognize, to interpret and to process human emotions. Sentic Computing Techniques are based on processing of human-affective signals (speech, gestures,
among others), with the use of ontologies and affective common sense reasoning. The amplitude of these
techniques allows one to explore more natural interaction modes in both VR and AR systems. Within
this context, the aim of this chapter is to introduce the fundamentals of Sentic Computing, their models
of knowledge representation, reasoning mechanisms, development tools and especially their applications
and research challenges in VR and AR.
Resumo
Computação Sêntica é uma abordagem multidisciplinar entre Computação e Ciências Cognitivas, que
utiliza Computação Afetiva e Raciocínio de Senso Comum para reconhecer, interpretar e processar emoções humanas. Técnicas de Computação Sênticas são baseadas em processamento de sinais humano
-afetivos (fala, gestos, dentre outros), com uso de ontologias afetivas e raciocínio de senso comum. A
amplitude destas técnicas permite explorar modos mais naturais de interação tanto em sistemas de RV
quanto RA. Dentro deste contexto, o objetivo deste capítulo é apresentar os fundamentos da Computação
Sêntica, seus modelos de representação de conhecimento, técnicas de raciocínio de senso, ferramentas
de desenvolvimento e, principalmente, sobre suas aplicações e desafios de pesquisa tanto em Realidade
Virtual quanto Aumentada.
82
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
1.1 Introdução
Computação Afetiva é o estudo e desenvolvimento de sistemas e dispositivos que podem reconhecer, interpretar, processar e simular afeições humanas. O termo foi cunhado pelo trabalho seminal de
Picard (1995), cujo objetivo era simular empatia em um sistema computacional: uma máquina deveria
interpretar o estado emocional de um ser humano e, a partir deste estado, dar respostas apropriadas à
emoção percebida.
O Raciocínio de Senso Comum (RSC) é uma ramificação da Inteligência Artificial, que trata da
formalização da habilidade humana de fazer deduções sobre situações cotidianas. Por exemplo, se X
está triste, então algo ruim deve ter ocorrido a X. Sistemas de RSC fazem julgamentos sobre propriedades físicas, propósitos, intenções e comportamento possível sobre pessoas, animais e coisas.
Da junção entre Computação Afetiva e técnicas de RSC, surge a Computação Sêntica (CAMBRIA
e HUSSAIN, 2012), cujo objetivo é reconhecer, interpretar, processar e simular afeições humanas, tendo como suporte lógico a formalização do raciocínio de senso comum. O termo sêntico (do inglês,
sentics) deriva do Latim sentire (raiz de palavras como sentimento) e sensus (que pode ser entendido
como a capacidade de sentimento e como senso comum). Técnicas de Computação Sênticas, geralmente, utilizam técnicas de ontologias afetivas para não só explorar a detecção das emoções humanas no
plano sintático, como também semântico.
A Computação Sêntica já vem sendo utilizada com sucesso em Mineração de Dados em redes
sociais, com o objetivo de detectar estados emotivos em textos. Recentemente, a área sofreu uma expansão para incluir outros universos midiáticos como imagens, vídeos e áudios. Dentro deste contexto
de expansão, encontram-se as aplicações para RV e RA. Assim, o objetivo deste capítulo é introduzir
os conceitos e processos fundamentais da Computação Sêntica, suas principais aplicações em sistemas
virtuais e de aumentação e indicar alguns desafios para pesquisa.
O capítulo está organizado da seguinte forma:
• inicialmente, são apresentados os fundamentos da Computação Afetiva, com ênfase na detecção de estados emotivos através de modelos probabilísticos;
• em seguida, são introduzidas as bases do RSC como eventos, fluentes e timepoints;
• com a base formada em Computação Afetiva e RSC, é apresentado o modelo de Computação
Sêntica logo depois e
• finalmente, são mostradas as aplicações em Sistemas de RV e RA, além de perspectivas possíveis para pesquisa.
No final, são apresentadas referências bibliográficas que deram suporte à produção deste capítulo,
que podem, também, servir de ponto inicial de estudo para os interessados em Computação Sêntica e
suas aplicações.
83
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
1.2 Computação Afetiva
1.2.1 Emoções Artificiais
Computação Afetiva (PICARD, 1995) pode ser vista como um conjunto de processos computacionais relacionados a ou que surgem de fenômenos afetivos. Uma afeição ou afeto (affection) é um estado
psicológico que permite ao ser humano demonstrar seus sentimentos e emoções a outro ser ou objetos
(NIEDENTHAL, 2006). Dependendo da duração deste estado psicológico, um afeto pode ser subdividido em dois tipos, conforme mostra a Figura 1:
Figura 1: Classificação dos afetos em emoções e manias.
Uma emoção é estado de curta duração, normalmente limitado a segundos e minutos. Por outro
lado, uma mania já é um estado mais duradouro, geralmente da ordem de horas ou dias. Não há um
delimitador preciso para diferenciar uma emoção de uma mania. Uma grande parte do trabalho da
Computação Afetiva está vinculado ao tratamento das emoções, por terem indicadores mais simples de
serem percebidos e com poucas restrições de tempo. Este capítulo também tratará somente de emoções.
Como o estado de emoção é contínuo, sua representação computacional requer uma discretização.
Um estado de emoção, quando discretizado, é chamado emoção artificial (PICARD, 1995). Na discretização, normalmente são utilizadas sub-estados que caracterizam o estado de emoção.
Existem duas categorias básicas de medidas destes sub-estados (NIEDENTHAL, 2006):
• medidas de emoção negativa: STAXI, ARS, BDHI, STAS, PEARS.
• medidas de emoção positiva e negativa: PANAS-X, I-PANA-SF, STEM.
Todas estas categorias envolvem vários itens de consulta, que levam a determinados estados prováveis de emoção. Porém, pela quantidade de itens a serem medidos, estas categorias não se revelam
como viáveis para implementação de sistemas computacionais, onde o tempo de resposta pode se algo
importante como, por exemplo, em sistemas de RV e RA. Para estes contextos, existe um modelo mais
simples chamado PAD.
84
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
1.2.2 Modelo PAD
O modelo PAD (MEHRABIAN, 1995), que descreve um estado emocional usando três dimensões
numéricas: Pleasure (Prazer), Arousal (Excitação) e Dominance (dominância).
A dimensão P é medida em uma escala chamada Pleasure-Displeasure, que trata do quão agradável é uma emoção. Por exemplo, raiva e medo são consideradas desagradáveis e estão mais próximas
de Displeasure. Por outro lado, alegria é bastante agradável e, portanto, mais próxima de Pleasure. Esta
escala, segundo MEHRABIAN, (1980), é usualmente limitada a 16 valores específicos.
A dimensão A também é medida em uma escala denominada Araousal-Nonaraousal, que quantifica a intensidade da emoção. O estado de raiva, por exemplo, tem um alto nível de excitação (aproximando-se de Araousal), enquanto que o estado de tédio tem um nível de excitação baixo, aproximando-se de Nonaraousal. MEHRABIAN (1980) define 9 valores específicos para escala.
Finalmente, a dimensão D também tem a sua própria escala, denominada Dominance-Submissiveness, que representa o controle e a natureza dominante da emoção. Raiva, por exemplo, é uma atitude
dominante, enquanto que medo representa um estado de submissão. Assim como na dimensão A,
MEHRABIAN (1980) define 9 valores específicos para a escala D.
Emoções podem ser classificadas em duas categorias básicas: primárias e secundárias. Uma emoção primária é um sentimento autêntico ou real e é uma resposta adaptativa a situações específicas. No
Modelo PAD, são previstas nove emoções primárias, conforme mostrado na Figura 2:
Figura 2: Emoções primárias do modelo PAD.
Fonte: (BECKER-ASANO, 2008)
85
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Observe que alguns estados emocionais primários podem ter variantes e codificações diferentes. Por exemplo, o estado feliz (happy) pode ser codificado como (50,0,100), (50,0,-100), (80,80,100)
e (80,80,-100).
Uma emoção secundária é uma resposta a uma emoção primária, ou melhor, a uma situação que
é consequência de uma emoção primária. Na Figura 3, são mostradas três emoções secundárias: alívio
(relief), esperança (hope) e medo (fears).
Figura 3: Emoções secundárias no modelo PAD.
Fonte: (BECKER-ASANO, 2008)
Por exemplo, alívio é uma reação emocional muito comum disparada pelo estado primário de alegria e que ocorre com pouca frequência quando se está bravo (angry) ou temeroso (fearful). Esperança
também é uma reação emocional comum quando se está alegre. Já quando se está temeroso, a reação
de medo é quase imediata.
1.2.3 Sensoriamento e Estimativa de Estados Emocionais
Uma vez que se tenha uma maneira para representar estados emocionais através do modelo PAD, o
próximo passo é como estimar estados emocionais a partir de determinados esquemas de sensoriamento.
Kapoor et al. (2004) propuseram um método bastante prático baseado em inferência bayesiana
para estimar estado emocionais, a partir de dados coletados de sensores. Cada sensor define uma modalidade de sensoriamento:
86
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
•
•
•
sensoriamento distante: face, voz, postura, gestos, movimentos
sensoriamento quase interno: condutividade da pela, dilatação da pupila, respiração, pulso,
batimentos cardíacos
sensoriamento interno: dosagens de hormônios, neurotransmissores
Assim, seja dado um conjunto multimodal finito
X = {x face , x voz ,..., x pulso } ,
onde cada x corresponde a uma variável aleatória de uma modalidade que se está medindo para
estimação de estado emocional  . A medida deste estado é definida por:
P( | X )
A definição estabelece que se pode estimar o estado emotivo dadas as probabilidades dos sensores
face
estarem em um determinado estado. Por exemplo, supondo que x
seja a probabilidade da face do
voz
pulso
usuário estar corada, x a probabilidade da voz estar trêmula e x
a probabilidade do pulso estar
acelerado, ter-se-ia:
•
P(nervoso | x face = 0.9, x voz = 1.0, x pulso = 0.9)
•
P(nervoso | x face  0.1, x voz  0.0, x pulso  0.15) baixa (próxima de 0)
alta (próxima de 1)
Ou seja, para que o usuário esteja no estado emocional de nervoso, é necessário que algumas das
modalidades estejam em determinados valores. Suponha, agora, que se tenha somente uma modalidade sendo sensorizada. Utilizando uma aproximação bem conhecida de probabilidade condicional,
tem-se que:
P( | x face )  P(, x face )  P( ) P( x face |  )
Tomando-se dois sensores independentes, x
face
e x
pulso
, pode-se fazer a seguinte aproximação:
P( | x face , x pulso )  P(, x face , x pulso )  P( ) P( x face |  ) P( x pulso |  )
 P( | x face ) P( | x pulso )
Esta última equação diz, essencialmente, que a probabilidade de um usuário estar no estado emocional  é, aproximadamente, o produto das probabilidades dos estados dos dois sensores. Generalizando esta ideia para n sensores de modalidades, tem-se:
P( | x1...x n )  P( | x1 )...P( | x n )
87
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Para cada modalidade sensorizada, existe uma técnica diferente para estimação do estado
emocional. Para faces, por exemplo, comumente se utilizam malhas para pontos-chave (KOTSIA
e PITAS, 2007).
A Figura 4 ilustra um exemplo destas malhas ajustada para uma posição de repouso da face (estado neutro):
Figura 4: Malha geométrica para face em repouso.
Fonte: (KOTSIA e PITAS, 2007)
A partir da malha em posição de repouso, geram-se padrões de deformação desta malha. Cada
deformação corresponde a um estado emocional, conforme ilustra a Figura 5:
Figura 5: Deformações da malha em estado de repouso para estados emocionais.
Fonte: (KOTSIA e PITAS, 2007)
88
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Uma vez que se tenha o padrão de deformação da malha para cada estado emocional, pode-se uma
face
probabilidade P (w | x ) para cada estado emocional w de acordo com o nível de ajuste médio
dos detalhes de cada imagem ao padrão de deformação. A Figura 6 mostra exemplos de ajustes de diversos estados emocionais aos padrões de deformação:
Figura 6: Estados emocionais ajustados a padrões de deformação da malha.
Fonte: (KOTSIA e PITAS, 2007)
O estado emocional w que gerar a maior probabilidade é o escolhido para esta modalidade. Para
outras modalidades como voz, movimentos, dentre outros, é muito comum a utilização de padrões de
referencia para estimação dos estados emocionais.
1.3 Raciocínio de Senso Comum
O Raciocínio de Senso Comum (RSC) (MUELLER, 2006) é uma ramificação da Inteligência Artificial, que trata da formalização da habilidade humana de fazer deduções sobre situações cotidianas.
Para a formalização em RSC, são utilizados dois tipos de cálculos lógicos:
• Cálculo de Eventos: especifica elementos que dependem do fator tempo (eventos, fluentes,
pontos temporais) numa ordem linear.
• Cálculo Situacional: especifica ações e conjuntos de ações (situações) sobre um domínio
de objetos.
89
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
1.3.1 Cálculo de Eventos
Existem três conceitos importantes em RSC: eventos, fluentes e pontos temporais. Os eventos
representam as ações que podem ocorrer no universo estudado. Um fluente é uma propriedade do
mundo em que varia com o tempo, por exemplo, o estado emocional do usuário em tempo distintos.
Um ponto temporal se trata de um instante de tempo específico como, por exemplo, uma data.
Para o cálculo de eventos, existe um conjunto de predicados pré-definidos, elencados na Tabela 1:
Tabela 1: Predicados do Cálculo de Eventos.
Fonte: (MUELLER, 2006)
Predicado
Descrição
Happens (e, t)
Evento e acontece ou ocorre em um ponto temporal t.
HoldsAt (f, t)
Fluente f é verdadeiro no ponto temporal t. Se ¬HoldsAt (f,
t), então f é falso em t.
ReleasedAt (f, t)
Fluente f é liberado pela lei da inércia do senso comum em
um ponto temporal t. Se ¬ReleasedAt (f, t), então f não é
liberado.
Initiates (e, f, t)
Evento e inicia um fluente f no ponto temporal t.
Terminates (e, f, t)
Evento e termina um fluente f no ponto temporal t.
Releases (e, f, t)
Evento e libera o fluente f no ponto temporal t.
Trajectory (f1, t1, f2, t2)
Se o fluente f1 é iniciado por um evento que ocorre no ponto temporal t1, e t2 > 0, então o fluente f2 será verdadeiro
no ponto temporal t1+t2.
AntiTrajectory (f1, t1, f2, t2)
Se o fluente f1 é terminado por um evento que ocorre no
ponto temporal t1, e t2 > 0, então o fluente f2 será verdadeiro no ponto temporal t1+t2.
Como exemplo, considere-se o seguinte cenário: se uma pessoa gosta de algo, ela fica contente.
Utilizando os predicados da Tabela 1, pode-se formalizar este cenário da seguinte forma:
Initiates (Like(a,b), Happy(a),t).
Nesta formalização, Like(a,b) indica que a gosta de b no instante t. Então, a fica feliz no mesmo
instante.
90
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
1.3.2 Cálculo Situacional
O Cálculo Situacional (MUELLER, 2006) opera sobre um domínio de objetos, que podem sofrer
ações. Uma sequência finita de ações é chamada de uma situação. Uma situação não é um estado
produzido por uma ação, mas sim o histórico de aplicação de ações. Diferentemente do Cálculo de
Eventos, o Cálculo Situacional permite ramificação de ações.
Uma situação é:
• init: a situação inicial ou
• do (A,S): a situação resultante da aplicação a ação A sobre a situação S
A Figura 7 ilustra uma série de ações efetuadas sobre uma mesma situação inicial, conduzindo a
situações diferentes:
Figura 7: Situação inicial e aplicação de ações.
Nesta figura, tem-se a situação inicial de que calmo(Pedro). do(kiss, calm(Pedro)) é uma nova situação, que pode levar a diversos estados. Por exemplo, Pedro pode ficar feliz ou bravo ou arrependido
ou mesmo não ter qualquer reação. Assim, há uma diferença visível entre estados e situações. do(hold,
do(kiss,calmo(Pedro))) é uma nova situação, que pode levar a interpretações diferentes de estados ou
não levar a estado algum.
1.4 Computação Sêntica
Computação Sêntica (CAMBRIA e HUSSAIN, 2012) é uma área emergente em Inteligência Artificial, que utiliza técnicas de Computação Afetiva e Raciocínio de Senso Comum com o objetivo é
reconhecer, interpretar, processar e simular afeições humanas.
91
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
1.4.1 Estrutura de um Sistema de Computação Sêntica
Um sistema típico de Computação Sêntica é formado por um conjunto por cinco componentes
principais, conforme mostrado na Figura 8:
Figura 8: Componentes principais de um sistema de Computação Sêntica.
Fonte: Adaptação (CAMBRIA e HUSSAIN, 2012).
A estrutura de Computação Sêntica é bastante similar ao de agentes inteligentes, com um fase de
sensoriamento (estímulos externos), processamento e atuação. A grande diferença ocorre no processamento, onde se depende de um sistema neural (neurônios sênticos), regulados por um modelo bio
-inspirado e psicologicamente motivado (HourGlass), que produz estados emocionais válidos dentro
de um espaço afetivo.
A seguir, serão descritos os componentes principais desta arquitetura.
1.4.2 Modelo HourGlass
O modelo HourGlass (CAMBRIA, HUSSAIN e LIVINGSTONE, 2012), ou Modelo da Ampulheta,
organiza um conjunto de emoções primárias em quatro dimensões (Sensitivity, Aptitude, Attention
e Pleasantness), com diferentes níveis de ativação. Estas quatro dimensões, com os seus respectivos
valores, são mostradas na Figura 9:
92
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Figura 9: As quatro dimensões do modelo HourGlass.
Fonte: (CAMBRIA, HUSSAIN e LIVINGSTONE, 2012)
Este modelo é uma extensão bem mais detalhada do modelo PAD, visto no início deste capítulo.
Os valores para cada uma destas dimensões segue uma distribuição normal, conforme mostrado na
Figura 10:
Figura 10: Modelo HourGlass.
Fonte: (CAMBRIA, HUSSAIN e LIVINGSTONE, 2012)
93
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Conforme se varia o valor da distribuição normal, obtêm-se os valores para os estados emocionais,
conforme mostra a Tabela 2.
Como os valores trabalhados situam-se entre -1 e 1, é possível se adaptar o modelo de probabilidades visto anteriormente para emoções positivas e negativas.
Tabela 2: Valores dos estados eamocionais para o Modelo HourGlass.
Fonte: (CAMBRIA, HUSSAIN e LIVINGSTONE, 2012)
1.4.3 Espaço Afetivo
O Espaco Afetivo (CAMBRIA et al., 2009) é a base de conhecimento para o raciocínio com emoções. Uma forma bastante comum de se construir tal espaço é por indexação baseada nos rótulos
definidos pelo Modelo HourGlass, que define um agrupamento por cada valor de emoção. A Figura 11
mostra um exemplo de espaço afetivo:
Figura 11: Exemplo de espaço afetivo.
Fonte: (CAMBRIA, HUSSAIN e LIVINGSTONE, 2012)
94
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
O Espaco Afetivo normalmente é armazenado como um banco de dados multidimensional e, as
consultas para inferência emocional, são realizadas diretamente neste banco, indexadas pelos estados
emociais devolvidos pelos sistema neuronal sêntico.
1.4.4 Sistema Neuronal Sêntico
O sistema de neurônios sênticos pode ser implementado como uma rede neuronal com aprendizado bayesiano ou Cadeias de Markov Ocultas. A finalidade do sistema neuronal sêntico é calcular
o estado emocional do usuários e, a partir dos estímulos externos, utilizar o espaço afetivo para
realizar inferências.
Por exemplo, se o usuário está um estado muito forte de alegria e está cercado de um contexto de
música, pode-se tocar uma música adequada para o seu estado emocional.
Além do próprio sistema inferencial em si, o sistema neuronal sêntico ainda pode aumentar a base
de conhecimento sêntico (espaço afetivo) com novas informações derivadas dos processos inferenciais.
1.5 Aplicações de Computação Sêntica em Realidade Virtual
Uma das aplicações emergentes em Computação Sêntica em RV são os avatares sênticos (CAMBRIA et al., 2011). Um avatar sêntico é capaz de perceber estados emocionais dos usuários e gerar novos
estados de resposta.
Uma arquitetura possível para comunicação com avatares sênticos é mostrada na Figura 12:
Figura 12: Arquitetura de um avatar sêntico.
Fonte: (CAMBRIA et al., 2011)
Nesta arquitetura, tem-se um módulo de percepção multimodal (face, voz e escrita). As modalidades são processadas por um módulo de análise afetiva, que as traduz para estados emotivos e que
95
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
orientam a deliberação e geração de poses e expressões do avatar. Os atuadores deste sistema sêntico
são representados pelos geradores de expressões faciais, de fala e posturas corporais.
O analisador de expressões faciais utiliza o padrão MPEG4, cujos pontos de interesse e parâmetros
faciais são mostrados na Figura 13:
Figura 13: Pontos de interesse faciais no MPEG4 e seus parâmetros correspondentes.
Fonte: (CAMBRIA et al., 2011)
O analisador de áudio transforma a fala em texto, que é analisado junto com texto digitado. Do
texto, extraem-se os conceitos e, a partir deles, geram os valores de fatores emocionais correspondentes
(sentics), conforme mostrado a seguir:
Texto: Yesterday was a BEAUTIFUL day! I couldn’t find the food I was after and there was pretty
bad weather but I bought a new dress and a lot of Christmas presents.
<Concept: ‘yesterday’>
<Concept: ‘beautiful day’++>
<Concept: !‘find food’>
<Concept: ‘bad weather’––>
<Concept: ‘buy new dress’>
<Concept: ‘buy christmas present’++>
Sentics: [1.608, 0.571, 0.0, 2.489]
Emotions: joy and interest
96
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Os sinais ++ e – indicam pontos enfáticos no texto ou na fala, que são importantes para caracterizar determinados estados emocionais. O resultado é um vetor com quatro coordenadas (do espaço
afetivo), assim como os rótulos possíveis para as emoções (joy e interest).
A arquitetura que realiza esta análise é mostrada a seguir:
Figura 14: Arquitetura de processamento de texto e fala de um avatar sêntico.
Fonte: (CAMBRIA et al., 2011)
Na arquitetura da Figura 14, tem-se um módulo de processamento de Linguagem Natural
(NLP), que extrai morfológicos e sintáticos que, via um analisador semântico, os transforma em
conceitos. Estes conceitos, tendo como base com as informações do Modelo HourGlass, são transformados em coordenadas do espaço afetivo. Fazendo-se junção dos módulos de processamento de
expressões faciais e texto/fala, o resultado da integração permite produzir emoções conjuntas como
o mostrado na Figura 15:
Figura 15: Combinação das modalidades de fala/face e estados emocionais possíveis.
Fonte: (CAMBRIA et al., 2011)
97
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Uma vez que o estado emocional tenha sido detectado, utilizam-se as técnicas de RCS vistas anteriormente para determinar qual o estado emocional deve ser disparado no avatar em relação à situação
detectada. A deformação da malha do avatar é feita com base em um conjunto do pré-definido de
expressões, como mostrado na Figura 16:
Figura 16: Expressões pré-definidas, resultantes de respostas emocionais do avatar.
Fonte: http://ces.abertay.ac.uk/sicsa/faces.jpg
A qualidade da resposta emotiva do avatar depende da qualidade da base de conhecimento, sobre
o qual o RSC irá fazer a consulta.
1.6 Aplicações Computação Sêntica em Realidade Aumentada
Em Realidade Aumentada, existem diversas possibilidades de inclusão de aspectos sênticos nas
aplicações. Como primeiro exemplo, o trabalho de Gilroy et al. (2008) constrói um sistema de controle de crescimento de plantas influenciável por estados emocionais. A arquitetura deste sistema é
mostrado abaixo:
Figura 17: Arquitetura de um sistema de RA para controle de crescimento de plantas.
Fonte: Gilroy et al. (2008)
98
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Neste sistema, são interpretadas expressões faciais e, de acordo com o seu valor, elas regulam o
tropismo das plantas, geradas por um um processo de L-System. Os valores das emoções são calculados no sistema PAD e controlam o tropismo conforme mostrado na Figura 18:
Figura 18: Influência das emoções no tropismo de plantas.
Fonte: Gilroy et al. (2008)
A variável P controla o tropismo na direção X, a variável A na direção Z e, a direção Y, é controlada pela variável D. Embora o trabalho de Gilroy et al. (2008) tenha sido, à primeira vista, um objeto
artístico, ele levanta várias possibilidades de controle de crescimento de objetos. Por exemplo, sabe-se
da Psicologia Comportamental, que determinados estados emocionais disparam determinadas modificações no corpo humano. Com um sistema de simulação emotivo, as variáveis psicológicas poderiam
guiar a criação de cenários para estudo destas modificações.
Uma segunda aplicação interessante de técnicas de Computação Sêntica situa-se em sistemas
de Realidade Aumentada em Informática em Saúde. A Figura 19 (TIVANTASAKUL E OHKURA,
2013) ilustra uma arquitetura capaz de captar diversos sinais, que podem ser transformados em
estados emotivos:
99
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Figura 19: Uma arquitetura de Realidade Aumentada Sêntica para Informática em Saúde.
Fonte: Tivantasakul e Ohkura (2013)
Este sistema permite a detecção de sinais emocionais de um paciente, a transmissão destes sinais
sob a infraestrutura da Web, processamento e devolução de objetos virtuais como resposta aos sinais
emocionais. Por exemplo, pode-se induzir uma diminuição da frequência respiratória de um paciente,
exibindo-lhe uma animação de caixa de música funcionando, como mostrado na Figura 20:
Figura 20: Resposta sêntica para indução do controle de respiração.
Fonte: FontTivantasakul e Ohkura (2013)
100
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
O sistema de ainda permite disponibilizar todo o processo de atuação baseadas em estados emocionais como serviços, mostrado na Figura 21:
Figura 21: Serviços de atuação sênticos.
Fonte: Tivantasakul e Ohkura (2013)
A partir do módulo de detecção emocional, o sistema permite selecionar o serviço de atuação
correspondente.
1.7 Comentários Finais
A possibilidade de se realizar detecção e atuação emocionais em sistemas de RV e RA permite
explorar interações mais naturais com os usuários. A Computação Sêntica disponibiliza arquiteturas e
técnicas que contemplam tanto detectores como atuadores emocionais, além de abrir várias perspectivas para pesquisa tanto pura quanto aplicada.
O autor espera que este texto introdutório possa ser a base inicial aos interessados em aumentar o
nível de interação em suas aplicações de RV e RA.
101
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 82-102, maio/2014.
Silva, Luciano. Computação Sêntica: Fundamentos e Aplicações em RV/RA.
Referências
BECKER-ASANO, C. WASABI: Affect Simulation for Agents with Believable Interactivity. Dissertation zur
Erlangung des Grades eines Doktors der Naturwissenschaften. Technischen Fakultat an der Universitat
Bielefeld, 2008.
CAMBRIA, E. e HUSSAIN, A. Sentic Computing: Techniques, Tools and Applications. Dordrecht: Springer, 2012.
CAMBRIA, E., HUSSAIN, LIVINGSTONE, A. The hourglass of emotions. Lecture Notes on Computer Science
(LNCS), vol. 7403, 2012, pp. 144-157.
CAMBRIA, E., HUPONT, I., HUSSAIN, A., CEREZO, E., BALDASSARRI, S. Sentic Avatar: Multimodal Affective Conversational Agent with Common Sense. Lecture Notes on Computer Science (LNCS), 2011, pp. 81-95.
CAMBRIA, E. HUSSAIN, A., HAVASI, C., ECKL, C. AffectiveSpace: Blending common sense and affective knowledge to perform emotive reasoning. CAEPIA, Seville, 2009, pp. 32-41.
GILROY, S.W. E-Tree: Emotionally Driven Augmented Reality Art. MM´2008, Outubro, 2008, pp. 26-31.
KAPOOR, A., PICARD, R.W., IVANOV, Y. Probabilistic Combination of Multiple Modalities to Detect Interest.
Proceedings of Interest, International Conference on Pattern Recognition, 2004, pp. 969-972.
KOTSIA, I., PITAS, I. Facial Expression Recognition using Geometric Deformation Vectors and Support Vector
Machines. IEEE Transactions on Image Processing, 16 (1), 2007, pp. 172-187.
MEHRABIAN, A. Basic Dimensions for a General Psychological Theory: Implications for Personality, Social
and Environmental Psychology. New York: Oelgeschlager, Gunn & Hain Inc., 1980.
________________. Framework for a comprehensive description and measurement of emotional states.
Genetic, Social, and General Psychology Monographs, 121, 1995, pp. 339-361.
MUELLER, E.T. Commonsense Reasoning. New York: Morgan Kaufmann, 2006.
NIEDENTHAL, P. M., KRAUTH-GRUBER, S., RIC, F. Psychology of Emotion. New York: Psypress, 2006.
TIVANTASAKUL, S., OHKURA, M. Healthcare System Design Focusing on Emotional Aspects using Augmented Reality. IEEE Symposium on Computational Intelligence in Healthcare and e-health (CICARE), 1,
2013, pp. 88-93.
102
103
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Construção de aplicações de Realidade Cruzada
Projetiva utilizando openFrameworks e ARDUINO
Christopher Shneider Cerqueira
Claudio Kirner
Abstract
This chapter aims to show a Projective Cross-Reality environment development. The chapter consists of
the following sections: correlated works that motivated this chapter, equipment used, application development steps using the open-source framework openFrameworks with the Arduino hardware interface,
and some use trends. The development steps consists of: building of a basic application using openFrameworks; color tracking using an openCV wrapper; projection and camera calibration; and inclusion of
a hardware in the interaction loop.
Resumo
Este capítulo apresenta o desenvolvimento de um ambiente de realidade cruzada projetiva. Inclui seções
de: exemplos correlatos que motivaram o capítulo, equipamentos utilizados, as etapas de desenvolvimento da aplicação utilizando o frameworks open-source openFrameworks com a interface de hardware Arduino, e tendências de uso. As etapas de desenvolvimento incluem: a construção de uma aplicação básica
com o openFrameworks; o rastreio de cores utilizando um wrapper do openCV; a calibração da projeção
e câmera; e a inclusão de hardware no loop de interação.
1.1 Introdução
Há diversas naturezas de interação, nas quais o ser humano envolve-se para manipular elementos
do mundo real que podem ser “aumentados” por elementos virtuais. Os elementos dos mundos real e
virtual se cruzam com elementos computacionais (sensores e atuadores), habilitando várias modalidades de mundos, como: mundo real tangível, realidade aumentada [Kirner, 2011], realidade virtual
[Kirner, 2011], mundos virtuais distribuídos [Schroeder 2008], mundos ubíquos [Weiser, 1993] e realidade cruzada [Kirner et al 2012].
103
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
A Figura 1.1 mostra o cruzamento entre estes mundos, do mundo real, de objetos reais e artefatos
tangíveis, podendo-se inserir objetos virtuais (criando realidade aumentada), ou inserir inteligência
eletrônica por elementos computacionais, como sensores e atuadores (criando mundos ubíquos). O
mundo real pode ser substituído por um mundo virtual, através de objetos virtuais (criando realidade
virtual), e distribuído através de elementos computacionais (criando mundos virtuais distribuídos). A
intersecção entre objetos do mundo real, objetos virtuais e elementos computacionais, onde a comunicação entre os objetos dos mundos virtual e real sejam bidirecionais, cria a realidade cruzada.
Figura 1.1. Diagrama de Kirner e múltiplas realidades. Adaptado de [Kirner et al 2012].
Um dos mundos, que fica na intersecção dos objetos virtuais, reais e computacionais é a Realidade Cruzada (RC) (Cross-Reality), que segundo [Kirner et al 2012] é um ambiente de realidade misturada ubíqua, que vem da fusão de uma rede de sensores e atuadores (que coletam e enviam dados
relacionados ao mundo real) com mundos virtuais compartilhados, usando a interface da realidade
aumentada. Nesse caso, a troca de informação é bidirecional entre o mundo real e o mundo virtual,
podendo ser de duas formas: sobreposta (Overlapped Cross Reality), onde elementos reativos virtuais
e reais são sobrepostos ou não sobrepostos (Non Overlapped Cross-Reality), onde elementos virtuais
e reais não se sobrepõem.
Uma abordagem de construção da ubiquidade é um sistema que realiza o registro global de objetos
e uma interconexão compartilhada, como proposto por Kevin Ashton [Ashton 2009], nomeado a Internet das Coisas e definindo-a como: “a potencialização de artefatos tangíveis, compostos por sensores e
atuadores, de se conectarem através da Internet, utilizando identificados únicos” [Betters 2014] [CERP
2009]. Assim, a capacidade dos equipamentos, em coletar informações, por si só, e se comunicarem
potencializam a utilização dos sistemas e, por consequência, a utilidade e funcionalidade de sistemas
de realidade cruzada.
104
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Esta interligação é o motivador deste trabalho que, de maneira prática com exemplos, incita o
desenvolvimento de aplicações de interface que compartilham: realidade aumentada projetiva e manipulação de elementos tangíveis enriquecidos por hardwares eletrônicos, no loop de interação para criar
Realidade Cruzada Projetiva.
1.2 Exemplos motivadores deste capítulo
Alguns exemplos de estudos de casos, que aplicam as tecnologias envolvidas nesse capítulo, exploram a utilização da projeção de uma camada de realidade aumentada para interação contextualizada.
Na Figura 1.2, estão dois exemplos de utilização em capturas de cor (com um ponto de cada cor)
para interação, onde 1.2a é do Projeto L.A.S.E.R.-Tag [Watson 2007]1 que tem o propósito de projeção
em grandes construções e interação com utilização de laser pointers; 1.2b é do sixthSense desenvolvido
por Pranav Mistry [Mistry 2011], onde uma câmera captura anéis coloridos nos dedos e uma projeção
é realizada (com e sem calibração com a captura) com o conteúdo manipulado.
(b) sixthSense
(a) Projeto L.A.S.A.R. Tag
Figura 1.2. Exemplos de interação com captura de cor.
Na Figura 1.3, estão dois exemplos de utilização de capturas de características e cor de conjuntos
complexos, utilizando câmeras de profundidade, e a manipulação dos próprios objetos para interação,
onde 1.3a é do projeto OASIS da Intel [Ziola et al. 2011], com captura das características e retroprojeção
temática; e 1.3b é do projeto I/O Bulb e Luminous Room do Dr. John Underkoffler [Underkoffler et al.
1998] sobre retroprojeção para estudos de sobras em projetos arquitetônicos.
1
Disponível em https://github.com/LeonFedotov/L.A.S.E.R.-TAG-GRL
105
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
(a) Projeto OASIS
(b) Luminous Room
Figura 1.3. Exemplos de interação com captura de características.
A Figura 1.4 apresenta dois exemplos de utilização com hardware de apoio para auxiliar a interação, criando uma matriz de captura e possibilidades de interação baseada na orientação e existência de
um elemento computacional. Ambos os exemplos são baseados no projeto Sensetable do MIT [Patten
et al. 2002]. A Figura 1.4a mostra o exemplo inicial do controle de uma série de equipamentos e 1.4b a
aplicação comercial de Sensetable desenvolvida pela PatternStudio [Pattern 2014].
(a) Sensetable nas primeiras versões.
(b) Sensetable comercial.
Figura 1.4. Utilização de hardware eletrônico de apoio para interação.
A Figura 1.5 apresenta um exemplo de prova de conceito [Kirner et al. 2012] da tecnologia de Realidade Cruzada utilizando o Arduino2 e o software basAR 3, no qual são mostrados a sobreposição da
imagem virtual do LED e o feixe de luz, além da não sobreposição dos botões de controle.
2
3
http://arduino.cc/
http://cscerqueira.com.br/basar
106
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Figura 1.5. Exemplo de Realidade Cruzada
1.3 Equipamentos disponíveis
Os equipamentos disponíveis para construção de mundos de realidade cruzada projetiva, como
proposta neste capítulo é dada pela utilização de hardwares embarcados que possuam capacidade de comunicação com o software da interface de interação, do equipamento de projeção e de captura de vídeo.
1.3.1 Hardwares embarcados
Para prototipagem rápida, existem diversos kits open-sources ou não, que facilitam o desenvolvimento de uma interface de hardware. Os mais populares são: [Meike 2012]
• Arduino: é uma plataforma aberta de hardware e software para desenvolvimento voltado à
prototipagem rápida. Possui velocidade de 16Mhz, 2Kbyte de RAM e 32Kbyte de ROM. O
preço está em torno de trinta dólares.
• BeagleBoard: é uma plataforma que roda Android, Linux ou Windows e possibilita programação em várias linguagens. Possui velocidade de 720MHZ, 256MB de RAM e 256MB Flash.
O preço está em torno de duzentos dólares.
• Raspberry Pi: é uma plataforma que roda Linux e possibilita programação em várias linguagens. Possui velocidade de 700MHZ, 256MB de RAM e a memória fica numa flash externa.
O preço está em torno de trinta e cinco dólares.
Neste capítulo foi escolhido o Arduino, por ser o mais fácil de encontrar, e possuir maior facilidade de funcionamento com a configuração remota via C++ disponibilizada pelo oF, usando a biblioteca
FIRMATA4.
1.3.2 Projetores
Para construção de um mundo de RA projetiva, é necessário um projetor montado numa posição
fixa/móvel, que possa imprimir a camada virtual sobre o mundo real, sem a necessidade de óculos.
4
http://firmata.org/wiki/Main_Page
107
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Este tipo de construção é inevitavelmente atrelado com a iluminação do ambiente, pois, quanto
mais iluminado, maior deve ser os lumens do projetor, e de maneira geral isto é proporcional às dimensões e custos do projetor.
Uma linha de projetores que pode ser utilizada de maneira simples, em protótipos rápidos, é o
pico-projetor, que de maneira geral apresenta luminescência na faixa de 30 a 60 lumens.
Neste capítulo foi utilizado o pico-projetor da 3M MPro120, que estava disponível, apresentando
12 lumens. Ele já não está mais a venda, mas foi suficiente para o experimento.
1.3.3 Câmeras
Na maior parte das aplicações de RA, é utilizada uma câmera para rastreio do mundo e da interação, sendo que algumas câmeras que podem ser utilizadas são as: PlayStation Eye e o Kinect. O último
tem maior abrangência de possibilidades, devido à câmera de profundidade.
As webcans podem ser utilizadas, desde que possuam uma resolução (mínima de 2Mpixels) e velocidade de transmissão (USB2.0) suficiente para manter a precisão e velocidade da aplicação.
Neste capítulo foi utilizada a webcam da Logitech c525.
1.4 openFrameworks (oF)
1.4.1 Composição do oF
oF é uma coleção de códigos criados para artistas e designers trabalharem com design interativo.
oF é desenvolvido principalmente por Zach Liberman, Theo Watson, Artuno Castro e Chris O’Shea e
hoje recebe colaborações de toda comunidade. [Noble 2009]
Deve-se considerar utilizar oF, para [Noble 2009], quando:
• Projeto renderiza muitos gráficos 3D, e ou;
• Utilizar muita visão computacional, e ou;
• Controlar equipamentos, como, por exemplo, o ARDUINO.
oF inclui uma série de bibliotecas, como: openGL, FreeType, FreeImage, QuickTime, POCO.
O código é compatível com várias arquiteturas e vários ambientes de desenvolvimento, como as
cinco plataformas: Windows, OSX, Linux, iOS. Android e Linux ARM.
Uma das vantagens do oF é o fato da comunidade poder desenvolver componentes ou funcionalidades que possam ser inseridas no oF. Esses componentes são chamados de add-ons. A página oficial
de contribuições do oF divide os add-ons nos seguintes seguimentos: animação, pontes, visão computacional, gráficos, interfaces de usuário, interfaces de hardware, iOS, inteligência artificial, física, som,
tipografia, utilidades, acesso a câmera e a rede.
oF está disponível em: http://www.openframeworks.cc/.
108
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
1.4.2 Componentes da comunidade
Uma das vantagens do oF é o fato da comunidade poder desenvolver componentes ou funcionalidades que possam ser inseridas no oF. Estes componentes são chamados de add-ons.
A página oficial (http://ofxaddons.com/) de contribuições do oF está dividindo os add-ons nos
seguintes seguimentos: animation, bridges, computer vision, graphics, gui, hardware interface, ios, machine learning, physics, sound, typography, utilities, video/camera, web/networking e outros.
O openFrameworks tem um diretório específico para armazenar os componentes: [oF]/addons.
Todos os componentes devem ser colocados neste diretório. Obs.: Geralmente os componentes vêm
com exemplos, devendo-se retirar o exemplos do diretório e salvar em [oF]/examples, pois eles geram
problemas de compilação.
Construção da aplicação
Para desenvolvimento deste capítulo, foram utilizados o oF na versão 0.8.05 e os exemplos foram
montados no Windows 8.1 usando Visual C++ 2012 Express (gratuito)6. Dos componentes da comunidade, foram utilizados o ofxCv7 e o ofxGlWrapper8, respectivamente para auxiliar na utilização do
openCV e para manipular a deformação da imagem.
1.5 Caso 1: Montagem do programa vazio.
A montagem do programa vazio é o inicio da criação de aplicativos com o oF. O oF possui uma
meta-ferramenta de criação de projetos para cada plataforma chamada projectGenerator; ela se encontra no diretório raiz. Executando o projectGenerator ,o desenvolvedor vai encontrar a janela da
Figura 1.6, na qual é possível inserir o nome do projeto, a localização (aconselha-se a deixar dentro da
estrutura do oF), o indicador da plataforma, o botão para selecionar os add-ons e o botão para finalizar
e gerar o projeto.
5
6
7
8
http://openframeworks.cc/download/
http://www.visualstudio.com/en-us
https://github.com/kylemcdonald/ofxCv
https://github.com/roymacdonald/ofxGLWarper
109
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Figura 1.6. Tela inicial do projectGenerator.
Clicando-se no botão de addons, é aberta uma janela com as escolhas dos componentes desejados
para serem inseridos no projeto da IDE. Veja que, no exemplo da Figura 1.7, há duas colunas de componentes: a primeira com os incluídos no oF (core) e a segunda com componentes adicionais (non-core).
No caso dos exemplos desse capítulo, basta escolher o componente do ofxOpenCv e ofxCv para utilizar o openCV. Para utilizar o componente de deformação de tela é necessário escolher o ofxGlWarper
e o ofxXmlSettings.,
Figura 1.7. Tela de escolha dos add-ons do projectGenerator.
Sem a modificação do path do diretório, clicando-se no botão “GenerateProject”, o projectGenerator montará o projeto em [oF]/apps/myApps/[NomeDoProjeto]. Compilando e executando o programa vazio, deve-se gerar uma janela cinza vazia.
110
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
1.6 Caso 2: Rastreio de cores.
Este caso mostra a primeira etapa da criação da aplicação que é o rastreio de cores. Este caso cobre:
(1) uma breve teoria do modelo de cores e do rastreio de formas do openCV; (2) a construção dos artefatos de manipulação; (3) o código de rastreio e (4) algumas sugestões de usos para este caso.
1.6.1 Teoria
Cores - Diversos padrões de modelos de cores são utilizados para representar uma imagem de
maneira digital. Um deles é o RGB, que, de maneira simples, corresponde ao uso de três lanternas, onde
cada uma é uma cor primária (vermelho, verde e azul), com um botão que controla a intensidade da
luz, de desligado (0) até a total cor (255), assim formando o espectro de cores. Outro padrão é o HSV,
que é formado por três grandezas: matiz/cor (Hue), que indica a cor num disco (0-360°); saturação
(Saturation), que indica a pureza da cor no raio do disco (0 – cinza à 1 – cor saturada); e valor (Value)
que indica a intensidade da cor na altura do disco (0-sem cor à 1-com cor. Neste capítulo, é utilizado o
rastreio de cores, através da imagem no modelo de cores HSV, que é executado por rotinas do openCV.
Para saber mais sobre os padrões de cores e openCV, consulte: [OpenCV 2013] [Smith 1978] [Foley et
al. 1990] [Wikipedia 2014].
Blobs - A detecção de blobs é a maneira mais rápida e simples utilizada em visão computacional,
que é utilizada de várias formas como: tracking de marcadores, detecção de pele, e reconhecimento de
gestos. Blobs são áreas identificadas por pixels próximos que compartilhem a mesma propriedade. Estas propriedades são ressaltadas por alto contraste, ou threshold de alguma caraterística, como matiz,
saturação e/ou valor. A mágica por detrás da detecção de blobs é a detecção de contorno, realizada pela
biblioteca do openCV, que devolve uma posição cartesiana (x,y) de uma região com mesma característica (blob) encontrada na área da imagem. [Noble 2009] [OpenCV 2013]
1.6.2 Montagem dos artefatos
Artefato de manipulação e infraestrutura
Para os artefatos de manipulação (Fig. 1.8) e o artefato de infraestrutura, são utilizados pedaços
de papéis em cores fortes que serão rastreadas com facilidade num fundo uniforme branco. Alguns
trabalhos sugerem a utilização de pedaços de post-its com cores fluorescentes, que são menos prováveis
de serem confundidas com outras cores.
As Figuras 1.8a até a 1.8d mostram as etapas de construção do artefato de manipulação. A Figura
1.8a mostra uma folha impressa com as cores; a Figura 1.8b mostra os pedaços recortados; a Figura
1.8c mostra um segundo corte para diminuir o tamanho e a Figura 1.8d mostra os pedaços de papel em
formato de anel para serem colocados nos dedos.
111
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
(a) Folha impressa com retângulos
(b) Retângulos recortados
(c) Retângulos reduzidos
(d) Anéis para interação.
Figura 1.8. Construção do artefato de manipulação.
Para o teste de infraestrutura, foram colocadas as quatro opções de cores para rastreio, vistos na
Figura 1.8d. Contudo, se as quatro cores forem utilizadas para a infraestrutura, o rastreio simplificado
proposto neste capítulo irá falhar, pois uma cor irá se repetir, para isso retiram-se duas cores do artefato de infraestrutura, deixando-o com dois pontos de calibração. O rastreio de uma característica
para infraestrutura é utilizado, quando o sistema é móvel, uma vez que, em uma instalação fixa, não é
necessário o rastreio constante. Com isso, é possível utilizar o artefato, sem nenhuma cor de rastreio, e
a mesma é projetada somente para calibração, como mostrado na Figura 1.9.
(b) Vista do que é projetado.
(a) Artefato sendo calibrado.
Figura 1.9. Artefato de infraestrutura.
112
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Suporte do projetor e câmera
A construção do suporte para o projetor e a câmera pode ser realizada de várias maneiras, como
a utilização de um pedestal de microfone (Figura 1.10a), para fixar o projetor e a câmera, pode ser
utilizado velcro (Figura 1.10b).
(a) Vista inclinada, mostrando o pedestal.
(b) Vista lateral, mostrando a fixação com velcro.
Figura 1.10. Construção do artefato de projeção e captura.
Note que a construção do suporte, com pedestal de microfone e velcro, foi possível, pois o
projetor utilizado é pequeno, mas para projetores grandes talvez seja necessária uma construção
mais elaborada.
1.6.3 Código
Para executar a captura, identificação e rastreio das cores dos artefatos deste tutorial, são utilizados os add-ons do openCV, ofxOpenCv (que já vem incluído no pacote completo do oF) e ofxCv (do
repositório de componentes).
O procedimento constitui-se na captura dos pixels da câmera (em RGB), conversão para o padrão
HSB, para isolar as cores puras (Hue), realização da filtragem da cor baseado no valor do hue, de 0-255,
e por fim a identificação dos blobs da imagem filtrada.
Para facilitar, foi feito uma estrutura para abrigar a cor desejada (targetColor), com os atributos de
cor, threshold e a posição capturada, e colocados na classe principal do oF os atributos que instanciam
a câmera, o identificador de contorno (que encontra os blobs), as instâncias de targetColor para cada
cor desejada e um método para modularizar o encontro do centroide da cor desejada. O código foi
colocado no cabeçalho testApp.h como visto na Figura 1.11.
113
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
#pragma once
#include “ofMain.h”
#include “ofxCv.h”
typedef struct targetColor{
string name;
// nome
ofColor color;
// cor a ser procurada
int threshold;
// threshold da cor na imagem
ofPoint position;
// posição quando rastreada
bool persistence;
// configura persistência
bool status;
// 0 - ausente, 1 - presente
}targetColor;
class testApp : public ofBaseApp{
... // não apagar os métodos existentes
ofVideoGrabber cam;// camera
ofxCv::ContourFinder contourFinder;// identificar blobs
void testApp::encontraCentro(targetColor *corDesejada);
targetColor markRed;// atuador vermelho
targetColor markGreen;// atuador azul
targetColor markYellow;// atuador amarelo
targetColor markBlue;// atuador verde
};
Figura 1.11. Cabeçalho com itens do rastreio de cores.
O oF possui três métodos principais: setup, update e draw. O primeiro é chamado somente no
inicio da execução e os outros dois são chamados em loop (primeiro o update depois o draw). (i) No
setup, são colocadas todas as etapas de configuração, consistindo das configurações de câmera, do rastreador de blobs e as configurações das cores de rastreio. (Obs.: Os valores das cores foram colocados
de acordo com um teste de amostragem da cor) (Figura 1.12). (ii) No update, são feitas a captura do
frame atual da câmera e a busca pelos centroides de cada cor. Para modularizar, foi utilizado o método encontraCentro, que faz o update do centro da cor na estrutura (Figura 1.13). (iii) O método draw
114
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
mostra a imagem da câmera (cam.draw()) e identifica as cores encontradas com um círculo na posição
do centroide (Figura 1.14).
#include “testApp.h”
using namespace ofxCv;
using namespace cv;
void testApp::setup(){
cam.setDeviceID(1);// seleciona quais das câmeras
cam.initGrabber(640, 480);// inicia o capturador com o tamanho desejado
contourFinder.setMinAreaRadius(10);// tamanho mínimo do blob
contourFinder.setMaxAreaRadius(200);// tamanho máximo do blob
// configura rastreio das cores
// vermelho
markRed.name = “vermelho”;
markRed.color = ofColor(150,20,9,255);
markRed.threshold = 1;
// verde
markGreen.name = “verde”;
markGreen.color = ofColor(48,94,60,255);
markGreen.threshold = 3;
// azul
markBlue.name = “azul”;
markBlue.color = ofColor(38,78,128,255);
markBlue.threshold = 4;
// amarelo
markYellow.name = “azul”;
markYellow.color = ofColor(186,175,4,255);
markYellow.threshold = 1;
}
Figura 1.12. Método setup do rastreio de cores.
115
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
void testApp::encontraCentro(targetColor *corDesejada){
contourFinder.setTargetColor(corDesejada->color, TRACK_COLOR_HSV); // configura a cor
contourFinder.setThreshold(corDesejada->threshold);// configura o threshold
contourFinder.findContours(this->camWarped);// envia imagem para rastreio
if(contourFinder.size()==1){ // caso encontrar algo pega o centro e seta que está visível
corDesejada->position.x = contourFinder.getCenter(0).x;
corDesejada->position.y = contourFinder.getCenter(0).y;
corDesejada->status = 1;
return;
}
if( corDesejada->persistence == true){ // se foi configurado a persistência, mantem posição
corDesejada->position.x = corDesejada->position.x;
corDesejada->position.y = corDesejada->position.y;
return;
}
// caso nao tenha sido visto ou não esteja em persistência, zera a posição e marca
como não presente.
corDesejada->position.zero();
corDesejada->status = 0;
}
void testApp::update(){
cam.update();// captura novo frame
if(cam.isFrameNew()) {// se novo frame
encontraCentro(&markRed); // encontra vermelho
encontraCentro(&markGreen); // encontra verde
encontraCentro(&markBlue); // encontra azul
encontraCentro(&markYellow);
// encontra amarelo
}
}
Figura 1.13. Método update e encontraCentro do rastreio de cores.
116
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
void testApp::draw(){
ofSetColor(255);
cam.draw(0, 0);
drawHighlightString(ofToString((int) ofGetFrameRate()) + “ fps”, 10, 20);
// circulo vermelho
ofSetColor(ofColor::red); ofCircle(markRed.position,10);
// circulo verde
ofSetColor(ofColor::green); ofCircle(markGreen.position,10);
// circulo azul
ofSetColor(ofColor::blue); ofCircle(markBlue.position,10);
// circulo amarelo
ofSetColor(ofColor::yellow); ofCircle(markYellow.position,10);
}
Figura 1.14. Método draw do rastreio de cores.
A Figura 1.15, mostra o exemplo de saída deste caso.
Figura 1.15. Resultado do rastreio de cores.
117
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
1.6.4 Usos
Há muitos usos somente com o rastreio de cores, como:
• Reconhecimento de gestos: correlação entre as distâncias das cores identificadas.
• Interação 2D: com apenas um ponto de informação (x,y) as interações são 2D, podendo controlar interfaces baseadas em dois dos pontos, que são usados para criar a infraestrutura e os
outros para interação.
• Realidade Aumentada: com três pontos de informação, e possível definir um plano, e com
isso gerar uma matriz de transformação para adaptação de modelos 3D.
1.7 Caso 3: Projeção calibrada
Este caso consiste na utilização de uma metodologia simplificada para calibrar a projeção com a
captura da câmera, mostrando os artefatos utilizados, o código adicionado no Caso 2 e sugestões de uso.
1.7.1 Teoria
Existem várias técnicas [21] [22] para fazer uma projeção calibrada automática. Este capítulo utiliza uma técnica manual simplificada de ajuste de projeção, utilizando warp (literalmente: deformar,
torcer, empenar).
Esta técnica modifica a perspectiva da imagem na hora da renderização do openGL, projetando
uma imagem já nas proporções desejadas (também chamado de projection mapping) ( Etapa 1 da Figura 1.16). A câmera então captura a projeção de um ponto de vista diferente (Etapa 2 da Figura 1.16) e
também deve ter sua perspectiva ajustada. Para isso, é feita o warp para o que é capturado pela câmera
correspondente à área de interação desejada (Etapa 3 da Figura 1.16). Esta área corrigida é então processada para retirada as características que permitirão a interação com a interface projetada (Etapa 4
da Figura 1.16), continuando assim o feedback loop de execução.
Figura 1.16. Feedback Loop de execução.
118
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
1.7.2 Artefatos
Os artefatos para o desenvolvimento continuam sendo os mesmos do Caso 2: quatro anéis coloridos para interação, uma folha branca e o conjunto de projeção e captura.
1.7.3 Código
Seguindo o diagrama da Figura X, o funcionamento pode ser dividido em quatro etapas: Etapa
1: ajuste da projeção; Etapa 2: captura do vídeo; Etapa 3: ajuste do captura; e Etapa 4: interação. Nesta
seção, são abordadas as etapas 1,2 e 3. A Etapa 4 consiste na interação abordada no Caso 2.
Etapa 1: ajuste da projeção
A Etapa 1 de ajuste da projeção é realizada utilizando o componente ofxGlWarper. No testApp.h,
foi adicionado uma instância do objeto que faz a deformação (ofxGLWarper), os quatro pontos que
definem as quinas e um callback que trata o click em cada uma das quinas, mostrado na Figura 1.17.
// ...
using namespace ofxCv;
using namespace cv;
// ...
#include “ofxGLWarper.h”
// ...
class testApp : public ofBaseApp{
// ...
// WARPER DA PROJEÇÃO
void onCornerChangeProj(ofxGLWarper::CornerLocation &cornerLocation); //callback
de ajuste das quinas
ofxGLWarper warper;// warper que ajusta a projeção
ofImage image;
ofPoint TLproj; ofPoint TRproj; ofPoint BLproj; ofPoint BRproj; // quinas da projeção
};
Figura 17. Cabeçalho do ajuste de projeção.
119
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Dentro da função de configuração o warper é iniciado, como mostrado na Figura 1.18.
void testApp::setup(){
// ...
// CONFIGURAÇÃO DO WARPER DE PROJEÇÃO
TLproj = ofPoint(0, 0); TRproj = ofPoint(sw,0);
BLproj = ofPoint(0, sh); BRproj = ofPoint(sw, sh);
warper.setCorner(ofxGLWarper::TOP_LEFT, TLproj); // indicar onde está cada canto
warper.setCorner(ofxGLWarper::TOP_RIGHT, TRproj);
warper.setCorner(ofxGLWarper::BOTTOM_LEFT, BLproj);
warper.setCorner(ofxGLWarper::BOTTOM_RIGHT, BRproj);
ofAddListener(warper.changeEvent, this, &testApp::onCornerChangeProj); // iniciar a callback
warper.setup(0,0,sw,sh);
warper.activate();
// ...
}
Figura 1.18. Setup do ajuste de projeção.
O método update não precisa ser modificado, já que a função de callback chama as rotinas que
alteram as quinas e atualizam as variáveis que indicam a alteração de posição, como mostrado na
Figura 1.19.
void testApp::onCornerChangeProj(ofxGLWarper::CornerLocation & cornerLocation){
switch (cornerLocation) {
case ofxGLWarper::TOP_LEFT:
TLproj = warper.getCorner(cornerLocation); break;
case ofxGLWarper::TOP_RIGHT:
TRproj = warper.getCorner(cornerLocation); break;
case ofxGLWarper::BOTTOM_LEFT:
BLproj = warper.getCorner(cornerLocation); break;
case ofxGLWarper::BOTTOM_RIGHT:
BRproj = warper.getCorner(cornerLocation); break;
}
}
Figura 1.19. Callback que captura quinas.
120
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
No método draw, todo o conteúdo onde vai ser aplicado a deformação deve estar contido entre
warper.begin() e warper.end(), como visto na Figura 1.20. (Obs.: Todos os desenhos são nas coordenadas da janela)
void testApp::draw(){
// ...
warper.begin();// inicia contexto do warp
// aqui fica tudo que vai sofrer deformação
warper.draw();// função que mostra a área que esta sendo deformada
warper.end();// finaliza context do warp
// ...
}
Figura 1.20. Draw do ajuste de projeção
A Figura 1.21 mostra um exemplo da imagem original em 1.21a e da imagem adaptada em 1.21b.
(a) Janela original.
(b) Janela deformada.
Figura 1.21. Exemplo da deformação da janela.
Etapa 2: captura do vídeo
Esta etapa já era realizada no Caso 2, em que no update são feitas a captura do vídeo e exibição
(Figuras 1.13 e 1.14)
Etapa 3: ajuste da captura
Nesta etapa, é realizada a deformação da imagem capturada pela câmera. Para isso, é realizado
um procedimento “inverso” ao da Etapa 1. Inicialmente, é instanciado em testApp.h alguns objetos que
ajudarão no warp da imagem, visto na Figura 1.22.
121
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
// ...
// WARPER DA CAPTURA
vector<cv::Point2f> warpPoints;// vetor que armazena as quinas para passar para o
openCV
ofImage camWarped;// imagem realizada a deformação (para calibração)
ofxGLWarper camHelper;// warper que ajuda no ajuste da câmera
void onCornerChangeCam(ofxGLWarper::CornerLocation &cornerLocation); // callback
de ajuste de quinas
ofPoint TLcam; ofPoint TRcam; ofPoint BLcam; ofPoint BRcam;// quinas da camera
// ...
Figura 1.22. Cabeçalho do ajuste da captura
No método setup (Figura 1.23), as instâncias são inicializadas semelhantemente ao warp da projeção.
// ...
// CONFIGURAÇÃO DA CAPTURA
TLcam = ofPoint(0+1, 0+1); TLcap.x = TLcam.x; TLcap.y = TLcam.y;
TRcam = ofPoint(sw-1,0+1); TRcap.x = TRcam.x; TRcap.y = TRcam.y;
BLcam = ofPoint(0+1, sh-1); BLcap.x = BLcam.x; BLcap.y = BLcam.y;
BRcam = ofPoint(sw-1, sh-1); BRcap.x = BRcam.x; BRcap.y = BRcam.y;
camHelper.setCorner(ofxGLWarper::TOP_LEFT, TLcam);
camHelper.setCorner(ofxGLWarper::TOP_RIGHT, TRcam);
camHelper.setCorner(ofxGLWarper::BOTTOM_LEFT, BLcam);
camHelper.setCorner(ofxGLWarper::BOTTOM_RIGHT, BRcam);
ofAddListener(this->camHelper.changeEvent, this,
&testApp::onCornerChangeCam);
camHelper.setup(0,0,sw,sh);
cammHelper.deactivate();
// ...
Figura 1.23. Método setup do ajuste da captura
122
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
O ofxCv possui um método específico para fazer esse corte e deformação de cena, o unwarpPerspective. Ele utiliza uma variável diferente de ofPoint e, para isso, na hora de passar o parâmetro é feita
um adaptação para cv::Point2f com os dados do callback onCornerChangeCam (semelhante à onCornerChangeProj). No método update, é realizada a captura da câmera e os pontos de ajuste são passados
para a função unwarpPerspective, que modifica a imagem da câmera e salva numa segunda variável,
como visto na Figura 1.24.
// ...
cam.update();
if(cam.isFrameNew()){
vector<cv::Point2f> warpPoints;
warpPoints.push_back(cv::Point2f(TLcam.x,TLcam.y));
warpPoints.push_back(cv::Point2f(TRcam.x,TRcam.y));
warpPoints.push_back(cv::Point2f(BRcam.x,BRcam.y));
warpPoints.push_back(cv::Point2f(BLcam.x,BLcam.y));
unwarpPerspective(cam,camWarped,warpPoints);
camWarped.update();
}
// ...
Figura 1.24. Método update do ajuste da captura
No momento de calibração, é necessário reexibir o resultado da calibração, utilizando camWarped.draw() no método draw. Durante o uso da aplicação, a re-projeção do conteúdo filmado deforma a
projeção e faz alguns efeitos aleatórios. A Figura 1.25 mostra um exemplo da imagem original em 1.25a
e da imagem adaptada em 1.25b.
(a) Captura original
(b) Captura deformada
Figura 1.25. Resultado do ajuste da captura
123
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Note que os pontos vermelhos são exatamente os pontos que definem a quina da projeção. Num
software automático essas quinas podem ser filmadas e a calibração pode ser automática. Existem outros métodos de calibração de projetor-câmera, este está longe de ser ótimo, porém é simples e didático.
Das etapas, a parte mais custosa é o ajuste da câmera. Vale lembrar que, na hora de projetar o conteúdo
de interação, deve-se colocar o warper de deformação da projeção.
A sequência de Figuras 1.26 exemplifica as etapas da calibração da projeção: (a) sem ajuste, (b)
ajuste da área de projeção, (c) ajuste da câmera e (d) rastreando.
(a) Descalibrado
(b) Ajuste da projeção.
(c) Ajuste de câmera
(d) Rastreando
Figura 1.26. Etapas da calibração da projeção.
1.7.4 Usos:
Algumas sugestões de uso de projeção calibrada compreendem:
• TableTops: bancadas didáticas, jogos interativos, ferramentas para engenharia, controle de
equipamentos, prototipagem de ergonomia.
124
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
•
Projeções em parede: anúncios interativos em grandes locais (shoppings, ou eventos abertos), montagens interativas de museus.
1.8 Caso 4: Uso de hardware no loop de interação
Este caso mostra a utilização do Arduino como interface de hardware para sensores e atuadores,
que propiciam a criação de um ambiente de Realidade Cruzada, que se torna também Projetiva com a
inclusão dos Casos evolutivos 2 e 3. Este caso contém: uma parte de teoria com informações básicas do
Arduino e códigos exemplos para teste; uma parte de artefatos; uma parte de códigos com a inclusão
do Arduino ao caso 3 e sugestões e uso.
1.8.1 Teoria
O oF possui integração com o Arduino de maneira muito simples, podendo comunicar-se de duas
formas: serialmente ou via biblioteca Firmata.
• A comunicação serial requer o tratamento do dado recebido, verificando número de bytes,
tipo de informação, fazendo o controle de transmissão e recepção.
• A utilização da biblioteca Firmata faz com que o Arduino passe a ser apenas uma interface de
hardware, na qual o processamento das alterações dos pinos pode ser feito no host, ao invés
de embarcá-lo.
O oF já possui um tipo padrão que é utilizado para conectar-se ao Arduino, implementando os
métodos mais utilizados9:
•
connect()
•
isInitialized()
•
disconnect()
•
sendAnalogPinReporting()
•
getAnalog()
•
sendByte()
•
getAnalogPinReporting()
•
sendDigital()
•
getDigital()
•
sendDigitalPinMode()
•
getDigitalPinMode()
•
sendPwm()
•
getPwm()
•
sendReset()
•
getString()
•
sendString()
•
isArduinoReady()
•
setUseDelay()
•
update()
9http://www.openframeworks.cc/documentation/arduino/ofArduino.html
125
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Para este exemplo, serão utilizados três componentes: um LED ligado ao pino digital 11, um botão
ligado ao pino digital 02 e um potenciômetro ligado ao pino analógico 05.
Configurando o Arduino
Para utilizar a biblioteca Firmata, deve-se carregá-la no Arduino: Execute a IDE do Arduino, abra
o menu ExamplesàFirmataàStandardFirmata sketch e faça o upload no Arduino.
A Figura 1.27 mostra um exemplo do circuito montado e a representação das ligações:
(a) Montagem do Arduino
(b) Representação das ligações10
Figura 1.27. Circuito montado10
10
A representação das ligações foi feito com o software gratuito e open-source: http://fritzing.org/home/
126
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Configurando o oF
Para configurar o oF, deve-se realizar a instância do tipo na classe base do oF. Para saber se o
Arduino foi configurado corretamente, pode ser utilizado uma variável booleana de flag. Algumas
funções auxiliares são utilizadas como callback para a configuração, alteração do pino analógico e do
digital e para manusear a atualização. Estão adicionados mais dois strings apenas para exibir o status
dos elementos digitais e analógicos.
class testApp : public ofBaseApp{
...
ofArduino ard;
bool bSetupArduino;
private:
void setupArduino(const int & version);
void digitalPinChanged(const int & pinNum);
void analogPinChanged(const int & pinNum);
void updateArduino();
string buttonState;
string potValue;
...}
Figura 1.28. Instância dos itens.
A configuração do Arduino se dá em duas etapas: a primeira etapa é a conexão serial e a configuração da função, que será chamada após receber a notificação do Arduino, indicando que está pronto
para utilização; a segunda etapa é a configuração das funções dos pinos.
127
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
void testApp::setup(){
...
ard.connect(“COM3”,57600); // conexão
// listen for EInitialized notification e chama o callback de setup
ofAddListener(ard.EInitialized, this, &testApp::setupArduino);
bSetupArduino= false;// flag que o Arduino está pronto
...}
void testApp::setupArduino(const int & version) {
// Remove o listener de setup e habilita o flag de permissão
ofRemoveListener(ard.EInitialized, this, &testApp::setupArduino);
bSetupArduino = true;
ard.sendDigitalPinMode(11, ARD_PWM); // pino do led: pino digital 11.
ard.sendDigitalPinMode(2, ARD_INPUT); // pino do botão: pino digital 02
ard.sendAnalogPinReporting(5, ARD_ANALOG); // pino do potenciomento: pino
analógico 05;
// Listeners para o recebimento de dado digital e analógico
ofAddListener(ard.EDigitalPinChanged, this, &testApp::digitalPinChanged);
ofAddListener(ard.EAnalogPinChanged, this, &testApp::analogPinChanged);
}
Figura 1.29. Configuração
A atualização dos dados é realizada constantemente, verificando o flag para testar se o envio já
está habilitado.
void testApp::update(){
updateArduino();}
void testApp::updateArduino(){
ard.update();
if (bSetupArduino) { // não envia nada até estar pronto }
}
Figura 1.30. Rotina que atualiza para receber e enviar novos dados.
128
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Toda vez que um dado é recebido, é necessário chamar uma função que manipula estes dados. No
caso do exemplo, são considerados o dado digital e o dado analógico. Para exemplificar, na recepção
está sendo alterado o valor da string, com o número do pino e o dado recebido.
void testApp::digitalPinChanged(const int & pinNum) {
// Faça algo com o dado digital recebido
buttonState = “digital pin: “ + ofToString(pinNum) + “ = “ + ofToString(ard.
getDigital(pinNum));
}
void testApp::analogPinChanged(const int & pinNum) {
// faça algo com o dado analógico recebido
potValue = “analog pin: “ + ofToString(pinNum) + “ = “ + ofToString(ard.getAnalog(pinNum));
}
Figura 1.31. Funções que verificam o recebimento de dado.
Para exemplificar, o resultado pode ser adicionado na função draw, indicando o valor do potenciômetro e do botão pressionado (alimentados pelas funções digitalPinChanged e anlogPinChanged.
void testApp::draw(){
if (!bSetupArduino){
ofDrawBitmapString(“arduino not ready...\n”, 40, 40);
} else {
ofDrawBitmapString(potValue + “\n” + buttonState, 40, 40);
}
}
Figura 1.32. Rotina de exibição.
As interações com o Arduino podem ser realizadas pelo teclado, mouse, etc. No exemplo,
seguem as interações via teclado, pela tecla a ou s, e pelo mouse.
129
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
void testApp::keyPressed
(int key){
switch (key) {
case ‘a’: case ‘A’: ard.sendDigital(7, ARD_HIGH); break;
case ‘s’: case ‘S’: ard.sendDigital(7, ARD_LOW); break;
default: break;
}
}
void testApp::mousePressed(int x, int y, int button){
// liga o led
ard.sendDigital(7, ARD_HIGH);}
void testApp::mouseReleased(int x, int y, int button){
// desliga o led
ard.sendDigital(7, ARD_LOW);}
Figura 1.33. Interações.
A execução do programa gera a tela da Figura 1.34.
Figura 1.34. Exemplo de execução.
1.8.2 Artefatos
Os artefatos de interação continuam os mesmos, sendo que a diferença é do artefato de infraestrutura, contendo a localização grafada dos elementos reais. Este caso inclui a utilização do artefato de
hardware no loop de interação.
1.8.3 Código
Como visto no exemplo da sessão de teoria deste caso, para inserir o Arduino, é necessário fazer
sua instância (ofArduino) e criar alguns métodos callbacks (setupArduino, digitalPinChange, analo130
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
gPinChange) para tratar os eventos. Nos métodos de tratamento das alterações de pinos, são capturadas
as informações de interação do elemento computacional.
As interações propostas para este caso estão descritas no diagrama de estados da Figura 1.35, no
qual o usuário pode, via um botão físico ou um botão virtual, acender/apagar um LED e um feixe de
luz virtual, e controlar sua intensidade utilizando um potenciômetro e a direção usando um dos dedos.
Figura 1.35. Diagrama de estados da interação.
Para fazer essa interação de exemplo, é necessário apenas um dedo. Logo, deve-se utilizar duas
características desse dedo: sua existência e sua posição, para respectivamente adaptar o formato da luz;
e para acionar o botão virtual e a mudança de direção.
As posições de interação (botão virtual e localização da lâmpada) devem ser registrados em duas
variáveis do tipo ofPoint (ledPosicao, botaoVirtualPosicao), o que facilita o manuseio vetorial.
Os elementos físicos tem um espelhamento de variáveis indicativas no software (botaoRealStatus,
ledStatus), bem como o status do botão virtual (botaoVirtualStatus).
As interações vindas do hardware podem ser colocadas nos call-backs, como visto na Figura 1.36,
que mostra o tratamento do dado analógico e o da alteração de estado do LED através do botão. Neste
exemplo, a saída para o hardware é só a alteração do estado do LED.
131
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
void testApp::digitalPinChanged(const int & pinNum) {
if(botaoRealStatus == false && ard.getDigital(pinNum) == 1) // pega edge positivo
do click
if(ledStatus == true) { // caso o led esteja on -> apaga
ledStatus = false;
ard.sendDigital(7, ARD_LOW);
} else { // caso o led esteja off -> acende
ledStatus = true;
ard.sendDigital(7, ARD_HIGH);
}
botaoRealStatus = ard.getDigital(pinNum);}
void testApp::analogPinChanged(const int & pinNum) {
intensidade = ard.getAnalog(pinNum);}
Figura 1.36. Métodos de tratamento da entrada de interação com hardware.
Todas as interações podem ser colocadas no método draw, visto na Figura X.
void testApp::draw(){
// ...
warper.begin();// contexto de deformação do warper
drawTarget(&markYellow);// TRATA IDENTIFICADOR DO INTERADOR
if(ledStatus){ // TRATA INTERAÇÃO DE FORMATO DO FEIXE
if(markYellow.status){ // se o led está on desenha feixe.
ofSetLineWidth(this->intensidade);
ofSetColor(ofColor::white); ofLine(ledPosicao,markYellow.position); ofSetLineWidth(1);
}else{// se o led está on desenha luz
ofSetColor(ofColor::white);
ofCircle(ledPosicao,intensidade/100);}
}
// ...
}
Figura 37. Interação de posição e formato do feixe.
A sequência de Figuras 1.38 mostra o resultado da interação com realidade cruzada projetiva,
onde a câmera captura os marcadores, projeta a camada virtual e um hardware é adicionado no loop
de interação. A Figura 1.38a mostra a aplicação calibrada, rastreando o anel amarelo; 1.38b mostra a
132
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
interação com o hardware para acender o LED e o feixe de luz virtual. O LED é o elemento que ilustra a
sobreposição das camadas virtual e real. A Figura 1.38c mostra o feixe de luz seguindo o anel; A Figura
1.38d mostra o anel sobre o botão com a imagem que é projetada na Figura 1.38e; e na Figura 1.38f é
mostrado um close no anel acionando o botão virtual, que possui a mesma função do botão real sendo
o exemplo de não sobreposição das camadas.
(a) Aplicação calibrada rastreando.
(b) Realizando interação com o botão,
para acender o LED e o feixe de luz.
(c) Feixe seguindo o anel.
(d) Movimentando anel.
(e) Vista do que é projetado.
(f) Sobre o botão, apaga-se o feixe.
Figura 1.38. Sequencia de eventos do exemplo de Realidade Cruzada Projetiva
133
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
1.8.4 Usos
A utilidade de ter um hardware de manipulação permite aumentar a capacidade dos artefatos
tangíveis das interfaces, sendo que algumas sugestões de aplicações são:
• Bancadas didáticas interativas: controle do equipamento e visualização do resultado projetado.
• Interação com retroprojeção: captura do toque no vidro, para controle de equipamentos.
• Objetos inteligentes: objetos inteligentes que transmitem informação para sincronizar com
a projeção (IoT).
1.9 Considerações finais
Este capítulo visou apresentar a abordagem de realidade cruzada projetiva.
A utilização de visão computacional, mesmo que simplificada, via rastreio de cores possibilita
interações numa interface de realidade aumentada projetada.
Hardware no loop de interação de realidade aumentada permite a fusão com sensores e atuadores,
característico de mundos ubíquos, criando um ambiente de realidade cruzada. O ambiente de realidade cruzada beneficia-se do conceito de internet das coisas, tratando a forma de interconexão dos
elementos eletrônicos potencializados com realidade aumentada.
Este capítulo trouxe como exemplo de implementação o ferramental openFrameworks que é gratuito, open-source (Licença MIT) e multi-plataforma. Como sugestão de livro e aprofundamento neste
ferramental, aconselhamos o livro “Programming Interactivity” [Noble 2009] da O’Reilly e os tutorais
do site do openFrameworks.
Referências
Kirner, C. (2011) “Prototipagem rápida de aplicações interativas de realidade aumentada”. In: Tendências e
Técnicas em Realidade Virtual e Aumentada. Porto Alegre: SBC. p. 29–54. Disponível em: <http://ckirner.com/
download/capitulos/Prot-Rapida-RA-CK.pdf>. Acesso em: 15/03/2014.
Schroeder, R. (2008) “Defining virtual worlds and virtual environments”. Journal of Virtual Worlds Research. Disponível em: <http://journals.tdl.org/jvwr/article /view/294>. Acesso em: 15/03/2014.
Weiser, M. (1993) “Hot topics - ubiquitous computing. Computer, v. 26, n. 10, p. 71–72, 1993. ISSN 0018-9162.
Kirner, C.; Cerqueira, C. S.; Kirner, T. G. (2012) “Using augmented reality cognitive artifacts in education and virtual rehabilitation”. In: Virtual Reality in Psychological, Medical and Pedagogical Applications.
InTech. p. 247–270. ISBN 9789535107.
Ashton, K. (2009) “That ‘Internet of Things’ Thing”. In RFID Journal. Disponível em: <http://www.rfidjournal.com/articles/view?4986>. Acesso em: 15/03/2014.
134
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Betters, E. (2014) “Internet of Things Explained: What is it, and can it really change the world?”. In: Pocket-lint. Disponível em: <http://www.pocket-lint.com/news/126559-internet-of-things-explained-what-is-it-andcan-it-really-change-the-world>. Acesso em: 15/03/2014.
CERP (2009) “Strategic Research Roadmap”. Disponível em: <http://www.grifs-project.eu/data/File/CERP
-IoT%20SRA_IoT_v11.pdf>. Acesso em: 15/03/2014.
Watson, T.; (2007) “Laser Tag 2.0”. Graffiti Research Lab. Disponível em: <http://www.muonics.net/blog/
index.php?postid=26>. Acesso em: 15/03/2014.
Mistry, P. (2011) “sixthsense – integrating information with the real world. Disponível em: < http://www.
pranavmistry.com/projects/sixthsense/>. Acesso em: 15/03/2014.
Ziola, R., Grampurohit, S., Nate, L., Fogarty, J., Harrison, B. (2011) OASIS: Creating Smart Objects with Dynamic Digital Behavior, Workshop at IUI 2011. Disponível em: <http://www.ryderziola.ca/research/oasis_iui_workshop.pdf>. Acesso em: 13/02/2014.
Underkoffler, J.; Chak, D.; Santos, D.; Ishii, H. (1998) “I/O Bulb and Luminous Room” – Tangible
Media Group. Disponível em: <http://tangible.media.mit.edu/project.php?recid=73>. Acesso em: 15/03/2014.
Patten, J.; Pangaro, G. A.; Reynolds, M.; Alonso, J.; Panganiban, J.; Hines, J.; Ishii, H. (2002)
“Sensetable” – Tangible Media Group. Disponível em: <http://tangible.media.mit.edu/project/sensetable/>.
Acesso em: 15/03/2014.
Pattern Studio (2014) “Sensetable”. Disponível em: <http://www.pattenstudio.com/projects/sensetable/>. Acesso em: 15/03/2014.
Meike, R. (2012) “Arduino Uno vs Beagle Bone vs Raspberry Pi”. Disponível em: <http://digitaldiner.blogspot.
in/2012/10/arduino-uno-vs-beaglebone-vs-raspberry.html>. Acesso em: 15/03/2014.
Wikipedia (2014) “List of widget toolkits”. 2014. Online. Disponível em: <http://en.wikipedia.org/wiki/List_of_
widget_toolkits>. Acesso em: 27/01/2014.
Noble, J. (2009) “Programming Interactivity: A Designer’s Guide to Processing, Arduino, and Openframeworks”. 1st. ed. O’Reilly Media, Inc., 2009. ISBN 0596154143, 9780596154141.
OpenCV (2013) “OpenCV Documentation”. Disponível em: <http://docs.opencv.org/index.html>. Acesso em:
15/03/2014.
Smith, A. R. (1978). “Color Gamut Transform Pairs”. In SIGGRAPH 78 Conference Proceedings. Disponível
em: <http://alvyray.com/Papers/CG/color78.pdf>. Acesso em: 15/03/2014.
Foley, J. D.; Dam, A. van; Feiner, S. K.; Hughes, J. F. (1990) “Computer graphics: principles and practice”
(2nd ed.). Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc., 1990. ISBN 0-201-12110-7.
135
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 103-136, maio/2014.
Cerqueira, Christopher Shneider; Kirner, Claudio. Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO.
Wikipedia (2014). “HSL and HSV”. Disponível em: <http://en.wikipedia.org/wiki/HSV_color_space>. Acesso
em: 15/03/2014.
Bimber, O.; Raskar, R. (2005) “Spatial Augmented Reality: Merging Real and Virtual Worlds”. A. K. Peters,
Ltd., Natick, MA, USA. Disponível em: <http://140.78.90.140/medien/ar/SpatialAR/download.php>. Acesso em:
15/03/2014.
Cassinelli A.; Bergström, N. (2014). “ofxCvCameraProjectorCalibration”. Disponível em: <https://github.com/kikko/ofxCvCameraProjectorCalibration>. Acesso em: 15/03/2014.
136
137
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
Interação Gestual em Ambientes Tridimensionais
Maria Amelia Eliseo
Darlan Silva Alves Delmondes
Abstract
This chapter shows hand gesture interaction possibilities which users can manipulate virtual objects
similarly to the real world. Nontraditional interfaces do the communication human-computer more natural by speech, movements of the body, writing and others. In this context, presents the computational
architecture and its components to create gesture interfaces to handle 3D environment. Describe the GestualJS framework to gestures recognition and web application integration. Finally, discusses the efficiency
of this communication in multimedia system and virtual reality.
Resumo
Este capítulo apresenta possibilidades de interação gestual através das mãos onde usuários podem manipular objetos virtuais de forma similar ao mundo real. As interfaces não tradicionais oferecem um modo
natural de comunicação humano-computador através da fala, movimentos corporais, escrita, dentre
outros. Neste contexto, mostra a arquitetura computacional e seus componentes para a criação de interfaces gestuais na manipulação de ambientes 3D. Descreve o framework GestualJS para o reconhecimento
de gestos e integração com aplicações web. Por fim, discute a eficiência deste tipo de comunicação em
sistemas multimídia e de realidade virtual.
1.1 Introdução
Cada vez mais os modos naturais de comunicação entre humano e computador fazem presentes
nos mais variados sistemas computacionais. Trata-se de interfaces que exigem ferramentas e características que se inspiram nos princípios das ações humanas. Por isso, tornam-se mais acessíveis e fáceis
de aprender. A fala, o olhar, os movimentos do corpo tem sido explorados no sentido de aprimorar as
interações entre o usuário e o ambiente virtual com mais expressividade e naturalidade.
137
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
Gestos como movimentar o corpo ou as mãos ou apontar com os dedos também são formas naturais da comunicação humana no mundo real. Muitas aplicações baseadas nos gestos das mãos têm
surgido na última década. Tem-se utilizado os princípios da visão computacional para reconhecer os
gestos das mãos como alternativa ao uso do mouse, deixando o diálogo mais natural.
Neste contexto este capítulo visa apresentar ao leitor as possibilidades de interações não tradicionais, especialmente as interações gestuais, em ambientes 3D e discutir a eficiência deste tipo de comunicação em sistemas multimídia e de realidade virtual. Apesar de ser um tema explorado na década
passada, as interfaces naturais vem sendo desenvolvidas para oferecer mais flexibilidade nas interações
do usuário, até mesmo em sistemas web. Portanto, discute as possibilidades de interação com interfaces
gestuais de usuário e suas particularidades. Descreve o framework GestualJS, que permite a inclusão
de interações gestuais através das mãos em aplicações web. Mostra a arquitetura computacional e os
devidos componentes para a criação destas interfaces para manipulação de ambientes 3D. O capítulo
está estruturado da forma a cobrir os assuntos mais importantes sobre as interfaces gestuais através das
mãos baseadas em visão computacional. A seção 1 fornece uma introdução às interações humanas e
aborda as interfaces não tradicionais que envolvem os sentidos humanos, suas características e o estado
da arte. A seção 2, por sua vez, apresenta as interfaces do usuário não tradicionais, que usam voz, gestos
e visão como forma de interação em sistemas multimídia e de realidade virtual. Já a seção 3 discute a
interação gestual, onde será apresentada a arquitetura computacional para a criação de interfaces gestuais na manipulação de ambientes virtual. A seção 4 apresenta o framework GestualJS, desenvolvido
em JavaScript para o reconhecimento gestual das mãos e a integração com o ambiente web, descreve a
elaboração de uma interface gestual para manipulação de objetos 3D para uma aplicação web, além de
demonstrar outras possibilidades de aplicações deste tipo de interface. Finalmente a seção 5 apresenta
as considerações finais e conclui o capítulo.
1.2 As Interfaces do Usuário
A criação de sistemas interativos pressupõe o entendimento do ser humano, suas características,
ações e reações diante das diversas situações rotineiras. Quanto maior o conhecimento do ser humano
maiores são as chances de conceber um sistema com interações que funcionam tal como pretendido.
Para fazer coisas os humanos usam sensores, o cérebro e responders. Diante de um computador um
usuário monitora o estado do computador com os sensores e através dos responders controla o estado
do mesmo. A interface é onde ocorrem os eventos comportamentais necessários à interação. Os cinco
sentidos humanos (visão, audição, tato, paladar e olfato), meios pelos quais são percebidos os fenômenos físicos, recebem e convertem sinais elétricos nervosos, processados no cérebro, em ondas sonoras,
raios luminosos, sabores, odores e contato físico, e se constituem nos sensores que percebem o ambiente ao redor. Através do movimento os humanos podem modificar este ambiente, com os responders, ou
seja, controladores utilizados para realizar uma intervenção, como por exemplo, usar um dedo para
escrever uma mensagem no celular, os pés para andar ou correr, as cordas vocais para falar, dentre
outros [Mackenzie, 2013].
A comunicação humana se utiliza destes canais sensoriais para capturar, processar e trocar informação que pode ser realizada através da fala, de gestos, de expressões faciais, etc. Canais estes que não
138
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
são exclusivos. Observando-se uma conversa entre duas ou mais pessoas, além da fala, elas gesticulam,
apontam objetos, demonstram emoções e sentimentos e isso ocorre simultaneamente.
A criação de interfaces de usuário tem considerado essa dimensão multissensorial da comunicação humana e envolvido os sentidos humanos na tentativa de estabelecer um diálogo mais natural
com o computador. Há uma variedade delas, conhecidas como interfaces não tradicionais, pois saem
da convencional interação com teclado e mouse, como por exemplo, as interfaces táteis, que usam as
sensações de toque para fornecer informações ao usuário; as interfaces de locomoção, que permitem
o usuário se mover ou girar no mundo real ou virtual de tal forma a provocar uma sensação de deslocamento, como nadar, escorregar, correr, pular, voar e assim por diante; as interfaces gestuais, que
usam as mãos ou os movimentos da face ou o olhar para controlar o computador; as interfaces de áudio
para enviar mensagens sonoras; as interfaces de voz, que codificam a voz humana para estabelecer um
diálogo entre o sistema automatizado e o usuário. Pouco exploradas, ainda há as interfaces olfativas,
utilizadas em situações onde são necessárias mensagens mais amplas com transmissão de cheiros e
interfaces gustativas que representam um sabor específico para simular o paladar real [Kortum 2008].
Com o aumento das possibilidades de interfaces não tradicionais e considerando a dimensão multissensorial da comunicação humana surgem as interfaces multimodais. São interfaces onde uma tarefa é realizada usando uma ou mais interfaces como alternativa ou usando uma combinação de interfaces simultaneamente. Com a tecnologia aumentando a quantidade de dispositivos e aplicativos usados
no dia a dia para organizar, entreter, informar, é razoável que a interface do usuário também acompanhe este ritmo. Como cada usuário e cada tipo de aplicativo tem uma necessidade diferente podem-se
fornecer alternativas de interações oferecendo mais de uma modalidade de interface. A tarefa não exige
que as interfaces oferecidas sejam utilizadas simultaneamente, ou seja, elas são mutuamente exclusivas,
dando a oportunidade de escolha ao usuário, que poderá se adequar aquilo que for melhor para ele
executar a ação desejada. Estas são as chamadas interfaces multimodais mutuamente exclusivas.
Por outro lado, na direção contrária as interfaces multimodais mutuamente exclusivas há as interfaces multimodais que requerem ou permitem ao usuário interagir com o sistema com mais de uma
interface ao mesmo tempo, ou seja, são as interfaces multimodais mutuamente inclusivas. Por exemplo, sistemas que combinam as interfaces de reconhecimento de fala e resposta de voz interativa, ou
sistemas que combinam interfaces de áudio e visão para criar interfaces efetivas. Sistemas de realidade
virtual são bons exemplos disso, onde as interfaces de visão, audição, fala, táteis e gestos são combinados em uma única experiência integrada. A Figura 1 mostra um treinamento para uso de paraquedas
com interface multimodal, combinando visão e locomoção.
Diante destas diversidades, as interfaces não tradicionais pretendem oferecer mais transparência,
flexibilidade e eficiência nas interações humano-computador. Há uma expectativa de que sejam mais
fáceis de entender, de manipular e sejam utilizadas em várias aplicações, como sistemas multimídia,
de realidade virtual, de segurança, aplicações web, etc. O desafio na implementação destas interfaces
é o reconhecimento das diferentes modalidades como dados computacionais, combinando-os com as
restrições temporais e contextuais de forma a permitir sua interpretação. A finalidade de desenvolver
uma interface que envolva os sentidos humanos não é fazer da sensação uma interface em si, mas desenvolver uma interface mais eficiente para uma dada aplicação.
139
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
Figura 1. Usuário usando um sistema de realidade virtual com interface multimodal que envolve visão e
locomoção durante o treinamento para uso de paraquedas.
1.3 A Interação Gestual em Ambientes 3D
Os gestos são uma forma natural de comunicação não verbal realizada através de movimentos do
corpo e do rosto. De certa forma complementa a comunicação verbal. Este é o conceito considerado
para a elaboração de interfaces gestuais, que podem ser vistas como uma alternativa ou complemento
para interfaces existentes [Kortum, 2008]. A interação gestual tem sido aplicada em dispositivos móveis e telas sensíveis ao toque que reagem ao posicionamento e movimento dos dedos do usuário, como
deslocar, rotacionar ou dar zoom numa imagem da tela, como mostra a Figura 2.
Figura 2. Os dedos tocam a superfície da tela e escorregam para acionar comandos.
As interfaces gestuais envolvem movimentos das mãos e dos dedos para apontar ou controlar objetos, em substituição ao ponteiro do mouse, conforme as funcionalidades específicas da aplicação. Também podem envolver gestos faciais que captam as expressões do rosto e detectam reações e emoções.
Dentre as aplicações que fazem uso de interfaces gestuais específicas para reconhecer os movimentos das mãos podemos citar o reconhecimento da linguagem japonesa de sinais [Tanibata, Shima140
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
da e Shirai, 2002], o Gestix, para dar suporte à navegação e manipulação de imagens em um banco de
dados de prontuário eletrônico [Wachs, Stern, Edan, Gillam, Feied, Smith e Handler 2008], o sistema
Wearable Augmented Reality for Personal, Intelligent, and Networked Gaming (WARPING) para interação em games [Starner, Leibe, Singletary e Pair, 2000], dentre outros.
1.3.1 Reconhecimento de gestos das mãos
O reconhecimento das mãos pelo computador pode ser feito de várias maneiras. Uma delas é através de sensores óticos ou eletromagnéticos, como as datagloves (luvas de dados) exibidas na Figura 3,
que medem a flexão e os ângulos de abertura dos dedos além da posição do pulso. Neste caso o usuário
precisa vestir a luva de dados para interagir com o sistema em substituição ao mouse.
Figura 3. Dataglove
Outra forma de reconhecer o movimento das mãos é através da visão computacional que oferece
maior liberdade de movimentos, uma vez que serão detectados por uma câmera. Algoritmos de visão
computacional, muitas vezes consistem em três partes: segmentação que busca as partes relevantes
no campo da visão, rastreamento que segue os movimentos e classificação que encontra informações
significativas, sendo um desafio implementá-los [Kortum, 2008].
A segmentação detecta partes do corpo numa imagem, mãos, por exemplo, a qual depende da
forma, da cor ou de uma sequência de movimentos. Pode-se simplificar a segmentação usando um
refletor infravermelho ou marcações que sejam fáceis de serem identificadas ou segmentadas. O rastreamento segue uma série de características relacionadas ao movimento. A classificação detecta o
movimento real através de um padrão ou modelos de combinação.
Para construir uma interface eficiente e aceitável usando visão computacional, deve-se considerar
o tipo de câmera, as características da lente, detalhes das imagens e do fundo, as interferências externas, as condições de iluminação e os diferentes tipos de usuários [Wachs, Kölsch, Stern e Edan, 2011].
No entanto, com interfaces gestuais baseadas em visão computacional não há necessidade de “vestir”
141
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
algum equipamento como a dataglove, dando liberdade ao movimento, situação propícia numa interação com sistemas de realidade virtual.
Outro fator importante a ser considerado na criação de uma interface gestual é encontrar um
gesto apropriado para o algoritmo de reconhecimento que será utilizado uma determinada aplicação.
O processo para determinar se o gesto escolhido é adequado para a finalidade da aplicação envolve o
conhecimento das necessidades dos usuários, além de testes de avaliação e refinamento. O primeiro
passo é encontrar as funcionalidades que os gestos terão que acessar. A seguir, buscar gestos lógicos
que representam estas funcionalidades. Isso pode ser feito através de entrevistas ou experimentos
com pessoas submetidas a cenários que levem a tarefas que exijam aspectos técnicos da interface
pesquisada. Num terceiro momento, é realizado o processamento do dado considerando a seleção dos
gestos que serão considerados na interface. Finalmente realizar testes para mensurar a efetividade. Os
testes devem abordar os seguintes atributos: a interpretação semântica, generalização, facilidade de
uso, memorização e a forma de aprendizado e stress que o movimento demanda durante a execução
da tarefa [Kortum, 2008].
A interface gestual é uma forma de deixar a experiência do usuário mais natural e intuitiva. Por se
utilizar de movimentos físicos dos usuários, o uso prolongado deste tipo de interface pode levar ao cansaço físico. No entanto, sua implementação envolve desafios de ergonomia, usabilidade, tempo rápido
de resposta, alta precisão de reconhecimento, aspectos estes a serem observados para obter sucesso na
realização das tarefas.
1.4 Interface Gestual para Manipulação de Objetos Virtuais
Esta seção apresenta um framework para interfaces gestuais que auxilia na manipulação de objetos virtuais, o GestualJS. Devido sua arquitetura, pode ser utilizado em aplicações web inclusive
envolvendo recursos 3D. Baseado em visão computacional uma webcam detecta a mão do usuário e o
algoritmo reconhece alguns movimentos que são convertidos em comandos que substituem o mouse.
O código-fonte é aberto, permitindo aos desenvolvedores de interfaces adaptarem o framework conforme a necessidade da aplicação.
Devido à facilidade da interação, vários aplicativos que utilizam interface gestual baseado em
visão computacional têm surgido. Como exemplo, pode-se citar o Flutter que permite controlar o
Media Player com os gestos das mãos (https://flutterapp.com), a ferramenta de gestos da EyeSight
que permite interagir com as janelas do sistema operacional Windows (http://eyesight-tech.com/),
além do framework reveal.js desenvolvido para criar apresentações HTML (Hypertext Markup Language) onde o movimento das mãos é utilizado para avançar ou retroceder os slides da apresentação
(http://revealjs.com/).
O diferencial do framework GestualJS está na facilidade de implementação em aplicações web
e não tem necessidade de instalação local de nenhum outro aplicativo ou plug-in, ao contrário dos
exemplos citados acima. Alguns deles necessitam de instalação local, quando não, são instalados em
servidores fazendo uso de tecnologias de comunicação cliente/servidor, como o WebRTC. O GestualJS
se adequa à sintaxe padrão estabelecida pela W3C para tratamento de eventos em documentos HTML.
142
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
Além disso, não há necessidade de aquisição de nenhum dispositivo especializado para o reconhecimento de gestos, basta uma webcam.
1.4.1 Funcionalidades do GestualJs
GestualJS é um framework JavaScript orientado a objetos que permite aos elementos da estrutura
DOM (Document Object Model - Modelo de Objetos de Documentos) de um documento HTML responderem a ações disparadas através dos gestos das mãos humanas. Por ser um framework construído
a partir da linguagem JavaScript pode ser facilmente incorporado às aplicações web. A HTML possui
alguns manipuladores de eventos que podem ser disparados pelos usuários, por exemplo, quando um
botão é clicado ou mesmo quando se movimenta o mouse sobre um texto. Os usuários interagem com
os elementos da HTML através de eventos oriundos de diferentes dispositivos de entrada, tais como:
mouse, teclado, e mais recentemente, telas sensíveis ao toque [W3C 2013] e dispositivos de entrada de
áudio como o microfone [W3C 2012]. O GestualJS tem por objetivo aumentar o leque de dispositivos
de interação a medida que utiliza os gestos realizados através das mãos dos usuários para realizar uma
tarefa de uma forma mais natural ao ser humano. A ideia é fazer com que o usuário possa manipular
objetos virtuais da mesma forma como o faz no mundo real, como virar a página de um livro ou girar
um cubo com suas próprias mãos, sem a interferência de uma prótese, ou seja, algum dispositivo auxiliar como o mouse ou o teclado. A Figura 4 mostra a interação com um cubo através das mãos com
suporte do GestualJS.
Figura 4. Usuário interagindo com um cubo através das mãos com suporte do GestualJS
Como dito anteriormente, o core do framework baseado nos princípios da visão computacional,
detecta os movimentos da mão do usuário, através de uma webcam, estes são reconhecidos e transformados em uma ação no mundo virtual. Através da imagem detectada é feito um mapeamento que,
143
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
em seguida, é comparado a algumas características da mão humana. Para que a interação seja o mais
natural possível, a resposta às ações do usuário precisa ser rápida e precisa. Trata-se de um recurso, que
além de oferecer respostas rápidas, utiliza imagens como entrada de dados e tem a funcionalidade de
se adequar facilmente a aplicações web, que por sua vez podem ser visualizadas nos mais variados tipos
de tela, resoluções, configurações e ainda dependem da velocidade da conexão da rede. Outra variante
é o poder de processamento dos computadores conectados à internet. Por isso, a implementação do
GestualJS priorizou a otimização do processamento da máquina.
Essas características do ambiente exigiu a escolha de um algoritmo relativamente mais simples,
se comparado aos tradicionalmente utilizados em aplicações de reconhecimento de gestos. Por isso, as
aplicações que utilizam o GestualJS respondem aos gestos feitos pelo usuário em tempo real mesmo em
máquinas comuns conectadas à Internet.
Através de mapeamentos verticais e horizontais o algoritmo gera gráficos baseados em níveis de
cores, como característica invariante [Yang, Kriegman e Ahuja 2002] e contrastes, permitindo assim o
reconhecimento das características das mãos em posições variadas. Em seguida compara os mesmos
com um padrão predefinido de uma mão humana conforme o método de reconhecimento baseado em
conhecimentos [Yang, Kriegman e Ahuja, 2002]. Após a mesma ser detectada na área de visualização
da webcam, o algoritmo calcula o ponto médio do retângulo de “cobertura” da mão identificada, e
compara-a com o ponto médio do reconhecimento anterior, definindo deste modo, por meio do deslocamento das posições dos eixos cartesianos em ambas iterações, o sentido da movimentação das
mãos do usuários. A Figura 5 ilustra os gráficos gerados a partir dos níveis de cores e contrastes dos
mapeamentos horizontais e verticais da mão do usuário.
Figura 5. Mapeamentos horizontais e verticais utilizados no reconhecimento de padrões da mão humana
A Figura 6 mostra a mão do usuário à esquerda e a imagem detectada pela câmera durante a
fase de reconhecimento, à direita. Após a detecção, o algoritmo busca o ponto médio do retângulo
de cobertura da imagem quando a mão do usuário está na posição inicial (X1, Y1), conforme mostra a
144
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
Figura 7. Como a mão está se deslocando, a cada intervalo de tempo um novo cálculo do ponto médio
do retângulo de cobertura da imagem é realizado, como exibe a Figura 8. Para identificar a direção
do deslocamento, é calculada a diferença entre estes pontos médios, conforme ilustrado na Figura 9.
Figura 6. Detecção feita pela webcam (esquerda) e imagem na fase do reconhecimento dos padrões predefinidos (direita)
Figura 7. Detecção feita pela webcam e detecção do ponto médio quando a mão do usuário está na coordenada (X1, Y1)
Figura 8. Detecção feita pela webcam e detecção do ponto médio quando a mão do usuário está na coordenada (X 2, Y2)
145
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
Figura 9. Diferença entre os dois pontos médios encontrados nas duas detecções feitas pela webcam
(Figuras 7 e 8) e a identificação do sentido do deslocamento da mão do usuário
O fato do framework ser construído sobre a linguagem JavaScript permite encapsular todas as
etapas do reconhecimento em um plug-in orientado a objetos, dando ao desenvolvedor a possibilidade
de responder às interações através do tratamento de eventos, assim como ocorre com os manipuladores
tradicionais da HTML DOM. As Figuras 10 e 11 mostram um exemplo do tratamento de eventos. A
Figura 10 mostra como implementar o método “alert()” da linguagem JavaScript num evento “onload”.
A Figura 11 mostra como implementar o evento “onHandUp” do framework GestualJS, onde uma instância da classe Gestual precisou ser criada antes do evento.
Figura 10. Tratamento de eventos JavaScript
Figura 11. Tratamento de evento do framework GestualJS
146
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
A adoção do GestualJS permite que diversas aplicações ganhem rapidamente novas formas de
interação, por exemplo:
• Apresentações, para transcorrer entre os slides;
• Livros, para movimentar suas páginas;
• Álbuns de fotos, para navegar entre as fotos;
• Páginas web, para rolagens;
• Movimentação de objetos 3D.
1.4.2 Implementação de aplicações web com o GestualJS
A implementação de aplicações web com o framework GestualJS é fácil e pode ser feita através dos
seguintes passos:
• Fazer o download do arquivo gestual.js no formato JavaScript contendo o algoritmo do framework, em https://github.com/DarlanDelmondes/gestualjs.
• Importar o arquivo gestual.js no documento HTML através do código exemplificado na
Figura 12.
Figura 12. Código HTML para importar o arquivo gestual.js
•
Criar um elemento script do tipo JavaScript no documento HTML, como segue na Figura 13.
Observação: o elemento, apesar de ser do tipo script, não é o mesmo criado na importação
do framework.
Figura 13. Criação do elemento script no documento HTML
•
Instanciar um objeto do tipo GestualJS dentro do elemento script, criado no passo anterior,
como segue na figura 14.
Figura 14. Instância de um objeto do tipo Gestual
147
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
Tratar um dos novos eventos disponíveis no documento HTML (pela inclusão do framework GestualJS): “onHandUp”, “onHandDown”, “onHandLeft”, “onHandRight”. Passo exemplificado na figura
15, onde é mostrada uma mensagem para o usuário usando o método “alert()”.
Figura 15. Tratamento do evento “onHandUp”
Os movimentos das mãos do usuário reconhecidos pelo GestualJS durante a interação e seus respectivos eventos JavaScript são:
• Para cima (onHandUp);
• Para baixo (onHandDown);
• Para a direita (onHandDown);
• Para a esquerda (onHandLeft).
1.4.3 Implementação de aplicações web 3D com o GestualJS
O GestualJS integra-se aos diversos recursos que a HTML oferece, por exemplo, a visualização 3D
com X3DOM acrescentando à aplicação uma interação gestual. O mesmo poderá facilmente direcionar
as respostas dos eventos para modificações na visualização do ambiente 3D (na rotação de um determinado objeto, por exemplo). Segue abaixo as etapas para criar uma aplicação envolvendo X3DOM e
o framework GestualJS.
• Fazer o download do arquivo no formato JavaScript contendo o algoritmo do framework, em
https://github.com/DarlanDelmondes/gestualjs.
• Fazer o download dos arquivos para a renderização do ambiente 3D usando o X3DOM:
- CSS, em http://x3dom.org/x3dom/example/x3dom.css
- JavaScript, em http://x3dom.org/x3dom/example/x3dom.js
• Criar um elemento X3D contendo um objeto 3D, como mostra a Figura 16.
Figura 16. Código HTML para a criação de um elemento X3D contendo a cena de um quadrilátero
148
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
Inserir um atributo “id” no elemento “Transform”, conforme a Figura 17.
Figura 17. Inclusão do atributo “id” no elemento “Transform”.
•
•
•
•
Importar o arquivo do GestualJS no documento HTML através do trecho exemplificado na
Figura 12.
Criar um elemento script do tipo JavaScript no documento HTML, como segue na Figura 13.
Observação: o elemento, apesar de ser do tipo script, não é o mesmo criado para na importação do framework.
Instanciar um objeto do tipo GestualJS dentro deste último elemento script. Como segue na
Figura 14.
Tratar um dos novos eventos disponíveis no documento HTML (“onHandUp”, “onHandDown”, “onHandLeft”, “onHandRight”) para alterar o atributo “rotation” do objeto 3D, seguindo a Figura 18.
Figura 18. Tratamento do evento “onHandUp”
Apesar da finalidade principal do framework, em adicionar um recurso para uma interação gestual em aplicações web, o mesmo possui algumas limitações a serem observadas no momento de sua
implantação. O ambiente físico tem um importante papel no desempenho do framework, uma vez que
variáveis como iluminação, resolução das imagens detectadas pela webcam, objetos com características
semelhantes a de uma mão humana, a própria posição da mão diante da webcam, podem dificultar o
reconhecimento feito por parte do algoritmo do GestualJS.
Essas limitações podem aos poucos ser superadas com o aperfeiçoamento do algoritmo do GestualJS, inserindo novas abordagens relacionadas ao reconhecimento de objetos como as citadas por
[Yang, Kriegman e Ahuja 2002] [Wang e Sung, 1999] [Rowley, Baluja e Kanade, 1996]. Envolvendo
desde métodos baseados em conhecimentos pré-definidos, passando por métodos envolvendo características invariantes [Yang, Kriegman e Ahuja, 2002], até métodos que envolvam redes neurais, mas
sempre priorizando a otimização do processamento da máquina.
1.5 Considerações Finais
Gesto é a forma mais básica e expressiva da comunicação humana, por isso vem sendo explorado na criação de sistemas interativos. Através dele, pretende-se construir interfaces onde os usuários
149
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
realizam tarefas de forma mais natural e próxima do mundo real. As interações gestuais através das
mãos tem sido alternativa ao mouse em aplicações web, evidenciando a possibilidade de inclusão de interfaces multimodais neste ambiente. Vale lembrar que num ambiente web tem-se a preocupação com
o tempo de resposta, a velocidade de processamento através da rede, a característica multiplataforma,
elementos estes que dificultam a implantação de interfaces multimodais.
Ainda há alguns desafios na implementação de interfaces gestuais através das mãos baseadas em
visão computacional para aplicações web. O algoritmo utilizado neste processo envolve a detecção,
segmentação e reconhecimento do padrão. A detecção é um problema complexo, não apenas devido
à forma da mão humana, mas às condições das variáveis de iluminação, cor da pele e tamanho da
mão dos diferentes usuários. Durante o rastreamento podem surgir complicações devido a oclusões,
presença de outras pessoas, movimentos rápidos que deixam a imagem distorcida. Enfrentar esses desafios permite conseguir com precisão o reconhecimento da imagem. O reconhecimento não correto
do padrão da mão durante a interação compromete a realização da tarefa.
Embora as pesquisas focadas na área de interações gestuais baseadas em visão computacional não
sejam relativamente recentes, cada vez mais têm surgido aplicações com interfaces que se utilizam
destes recursos. Além de melhorias na precisão do reconhecimento da imagem, faz-se necessário um
estudo de usabilidade profundo no sentido de verificar satisfação do usuário, tempo de resposta, análise do domínio da tarefa, facilidade de aprendizado e adaptação.
Referências
Kortum, P., HCI Beyond the GUI - Design for Haptic, Speech, Olfactory, and Other Nontraditional Interfaces,
Morgan Kaufmann Publishers, 2008.
Mackenzie, I. S., Human-Computer Interaction - An Empirical Research Perspective, Morgan Kaufmann
Publishers, 2013.
Starner, T., Leibe, B., Singletary, B., and Pair, J. (2000) “MIND-WARPING: Towards creating a compelling collaborative augmented reality game”, In Proceedings of the Fifth International Conference on Intelligent User Interfaces, New Orleans, ACM Press, P. 256-259.
Tanibata, N., Shimada, N. and Shirai, Y. (2002) “Extraction of hand features for recognition of sign
language words”. In: Proceedings of the International Conference on Vision Interface (VI´02), Calgary, Canada,
p. 391-398.
W3C (2005) “Document Object Model (DOM)”, http://www.w3.org/DOM/, Março, 2104.
W3C (2012) “Web Speech API Specification”, https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html,
Março, 2104.
W3C (2013) “Touch Events”, http://www.w3.org/TR/touch-events/, Março, 2014.
150
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 137-151, maio/2014.
Eliseo, Maria Amelia; Delmondes, Darlan Silva Alves. Interação Gestual em Ambientes Tridimensionais.
Wachs, J., Kölsch, M., Stern, H. and Edan, Y. (2011) “Vision-Based Hand-Gesture Applications”,
Communications of ACM, v. 54, n. 2, p. 60-71.
Wachs, J., Stern, H., Edan, Y., Gillam, M., Feied, C., Smith, M., and Handler, J. (2008) “A hand
gesture sterile tool for browsing MRI images in the OR”, Journal of the American Medical Informatics Association, v. 15, p. 321-323
Wang, J.G. and Sung, E. (1999) “Frontal-view face detection and facial features extraction using color and
morphological operations”, Pattern Recognition Letters, v. 20, p. 1053-1068.
Yang, M. H., Kriegman, D. J. and Ahuja, N. (2002) “Detecting Faces in Images: A Survey”, IEEE Transactions on Pattern Analysis and Machine Intelligence, volume 24, issue 1, p. 34-58.
Rowley, H.A., Baluja, S. and Kanade, T. (1996) “Neural Network-Based Face Detection”, In Proceedings
of Computer Vision and Pattern Recognition, San Francisco, CA, IEEE Computer Society, p. 203-208.
151
152
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
O Uso de Dispositivos Móveis e Realidade
Aumentada em Ambientes Virtuais de Ensino e
Aprendizagem
Ilana de Almeida Souza-Concilio
Beatriz de Almeida Pacheco
Abstract
Based on the concepts of Distance Education and Hybrid Education as teaching-learning processes mediated by technologies and the strong familiarity of learners with technologies and digital devices (especially smartphones), this article aims to discuss the development of open educational resources and
learning objects of Augmented Reality integrated into mobile devices. A development methodology of
instructional strategy that prioritizes highly interactive processes is presented, and the possibility of generating resources in AR from the use of Aurasma tool is described in detail, promoting effective integration
between mobile, Learning Management Systems (LMS) and real and virtual environments.
Resumo
Partindo dos conceitos de Educação à Distância e Educação Híbrida como processos de ensino-aprendizado mediados por tecnologias e da grande familiaridade dos aprendizes com as tecnologias e dispositivos digitais (especialmente smartphones), este artigo visa fomentar a discussão sobre o desenvolvimento de recursos educacionais abertos e objetos de aprendizagem em Realidade Aumentada integrados a
dispositivos móveis. É apresentada uma metodologia de desenvolvimento de estratégia instrucional que
prioriza os processos altamente interativo, além de descrita detalhadamente a possibilidade de geração
de recursos em RA a partir do uso da ferramenta AURASMA, promovendo integração efetiva entre dispositivo móvel, ambiente virtual de ensino e aprendizagem, ambientes reais e virtuais.
1.1 Introdução
Moran (2002) define a educação a distância como um processo de ensino-aprendizagem mediado
por tecnologias, no qual professores e alunos estão separados espacial e/ou temporalmente.
152
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
No entanto, Litwin (2001) aponta que Educação a Distância não mais se caracteriza pela distância,
já que os encontros virtuais permitem uma educação eficiente, com alto nível de envolvimento dos
aprendizes. Para o autor, uma característica importante deste modo é a mediação das relações entre
professores e alunos.
Neste sentido, a possibilidade de mediação, tanto como uma estrutura para acesso e processamento de informações, quanto como um framework para a atividade de intercâmbio e colaboração provém
da alta qualidade de tecnologias emergentes. Se as estruturas das redes, de múltiplas complexidades,
são as novas tecnologias da computação, a atividade da rede é tão antiga quanto a humanidade, restringida apenas pelas condições espaço-temporais e as limitações técnicas dos equipamentos disponíveis.
Para melhorar os sistemas formais de educação a distância foram desenvolvidos os chamados
Sistemas de Gestão de Aprendizagem (LMS – do inglês, Learning Management Systems) ou Ambientes
Virtuais de Ensino e Aprendizagem (AVEAs) que são aplicações de software ou tecnologias baseadas na Web utilizadas para planejar, implementar, e acessar um processo de aprendizagem específico.
Normalmente, um sistema de gestão de aprendizagem fornece ao instrutor uma maneira de criar e
distribuir conteúdo, monitorar a participação dos alunos, e acompanhar o desempenho do aluno. Um
AVEA pode também proporcionar aos alunos a capacidade de usar recursos interativos tais como discussões, chats e fóruns de discussão. Em tais ambientes, mais e mais ferramentas estão disponíveis para
promover um processo mais rico de ensino e aprendizagem.
Vale ressaltar que o ambiente da rede é, por si só, colaborativo e incentivador da construção do
conhecimento, mas seu uso normalmente está associado aos processos educativos não formais. Na
educação formal, devido à necessidade de avaliação e controle de participação dos aprendizes, tais
ambientes mais controlados têm adquirido grande importância ao longo dos anos. A questão que se
apresenta a partir de seu uso é o fato dos recursos disponíveis muitas vezes serem pouco atrativos e o
ambiente acabar reproduzindo processos da educação presencial, tão questionada atualmente.
A Realidade Aumentada, por sua vez, é conhecida como uma interface não-tradicional. Juntamente com a Realidade Virtual e suas variações representam técnicas de interface computacional que
levam em conta o espaço tridimensional. Nesse espaço, é interessante que o usuário possa atuar de forma multissensorial [Kirner and Kirner, 2011]. Tais tecnologias despertam o interesse de pesquisadores,
devido ao desenvolvimento da tecnologia e suas aplicações, além de seus impactos sociais e culturais, e
de usuários, pela natureza das interações e alto grau de envolvimento que proporciona.
Assim sendo, uma das áreas que tem se beneficiado com as aplicações em RA é a educação. Enquanto existem diversos Objetos de Aprendizagem (produtos ou recursos educacionais dinâmicos)
desenvolvidos em RA, seu uso nos AVEAs ainda é pouco explorado. É sabido o impacto de tais OAs
no processo de ensino e aprendizagem, seja pelo aspecto inovador e até mesmo motivador, porém, no
processo de Educação a Distância ainda não raros os recursos que utilizam tal tecnologia. Assim, o uso
combinado de OAs em RA em Ambientes Virtuais pode significar importante incremento ao processo
educacional à medida em que se realiza o chamado blended learning.
Educação híbrida ou blended learning é um conceito que ainda não tem definição única. Em
um relatório sobre o mérito e potencial da educação mista, o Consórcio Sloan (2007) definiu cursos
híbridos como aqueles que “integram atividades online com atividades de ensino tradicionais face a
face de uma maneira pedagogicamente planejada”, ou seja, a essência do conceito é que a educação
153
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
híbrida utiliza a tecnologia online para não apenas complementar, mas transformar e melhorar o
processo de aprendizagem.
Assim, o sucesso e a eficiência de um AVEA são estabelecidos pela qualidade dos serviços oferecidos e da forma que são oferecidos, e não apenas pela sua estética [Albertin 1999] e o uso da computação
móvel e realidade aumentada pode incrementar esse tipo de processo educativo.
A computação móvel e RA, durante muitos anos, foram identificados como tecnologias promissoras no domínio digital. Mais recentemente, tornou-se possível assistir a uma convergência dos dois
- Ou seja, o surgimento da realidade aumentada móvel. Um número crescente de dispositivos são
capazes de executar uma variedade de aplicações de realidade aumentada móvel, e o processo de ensino-aprendizagem pode se beneficiar com estas tecnologias inovadoras.
De acordo com uma pesquisa realizada por Souza-Concilio e Pacheco (2013) com alunos de cursos
superiores relacionados com tecnologia e multimídia, foi possível observar o interesse no desenvolvimento de sistemas de Realidade Aumentada (RA) em várias áreas, principalmente na Educação. Ficou
evidente também a forte tendência no uso destas aplicações em dispositivos móveis.
Desta forma, este trabalho visa a discussão do uso de recursos por meio da interação com RA
Online hospedado em ambientes virtuais de ensino e aprendizagem como complemento do processo
tradicional de ensino, além de apresentação da aplicação móvel Aurasma. A proposta é apresentar
uma nova opção de ferramenta interativa a ser acrescentada como recurso em um AVEA de forma a
transformar a aprendizagem híbrida tornando o processo de ensino e aprendizagem mais interessante
e motivador para o aluno.
1.2 Ambientes Virtuais de Ensino e Aprendizagem e Educação Híbrida
Lencastre e Araujo [apud Santos Junior and Pereira 2011], afirmam que os novos desafios na escolarização contemporânea evidenciam os aspectos positivos e negativos dos encontros e desencontros
entre os atores e agentes educacionais, deixando- os mais distantes e, paradoxalmente, mais próximos,
já que a sala de aula tradicional deixou de ser o único espaço de aprendizagem, partilhando agora
parte desse espaço com a web, na busca da construção colaborativa da excelência acadêmica, já que
os estudantes têm acesso à informação onde quer que seja possível acesso à Internet e outras mídias
eletrônicas. Assim, argumentam que é necessário criar uma cultura de aprendizagem.
A evolução dos últimos anos têm visto Ambientes Virtuais de Aprendizagem baseados na web
(AVEAs) / Sistemas de Gest ão de conteúdo (SGCs) / Sistemas de Gestão de Aprendizagem (LMS)
tornarem-se rapidamente uma parte integrante do processo de ensino e de aprendizagem. Essa emergência progride incessantemente como educadores tentam adotar e adaptar tecnologias web 2.0 na
prestação de mais materiais didáticos interativos e ambientes de aprendizagem [Callaghan 2013].
AVEAs são aplicativos de software utilizados para estabelecer a comunicação professor - estudante e trabalha como uma interface para auxiliar o processo de e-learning. AVEAs são apoiados por várias
mídias e recursos, a fim de proporcionar ao educador a possibilidade de criar e distribuir conteúdo,
monitorar a participação e avaliar o desempenho dos alunos e proporciona-los a possibilidade de usar
recursos interativos, como discussões, fóruns e chats.
154
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
AVEAs como o Moodle, Blackboard e WebCT são comumente utilizados com sucesso tanto em
educação à distância [Graf et. al 2008] quanto em metodologias híbridas de ensino. Eles se destinam
a apoiar os professores na criação e gerenciamento de cursos on-line e proporcionar-lhes uma grande
variedade de recursos, que pode ser incluído no curso, tais como material de aprendizagem, questionários, fóruns de discussão, tarefas, e assim por diante.
De acordo com Alhazmi e Rahman (2012), os AVEAs ganharam popularidade e adoção ampla
como a tecnologia educacional mais dominante usado em faculdades e universidades em todo o mundo. Como os sistemas AVEAs podem avaliar a abraçar a tecnologia, tanto pelo instrutor e do aluno, tem
sido um tema de numerosos estudos [Alnifie, 2012].
Em tais ambientes, mais e mais ferramentas estão disponíveis para promover um processo mais
rico de ensino e aprendizagem. No entanto, Alhazmi e Rahman (2012) afirmam que existem muitos
problemas associados com estes sistemas. Estes incluem gerenciamento de conteúdo, uso indevido de
recursos, baixo nível de envolvimento do usuário, e a inflexibilidade de conduzir o processo de aprendizagem e avaliação.
Se por um lado a educação à distância é uma saída para os adultos que querem e necessitam estudar a vida inteira, por outro, ela impõe grandes desafios ao seu participante. Ele precisa desenvolver
habilidades especiais para conciliar seus compromissos familiares, profissionais e acadêmicos com o
estudo à distância [Abbad, 2007].
Desde 2007, já mostrava-se crescente o número de instituições de ensino credenciadas pelo Ministério da Educação (MEC) para ofertar cursos à distância ou para empregar modalidades híbridas de
ensino-aprendizagem como estratégia de democratização do acesso à educação [Abbad, 2007].
Nas formas híbridas (blended learning) de educação a distância, os encontros entre os atores – aluno-professor, aluno-aluno, aluno-material, professor-professor, entre outros – podem criar vínculos
que facilitem a aprendizagem, mantenham a motivação e aumentem as chances de permanência do
aluno até o final do curso. Entretanto, pouco se sabe sobre qual seria a frequência e a intensidade ideais
desses encontros presenciais, em diferentes tipos de curso (natureza, duração, número de alunos, perfil
do público-alvo, recursos disponíveis).
Apesar de não ser ainda possível uma perfeita substituição do encontro face a face ou da experiência de manipulação direta de um objeto de estudo, tecnologias interativas conseguem minimizar
substancialmente os efeitos da distância na aprendizagem [Tori. 2010]. Por este motivo a aprendizagem
a distância passou a se utilizar intensamente da tecnologia eletrônica como forma de aproximação
entre objetos reais e as situações de aprendizagem no ambiente virtual, o que fomentou o surgimento e
a evolução de ferramentas de comunicação, de autoria e de gerenciamento de cursos. Tal ferramental,
porém, ainda fica restrito ao domínio de professores e tutores quanto ao uso de recursos tecnológicos,
o que faz com que haja predomínio de recursos pouco interativos na maioria dos AVEAS, o que por
vezes, torna-os repositório de textos e apresentações ou ainda de vídeos de aulas presenciais.
Cada vez mais, porém, o design instrucional preocupa-se com tal realidade. Sua tendência é de,
num futuro próximo, se apoiar em uma mistura harmônica de atividades de aprendizagem realizadas
com recursos variados e em espaços e tempos variados.
A Figura 1.1 mostra a evolução e tendência do processo de ensino-aprendizagem sob os aspectos
presenciais e virtuais da educação [Tori, 2010].
155
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
PASSADO:
- Predomínio: aprendizagem presencial
- Sistemas totalmente separados
- Avanços nas tecnologias interativas
PRESENTE:
- Expansão dos sistemas AV
- Aproximação entre AP e AV
- Blended Learning (BL) em crescente expansão
FUTURO:
- Predomínio BL
- Novas tecnologias interativas aumentam a
sensação de presença e imersão
Figura 1.1. Evolução dos sistemas de aprendizagem virtual (AV) e convergência com a aprendizagem
presencial (AP). Adaptado de Tori (2010).
Bonk et. al (2005) apresenta as seguintes categorias de sistemas de aprendizagem híbrida:
• Permitindo misturas (blends): nesta categoria, o foco são em questões de acesso e de conveniência, por exemplo, misturas que se destinam a fornecer flexibilidade adicional para os
alunos ou misturas que tentam proporcionar as mesmas oportunidades ou experiência de
aprendizagem, mas através de uma modalidade diferente.
• Melhorando misturas: permite alterações incrementais para a pedagogia, mas não mudam
radicalmente a maneira como o ensino e a aprendizagem ocorrem. Isto pode ocorrer em ambas as extremidades do espectro. Por exemplo, num ambiente de aprendizagem tradicional
face a face, recursos adicionais e talvez alguns materiais suplementares podem ser incluídos.
• Transformando misturas: misturas que permitem uma transformação radical da pedagogia – por exemplo, uma mudança de um modelo onde os alunos são apenas receptores de
informação para um modelo em que os alunos constroem ativamente conhecimento através
de interações dinâmicas. Estes tipos de misturas de permitir a atividade intelectual que praticamente não era possível sem a tecnologia.
A diluição de várias metodologias que melhor se harmonizam aos estudos em consonância com
a aprendizagem mista, ou b-learning, permitem estabelecer uma maior proximidade, uma maior incidência no aluno, onde a aprendizagem é feita de forma mais construtivista [Carvalho, 2010].
Teorias de aprendizagem tem muitas implicações na concepção e utilização de tecnologias educacionais por meio das quais a teoria pode ser usada como uma lente para compreender e analisar os
processos envolvidos em um ambiente de aprendizagem. Assim, a maioria dos problemas relatados
referentes a AVEAs, seja em propostas de e-learning ou b-learning, são a subutilização de recursos
interativos e o baixo nível de envolvimento dos alunos do sistema [Wiley, 2000].
156
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
Dessa forma, a fim de reunir as experiências informais e formais dos alunos, e para lidar com
conceitos complexos de uma forma mais lúdica, surge no final do século XX o conceito de Objetos
de Aprendizagem (OAs), recurso digital projetado para propósitos educacionais que visam auxiliar o
aprendizado [Wiley, 2000].
1.3 Recursos Educacionais abertos e integrados a AVEAs: uma metodologia de desenvolvimento
Os Objetos de Aprendizagem são parte de uma área conhecida como Design Instrucional (DI).
Filatro (2008) define DI como “o processo (conjunto de atividades) para identificar um problema de
aprendizagem (a necessidade), projetar, implementar e avaliar uma solução para este problema”. Avanços na ciência da computação são significativos para o design instrucional, porque eles podem oferecer
ferramentas de aprendizagem baseadas em modelos mais variados e complexos, permitindo a criação
de repositórios com produtos educacionais dinâmicos (objetos de aprendizagem) que as instituições de
ensino, educadores e alunos têm acesso para consulta e estudo.
Willey (2000), define OA como “qualquer recurso digital que possa ser reutilizado para o suporte
ao ensino”. Sua concepção está inserida dentro das competências do profissional de design instrucional
(ou educacional – de acordo com algumas linhas de teóricos). Segundo a CBO (2007), suas competências são: (1) Acompanhar o desenvolvimento do trabalho docente/autor; (2) Assessorar o trabalho
docente; (3) Administrar a progressão da aprendizagem; (4) Acompanhar a produção dos alunos; (5)
Elaborar textos de orientação; (6) Produzir material de apoio pedagógico; (7) Observar o desempenho
das classes; (8) Sugerir mudanças no projeto pedagógico; (9) Administrar recursos de trabalho; (10)
Organizar encontro de educandos; e (11) Interpretar as relações que possibilitam ou impossibilitam a
emergência dos processos de ensinar
Assim, mais do que a concepção do material, é preciso contextualizá-lo no processo de ensino
-aprendizagem. Para tornar tal desenvolvimento possível, diversas abordagens têm sido propostas para
o desenvolvimento de metodologias educacionais. Dentre tais metodologias, os autores deste artigo
propõem a seguinte metodologia de composição de recursos educacionais, organizando ações em cinco etapas distintas:
a) Diagnóstico: uso de recursos para ajudar os professores a avaliar o conhecimento prévio dos
alunos sobre o conteúdo que será trabalhado. Este diagnóstico deve ser interativo, por meio de
questionários, jogos, fóruns de bate-papo;
b) Apresentação: uso dos recursos para enviar conteúdo para o aluno. Este passo, embora desejavelmente interativo, pode ser desenvolvido por meio de texto, animação, vídeos, entre
outros recursos;
c) Fixação: o uso de elementos com um alto nível de interatividade, que permitem ao aluno fixar
o conteúdo trabalhado;
d) Avaliação: o uso de recursos para diagnosticar se o processo de aprendizagem foi ou não foi
satisfatoriamente concluído;
157
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
e) A suplementação ou reforço: o uso de elementos adicionais que permitem aos alunos avançar
no conhecimento sobre os temas tratados na unidade de aprendizagem ou ajudar a superar as
dificuldades encontradas nele.
A adoção desta metodologia visa desenvolver habilidades e competências dos alunos para a auto
-aprendizagem, dessa forma ele passa a ser o protagonista de seu próprio processo de aprendizagem e
constrói seu conhecimento com autonomia. Quanto ao processo de aprendizagem, propriamente dito,
a metodologia proposta prioriza a interação com os alunos, à medida que incentiva o uso de materiais
altamente interativos, mais do que nas atividades de sala de aula, mas em todo o processo, a partir de
uma diversificação no uso de materiais e meios de comunicação para que o professor possa ser o promotor de um processo de ensino-aprendizagem rico e consistente.
No final do módulo (conceito trabalhado) é possível trabalhar um material complementar, que
aprofunde os conceitos estudados ou mesmo faça um reforço daqueles que o aluno teve uma baixa
compreensão.
Percebe-se então a configuração da linha de base de tal metodologia, altamente interativa, como
algo que prioriza a experiência do conhecimento, ou seja, os aprendizes experimentam recursos educacionais interativos e que se aproximam de suas atividades fora do contexto educacional formal (jogos,
dispositivos móveis, redes sociais).
Nesse processo de valorização da interatividade, os recursos educacionais abertos como um todo e
o paradigma de Objetos de Aprendizagem, em especial, abriu uma ampla gama de oportunidades para
facilitar a distribuição, compartilhamento e reutilização de materiais de aprendizagem, pelo menos do
ponto de vista técnico. Devido a este novo modelo, várias especificações e padrões foram propostos, a
fim de evitar a dependência de plataformas ou ferramentas específicas, e para facilitar o intercâmbio
dos conteúdos de aprendizagem entre as ferramentas. Como exemplos de OAs podem ser citados recursos não interativos, como imagens, vídeos, animações, textos e apresentações e interativos, como as
simulações, jogos, etc [Tori 2010].
1.4 Realidade Aumentada Móvel e Ensino
A Realidade Aumentada é a inserção de objetos virtuais no ambiente físico, mostrada ao usuário,
em tempo real, com o apoio de algum dispositivo tecnológico, usando a interface do ambiente real,
adaptada para visualizar e manipular os objetos reais e virtuais [Kirner and Kirner 2007].
Para Milgram (1994), a realidade aumentada é uma partícula da realidade misturada, na qual se
mistura o real e o virtual, onde a realidade aumentada utiliza-se predominantemente do ambiente real
e a Virtualidade Aumentada utiliza-se predominantemente do ambiente virtual, ou mundo virtual.
Para exemplificar isto, elaborou-se uma adaptação de realidade e virtualidade contínua em um diagrama definindo as possibilidades gradativas de sobreposições de RA e VA, conforme Figura 1.2.
158
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
Figura 1.2. Diagrama de realidade/virtualidade [Kirner and Kirner 2007] (adaptada de [Milgram 1994])
A Realidade Aumentada aplica-se em todos os sentidos humanos e proporciona ao usuário uma
interação segura, sem necessidade de treinamento, uma vez que ele pode trazer para o seu ambiente
real objetos virtuais, incrementando e aumentando a visão que ele tem do mundo real [Maturana 2001].
Isto é obtido por meio de técnicas de Visão Computacional e de Computação Gráfica/Realidade
Virtual, o que resulta na sobreposição de objetos virtuais com o ambiente real. Considerando o sentido
da visão, além de permitir que objetos virtuais possam ser introduzidos em ambientes reais, a Realidade Aumentada também proporciona ao usuário o manuseio desses objetos com as próprias mãos,
possibilitando uma interação natural e atrativa com o ambiente.
Helen Papagiannis, chefe de inovação na Infinity Augmented Reality Inc e listada pela NEXT entre
os 100 maiores influenciadores da Indústria de Mídia Digital de 2013 [Papagiannis, 2012], não limita a
RA apenas à experiência visual, mas também estende-se às sensações tátil, gustativa, olfativa e auditiva
e, Carmichael (2012) complementa que, em aplicações desta natureza, não há necessidade de substituir
as sensações, já que o usuário ainda estará trabalhando estes aspectos multissensoriais no mundo real, e
apenas terá este ambiente enriquecido com novas possibilidades de interação e sensações.
A RA pode estabelecer uma comunicação entre o indivíduo e o ambiente ao seu redor de forma
multissensorial, inteligente e informativa, proporcionando uma melhor relação entre as duas entidades
sem que o indivíduo precise se desconectar do real para ter acesso ao conteúdo digital e a informação
torna-se uma extensão do ambiente em que se encontra. A Realidade Aumentada permite a interação
com o ambiente misturado de forma mais agradável, atrativa e motivadora, pois pode eliminar o uso de
dispositivos tecnológicos, possibilitando que o usuário interaja com os elementos virtuais utilizando
as mãos [Santin et. al 2004].
Interessados na tecnologia de realidade aumentada, muitos pesquisadores vêm estudando uma
variedade de novas possibilidades de uso. Hoje, é possível encontrar sistemas de RA que reconhecem
qualquer imagem como um marcador, outros que não precisam de qualquer marcador para acionar
a representação do modelo 3D e há alguns deles que usam posicionamento GPS para posicionamento
espacial. Para este efeito, e por ser uma aplicação de baixo custo, o desenvolvimento de sistemas de RA
está se tornando mais popular e há muitos motores gratuitos que oferecem maneiras mais fáceis de
implementar aplicações para qualquer área de interesse.
A RA é uma tecnologia relativamente barata e de fácil implementação. Assim, os dispositivos
móveis tornaram-se uma plataforma atraente para o desenvolvimento de aplicações para a RA. Isso
159
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
se dá pelo fato da RA poder ser usada em muitos dispositivos móveis, como um meio de associação
do real para o ambiente virtual, que garante que o âmbito de uma tal solução pode incluir um número
maior de utilizadores.
Usando Realidade Aumentada em dispositivos móveis, é possível obter melhores resultados na satisfação de usar aplicativos independentemente da sua funcionalidade. A RA oferece ao usuário maior
interatividade e aumenta as chances de uso da aplicação. Acrescenta como diferencial em aplicações
para ter boas interfaces e seu uso dinâmico.
De acordo com Tori (2010), em termos do processo de integrar informações virtuais e reais em um
mesmo ambiente é uma forma bastante eficiente de colocar o aluno diante de conteúdos ou pessoas
distantes ou inacessíveis, sem retirar-lhe as percepções relativas ao ambiente real que o envolve.
Ao trabalhar processos de aprendizagem híbrida, o professor necessita estabelecer uma estrutura
apropriada para prover o ensino virtual, de forma que o aluno possa compreender à distância parte do
conteúdo proposto pelo programa. Desta forma, é preciso fornecer novas ferramentas interativas para
que o estudante seja motivado e para enriquecer seu aprendizado.
De acordo com Sessoms (2008), o surgimento de novas tecnologias e pesquisa sobre como as pessoas pensam está mudando a sala de aula. Novas ferramentas visam capacitor educadores para mudar
a forma que o ensino e aprendizagem ocorrem.
Se o objetivo do ensino pela tecnologia é transformar o processo de ensino e aprendizagem, este
deve ser a fundação para o programa de preparação de professores. Professores precisam de tempo e
direcionamento ao usar a tecnologia em geral.
Chegar ao nível dos alunos quanto ao uso das tecnologias pode ser alcançado preparando professores a pensar interativamente e ensinar interativamente. Criando um ambiente interativo de
aprendizagem é importante já que os alunos estão mudando e a informação está se tornando cada
vez mais acessível.
Assim, o uso combinado de OAs em RA em Ambientes Virtuais pode significar importante incremento ao processo educacional à medida em que se propõe a aprendizagem híbrida com foco na
categoria de transformar misturas (blends), proposta por Bonk (2005).
1.5 Aurasma
Visando facilitar, expandir e diversificar o uso de aplicações de realidade aumentada, algumas
ferramentas estão sendo disponibilizadas gratuitamente, como o Aurasma. A proposta deste trabalho
é utilizar o Aurasma como meio de fornecer recursos para que qualquer educador possa criar um OA
usando a realidade aumentada como meio facilitador e motivador de ensino. Este tipo de aplicação
interativa também pode ser facilmente manipulada pelo aluno.
O Aurasma pode ser considerado uma rede social que permite o desenvolvimento de aplicativos
de realidade aumentada simplificados e portáveis, mesclando os mundos físico e virtual. Disponível
em smartphones, o aplicativo foi criado a partir da tecnologia que é capaz de reconhecer imagens, símbolos e objetos do mundo real e pode apresentar conteúdo relevante em tempo real, incluindo vídeos,
animações, áudio ou páginas da web.
160
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
O aplicativo pode ser criado através do estúdio disponível na Web (http://studio.aurasma.com) ou
diretamente pelo smartphone. O sistema consiste de quatro componentes:
• Channels (canais): cada usuário pode criar canais na rede social Aurasma nos quais irão estar
disponibilizados suas auras (no caso, seus OAs).
• Trigger Images (imagens trigger): imagens pelas quais o sistema deverá reconhecer através da
câmera do dispositivo.
• Overlays (camadas de sobreposição): imagens, vídeos ou objetos 3D que irá sobrepor a imagem trigger quando a mesma for reconhecida pela dispositivo.
• Auras: são as aplicações de realidade aumentada, no caso, os OAs.
Para criar uma Aura, os seguintes passos devem ser seguidos:
1. Fazer upload de uma imagem trigger.
Ao clicar em Trigger Images, todas as imagens usadas em todas as auras do usuário serão
apresentadas. Para adicionar uma nova imagem, é necessário clicar em Add e a janela da
Figura 1.3 será apresentada.
Nesta nova janela, o usuário deverá digitar o nome da imagem, definir a posição (opcional),
fazer upload da imagem (Training Image -> Browse...) e também adicionar uma descrição
(também opcional).
Ao clicar em Save, a imagem selecionada aparecerá em Masking e o usuário poderá editá-la,
mudando sua forma, tamanho, opacidade entre outras opções.
2. Fazer upload de uma camada de sobreposição.
Ao clicar em Overlays, o sistema irá apresentar a lista de todas as camadas do usuário. Para
adicionar uma nova, é necessário clicar em Add e a janela da Figura 1.4 será apresentada.
Neste caso, o usuário deverá digitar o nome da overlay, selecionar o tipo que pode ser uma
imagem, um vídeo ou um modelo 3D, podendo também escrever uma descrição da camada.
Ao Salvar, o usuário poderá visualizar a camada selecionada.
Figura 1.3: Janela para adicionar nova imagem trigger
161
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
Figura 1.4. Janela para adicionar nova camada de sobreposição (overlay)
3. Criar um canal para inserir as auras.
Para encontrar conteúdo de interessse no Aurasma pelos dispositivos móveis, os usuários
procuram e se inscrevem em determinados canais. Todas as auras devem estar vinculadas a
um canal e seus usuários só poderão visualiza-las se estiverem inscritos nestes canais.
Ao se cadastrar no estúdio do Aurasma, um canal com o nome de usuário é automaticamente
criado. O usuário pode criar novos ou editar canais (Figura 1.5).
Ao editar (Edit) ou adicionar (Add) canais, é possível alterar a permissão de acesso aos mesmos, podendo ser público ou privado.
Um canal público pode ser encontrado e seguido por qualquer usuário do Aurasma e, no caso
do privado, é necessário que o “dono” do canal envie o link de inscrição a quem ele permite
acesso ao mesmo.
O usuário também deverá selecionar uma imagem que representara o canal na rede social do
Aurasma.
Figura1.5. Janela para criar novo canal
162
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
4. Configurar a aura e adicioná-la a determinado canal.
Após fazer upload da imagem trigger e da camada de overlay e criar/editar seu canal o usuário
deverá construir sua Aura, ou seja, seu OA de realidade aumentada.
Ao criar nova aura (Add), o usuário deverá nomear esta aura e selecionar (da lista disponível)
a imagem trigger, o canal e a camada de overlay (Figura 1.6).
Ao configurar a aura, o usuário encontrará também as opções de manipular restrições de
tempo e adicionar ações às overlays.
O usuário poderá selecionar: um toque para, assim que o usuário tocar uma vez nesta camada
de sobreposição ele será direcionado a um site na Web; ou dois toques para que o aplicativo
fique em modo de tela cheia.
É possível também trabalhar posicionamento e tamanho das camadas no exemplo de sobreposição apresentado nesta mesma janela.
Figura 1.6. Janela para configurar nova aura
Na versão móvel, após login, o aplicativo se inicia com a câmera para procurar uma aura. Ao
clicar no logo
, a janela principal será apresentada. Nesta janela, serão visualizadas as auras que o
usuário já manipulou e uma barra de ferramentas. Nesta barra existem as seguintes opções: criar nova
aura
, voltar à câmera
, buscar auras e canais
e visualizar o perfil do usuário
(seus
canais, auras, etc).
1.6 Considerações Finais
Pode-se afirmar que no contexto do uso de AVEAS na educação formal, seja como complemento
às aulas presenciais, seja na Educação a Distância, os materiais que os professores produzem e executam estão relacionados com as suas habilidades, histórias, repertório e cultura na qual estão inseridos.
163
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
No processo de design instrucional e na preparação de objetos de aprendizagem, conhecer as possibilidades tecnológicas e se apropriar delas é de fundamental importância. O papel do designer ou do
professor, aí, é ter uma reflexão crítica a partir de um determinado contexto para propor soluções que
se aproximem do universo dos aprendizes.
A Realidade Aumentada, dessa forma, é uma das tecnologias que pode ser explorada como possibilidade de recurso incrementador do processo de aprendizagem. Sua combinação com as tecnologias
móveis e os ambientes virtuais de aprendizagem caracteriza-se como forma de blended learning que
aproxima o universo do aprendiz ao da escola.
Para viabilizar a construção de OAS com tal tecnologia, porém, é importante que se discuta quais
são os conhecimentos prévios de professores e designers e propor uma metodologia simples de design
instrucional, que permita a criação de materiais de diversas naturezas e com diferentes graus de interatividade a partir de diversos recursos.
Nesse sentido, trabalhar com soluções como o AURASMA permite uma apropriação por parte
desses profissionais, de um novo paradigma de interface e, consequentemente, de interação, a medida
que se mistura o ambiente virtual ao real.
Dessa forma minimizam-se os problemas advindos da presença da informática nos domínios das
atividades escolares a partir do momento em que o uso de ferramentas simples que trabalham conceitos complexos são incluídas no cotidiano das atividades dos educadores. Assim, há uma diminuição
das “incertezas trazidas pela mídia” ao professor além de suas “características quantitativas e qualitativas novas em relação à memória”, o que caracteriza um “amplo trabalho de reflexão coletiva” [Borba
and Penteado, 2001].
Estas questões, observadas sob a ótica de uma metodologia simples e ágil de desenvolvimento de
conteúdo para AVEAS permite, então, de forma muito natural, relativamente simples e muito eficiente,
a aproximação entre o universo do aprendiz fora do ambiente escolar e seu ambiente de estudo.
Referências
Abbad, G.S. (2007) “Educação a distância: o estado da arte e o futuro necessário”, Revista do Serviço Público, Brasília: ENAP.
Albertin, A.L. (1999) “Comércio Eletrônico – Modelos, aspectos e Contribuições de sua Aplicação”. 3 ed.
São Paulo, SP: Editora Atlas.
Alhazmi, A. K. and Rahman A. A. (2012) “Why LMS Failed to Support Student Learning in Higher Education Institutions”, IEEE Symposium on E-Learning, E-Management and E-Services (IS3e), Kuala Lumpur:
pp 1-5.
Alnifie, G. M. (2012) “Constructing the Relationship Between Individual Differences of Faculty Members
and the Continuance Intension of Using LMS Systems”, 12th IEEE International Conference on Advanced
Learning Technologies, pp 167-169.
164
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
Bonk, C. J., Graham, C. R., Cross, J., Moore, M. G. (2005) “The Handbook of Blended Learning: Global
Perspectives, Local Designs”, Pfeiffer, 1st edition.
Borba, M.; Penteado, M. G. “Informática e educação matemática”. Belo Horizonte: Autêntica, 2001.
Callaghan, M. J., McCusker, K., Losada, J. L., Harkin, J. and Wilson, S. (2013) “Using Game
-Based Learning in Virtual Worlds to Teach Electronic and Electrical Engineering”, IEEE Transactions on
Industrial Informatics, Vol. 9, No. 1, February pp. 575-584.
Carmichael, G., Biddle, R. & Mould, D. (2012). Understanding the Power of Augmented Reality for
Learning. In T. Bastiaens & G. Marks (Eds.), Proceedings of World Conference on E-Learning in Corporate,
Government, Healthcare, and Higher Education 2012 (pp. 1761-1771). Chesapeake, VA: AACE. Retrieved
March 7, 2014 from http://www.editlib.org/p/41864.
Carvalho, J. (2010) “Ensino-aprendizagem do PLE em modalidade híbrida”, Revista Animação e Educação.
CBO (2007) “Classificação Brasileira de Ocupações” Ministério do Trabalho e Emprego in http://www.mtecbo.gov.br/cbosite/pages/pesquisas/ FiltroTabelaAtividade. jsf.
Filatro, A. (2008) “Design Instrucional na prática”. São Paulo, Pearson Education do Brasil, 2008.
Graf, S., Kinshuk and Liu, T-C. (2008) “Identifying Learning Styles in Learning Management Systems by
Using Indications from Students’ Behaviour”, Eighth IEEE International Conference on Advanced Learning
Technologies, pp. 482-486.
Kirner, C.; Kirner, T. G. (2007) Virtual Reality and Augmented Reality Applied to Simulation Visualization. In: El Sheikh, A.A.R.; Al Ajeeli, A.; Abu-Taieh, E.M.O.. (Org.). Simulation and Modeling: Current
Technologies and Applications. 1 ed. Hershey-NY: IGI Publishing, 2007, v. 1, p. 391-419
Kirner, Claudio and Kirner, Tereza Gonçalves, 2011. “Evolução e Tendências da Realidade Virtual e
da Realidade Aumentada”. In: Realidade Virtual e Aumentada: Aplicações e Tendências. XIII Simpósio De
Realidade Virtual E Aumentada. Sociedade Brasileira de Computação – SBC.
Litwin, E. (2001) “Educação à Distância – Temas para o debate de uma nova agenda educativa”. Porto
Alegre: Artmed Editora.
Maturana, H. (2001) “Cognição, ciência e vida cotidiana”. Belo Horizonte: Ed. UFMG, 203p
Milgram, P.; Takemura, H.; Utsumi, A.; Kishino, F. (1994) “Augmented Reality: A Class of Displays
on the Reality-Virtuality Continuum”, Telemanipulator and Telepresence Technologies, SPIE, V.2351.
Moran, J. M. (2002) “O que é um bom curso a distância?” Acesso em: 18/02/2012. Disponiível na Internet
em: http://www.eca.usp.br/prof/moran/bom_curso.htm.
Papagiannis, H. Augmented Stories. Augmented Reality projects, articles & talks by Helen Papagiannis
in http://augmentedstories.wordpress.com/2012/05/28/glass/.
165
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 152-166, maio/2014.
Souza-Concilio, Ilana de Almeida; Pacheco, Beatriz de Almeida. O Uso de Dispositivos Móveis e Realidade Aumentada em Ambientes Virtuais de Ensino e Aprendizagem.
Santin, R.; C., K.; Garbin, T. R.; Dainese, C. A. (2004) “Ações interativas em Ambientes de Realidade
Aumentada com ARToolKit”. VII Symposium on Virtual Reality, São Paulo, SP, Brasil, October.
Santos Júnior, L. S. dos and Pereira, M. R. (2012) “Blended Learning como Estratégia de Convergência entre o Presencial e o “Virtual”: uma experiência de ensino/aprendizagem na disciplina de liderança
nas organizações”, IX Convibra Administração – Congresso Virtual Brasileiro de Administração in adm.
convibra.com.br.
Sessoms, D. (2008). Interactive instruction: Creating interactive learning environments through tomorrow’s teachers. International Journal of Technology in Teaching and Learning, 4(2), 86-96.
Souza-Concilio, Ilana A. E Pacheco, Beatriz A. “The Development of Augmented Reality Systems in
Informatics Higher Education”. Procedia Computer Science, v. 25, p. 179-188, 2013.
The Sloan Consortium, 2007. “Blending In: The Extent and Promise of Blended Education in the United
States.” Disponível em: http://sloanconsortium.org/publications/survey/blended06. Acesso em 15/02/2014.
Tori, Romero. “Educação sem distância: as tecnologias interativas na redução de distâncias em ensino e
aprendizagem.” São Paulo: Editora Senac São Paulo, 2010.
Wiley, David. “Learning object design and sequency theory”, 2000. Thesis (PhD) - Brigham Young University, Provo, 2000.Boulic, R. and Renault, O. (1991) “3D Hierarchies for Animation”, In: New Trends in
Animation and Visualization, Edited by Nadia Magnenat-Thalmann and Daniel Thalmann, John Wiley &
Sons ltd., England.
166
167
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
Development of Interactive
Applications for Google Glass
Caio Novaes Lins
João Marcelo Teixeira
Rafael Alves Roberto
Veronica Teichrieb
Abstract
Wearable technology is just recently being made available for the masses and with this come endless possibilities of problem solving on a futuristic level. One example is the Google Glass, a wearable computer
with an optical head mounted display. This tutorial aims to guide the audience on how to create interactive applications for this device. We will explain in detail its hardware components and the first steps
to begin application development for it. Finally, examples of interactive applications using Google Glass
will be demonstrated. Among these examples are an augmented reality solution with face recognition and
teleoperation of drones.
1.1 Introduction
The Head Mounted Display, or simply HMD, is a device that is highly associated with Virtual and
Augmented Reality, also known as VR and AR, respectively. It is due the fact that these gadgets provide
an immersive way to display the virtual content used to the user. Moreover, the HMD allows users to be
with their hands free to manipulate interaction devices. Many of them are composed of screens made of
different technologies, such as LCD or OLED, in front of the users’ eyes. Some models have one canvas
in front of one or both eyes, others have two monitors one in front of each eye.
One kind of HMD is the Optical Head Mounted Display, or OHMD. The dif- ference between it
and the HMD is that the OHMD exhibits the virtual content on the screen while it allows the user to see
the real world through it. One of the drawbacks of this approach is that virtual content does not appear
very bright and with high resolu- tion. On the other hand, the semi-transparent screen is more pleasant
for the user. Most of them report that the OHMD does not induce motion sickness as much as the HMD
with monitors. Another benefit of using optical devices regards safety on critical applica- tions. In case
of failure of the display, the user with an OHMD can still see the real world [Rolland and Fuchs 2000].
167
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
One popular example of an OHMD is the Google Glass [Google 2014b]. Released in February of
2013, this gadget caught the attention when Google promised a display lighter and cheaper than the
other OHMDs available in the market without compromising its quality.
This tutorial aims to: 1) introduce the Google Glass; 2) show its characteristics and hardware configuration; 3) present a complete guide to the audience on how to develop applications for this device,
covering from environment setup to an augmented reality example; and finally 4) discuss the possibilities that it brings with examples of some interactive applications.
1.2 Google Glass
1.2.1 Google Glass Hardware
Google’s most recent gadget, Glass, works as a 50g Android-based wearable computer. Figure 1.1
explains how it works.
Figure 1.1. How google glass works [Missfeldt 2014].
Tests performed by the authors show that the Glass battery has a maximum life- time of one hour,
when used in full load situations, such as recording a 720p resolution video or running computer vision
algorithms. Therefore, Google Glass was not meant to be an active device. It was originally conceived to
give punctual information (notifica- tions) to the user. Working that way, its battery can last a day or more.
168
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
The touchpad, located on the external part of the CPU case, on the lateral side of the device, supports multitouch interaction. It is possible to identify single or double tap gestures, and also when the
user swipes fingers in a specific direction.
All content on Glass can be displayed on its 640x360 display, located on the top right view field of
the user as a 25-inch screen and 2.4m away. Since the prism is not placed right in front of user’s view,
it does not interfere significantly with his/her vision. Due to the fact that the prism is located slightly
above user’s eye of sight, the creation of see-through augmented reality applications is compromised.
In order to implement them, developers must first solve the alignment problem between virtual screen
(projected by the prism) and real world content, which means that a small portion of the image captured
by the Glass camera matches the virtual display area. This mapping may vary according to the distance
between Glass and real object being viewed.
The Glass platform was designed so that the existing Android SDK just works fine. This enables developers to code in a familiar environment, but for a uniquely novel device [Google 2014a]. In addition,
all of the existing Android development tools can be used, and the developed software for Glass, called
Glassware, is delivered as a standard Android Package (APK).
Google also provides the Glass Development Kit (GDK), which works as an add- on to the Android
SDK that lets developers build Glassware that runs directly on Glass. In order to make sure that a project
is compatible with the Glass platform, the developer must simply set the Android target to version 4.0.3
(which corresponds to API version 15). Another detail that must be taken into consideration is that the
application input must be mapped to the Glass input peripherals, because of the fact that interaction is
performed through the touchpad and other sensors (camera, gyroscope, accelerometer, GPS, etc.). Table
1.1 lists some of Glass features.
1.3 Developing for Google Glass
As seen on the previous section, Google Glass’ foundation is very similar to the smart- phone. It
runs on Android, a very popular platform for mobile devices. The essence of developing Android applications is clung to the Java programming language with open- ing to native development kits coded in
C/C++ all on top of a Linux kernel. This section will teach how to setup the workspace environment on
Windows. After setting up the environment, we will provide a guide through the implementation of a
basic application and then an interactive one.
1.3.1 Environment Setup
This short course focuses on development for Google Glass and assumes the learner has a basic
knowledge of Android. With this in mind we will be covering the Android envi- ronment setup, then
we’ll make the necessary preparations for Google Glass integration and leave the workspace ready for
development.
169
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
Table 1.1. Google Glass features.
Feature
Description
Operating system
Android (4.0.4)
Power
Lithium Polymer battery (2.1 Wh)
CPU
OMAP 4430 SoC, dual-core
Memory
1GB RAM (682MB available to developers)
Storage
16 GB Flash total (12 GB of usable memory)
Display
Prism projector, 640x360 pixels (equivalent of a
25 inch/64 cm screen from 8 ft/2.4 m away)
Sound
Bone conduction transducer
Input
Voice command through microphone, accelerometer, gyroscope, magnetometer, ambient light
sensor, prox- imity sensor
Controller input
Touchpad, MyGlass phone app
Camera
Photos: 5 MP, videos: 720p
Connectivity
Wi-Fi 802.11b/g, Bluetooth, micro USB
Weight
50g
Backward compatibility
Any Bluetooth-capable phone; MyGlass companion app requires Android 4.0.3 (Ice Cream
Sandwich) or higher or any iOS 7.0 or higher
1.3.1.1 Android Setup
There are a few components needed for programming on Android. An Integrated De- velopment
Environment (IDE) is needed along with the Android Developer Tools (ADT) plugin. The ADT plugin
serves to streamline the application development giving the necessary tools to build, test and debug the
apps. By default, Google uses Eclipse as IDE. We will also need the API libraries. All these components
are encapsulated into a package called ADT Bundle and can be downloaded from the Google Android
site at http://developer.android.com/sdk/index.html.
Before downloading the ADT Bundle, make sure the computer has the Java De- velopment Kit
(JDK) installed. In case it doesn’t, the latest version is available at Oracle’s website. With the JDK installed we’re good to go. After downloading the bundle, simply extract the packages and we’re good to
develop applications for Android.
170
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
1.3.1.2 Google Glass Integration
To program for Google Glass your computer must make a connection with the device. We must
provide its drivers just like any other Android-using hardware. Also we need to manipulate the Glass’
hardware components and use some Glass-specific features, gen- erating the need for the tools to do so.
For this we must use an add-on to the Android
SDK called Glass Development Kit, also known as GDK. Google provides a Mirror API that allows
you to build web-based services that interact with Glass. It provides a cloud based API that does not
require running code on Glass. But we won’t be detailing it here for the fact that for our interactive
scenario, which consists of augmented reality appli- cations, real-time user interaction is crucial and
that is where the GDK comes into play. This section will explain how to install the device drivers and
the GDK with details.
We’ll need to modify a few files so we can update the Google Glass via windows device manager.
Follow the step-by-step instructions labeled below:
1. Locate the folder containing the Google USB Driver; it should be something similar to
“<ADTBundlepath>\sdk\extras\google\usb_driver\”.
2. Now we must add the vendor and product identification, or VID and PID, for Google Glass on
the file “android_winusb.inf” under the [Google.NTamd64] and [Google.NTx86] sections. In
the end we should have something like the following:
Figure 1.2. Snippet to add to the “android_winusb.inf” file.
3. Next we’ll disable Driver Signature Verification since Google Glass’ driver is not a signed driver. For this we’ll create a separate set of instructions based on [Gibb 2013]:
(a) Click the “Change PC settings” option in the settings button found on the Charms Bar;
(b) Now that we’re on the Modern Control Panel, switch to the Update & Recov- ery section.
Figure 1.3 shows (a) and (b);
171
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
Figure 1.3. First steps for disabling the driver signature verification in Windows 8.1.
(c) Next you should see an advanced startup section to the right, so go ahead and restart in
order to proceed to the advanced startup;
(d) Once your computer is rebooted you will be given a few options. Choose them in the following order: Troubleshoot, Advanced Options, Startup Settings, Restart;
(e) Finally, after rebooting, disable driver signature enforcement by pressing F7.
Your PC will reboot once again and you can now install the Google Glass driver.
4. Plug Google Glass into your computer, open the Device Manager and locate the Google Glass
device. It should have a warning because it is not installed. Right click it and select Update
Driver Software.
5. Choose “Browse my computer for driver software” and enter the folder where the “android_
winusb.inf” file is located.
6. After confirming, a security dialog will be shown. Choose “Install this driver soft- ware anyway” to install and complete the driver installation.
Now that we have installed the drivers, let’s acquire the GDK.
Since Google Glass uses Android 4.0.3 (API 15) let’s install its SDK Platform along with the Google
SDK Sneak Peak from the SDK Manager. It is important to men- tion that the GDK is currently in a preview version, hence the name Sneak Peak and therefore some important parts are missing. You can open
SDK manager from Eclipse or from the executable located on the ADT Bundle folder. Once opened, go
to the API 15 section as shown on Figure 1.4, and mark the SDK Platform, the GDK Sneak Peak, and
then click install. After the installation our environment is ready for programming. To finish, turn on
the debug option of your Google Glass device. Do this by going (inside Google Glass menu) into Settings
> Device Info > Turn on debug. This will allow your development system to communicate with Glass.
172
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
Figure 1.4. Android SDK Manager with the components to program for Google Glass marked.
1.3.2 Basic Project Implementation
This section will guide you through a Google Glass application implementation. There are two
ways of showing your applications on Glass using the GDK. One is Live Cards and the other is Immersion [Kaspari 2013]. Figure 1.5 illustrates the main idea of both. Immersion applications take full
control of the UI and are essentially regular Android activities. To run any other application or access
a card you must leave the immersion. On the other hand Live Card applications show up as a card in
the timeline and can run independently from other cards. One example is the Compass application
that comes with the GDK.
Figure 1.5. Scheme comparing the two different ways of making applications for Google Glass: Immersion (top) and Live Card (bottom).
173
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
1.3.2.1 Project Setup
Now we’ll begin implementing our first Google Glass activity using Immersion. First, create an
Android application, as shown on Figure 1.6. Set minimum and target SDK to API 15, compile with
GDK Sneak Peak and set the Theme to none.
Figure 1.6. Initial setup of the Google Glass basic project.
1.3.2.2 Create Immersion
On the MainActivity class go ahead and create this simple activity, as seen in Figure 1.7.
Figure 1.7. Simple main activity of the Google Glass basic project.
174
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
The Card object from the GDK library gives us a simple layout to be displayed on Google Glass’
interface. We set a title, a footnote and then convert it into a view to be displayed using the setContentView() method.
1.3.2.3 Voice Commands
A common way to launch Google Glass applications is by using voice triggers. To do this we must
implement three things. First we declare a string resource for our voice command, as can be seen in
Figure 1.8.
Figure 1.8. Adding the string value for the voice launch command in the strings xml file.
Then create an XML resource file for the voice trigger using the previously created string, as shown
in Figure 1.9.
Figure 1.9. XML file created for the voice command trigger.
Finally on our manifest we add an intent filter for the VOICE_TRIGGER action to our activity and
link the previously created XML to the intent using a meta-data tag. The manifest should then look like
the one on Figure 1.10.
Figure 1.10. Final version of the Android manifest of the basic Google Glass application.
175
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
Now say “ok glass” followed by “show basic example” and you should get the result shown on Figure
1.11. Now let’s proceed to a more advanced, interactive project.
Figure 1.11. Running the Google Glass basic application.
1.3.3 Interactive Project Implementation
This section will cover a step-by-step implementation of an interactive application for Glass. It consists of visualizing 3D models using an augmented reality library called Metaio SDK [metaio 2014]. The
application will use gesture commands to switch be- tween geometries, which are virtually projected on
top of a real marker. Below is a step-by-step walkthrough of the implementation.
1. First, download and run the Metaio SDK installer from this site: https://metaio. app.box.com/
SDK-PC.
2. Import the metaio SDK library to your Eclipse workspace; it is found on <MetaioLocation>\
metaioSDK5.3\_Android\.
3. Create a new application as done on the basic project but changing the name and package for
something like “Interactive Example”.
4. Now that you have your Glass interactive project and the metaio SDK library on your workspace you need to set the metaio SDK as one of your app’s library. Right- click the InteractiveExample project, go to Properties > Android, add the metaio SDK library to the project and
then click OK.
5. The ARViewActivity holds the necessary methods to make the augmented experi- ence possible but Metaio advises not to change such class, so we will create another class, name it
ARActivity, inside our InteractiveExample project and let it extend the ARViewActivity class
and implement its methods.
6. So now we have an empty MainActivity, an ARActivity with empty methods and and the ARViewActivity. Let’s go ahead and modify our manifest to look like the one on Figure 1.12. Note
176
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
that we put some permissions that the Metaio SDK needs to function properly and the launch
by voice trigger information from the previous example. Remember that we have to add the
string and XML resources as well.
Figure 1.12. Final version of the Android manifest of the interactive Google Glass application with the
Metaio SDK permissions.
7. For the layout we’ll have a simple Relative Layout called ar_layout.xml as shown on Figure
1.13.
Figure 1.13. xml layout to be passed to the ARActivity’s getGUILayout() method.
177
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
8. We also need to get our assets which consist of a tracking configuration xml, the pattern image
to track and the 3D models. Download the .zip with all the assets from https://www.dropbox.
com/s/69n37hizoi7pc03/Assets.rar. Ex- tract and copy the whole Assets folder to the assets
folder inside the InteractiveEx- ample directory.
9. Now implement the MainActivity as shown on Figure 1.14. This activity runs an AsyncTask to
extract all the necessary assets at startup and then starts the ARAc- tivity after a few seconds.
Figure 1.14. Main activity of the Google Glass interactive project.
10. Switching to the ARActivity, we are going to edit the getGUILayout() and set its return to
“R.layout.ar_layout” and the loadContents() method will look like Fig- ure 1.15. This is where
we load the tracking configuration file and create the 3D models for rendering. The onGeometryTouch() and the getMetaioSDKCallback- Handler() won’t be covered in this tutorial, but
178
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
if you’re curious to see how they work there are examples inside the metaio SDK folder that
you can use.
Figure 1.15. ARActivity’s loadContents() method.
11. We’ll also add the methods that will be called by gestures and these will control the switch
between the two geometries. We’ll create a global GestureDetector, an object class from the
GDK, and listen specifically for the TAP gesture and each tap will switch between geometries.
The snippet below shows how this is done. Note that we have overridden the onCreate() method to initialize the GestureDetector.
179
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
Figure 1.16. ARActivity’s GestureDetector setup.
180
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
12. Before we run the application we need to provide a metaio application signature. To do this
login at http://dev.metaio.com/, navigate to “my apps” and add your Application ID and name
to generate the new signature. Then copy and add the signature as a value to a new string
resource with the name “metaioSDKSignature” and make sure ARViewActivity is using the
“R.string.metaioSDKSignature” key (this video shows a step by step tutorial on how to setup
Metaio SDK for an Android development environment: http://youtu.be/KVtCi-WwmFU).
13. Now go ahead and run the application and you should see the results as shown on Figure 1.17.
The source code of the basic and interactive applications shown in this
tutorial can be found on http://bit.ly/1jp3Krq.
Figure 1.17. ARActivity’s loadContents() method.
With that we conclude our tutorial on implementing an interactive application. Next section shows
some advanced use case scenarios and solutions.
1.4 Use Cases
It is clear that the range of ideas and solutions Google Glass explores is enormous. This section will
show two use cases designed and developed for this platform.
1.4.1 Face Recognition using OpenCV
For this we will introduce Glassist, which consists of a teacher assistant application that allows the
creation of profiles for each child (student), entering and viewing information about them [da Silva et
al. 2014]. In a seamless and non-intrusive way the application uses augmented reality to help day-to-day
activities of teachers.
For implementation we used the Open Source Computer Vision Library (OpenCV) [Bradski 2000]
for the image processing techniques. Although the library has many image handling examples it lacked
a face recognition algorithm. To overcome this obstacle we used its face detection algorithm and a sim181
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
ple yet sufficient comparison algorithm. The OpenCV library gives us the position and boundary of
the faces in screen coordinates, next we extract the face image from the current frame and then fondly
compare it to a set of face images stored in the application’s database. The implementation of the comparison algorithm was done by comparing byte by byte and checking if the sum of the squared differences of each byte pair is small enough to be a valid candidate. To use the OpenCV Android library, the
developer can download it from its homepage and import the library the same way that was explained
on last section with the Metaio SDK. To setup permissions on the manifest and create basic projects, we
recommend studying the example applications that come with the library.
The application flow is the following: the system starts with a full screen visual- ization of the
camera image. When a student is detected, his/her name and status icons appear right above him/
her, indicating that the face recognition algorithm has recognized him/her. When the user taps the
touchpad, the system enters the profile screen of the stu- dent that is in the center of the camera view.
In this level, the teacher can swipe between student profiles or tap to view more information about one
of them and add new notes, photos, videos, or other information to it. The user can also add data to the
portfolios by centering a student on the camera view and clicking on the shutter button, adding a photo
or video directly to his/her portfolio. On Figure 1.18 we can see two screenshots of the core functions of
the Glassist application.
Figure 1.18. Glassist recognizing faces (left) and visualizing a portfolio (right).
1.4.2 Teleoperating Drones with Glass
In this case study we will analyze a scenario where the user controls an Unmanned Aerial Vehicle
(UAV) through head positioning and gestures using Google Glass. This project for visualization and
control was designed to be applied to the structural inspection of buildings. In order to do that, a connection is established between the Glass and an UAV in a form of a Drone and through this connection
the Drone sends captured images to Glass while it controls the UAV through gesture inputs.
1.4.2.1 The Drone
An UAV is defined as an uninhabited motorized vehicle that can be controlled by a re- mote control,
semi-autonomous, autonomous, or a combination of the capabilities above. It can be used for military
182
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
purposes, to solve specific tasks like traffic and meteorological surveillance, carrying specific payload,
act where presence of a human pilot can be un- healthy or dangerous and spy the enemy areas. As compared to a manned vehicle, this one has some advantages, such as reduced cost, longer endurance and
less risk to the crew [Fahlstrom and Gleason 2012]. The UAV used in this work is the Parrot AR.Drone
2.0 [Parrot 2014], and its components are shown on Figure 1.19.
1.4.2.2 Application Details
There are several SDKs available that allow the remote communication and controlling of a drone.
They vary on features, programming language and platform. Table 1.2 compares some of the drone
SDKs found in the literature. We have chosen the SDK called CVDrone because it integrates drone
operation with OpenCV. This way, once the image is received from the drone, it can be easily encoded
and transmitted to the Glass.
Figure 1.19. AR.Drone 2.0 and its components.
Data exchange between the Glass and the drone requires wireless network com- munication. Since
the AR.Drone creates a local wireless network to which controller devices can connect, we decided to
use it as communication channel. In fact, when con- structing a network architecture for such teleoperation application, two possibilities come to mind: directly connecting both Glass and drone, or
using a PC as bridge between these devices. We adopted the second approach for simplicity reasons.
Additionally, we were not able to find any working SDK capable of directly providing control and image
information exchange between these two devices without the help of a computer.
183
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
The architecture designed for the application is basically composed by two major modules: an
Android client built specifically for Google Glass (implemented using Java), responsible for managing
image visualization and remote control, and a PC server (im- plemented using C++), responsible for
intermediating communication between the drone and the Glass.
The Client module has three sub-modules: UI, Image Receiver and Command Sender, as shown in
Figure 1.20. The UI module is responsible for displaying the images received from the Image Receiver
module and for capturing interaction events (gestures and head motion), used for sending commands
to the Command Sender module.
The Image Receiver module is responsible for receiving the images captured by the drone from the
network and routing them to the UI module. The Command Sender module is responsible for sending the
commands over the network for controlling the drone, which has nine possible options: take off, land, rotate
right and left, go front, back, left and right, and stand (used to stop the current command being executed).
The Server module has, analogously to the Client module, three sub-modules: Drone Manager,
Image Server and Command Server, as shown in Figure 1.20. The Drone
Table 1.2. Comparison between some AR.Drone SDKs.
SDK
Language
CVDrone
[puku0x 2014]
C/C++
Javadrone
[Codeminders 2014]
Java
ARDrone.Net
[Endres 2014]
C#
YADrone
[Bade 2014]
Java
EasyDrone
[Kenai 2014]
Java
Features
1. Integrates drone operation and OpenCV
2. Allows full control and image access from
both cameras
1. Allows full control
2. Runs on multiple platforms
3. Has version compatibility problems
1. Allows full control and image access from
both cameras
1. Allows full control
2. Image access does not work on Android platforms
1. Provides easier movement commands and
complex behaviours such as face detection/face
following and tag
Manager takes care of the communication between PC and drone, acquiring the images captured
from its camera and sending it commands for performing the desired actions.
The Image Server is the module responsible for the PC/Glass image streaming, retrieving the images captured from the Drone Manager, compressing them into JPEG format, and then sending the data
through the network. The Command Server is respon- sible for receiving the commands sent from the
Glass and routing them to the Drone Manager module.
184
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
If you would like to analyze the implementation in detail, the source code for the entire system (both
client and server sides) is available for download and distributed as open-source at http://goo.gl/YoWA5q.
1.4.2.3 Case Study Analysis
The drone is controlled using the commands listed on Table 1.3 and can be used in two different
scenarios: indoor and outdoor. The image captured by the AR.Drone is displayed in the Glass as a JPEG
with 30% of compression to avoid transmission latency. Figure 1.21 shows an operator controlling the
AR.Drone using the Google Glass. Even though, it is still possible to extract relevant information from
it, such as the structural damage on the wall and close to the ceiling.
1.4.3. Tools and Tips
During the development of applications for Google Glass, we found some useful tools and functionalities that helped us in the process. One is the Droid@Screen application
Figure 1.20. Client (left) and Server (right) modules architecture.
Table 1.3. Action map between Glass and AR.Drone.
Operator Gesture
Teleoperator Action
Head position to the front
Drone stands still
Rotate head to the left
Rotate drone to the left
Rotate head to the right
Rotate drone to the right
Swipe right
Drone goes forward
Swipe left
Drone stands still
Swipe up
Drone goes up
Swipe up with two fingers
Drone goes down
Two-tap
Tale off/land
185
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
[Riboe 2014]. This app was used to capture the images displayed on the device. It receives from a
dedicated USB stream every image that is shown to the user. It is important to say that such tool is used
for debugging purposes, so the image refresh rate is low (approximately 1 image every 200ms).
Another tip is concerning the fact that Glass goes into standby mode very easily, to save battery.
For interactive applications we want the screen to stay on to produce the desired experience. This can be
done by adding a single line of code to the onCreate() method of your Activity1. This will prevent your
app from going into standby, simple and perfect for real-time applications.
Overall the examples that come with the GDK are very complete and studying them is a great way
to get used to working with Google Glass development.
1.5 Final Remarks
This tutorial provided a guide for those who want to start developing or already develop for Google
Glass and want to explore interactive solutions this wearable device provides.
1The line is “getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);”.
Figure 1.21. On top (a), we can see an operator interacting with Google Glass in an outdoor environment.
On the bottom left (b) there is his vision while perform- ing a structural inspection task. On the bottom
right (c), an open field navigation test.
186
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
It was explained in the work what is Glass and how it works from hardware infrastruc- ture to
software details. We then made a walkthrough from setting up the workspace to creating, step by step,
a basic and an interactive augmented reality application using the Metaio SDK. Finally we show some
use cases of interactive Glass apps, focusing aug- mented reality aiding in classrooms and operation of a
drone for structural inspection using intercommunication between Glass, computer and the AR.Drone.
Google Glass gave us a whole new way of thinking, because we can develop unique solutions, such
as the teleoperation of drones showed, and also adapt an already implemented application in such a
way that it will also be more interesting. Just by having an HMD with all the main components of a
smartphone augments our range of possible outcomes. Focusing on augmented reality, there are a few
limitations like the need to optimize codes to the extreme because Google Glass does not last long with
active apps, and also because of its limited computing power.
Google Glass can do much more things that were not covered by this course, such as lifelike streaming of videos and extracting important information from real world scenarios. There is an infinity of
branches to be explored. Soon it will be available to the public so everybody can create stunning applications. Overall we think Glass has expanded the pool of ways to solve problems and it was an amazing
opportunity to think and develop for it.
References
[Bade 2014] Bade, D. (2014). Yadrone : Yet another open framework for controlling the ar.drone 2.0. http://bit.
ly/1dIX0gd.
[Bradski 2000] Bradski, G. (2000). The opencv library. Dr. Dobb’s Journal of Software Tools.
[Codeminders 2014] Codeminders (2014). Javadrone. http://bit.ly/1dkMu3I.
[da Silva et al. 2014] da Silva, M. M. O., Freitas, D., Neto, E., Lins, C., ao Marcelo Teixeira, J., and Teichrieb, V.
(2014). Glassist: Using google glass as an aid to classroom management. In Under Review.
[Endres 2014] Endres, T. (2014). Ardrone.net. http://bit.ly/1dIX0gd. [Fahlstrom and Gleason 2012] Fahlstrom, P.
and Gleason, T. (2012). Introduction to UAV Systems. Aerospace Series. Wiley.
[Gibb 2013] Gibb, T. (2013). How to disable driver signature verification on 64-bit win- dows 8.1 (so that you can
install unsigned drivers). http://bit.ly/JsBH9W.
[Google 2014a] Google (2014a). Glass development kit. http://bit.ly/ 1gTNxm5.
[Google 2014b] Google, I. (2014b). Google glass. http://bit.ly/1gfLM7E. [Kaspari 2013] Kaspari, S. (2013). Mirror
api and gdk - developing for google glass #1. http://bit.ly/1eHxITl.
[Kenai 2014] Kenai, P. (2014). Easydrone - the javadrone composer. http://bit. ly/1gvXFqW.
[metaio 2014] metaio, G. (2014). metaio home augmented reality products & solutions. http://bit.ly/1bszicy.
187
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 167-188, maio/2014.
Lins, Caio Novaes. Development of Interactive Applications for Google Glass.
[Missfeldt 2014] Missfeldt, M. (2014). Google glass (infographic) - how it works. http://bit.ly/1dnG58d.
[Parrot 2014] Parrot, S. (2014). Ar.drone 2.0. parrot new wi-fi quadricopter - ar.drone.com - hd camera - civil
drone - parrot. http://bit.ly/1gPDuP9.
[puku0x 2014] puku0x (2014). Cv drone (= opencv + ar.drone). http://bit.ly/ 1eHwUxx.
[Riboe 2014] Riboe, J. (2014). Droid at screen | show your android device for your audience. http://bit.ly/1lilMeX.
[Rolland and Fuchs 2000] Rolland, J. P. and Fuchs, H. (2000). Optical versus video see- through head-mounted
displays in medical visualization. Presence: Teleoper. Virtual Environ., 9(3):287–309.
188
189
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
Técnicas de Nuvens de Pontos para Aplicações de
Realidade Virtual e Aumentada
Luciano Silva1
Abstract
Point clouds embrace a set of processes, techniques and algorithms for the acquisition, representation,
processing and storage of point sets, aiming at applications in graphics processing. As multi and manycore
processors have increased their storage and processing powers, this area has become very attractive for
applications that require high performance graphics, eg, Virtual and Augmented Reality applications.
Within this context, this chapter introduces some point cloud techniques, highlighting the main applications in modeling, rendering and animation in GPU.
Resumo
Nuvens de Pontos referem-se a um conjunto de processos, técnicas e algoritmos para aquisição, representação, processamento e armazenamento de conjuntos de pontos, visando às aplicações em processamento
gráfico. Com o aumento da capacidade de processamento e armazenamento de processadores multi e
many-cores, esta área tornou-se bastante atrativa para aplicações gráficas que requerem alto desempenho como, por exemplo, RV e RA. Dentro deste contexto, este capítulo apresenta algumas técnicas de
nuvens de pontos para modelagem, rendering e animação.
1.1 Introdução
A tecnologia de nuvens de pontos, com o aumento do poder de processamento das unidades de
processamento gráfico (GPU), tem oferecido ao segmento de desenvolvimento de RV e RA novas possibilidades para aumento de desempenho das aplicações. Neste contexto, ao invés de se trabalhar com
1
Laboratório de Processamento Gráfico e Mídias Digitais. Faculdade de Computação e Informática,
Universidade Presbiteriana Mackenzie.
189
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
estruturas de dados complexas, que envolvem, por exemplo, vértices, arestas e faces, utiliza-se somente
uma nuvem de pontos para representar o objeto a ser processado.
A partir desta nuvem de pontos, com o poder de processamento gráfico e genérico das GPUs,
procedimentos como modelagem, transformações, renderização e animação são efetuados diretamente nesta nuvem. Mesmo procedimentos considerados não-gráficos como, por exemplo, simulações de
Física ou inferências em Inteligência Artificial podem ser efetuadas nas nuvens com o auxílio de linguagens como CUDA ou OpenCL.
Assim, dentro deste contexto, este texto tem como objetivo introduzir os conceitos fundamentais
de nuvens de pontos para suporte ao desenvolvimento de aplicações de RV e RA.
O texto está organizado da seguinte forma:
• a Seção 1.2 traz o conceito de nuvens de pontos e algumas formas para sua representação;
• a Seção 1.3 apresenta uma introdução ao framework PCL (Point Cloud Library), principal
ambiente de desenvolvimento de aplicações baseadas em nuvens de pontos;
• a Seção 1.4 discute o processo de aquisição de nuvens de pontos através de scanning 3D
• a Seção 1.5 apresenta funcionalidades de processamento gráfico de nuvens de pontos através
de shaders
• a Seção 1.6 apresenta detalhadamente as funcionalidades de processamento genérico de nuvens de pontos em GPU, com as arquiteturas CUDA e OpenCL. Como o processamento de
nuvens muitas vezes não requer saída gráfica, deu-se uma atenção especial a este tópico.
• finalmente, a Seção 1.7 apresenta o fechamento do capítulo e, em seguida, são apresentadas
algumas sugestões de referências bibliográficas.
O autor deseja que este texto possa disponibilizar um suporte simples e direto para todos aqueles
que queiram iniciar trabalhos na área de nuvens de prontos, especialmente aplicados a RV e RA.
Nuvens de Pontos e Fundamentos de Representação
Uma nuvem de pontos (point cloud) é uma coleção de pontos com coordenadas bi ou tridimensionais e, normalmente, sem relações entre os pontos. A figura abaixo mostra dois exemplos de nuvens de
pontos, onde se pode ver um cenário (à esquerda) e dois objetos (à direita):
Figura 1: Exemplos de nuvens de pontos (cenário e objetos).
Fonte: Jogo Just Cause 2.
190
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
A partir de uma nuvem de pontos, pode-se construir uma visualização básica, através de acumulação de patches, ou se aproximar ou interpolar uma superfície pelos pontos. A figura abaixo mostra três
níveis usuais de visualização de uma malha de pontos: a própria nuvem, uma acumulação de patches e
uma superfície interpolada (já com renderização):
(a) Nuvem
(b) Patches acumulados
(c) Superfície
Figura 2: Níveis de visualização de uma nuvem de pontos.
Fonte: (Linsen, 2001).
Uma das grandes vantagens de falta de relações entre os pontos reside no fato da velocidade de
alteração das estruturas de representação das nuvens de pontos, uma vez que, normalmente, não há
necessidade de atualização de arestas, faces ou mesmo objetos.
Formalmente, um ponto P em uma nuvem de ponto é uma t-upla formada, geralmente, pela sua
posição (x,y,z) e alguma informação de cor (r,g,b):
.
Outras informações podem incluir, por exemplo, informações de normais, curvatura, tangentes,
dentre outros. A partir do conceito de ponto, define-se uma nuvem de pontos como uma coleção indexada de pontos:
.
Para se aumentar a eficiência de vários algoritmos numa nuvem de pontos, é comum representá-la
como uma octree (Figura 3):
191
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
Figura 3: Estrutura octree para representação por subdivisão de espaço.
Fonte: (PCL, 2012)
Numa octree, o objeto é discretizado em conjunto de elementos chamados voxels. Em cada subdivisão, são gerados oito voxels. No caso de nuvens de pontos, cada voxel irá conter um determinado
subconjunto de pontos da nuvem original.
Uma grande vantagem do uso de octrees reside no percurso na árvore. Quando a octree está bem
balanceada, o tempo de percurso da raiz até qualquer folha é O(log8n). Por exemplo, algoritmos de
visualização de malhas de pontos baseados em ray tracing ou ray casting ficam bastante eficientes
nestas estruturas.
Uma outra estratégia de representação é por Árvores Kd, que permitem um balanceamento melhor do particionamento do espaço onde estão concentrados os pontos. Nesta estratégia, o espaço é
sempre subdividido por planos perpendiculares a cada um dos eixos. Cada subdivisão tentar deixar,
para cada lado, a mesma quantidade de pontos (Figura 4):
Figura 4: Estratégia de subdivisão por árvores Kd, mostrando somente os eixos X e Y.
Fonte: (PCL, 2012)
192
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
Normalmente, para problemas de localização de pontos, as árvores kd são mais eficientes que as
árvores octrees.
1.2 Introdução ao Framework PCL
O framework PCL (Point Cloud Library) (PCL, 2012) é um conjunto de classes em C++ para representação tanto de nuvens de pontos 3D. A definição de uma nuvem de pontos em PCL toma, como
base, uma estrutura para representar cada ponto e, a partir de um ponto, constrói-se a nuvem. Abaixo,
tem-se um exemplo de representação de nuvem de ponto em PCL:
A classe PointCloud disponibiliza uma série de métodos básicos para manipulação de pontos isolados ou conjuntos de pontos.
Uma vez que se tenha uma nuvem de pontos, pode-se transformá-la para uma octree seguindo os
passos abaixo:
Caso se queira trabalhar com uma estrutura de árvore Kd, pode-se utilizar o seguinte código:
A partir da estrutura de octree ou árvore kd, pode-se efetuar algoritmos de busca, de renderização, dentre outros.
1.3 Aquisição de Nuvens de Pontos
Existem diversas estratégias para aquisição de nuvens de pontos (Gross & Pfister, 2007). No contexto de jogos digitais, uma maneira bastante comum é via scanners tridimensionais, como mostrado
na figura abaixo:
193
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
Figura 5: Scanner 3D manual, baseado em Visão Estéreo e projeção laser.
Fonte: (PCL, 2012)
A projeção laser permite indicar qual segmento de reta está sendo escaneado. O sistema duplo de
câmeras permite utilizar técnicas de reconstrução 3D, baseadas em Visão Estereoscópica. A coordenada do ponto que está sendo escaneado pode ser obtida através de uma intersecção de retas definidas
pelas duas câmeras e os planos de projeção das imagens, conforme mostra a figura a seguir:
Figura 6: Esquema de obteção das coordenadas de um ponto baseado em Visão Estereoscópica.
Fonte: (PCL, 2012)
Este esquema exige uma calibração de todo o sistema de aquisição como, por exemplo, distância
entre as câmeras ou estimação das distâncias focais das duas câmeras. Uma vez calibrado o sistema,
a granularidade dos pontos escaneados pode ser controlada tanto no processo de aquição, quanto no
194
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
processo de pós-processamento. A figura abaixo mostra duas nuvens de pontos, com as respectivas
superfícies rescontruídas:
Figura 7: Resultado de um processo de scanning para um modelo poligonal.
Fonte: (PCL, 2012)
Na imagem da esquerda, tem-se uma nuvem de pontos bastante regular, resultado comum de um
processo de scanning. Na imagem da direita, os pontos foram processados e, regiões que não necessitam de muitos detalhes podem e devem ser simplificadas.
Os equipamentos para scanning 3D, mesmo para pequenos objetos, ainda tem um custo elevado.
Uma alternativa bastante interessante atualmente é o uso do gadget de interação para jogo Kinect. Para
reconhecer profundidade dos objetos, o Kinect projeta uma nuvem estruturada de pontos, que pode ser
percebida e capturada por câmeras de infra-vermelho. A imagem abaixo mostra um exemplo de nuvem
projetada de pontos pelo Kinect:
Figura 8: Nuvem de pontos projetada pelo Kinect.
Fonte: (PCL, 2012)
195
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
O processo de obtenção da nuvem de pontos pelo Kinect pode ser feita através do Kinect SDK. A
seguir, tem-se um exemplo de código que realiza esta tarefa em PCL:
196
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
O código anterior permite uma abertura de um canal de comunicação, via PCL, com o hardware
Kinect (pcl::OpenNIGrabber()) e, de um em um segundo, faz uma aquisição de uma nova nuvem de
pontos. A nuvem é repassada a um viewer para renderização, conforme ilustra o exemplo de Figura 9:
Figura 9: Nuvem de pontos extraída de imagens do Kinect.
Fonte: (PCL, 2012)
Além dos pontos, o Kinect ainda permite obter animações baseadas em um esqueleto humano
de referência.
Uma vez obtida a nuvem de pontos, as próximas seções abordarão como processá-las dentro de
uma GPU com propósitos gráficos (via shaders) ou com propósitos gerais (via CUDA ou OpenCL).
1.4 Processamento Gráfico de Nuvens de Pontos com Shaders
Shaders são pequenos programas executados dentro de unidades gráficas de processamento
(GPU) e são extremamente adaptados para processamento de nuvens de pontos devido a sua natureza.
Existem, essencialmente, três tipos de shader:
• Vertex Shaders
• Pixel Shaders
• Geometry Shaders:
197
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
Os vertex shaders recebem como entrada um vértice (ponto) e retornam um outro vértice, resultado de alguma transformação. No contexto de nuvens de pontos para jogos, este tipo de shader é muito
utilizado para os mecanismos de modelagem (transformações) e animação. O código abaixo mostra o
código de vertex shader utilizado na simulação de líquidos baseados em nuvens de pontos em OSGL
(OpenGL Shading Language):
Outro exemplo bastante importante em animação de nuvens de pontos é conhecido comumente
como sistemas de partículas, conforme mostra o exemplo do vertex shader abaixo, onde, além da posição, controla-se também parâmetros de ordem física:
Os pixel shaders recebem como entrada um vértice (ponto) e retornam uma cor associada ao
vértice. No contexto de nuvens de pontos de jogos, este tipo de shader é muito utilizado para os mecanismos de renderização. O trecho de código a seguir mostra parte do cálculo do Modelo de Phong
para nuvens de pontos:
198
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
Finalmente, existem os geometry shaders, que permitem, dentro do contexto de nuvens de pontos,
a geração de novos pontos. Como são executados depois dos vertex shaders, possuem aplicação imediata nos processos de refinamento de nuvens de pontos.
1.5 Processamento Genérico de Nuvens de Pontos com CUDA e OpenCL
Atualmente, existem duas tecnologias (e linguagens) importantes para processamento genérico de
nuvens de pontos em GPU: CUDA e OPENCL (Silva e Stringhini, 2012).
LINGUAGEM CUDA C
A arquitetura CUDA (Compute Unified Device Architecture) (NVIDIA, 2011) unifica a interface
de programação para as GPUs da NVIDIA, assim como define um modelo de programação paralela
que pode ser usado de forma unificada em dezenas de dispositivos diferentes. A linguagem CUDA
C possibilita que se inclua comandos direcionados às GPUs da NVIDIA em programas escritos em
linguagem C/C++.
Apesar de ser uma interface unificada que possibilita a programação em diferentes placas gráficas,
CUDA possui características intrínsecas ao hardware das placas NVIDIA. Assim, antes de apresentar
o modelo de programação CUDA, uma breve descrição da arquitetura Fermi será apresentada a fim de
justificar o modelo de programação CUDA e familiarizar o leitor com este tipo de dispositivo que tem
sido referenciado como acelerador.
ARQUITETURA FERMI
As GPUs são compostas de centenas de núcleos (cores) simples que executam o mesmo código
através de centenas a milhares de threads concorrentes. Esta abordagem se opõe ao modelo tradicional
de processadores multicore, onde algumas unidades de núcleos completos e independentes são capazes
de processar threads ou processos. Estes núcleos completos, as CPUs, possuem poderosas unidades de
199
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
controle e de execução capazes de executar instruções paralelas e fora de ordem, além de contarem com
uma poderosa hierarquia de cache. Já as GPUs contam com unidades de controle e de execução mais
simples, onde uma unidade de despacho envia apenas uma instrução para um conjunto de núcleos que
a executarão em ordem. O modelo de execução das GPUs é conhecido como SIMT (Single Instruction
Multiple Threads), derivado do clássico termo SIMD (Single Instruction Multiple Data).
A Figura 10 apresenta as diferenças nas arquiteturas de CPU e GPU.
Figura 10: Arquitetura de CPU e de GPU.
Fonte: (NVIDIA, 2011).
A arquitetura Fermi da NVIDIA segue este princípio de dedicar uma maior quantidade de transistores às unidades de execução, ao invés de dedica-los às unidades de controle e cache. A Figura 11
apresenta uma visão geral da arquitetura Fermi:
Figura 11: Visão geral da arquitetura Fermi.
Fonte: NVIDIA, 2009.
200
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
A arquitetura conta com 16 SM (streaming multiprocessors), cada um composto por 32 núcleos de
processamento (cores), resultando num total de 512 núcleos. É possível observar uma cache de segundo
nível (L2) compartilhada por todos os SM. A cache de primeiro nível (L1) é compartilhada pelos 32
núcleos de cada SM.
A Figura 12 mostra a hierarquia de cache da Fermi, juntamente com dois outros tipos de memória
presentes na arquitetura. A memória compartilhada (shared memory) pode ser usada explicitamente
pelo programador como uma memória de “rascunho” que pode acelerar o processamento de uma aplicação, dependendo do seu padrão de acesso aos dados.
Figura 12: Hierarquia de memória da FERMI.
Fonte: NVIDIA, 2009.
Esta memória é dividida fisicamente com a cache de primeiro nível com um total de 64KB, cujo
tamanho é configurável: 16 KB – 48KB para cache e memória compartilhada respectivamente ou ao
contrário. Além dos dois níveis de cache e da memória compartilhada, a Fermi conta com uma memória global (DRAM) de até 6GB.
A Figura 13 apresenta a arquitetura dos SM. Cada um é composto por quatro blocos de execução
controlados por duas unidades escalonamento de warps (grupos de 32 threads).
201
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
Figura 13: Arquitetura de um SM (Streaming Multiprocessor).
Fonte: NVIDIA, 2009.
Além disso, cada SM conta com uma memória cache L1/memória compartilhada de 64KB, já mencionada, e com 32KB de registradores, compartilhados entre todas as threads que executarão no SM.
PROGRAMAÇÃO CUDA
O modelo de programação de CUDA C é composto de uma parte sequencial executada na CPU
(host) e de uma parte paralela executada na GPU (device). O programador desenvolve uma função
especial chamada kernel que será replicada em até milhares de threads durante a execução na GPU.
As threads realizam as mesmas operações simultaneamente, porém atuam ao mesmo tempo sobre
dados diferentes.
Em primeiro lugar, é importante observar a organização das threads em CUDA. Elas são organizadas em blocos e, dentro destes blocos, podem estar dispostas em 1, 2 ou até 3 dimensões. Os blocos
são organizados em grades de uma ou duas dimensões. Da mesma forma, cada thread também terá
disponível a informação de a qual bloco dentro da grade ela pertence. Por exemplo, numa grade 1D,
202
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
pode-se dizer que a primeira thread entre todas pertencerá ao bloco 0 e terá seu índice dentro do bloco
como 0 (bloco 0, thread 0).
A Figura 14 mostra uma representação clássica desta organização, apresentando uma grade bidimensional (2D), com blocos de threads também bidimensionais (2D) (NVIDIA, 2011). Estas dimensões, assim como a quantidade de threads e blocos em cada uma delas, são definidas pelo programador
no momento em que ele inicia (lança) o kernel.
Figura 14: Organização de blocos e threads
Fonte: NVIDIA, 2011.
Além disso, CUDA suporta uma série de tipos de memória que podem ser usadas pelos programadores para que possam acelerar a velocidade de execução de um kernel. A Figura 15, próxima página,
mostra a forma desses tipos de memória num dispositivo CUDA. A memória global (global memory)
pode ser escrita ou lida a partir do código que executa na CPU, chamado usualmente de host. Estas
operações são realizadas utilizando-se funções da API (Aplication Programming Interface) de CUDA.
Internamente, a memória global pode ser acessada por qualquer thread em execução no dispositivo. Entretanto, a tecnologia usada no desenvolvimento de tal memória não possui taxa de velocidade
203
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
de acesso que acompanhe a velocidade dos cálculos que pode ser obtida pela GPU, tornando-se um
gargalo de desempenho. Por conta disso, a organização de memória conta com outros tipos de memória que podem ser usadas pelo programador para otimizar o desempenho de acesso à memória.
São elas a memória local (shared memory), compartilhada apenas por threads num mesmo bloco, e
os registradores (registers), que não são compartilhados entre as threads e são alocados previamente
pelo compilador. Existe ainda uma memória somente de leitura, também compartilhada entre todas as
threads de um grid, a memória constante (constant memory), que possui um tempo de acesso melhor
que o da memória global.
Figura 15: organização de memória em CUDA.
Fonte: NVIDIA, 2011.
Embora os registradores e a memória local possam ser extremamente efetivos na redução da quantidade de acessos à memória global, o programador deve ser cuidadoso para que não exceda a capacidade efetiva destas memórias considerando os limites de hardware da GPU. Cada dispositivo oferece uma
quantidade limitada de memória CUDA, que pode limitar a quantidade de threads que pode executar
simultaneamente nos multiprocessadores de um dispositivo.
204
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
Como os registradores e a memória local são compartilhados entre as threads, quanto maior for a
quantidade destes recursos que cada thread necessitar, menor será a quantidade de threads que poderão executar num processador.
O esquema de escalonamento de threads depende de uma boa quantidade threads em execução
para que se obtenha uma boa utilização do dispositivo. Todas as threads em um bloco são executadas
em conjunto num SM, que por sua vez pode ter múltiplos blocos concorrentes em execução. Assim, a
quantidade de blocos (ocupação) será limitada pela quantidade de recursos de hardware disponíveis no
SM (como a quantidade de registradores e memória local, por exemplo).
O esquema de escalonamento é baseado em warps – cada bloco é divido em warps de 32 threads
cada, ou seja, o número de warps de um bloco é igual ao número de threads no bloco dividido por 32.
Visto que o escalonamento é realizado em grupo de threads, a organização em warps serve para que o
processador não fique parado quando ocorrer algum bloqueio num grupo de threads – este será desescalonado e um outro grupo (warp) poderá ser imediatamente executado. Daí a importância de se ter
uma boa quantidade de threads em execução em cada SM.
CUDA para a linguagem C consiste numa série de extensões de linguagem e de biblioteca de
funções. O modelo de programação assume que o sistema é composto de um host (CPU) e de um dispositivo (device ou GPU).
A programação consiste em definir o código de uma ou mais funções que executarão no dispositivo (kernel) e de uma ou mais funções que executarão no host (a main(), por exemplo). Quando um
kernel é invocado, centenas ou até milhares de threads são iniciadas no dispositivo, executando simultaneamente o código descrito no kernel. Os dados utilizados devem estar na memória do dispositivo e
CUDA oferece funções para realizar esta transferência.
EXEMPLO: SOMA DE NUVENS DE PONTOS EM CUDA
O código a seguir apresenta um exemplo que código em CUDA que implementa a soma de vetores
no dispositivo. O comando de invocação do kernel define a quantidade de threads e as dimensões do
bloco e da grade.
205
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
A partir deste código, é possível observar algumas das principais características da programação
CUDA. São elas:
• uso da palavra-chave __global__ que indica que a função é um kernel e que só poderá ser
invocada a partir do código do host, criando uma grade de threads que executarão no dispositivo (linha 05);
• uso das variáveis pré-definidas blockDim.x, blockIdx.x e threadIdx.x que identificam o bloco
e a thread dentro do bloco através de suas coordenadas (linha 06);
• uso da função cudaMalloc() que aloca memória no dispositivo (linhas 21 a 23);
• uso da função cudaMemcpy(), que copia os dados da memória do host para a memória do
dispositivo (linhas 27 e 28) e vice-versa (linha 40);
• invocação do kernel e definição de suas dimensões (linha 36);
• uso da função cudaFree(), para liberar a memória do dispositivo (linhas 43 a 45).
LINGUAGEM OPENCL
OpenCL (Munchi, 2011) possui uma filosofia ligeiramente diferente de CUDA. A ideia é que a linguagem e seu sistema de tempo de execução sirvam como uma camada de abstração ao hardware heterogêneo que é extremamente comum nos dias de hoje. Assim, um programa OpenCL tem o objetivo de
aproveitar todos os dispositivos presentes na máquina, tais como processadores multicore, GPUs, DSPs
(Digital Signal Processors), entre outros. Uma aplicação que executa em um hardware heterogêneo deve
seguir os seguintes passos:
206
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
1.
2.
3.
4.
5.
6.
Descobrir os componentes que compõem o sistema heterogêneo.
Detectar as características do hardware heterogêneo tal que a aplicação possa se adaptar a elas.
Criar os blocos de instruções (kernels) que irão executar na plataforma heterogênea.
Iniciar e manipular objetos de memória.
Executar os kernels na ordem correta e nos dispositivos adequados presentes no sistema.
Coletar os resultados finais.
Estes passos podem ser realizados através de uma série de APIs do OpenCL juntamente com um
ambiente de programação e execução dos kernels. Esta seção apresenta um resumo do modelo de abstração do OpenCL juntamente com um exemplo simples de código.
Em primeiro lugar, é importante conhecer o modelo de plataforma heterogênea do OpenCL. Ele
é composto por um host e um ou mais dispositivos OpenCL (devices). Cada dispositivo possui uma
ou mais unidades de computação (compute units), que por sua vez são compostos por um conjunto de
elementos de processamento (processing elements). A Figura 16 apresenta esta organização:
Figura 16: modelo de plataforma do OpenCL.
Fonte: Munchi, 2011
O host é conectado a um ou mais dispositivos e é responsável por toda a parte de inicialização e
envio dos kernels para a execução nos dispositivos heterogêneos. Os dispositivos normalmente são
compostos por unidades de computação que agrupam uma determinada quantidade de elementos de
processamento. Em relação a CUDA, as unidades de computação correspondem aos Streaming Multiprocessors da GPU (dispositivo) e os elementos de processamento correspondem aos núcleos (cores).
Um dispositivo, portanto, pode ser uma CPU, GPU, DSP ou outro qualquer, dependendo da implementação do OpenCL.
O modelo de execução define que uma aplicação OpenCL é composta por um programa host e um
conjunto de kernels. O programa host executa no host (normalmente uma CPU) e os kernels executam
nos dispositivos disponíveis.
207
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
O programa host, ou simplesmente host, envia o comando de execução de um kernel para um
dispositivo. Isto faz com que várias instâncias da função que implementa o kernel sejam executadas no
dispositivo alvo. Em OpenCL estas instâncias são chamadas de work-items (itens de trabalho) e correspondem às threads de CUDA. Assim como em CUDA, cada thread ou work-item é identificado por
suas coordenadas no espaço de índices (que aqui também pode ter até 3 dimensões) e correspondem
ao seu global ID.
Os work-items são organizados, por sua vez, em work-groups. Estes, oferecem uma maneira de
estabelecer granularidades diferentes aos grupos de itens de trabalho, o que normalmente facilita
a divisão de trabalho e a sincronização. Os work-groups correspondem aos blocos de CUDA e podem ser situados num espaço de até três dimensões. Assim, os work-items possuem dois tipos de
coordenadas: local (dentro do work-group) e global (dentro do conjunto completo de work-items
em execução).
O host deve ainda definir um contexto (context) para a aplicação OpenCL. Um contexto define
o ambiente de execução no qual os kernels são definidos e executam e é definido em termos dos seguintes recursos: dispositivos, conjunto de kernels, objetos de programa (códigos fonte e executável
dos kernels que executam a aplicação) e objetos de memória (dados que serão utilizados pelos kernels
durante o processamento). Assim, um contexto é todo o conjunto de recursos que um kernel vai utilizar durante sua execução.
O contexto é definido em tempo de execução pelo host de acordo com os dispositivos disponíveis na máquina alvo. Para possibilitar uma escolha dinâmica do dispositivo onde os kernels vão
executar o OpenCL compila os kernels dinamicamente, gerando os objetos de programa, portanto,
em tempo de execução.
A interação entre o host e os dispositivos é realizada através de uma fila de comandos (command-queue). Os comandos são colocados nesta fila e aguardam seu momento de executar. A fila é
criada pelo host e conectada a um dispositivo logo após a criação do contexto. Esta fila suporta três
tipos de comandos: execução de kernel, transferência de dados (objetos de memória) e comandos
de sincronização.
Os comandos colocados em uma fila executam de forma assíncrona com relação ao host. Comandos de sincronização podem ser utilizados caso uma ordem deva ser estabelecida. Os comandos na fila
normalmente executam em ordem (in-order execution), porém algumas implementações de OpenCL
podem oferecer o modo de execução fora de ordem (out-of-order execution), que prevê uma execução
assíncrona dos comandos enfileirados.
O modelo de memória do OpenCL define dois tipos de objetos de memória: buffers (blocos contíguos de memória aos quais é possível mapear estruturas de dados) e imagens. Estas, podem ser manipuladas através de funções específicas presentes na API do OpenCL.
O modelo de memória define cinco diferentes regiões (Figura 17):
• Host memory: visível apenas ao host.
• Global memory: permite acesso para leitura e escrita a partir de todos os work-items em
todos os work-groups.
• Constant memory: é uma memória global que é inicializada pelo host e permite acesso somente de leitura aos work-items.
208
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
•
•
Local memory: é compartilhada apenas entre os work-items de um mesmo work-group.
Private memory: é privada a cada work-item.
Figura 17: Regiões de memória de OpenCL
Fonte: Munchi, 2011.
A interação entre o host e o modelo de memória pode ocorrer de duas maneiras: cópia explícita ou
mapeamento de regiões de um objeto de memória. Na cópia explícita, comandos de transferência entre
host e dispositivos são enfileirados na fila de comandos e podem ser executados de forma síncrona ou
assíncrona. No método de mapeamento, os objetos de memória são mapeados na memória do host, que
pode também realizar acessos a estes objetos. O comando de mapeamento também deve ser enfileirado
na fila de comandos.
EXEMPLO: SOMA DE NUVENS DE PONTOS EM OPENCL
Os códigos a seguir apresentam um exemplo de soma de vetores em OpenCL. Este exemplo é baseado em um tutorial oferecido pelo OLCF (Oak Ridge Leadership Computing Facility), um dos maiores
centros de processamento de alto desempenho do mundo (OLCF, 2012).
209
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
O primeiro código apresenta o código do kernel, que pode ficar num arquivo separado (.cl) ou
pode ser formatado no próprio código como uma string-C. Este código será passado como argumento
à função OpenCL que o compilará em tempo de execução.
A partir deste código é possível observar algumas características de OpenCL:
• A definição de um kernel é feita através de uma função que utiliza o modificador __kernel
(linha 01).
• O modificador __global indica que os parâmetros estão na memória global do dispositivo
(linhas 01 a 03).
• A função get_global_id() retorna o identificador global da thread (work item) na dimensão
0 (linha 06).
• A verificação do identificador (linha 07) é comumente realizada neste tipo de computação,
pois por motivos de desempenho é possível que threads a mais venham a ser lançadas. A verificação serve para que somente as threads “dentro do problema” executem o trabalho. Este
tipo de verificação também é comum em CUDA.
• Na linha 08 a soma é realizada (n threads serão iniciadas e cada uma realizará uma soma).
O código a seguir apresenta a main() juntamente com funções auxiliares do OpenCL que devem
ser executadas pelo host. Para reduzir o tamanho do código os testes de erro retornados pelas funções
não foram realizados.
210
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
211
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
212
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
A seguir, destaca-se as principais características de OpenCL presentes no código:
• Na linha 55 é definido o localSize que é a quantidade de work items em cada work group – 64
neste caso. Isto equivale em CUDA a definir a quantidade de threads em cada grupo.
• A linha 59 define a quantidade total de work items lançados (globalSize). Num primeiro momento pensaríamos que este número deve ser igual ao tamanho do vetor (n). Porém, globalSize deve ser divisível por localSize, por isso o arredondamento realizado nesta linha.
• Entre as linhas 61 e 72 é realizado o setup do OpenCL: plataforma, dispositivo, contexto e fila
de comandos (command queue).
• Entre as linhas 75 e 88 o kernel é lido e compilado.
213
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
•
•
•
•
Entre as linhas 90 e 105 os dados são enviados ao kernel no dispositivo.
Na linha 108 o kernel é enfileirado e por fim lançado no dispositivo.
Na linha 112 o host espera a finalização do kernel (sincronização).
Na linha 115 o resultado é lido da memória do dispositivo.
1.6 Comentários Finais
Conforme evidenciado no texto, um dos grandes motores propulsores da tecnologia atual de Nuvens de Pontos são GPUs, que disponibilizam, além de suporte a operações gráficas como modelagem,
renderização e animação para RV e RA.
Espera-se, com o caráter introdutório deste texto, que as bases de nuvens de pontos tenham sido
compreendidas, assim como as possibilidades de desenvolvimento tanto para o contexto gráfico como
para contextos mais genéricos.
Referências
FARBER, R. CUDA Application Design and Development. New York: Morgan Kaufmann, 2011.
FARIAS, T.S.M.C., TEIXEIRA, J.M.N.X., LEITE, P.J.S., ALMEIDA, G.F., TEICHRIEB, V., KELNER, J. High Performance Computing: CUDA as a Supporting Technology for Next Generation Augmented Reality Applications.
In: RITA, 16(1), 2009, pp. 71-96.
GASTER, B., HOWES, L., KAELI, D.R., MISTRY, P. Heterogeneous Computing with OpenCL. New York: Morgan Kaufmann, 2011.
GROSS, M., PFISTER, H. Point-Based Graphics. New York: Morgan Kaufmann, 2007.
KIRK, D.B., HWU, W.W. Programming Massively Parallel Processors: A Hands-on Approach. New York: Morgan Kaufmann, 2010.
LINSEN, L. Point Cloud Representation. Karlsruhe, Alemanha: Universität Karlsruhe, 2001.
MUNSHI, A., GASTER, B., MATTSON, T.G., FUNG, J., GISBURG, D. OpenCL Programming Guide. New York:
Addison-Wesley Professional, 2011.
NVIDIA Corporation, FERMI Whitepaper, 2009.
NVIDIA Corporation, NVIDIA CUDA C Programming Guide - 4.0, 2011.
OLCF, Oak Ridge Leadership Computing Facility Tutorial, disponível em http://www.olcf.ornl.gov/training_articles/opencl-vector-addition/, acessado em abril de 2012.
214
Tendências e Técnicas em Realidade Virtual e Aumentada, v. 4, p. 189-216, maio/2014.
Silva, Luciano. Técnicas de Nuvens de Pontos para Aplicações de Realidade Virtual e Aumentada.
OPENCV, OpenCV GPU, disponível em http://opencv.willowgarage.com/ wiki/OpenCV_GPU, acessado em
abril de 2012.
PCL. (2012). Point Cloud Library. Fonte: Point Cloud: http://pointclouds.org, Acesso em 01/08/2012.
SANDERS, J., KANDROT, E. CUDA by Example: An Introduction to General-Purpose GPU Programming. New
York: Addison-Wesley, 2010.
SCARPINO, M. OpenCL in Action: How to Accelerate Graphics and Computations. New York: Manning Publications, 2011.
SILVEIRA, C.L.B., SILVEIRA, L.G.S. Programação Introdutória em OpenCL e Aplicações em Realidade Virtual
e Aumentada. In: Tendências e Técnicas em Realidade Virtual e Aumentada (Capítulo 3), Anais do SVR’2010,
pp. 65-101.
STRINGHINI, D., SILVA, L. Programação em CUDA e OpenCL para Realidade Virtual e Aumentada. In: Tendências e Técnicas em Realidade Virtual e Aumentada (Capítulo 1), Anais do SVR’2012, pp. 1-35..
SINHA, S.N., FRAHM, J.M., POLLEFEYS, M., GENC, Y. GPU-based Video Feature Tracking and Matching.
Relatório Técnico TR 06-012, Departamento de Ciência da Computação, Universidade da Carolina do Norte –
Chapel Hill, 2006.
SIZINTESEV, M., KUTHIRUMMAL, S., SAMARASEKERA, S., KUMAR, R., SAWHNEY, H.S., CHAUDHRY, A.
GPU Accelerated Real-time Stereo for Augmented Reality. In: Proceedings of the 5th International Symposium
3D Data Processing, Visualization and Transmission (3DPVT), 2010. 215
Download

da Versão Digital