ARToolKit Introdução à multimídia {ajss, agsj, clac, faas, jggxm, lams, mgr}@cin.ufpe.br Roteiro • • • • • • • • • Princípios da Realidade Aumentada Limitações/problemas da RA Áreas de aplicação Tecnologias e sistemas de RA O que é ARToolkit? Como surgiu? Processo de desenvolvimento Calibragem da Câmera Arquitetura e pacotes Introdução • O que é ARToolkit? – Biblioteca open-source para RA com marcadores. • O que é RA? – Realidade Aumentada – Integração de elementos virtuais com o mundo real • O que são marcadores? – Objetos reais (geralmente cartões) que servem para posicionar os elementos virtuais no mundo real Dois mundos Mundo real Mundo virtual Diagrama realidade/virtualidade Realidade Misturada Ambiente Real Realidade Aumentada Virtualidade Aumentada Ambiente Virtual Realidade aumentada (RA) • Inserção de objetos virtuais no mundo real • Aumento de informações • Interação em tempo real Objetivo utópico • “Tecnologia que objetiva combinar o mundo real com um mundo interativo gerado-por-computador de modo que pareçam um único ambiente” • O usuário, nesta utopia, não consegue distinguir o mundo real do virtualmente aumentado RA versus RV Realidade aumentada • A imersão no mundo real é total • Adicionar informações • Aumentar a capacidade de interação Realidade virtual • A imersão no mundo virtual é total • Simular a realidade • Dependente da imaginação do usuário Problemas e limitações • • • • • • • Tamanho e movimento dos objetos virtuais Posição e tamanho dos marcadores Defasamento espacial Defasamento temporal Tracking (usuário e objetos móveis) Aparência dos objetos virtuais Vemos bem demais Aplicações em RA • • • • • Mara (Mobile Augmented Reality Applications) The Invisible Train Tinmith project Lira (Livro Interativo de Realidade Aumentada) The Ambient Wood Project Aplicações em RA - (Mara) • Projeto desenvolvido pela Nokia com objetivo de colocar aplicações de realidade aumentada por vídeo see-trough, utilizando a câmera de celulares • O projeto foi acabado, mas hoje em dia, o Visual Computer User Interface group desenvolve pesquisas nesta área Aplicações em RA - (The Invisible Train) • Aplicação multiusuário que simula a brincadeira de “trenzinho” em palms, utilizando RA através de uma mesa de madeira com marcadores. Aplicações em RA - (Tinmith Project) • Projeto desenvolvido com objetivo de fazer aplicações de RA para ambientes outdoor • Constituido de um hardware, o tinmith backpack, e das diversas aplicações Aplicações em RA - (Lira) • Projeto desenvolvido no Brasil com o objetivo de criar um livro interativo • Utiliza marcadores no livro e uma webcam, podendo sincronizar sons com a aplicação Aplicações em RA (The Ambient Wood Project) • Projeto desenvolvido com o objetivo de criar uma floresta aumentada, para ajudar no aprendizado de crianças • A RA poderia tanto ser inserida em PDA’s carregados pelas crianças, quanto em monitores espalhados pela floresta Tecnologias e sistemas de RA • A maioria das tecnologias desenvolvidas em RA é para ambientes fechados • Existem diversos tipos de arquiteturas de sistemas de RA, contudo quatro componentes são comuns a todos: Displays, Sistemas de Tracking, Dispositivos de Interação e Sistemas Gráficos Sistemas Baseados em Monitor • Os objetos virtuais e reais são misturados e exibidos no monitor • É bastante utilizada em laboratórios para testar sistemas e exibições de baixo custo Sistemas Baseados em Monitor Sistemas de RA see-trough • São bem mais complexos e passam para o usuário uma sensação de imersão muito maior • Esses sistemas são envolvidos na maior parte da pesquisa e desenvolvimento em RA Optical see-trough Optical see-trough Optical see-through • O mundo real é processado diretamente pelo olho do usuário • Só o canal virtual é processado, isso torna o controle de defasamento com o mundo real mais complexo • Vem sendo substituído pelo video see-through Video see-trough Video see-trough Video see-trough • Tanto o mundo real quanto o virtual são processados eletronicamente • É mais fácil inserir objetos virtuais na cena real • Existe um pequeno atraso entre o que é observado pelo usuário e o mundo real Tecnologias de Tracking • “Permite captar a posição, ações e movimentos que o usuário faz no momento da sua interação” – Rastreamento Magnético: • Utiliza transmissores que emitem campos magnéticos de freqüência baixa e pequenos receptores. • A partir dos receptores são determinadas a posição e a orientação relativa do objeto rastreado em relação à fonte magnética. • Objetos condutores (metálicos) não podem estar presentes no espaço de rastreamento Tecnologias de Tracking Tecnologias de Tracking – Rastreamento Optico: • É implementado com base em técnicas de visão computacional e no uso de sensores ópticos, como câmeras de vídeo, e emissores ou diodos de luz infravermelha. • Baseia-se na captura pelas câmeras dos emissores de luz que, após a aplicação de técnicas de visão computacional sobre as imagens capturadas, dão como resultado a posição e orientação dos objetos rastreados no espaço 3D. Tecnologias de Tracking Tecnologias de Tracking • Outras tecnologias de tracking: – – – – Rastreamento mecânico Rastreamento acústico Rastreamento inercial Rastreamento Híbrido O que é ARToolkit? • ARToolkit é uma biblioteca de software, escrita em C/C++, utilizada para construção de aplicações de Realidade Aumentada • Realidade Aumentada é basicamente a imagem real com uma camada de sobreposição (gráfica) virtual • Esse modelo de interface tem mostrado potencial para muitas aplicações em pesquisa industrial e acadêmica Breve Histórico • O ARToolKit Foi desenvolvido inicialmente pelo Dr. Hirokazu Kato da Universidade de Osala, Japão. Hoje em dia é mantido pelo Laboratório de Tecnologia de Interface Humana, na Universidade de Washington • A primeira demonstração de suas funcionalidades foi em 1999, mesmo ano em que foi criado, na conferência da SIGGRAPH • Muitas modificações têm sido feitas nos últimos anos, incluindo propriedades como a do ARToolKit ser multiplataforma e a melhora do seus algoritmos de rastreamento. Tais modificações não têm sido feitas somente pelos seus criadores oficiais, H. Kato e M. Billinghurst, mas por toda uma comunidade de utilizadores Plataformas suportadas • Atualmente, o ARToolKit executa nas plataformas SGI Irix, PC Linux, PC Windows 95/98/NT/2000/XP e Mac OS X, com versões separadas para cada uma destas plataformas • A funcionalidade de cada versão do kit é a mesma, mas o desempenho pode variar conforme as diferentes configurações de hardware Dificuldades e Soluções • Uma das partes mais trabalhosas no desenvolvimento de uma aplicação em RA é calcular precisamente o ponto de vista do usuário em tempo-real para que imagens virtuais sejam alinhadas com precisão às imagens dos objetos do mundo real • O ARToolKit usa técnicas de visão computacional para calcular a posição no espaço real da câmera e sua orientação em relação aos cartões marcadores, permitindo ao programador sobrepor objetos virtuais aos cartões • O pacote inclui bibliotecas de rastreamento e disponibiliza o código fonte completo, tornando possível o transporte do código para diversas plataformas ou adaptá-los para resolver as especificidades de suas aplicações Mais... • Várias aplicações simples são fornecidas com o ARToolKit para que programadores comecem rapidamente a desenvolver suas aplicações • O ARToolKit é livre para uso em aplicações não-comerciais e é distribuído com código aberto Onde encontrar o ARToolkit... • A biblioteca ARToolkit, que atualmente encontra-se na sua versão 2.72, pode ser baixada no seu site oficial, http://www.hitl.washington.edu/artoolkit • As versões anteriores também podem ser encontradas no site oficial, bem como um FAQ contendo perguntas e respostas valiosas para os desenvolvedores que estão começando a trabalhar com ARToolkit • Foi incluída também após a versão 2.68 o suporte a objetos 3D no formato VRML, utilizando a biblioteca auxiliar openVRML IDE´s Suportadas • Por se tratar de uma biblioteca desenvolvida em c/c++, qualquer IDE que suporte essa linguagem, e qualquer máquina que possa executá-las, pode servir como ferramenta para a construção de aplicações de ARToolkit • Os requisitos básicos de hardware para desenvolver e executar aplicações do ARToolKit são: uma câmera de vídeo e uma interface ou um dispositivo de aquisição de vídeo com seus respectivos drivers Funcionamento do ARToolkit • Após ser capturada, a imagem real é convertida numa imagem binária • A busca e a identificação dos marcadores, bem como o posicionamento dos objetos virtuais são feitos levando-se em conta esta imagem binária e sua posição relativa a câmera Imagem binária Objeto virtual sobre o marcador real Etapas do processo • • • (1/5) A imagem real é transformada em imagem binária Busca-se todos os quadrados da imagem e compara-os com os gabaritos Os marcadores são localizados e demais quadrados, descartados Etapas do processo • (2/5) As posições dos marcadores são calculadas em relação à câmera Etapas do processo • (3/5) Os símbolos dentro dos marcadores são comparados com templates na memória – os marcadores são identificados Etapas do processo • (4/5) As posições dos marcadores são usadas para alinhar os objetos 3D Etapas do processo • • Os objetos virtuais são desenhados no video frame E, finalmente, é feito o stream para o usuário (5/5) Calibração de Câmera • As propriedades padronizadas da câmera estão contidas no arquivo “camera_para.dat” , que é lido toda vez que uma aplicação é inicializada. • Os parâmetros devem ser suficientes para um grande número de câmeras. • Portanto, usando uma técnica de calibração de câmera é possível gerar um arquivo de parâmetros para câmeras especificas. Calibração de Câmera O ARToolKit dispõem de dois métodos para calibração de câmeras: • “Two Step Calibration Approach” • “One Step Calibration Approach” Calibração de Câmera - Two Step Calibration Approach • 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. Fig. 1: calib_cpara.pdf impresso Fig. 2: calib_dist.pdf impresso Calibração de Câmera - Two Step Calibration Approach 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 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. Fig. 3: Marcando os pontos 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: Fig. 4: Dois exemplos de imagens calibradas 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 vísivel. • Ao clicar com o mouse, uma linha irá aparecer. Devemos marcar todas as linhas. • Depois, repetir o mesmo processo para distância maiores. Fig. 5: Passos dessa etapa Calibração de Câmera - One Step Calibration Approach • Está 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 Fig. 6: calib_dist.pdf impresso Módulos • Modulo RA : módulo principal com rotinas para rastreamento,calibração e coleção de parâmetros . • Módulo Video: coleção de rotinas de vídeo para captura de frames (como entrada). Ele é um wrapper para a plataforma standart de Captura de vídeo. • Modulo Gsub: uma coleção de rotinas gráficas baseado nas biblioteca do GLUT e OpenGL • Módulo Gsub_Lite: substitui GSub com uma coleção de rotinas mais eficientes, independente de qualquer sistema de janelas. FrameWork Arquitetura FrameWork Pipeline principal Fluxo de dados Bibliotecas • São 3: – libAR.lib – libARvideo.lib – libARgsub.lib Bibliotecas • Bibliotecas adicionadas v2.43 – – – – libARvrml.lib libvrml97core.lib libvrml97js.lib libvrml97gl.lib Considerações Finais • Acreditamos que aplicações que utilizam realidade aumentada deverá trazer novos desafios para os pesquisadores e desenvolvedores que desejam aumentar a capacidade do raciocínio humano, utilizando recursos que possam fornecerlhes mais informações a cerca do mundo ao seu redor • A interação com modelos virtuais, em cenas reais, irá enriquecer ainda mais a capacidade do ser humano de tomar decisões, facilitando a realização das tarefas do dia a dia, sem erros significativos de medição ou contextualização ? Dúvidas