ARTOOLKIT Introdução a Multimídia Bruno D’Ambrosio - bgda Cyrus Dias – cds Diego César – dcfq Diogo Severo – dss2 Flávia Chaves – frcc Thiago Carvalho – tjcps Victor Rocha - vhqr 1 Roteiro Introdução História Realidade Aumentada Aplicações em RA Tecnologias de Apresentação ARToolKIT Plataformas Funcionamento O processo de calibragem Arquitetura Exemplos Conclusão Referências 2 Introdução O que é Realidade Aumentada ? A Realidade Aumentada (RA) é uma área de pesquisa computacional que trata da integração de elementos virtuais gerados por computador com o mundo real, aumentando a cena com informações adicionais com as quais o usuário possa interagir em tempo real. 3 Breve Histórico Quando descrevemos a história da realidade aumentada também estamos descrevendo os processos que o homem utilizou para melhorar o mundo natural. 15,000 BC: Os desenhos nas cavernas de Lascaux mostram imagens “virtuais” numa caverna escura, que iniciaram a idéia de melhorar o mundo real 1849: Richard Wagner introduz a idéia de experiências imersivas utilizado um teatro escuro e envolvendo a audiência com sons e imagens. 1948: Norbert Wiener cria a ciência da cibernética, transmitindo mensagens entre homem e máquina. 1962: Mortong Heilig, um cinematógrafo, cria um simulador de motocicletas chamado Sensorama, com imagens, sons, vibração e cheiro. Introdução à Multimídia – ARToolKit 4 Histórico continuação... 1966: Ivan Sutherland inventa o HMD (Head-Mounted Display) sugerindo que ele fosse uma janela para um mundo virtual. 1975: Myron Krueger cria o Videoplace, que permite usuários interagirem com objetos virtuais pela primeira vez. 1989: Jaron Lanier inventa a expressão “Realidade Virtual” e cria o primeiro negócio comercial em torno de mundos virtuais. 1990: Tom Caudell cria a expressão “Realidade Aumentada” quando trabalhava na Boeing, ajudando trabalhadores na linha de montagem de aviões. 5 Realidade Aumentada Objetivo Criar um sistema onde o usuário não consiga distinguir o mundo real do virtualmente aumentado. Diz-se que esse objetivo da RA é utópico porque ele se depara com vários problemas. Principais Problemas Defasagem Espacial: diferença de registro entre os objetos virtuais e a cena real. Registro é o alinhamento dos objetos reais e virtuais para que se tenha a perfeita ilusão da coexistência dos dois ambientes. 6 Realidade Aumentada Defasagem Temporal: Latência entre a resposta do processamento da cena e a visualização do resultado desse processamento pelo usuário. Precariedade dos Gráficos: Quando a imagem do objeto virtual na cena é muito rudimentar, a distinção do que é real do virtual se torna evidente. Oclusão: Refere-se ao ato de ocultar (mascarar) porções de objetos reais ou virtuais na cena 3D tornando a sua coexistência o mais real possível. 7 Exemplos de aplicações em RA Construct3D Uma Aplicação em Realidade Aumentada para ensino de matemática e geometria. Fonte: http://www.ims.tuwien.ac.at/research/construct3d/ 8 Exemplos de aplicações em RA LevelHead Um jogo de memória espacial onde o usuário move o personagem utilizando um cubo que também representa os níveis do jogo. Fonte: http://julianoliver.com/levelhead 9 Exemplos de aplicações RA LIRA Livro Interativo com Realidade Aumentada 10 Exemplo de aplicações em RA Tinmith Project Projeto cujo objetivo é desenvolver aplicações outdoor Fonte: http://www.tinmith.net/ 11 Tecnologias de apresentação São as formas como o usuário visualizará o mundo real com os objetos virtuais inseridos nele. As principais tecnologias de apresentação são: Apresentação baseada em monitor Apresentação baseada em video see-through Apresentação baseada em optical see-through O ponto em comum entre esses três tipos de tecnologia de apresentação são seus componentes: Displays, sistemas de tracking, dispositivos de interação e sistemas gráficos. 12 Apresentação baseada em monitor A câmera real captura as imagens do ambiente e o sistema gráfico através da informação do rastreamento (correspondência entre a posição das câmeras real e virtual) sobrepõe a imagem real com os objetos virtuais e joga a saída para o monitor. Fonte: http://www.cin.ufpe.br/~if687/ 13 Apresentação baseada em video see-through Funciona da mesma forma que realidade aumentada em monitor, porém pode-se utilizar tracking na cabeça do usuário (HeadMounted Displays) que dará a impressão que a visualização do ambiente muda quando o indivíduo mexe sua cabeça. O mundo real observado está sempre atrasado em relação ao mundo real de fato (pelo menos um quadro ou 30 ms) Fonte: http://www.cin.ufpe.br/~if687/ 14 15 Aparelho de visualização Na apresentação baseada em optical see-through, e video see- through são utilizados os HMDs (Head Mounted Display) para visualização da cena. 16 Apresentação baseada em optical see-through • Os objetos virtuais são mesclados às imagens do mundo real por meio de processos ópticos 17 18 o que é o ARToolkit ? ARToolKIT é uma biblioteca open-source utilizada para desenvolver aplicações em realidade aumentada baseada em marcadoes! Marcadores são placas com molduras quadradas que circundam símbolos. A moldura serve para o cálculo da posição do objeto virtual na cena em função da imagem em perspectiva do quadrado. 19 Ainda sobre o ARToolKIT Já o símbolo interno funciona como identificador do objeto virtual. 20 Ainda sobre o ARToolKIT Baseia-se no uso de vídeo para misturar as cenas reais capturadas pela câmera com objetos virtuais gerados por computador. O ARToolKIT foi desenvolvido pelo pesquisador Hirokazu Kato da Universidade de Osala, Japão. Atualmente, o ARToolKIT é mantido pelo Laboratório de Tecnologia de Interface Humana, sediado na Universidade de Washington. 21 Plataformas Suportadas O ARToolKIT executa nas plataformas SGI Irix, PC Linux, PC Windows 95/98/NT/2000/XP e Macintosh OS X. No Linux, é exigido apenas o OpenVRML-0.14.3 No Windows, as ferramentas exigidas são: Microsoft Visual Studio DSVideoLib-0.0.4-win32 GLUT OpenVRML-0.14.3-win32 (opcional) Microsoft Directx SDK 22 Lista de Features Sobreposição de objetos virtuais 3D em marcadores reais Biblioteca de vídeo multiplataformas: múltiplas fontes de entrada e formatos suportados. Inicialização de GUI Detecção planar em tempo real Abordagem de padrões de marcadores extensível Fácil rotina de calibragem de câmera Biblioteca gráfica simples baseada em GLUT Rápida renderização baseada em OpenGL Suporte a VRML 3D Suporte a outras linguagens de programação (Java, Matlab) Conjunto completo de amostras e utilidades OpenSource com licença GNU GPL para uso não-comercial 23 Funcionamento do ARToolKIt O ARToolKIT, com o apoio de cálculos computacionais, faz a análise do ponto de vista da câmera em relação a um marcador. A busca e identificação dos marcadores, bem como o posicionamento dos objetos virtuais são feitos levando-se em conta a imagem binária e sua posição relativa à câmera. A oclusão, grande luminosidade do ambiente, prejudica o processo de captura dos marcadores pela câmera. 24 Funcionamento do ARToolKIT O funcionamento do ARToolKIT pode ser dividido basicamente em cinco etapas. Fonte: http://www.hitl.washington.edu/artoolkit/documentation/userarwork.htm 25 Etapas do ARToolKIT Na primeira etapa, a imagem real capturada pela câmera é transformada em imagem binária (preto e branco). Buscam-se todos os quadrados da imagem e compara-os com os gabaritos pré-treinados. Muitos dos quadrados são descartados por não corresponderem aos pré-definidos e quando quadrados se encaixarem com os modelos prédefinidos significa que se encontrou um marcador de referência. 26 Etapas do ARToolKIT Abaixo estão a imagem real do marcador, a imagem binária e a sobreposição da imagem gráfica no marcador real. 27 Etapas do ARToolKIT Na segunda etapa, o ARToolKIT se baseia no tamanho e na orientação do quadrado reconhecido para calcular a posição da câmera real em relação à marca física. Na terceira etapa, os símbolos dentro dos marcadores são comparados com templates na memória – os marcadores são identificados. Na quarta etapa, as posições dos marcadores são utilizadas para alinhar os objetos 3D. 28 Etapas do ARToolKIT Na quinta etapa, os objetos virtuais são desenhados (renderizados) no video frame. Para só então, ser feito o stream para o usuário. O ARToolKIT usa OpenGL para a renderização, GLUT para controles de janelas e eventos e bibliotecas de vídeo e APIs padrão de cada plataforma (Mac,Windows,Linux,etc). 29 Calibragem da Câmera Calibração da câmera é um processo pelo qual se estima o posicionamento e a orientação da mesma na cena. No ARToolkit as propriedades da câmera estão contidas no arquivo “camera_para.dat”, que é lido toda vez que uma aplicação é inicializada. Utilizando métodos de calibração de câmera é possível gerar um arquivo de parâmetros para câmeras específicas. 30 Calibração de Câmera O ARToolKit dispõem de dois métodos para calibração de câmeras: Abordagem de calibração baseada em dois passos Abordagem de calibração baseada em um passo 31 Calibração de Câmera – Baseada em dois passos Impressão dos arquivos padronizados “calib_cpara.pdf” e “calib_dist.pdf”. Depois de serem impressas, as figuras devem ser coladas em algum material plano e rígido. 32 Calibração de Câmera – Baseada em dois passos Principais propriedades de câmera que devem ser extraídas: O ponto central da imagem da câmera As distorções da lente A distância focal da câmera Essas propriedades são extraídas com o auxílio de dois programas: calib_dist calib_param 33 Calibração de Câmera – Usando o calib_dist A distorção da lente da câmera causa um espaçamento desigual entre os pontos capturados por ela. Ao rodar o programa, será mostrado o vídeo capturado. Devemos posicionar a câmera para visualizarmos todos os pontos e congelar a imagem (clicando no mouse). Devemos clicar com o botão esquerdo do mouse em cada ponto, começando pelo do topo na esquerda. Ao clicar, o ponto será marcado com uma cruz vermelha. 34 Calibração de Câmera – Usando o calib_dist 35 Calibração de Câmera – Usando o calib_dist Depois, devemos realizar mais 5 à 10 vezes o mesmo processo utilizando ângulos e posicionamentos diferentes. Quanto mais imagens utilizarmos, maior será a precisão. Após terminar esta parte da calibração, a seguinte imagem será mostrada: 36 Calibração de Câmera – Usando o calib_cparam Ele é utilizado para encontrar a distância focal da lente e outro parâmetros. Ao rodar o programa, a imagem capturada pela câmera será mostrada. A imagem é colocada perpendicularmente em relação à câmera e deve ser totalmente visível. Ao clicar com o mouse, uma linha irá aparecer. Devemos marcar todas as linhas. Depois, repetir o mesmo processo para distância maiores. 37 Calibração de Câmera – Usando o calib_cparam 38 Calibração de Câmera - One Step Calibration Approach Esta utiliza apenas o mesmo processo mostrado em “calib_dist”, porém usando o executável “calib_camera2”. calib_cparam2 Input the length between each markers: 40 Mouse Button Left : Grab image. Right : Quit 39 Framework do ARToolKIT 40 Framework do ARToolKIT A estrutura interna do ARToolKIT consiste em quatro módulos: Módulo de Realidade Aumentada: Módulo principal com rotinas para rastreamento de marcadores e calibração. Módulo de Vídeo: Coleção de rotinas de vídeo para capturar os frames do vídeo de entrada. Módulo Gsub: Coleção de rotinas gráficas baseadas em OpenGL e GLUT Módulo Gsub_Lite: Substitui Gsub com uma coleção de rotinas gráficas mais eficientes. 41 Framework Do ARToolKIT Arquiteturas com o módulo Gsub e Gsub_Lite. 42 Biblioteca do ARToolKIT A biblioteca do ARToolKIT consiste de três pacotes: libAR.lib: Biblioteca para rastreamento de pacotes, calibração e entradas de parâmetros. Contém as funções responsáveis por detectar os marcadores. libARvideo.lib: Biblioteca para capturar quadros da entrada de vídeo. libAR.gsub.lib: Contém rotinas gráficas, basedas nas bibliotecas OpenGL e Glut, para mapeamento do vídeo com textura em um ambiente 3D e para o posicionamento dos objetos virtuais sobre o marcador. 43 Extensões da Biblioteca Na versão 2.43 do ARToolKIT foram adicionadas as bibliotecas de grafo de cena VRML, a libVRML97 que é composta por outras quatro bibliotecas: libARvrml.lib: Esta biblioteca implementa um visualizador em VRML. VRML é uma linguagem para modelar mundos virtuais em 3D. Libvrml97core.lib: É a implementação das funções VRML97. Contém todos os comandos para gerar uma cena a partir de um código VRML. Libvrml97js.lib: É a implementação dos scripts (javascripts). Esses scripts permitem gerar animações 3D. 44 Extensões da Biblioteca A quarta e última biblioteca do pacote libVRML97 é libvrml97gl.lib que é uma implementação de uma classe OpenGlViewer que renderiza as cenas VRML sobre uma janela OpenGL. A biblioteca ARToolKIT encontra-se na versão 2.72.1. Ela pode ser baixada no endereço oficial http://www.hitl.washington.edu/artoolkit, bem como as versões anteriores da biblioteca ARToolKit. 45 Pipeline do ARToolKIT Os módulos do ARToolKIT são dispostos numa sequência de forma que o usuário possa substituir qualquer módulo por outro que ele queira.Por exemplo, o módulo Gsub pelo Gsub_line ou pelo renderizador Open Inventor. 46 Exemplos Magic: the Gathering utilizando ARToolkit LevelHead で初音ミク(その6):LIVE Mario PS3 - The Eye Of Judgment - Colisão 47 Conclusão Através desse trabalho, pudemos conhecer um pouco mais sobre realidade aumentada bem como sobre a biblioteca necessária para manipulação de objetos 3D em tempo real. Achamos que a interação com modelos virtuais, em cenas reais, passará a fazer parte cada vez mais do nosso dia-a-dia nas mais diversas áreas: medicina, jogos, engenharia, robótica, dentre outras. 48 Referências http://www.realidadeaumentada.com.br/home/ Acessado em: 02/05/2008 http://www.hitl.washington.edu/artoolkit/ Acessado em: 02/05/2008 http://www.equator.ecs.soton.ac.uk/projects/art oolkit/ Acessado em: 02/05/2008 http://www.criarweb.com/artigos/206.php Acessado em: 02/05/2008 http://www.cin.ufpe.br/~if687 Acessado em: 02/05/2008 49 Referências http://en.wikipedia.org/wiki/Augmented_reality Acessado em: 03/05/2008 http://technabob.com/blog/2007/10/14/levelhead- trippy-augmented-reality-game/ Acessado em: 03/05/2008 http://www.tinmith.net/ Acessado em: 03/05/2008 http://www.ims.tuwien.ac.at/research/construct3d/ Acessado em:03/05/2008 http://www.hitl.washington.edu/artoolkit/document ation/usercalibration.htm#twostep Acessado em: 03/05/2008 50 Anexos ... Fonte: http://www.hitlabnz.org/wiki/Forum 51