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