Académique Documents
Professionnel Documents
Culture Documents
. editores - Realidade Virtual: Uma Abordagem Prtica. Livro dos Minicursos do SVR2004, SBC, So Paulo, 2004. REFERNCIA DA VERSO IMPRESSA DO CAPTULO 6: Consularo, L.A.; Calonego Jr, N.; Dainese, C.A.; Garbin, T. R.; Kirner, C.; Trindade, J.; Fiolhais, C. - ARToolKit: Aspectos Tcnicos e Aplicaes Educacionais. In: Cardoso, A.; Lamounier Jr, E. editores. Realidade Virtual: Uma Abordagem Prtica. Livro dos Minicursos do SVR2004, SBC, So Paulo, 2004, p. 141-183. SUMRIO DO CAPTULO 6 6 ARTOOLKIT ASPECTOS TCNICOS E APLICAES
EDUCACIONAIS............................................................................. 3
6.1 6.2 Introduo ...........................................................................................................................3 Verses e Instalao............................................................................................................5 Instalao no PC-Windows .........................................................................................6 Programao de Aplicaes ........................................................................................8 Hardware necessrio ...................................................................................................9 A sada do simple.exe .................................................................................................9 A sada do simpleVRML.exe ....................................................................................11 O funcionamento do ARToolKit...............................................................................12 Escrevendo a aplicao .............................................................................................13 init().....................................................................................................................15 mainLoop ............................................................................................................18 cleanup ................................................................................................................20
6.2.8 6.2.9
Reconhecendo outros padres...................................................................................20 Outros programas de exemplo ..................................................................................23 ExView ...............................................................................................................23 Simple .................................................................................................................24
Calibrao de Cmeras com o ARToolKit .....................................................................24 Executando o calib_dist ............................................................................................25 Executando o calib_cparam ...............................................................................30
Bibliotecas e Funes do ARToolKit...............................................................................34 Estruturas de Dados Bsicas .....................................................................................36 Funes de Realidade Aumentada ............................................................................36 arInitCparam ..........................................................................................36 arLoadPatt ...............................................................................................37 arDetectMarker e arDetectMarkerLite ...................................37 arGetTransMat ........................................................................................38 arSavePatt ...............................................................................................38 arVideoOpen.............................................................................................39 arVideoClose ..........................................................................................39 arVideoInqSize .....................................................................................39 arVideoGetImage ...................................................................................40
6.4.1 6.4.2
Limitaes da RA baseada em Viso Computacional ...................................................40 Aplicaes Educacionais em Ambientes de Realidade Aumentada com ARToolKit .41 Introduo .................................................................................................................41 Intervenes Educacionais com Realidade Aumentada ............................................42 Sistema de Realidade Aumentada .............................................................................43 Quebra-cabeas .........................................................................................................45 Livro Interativo com Realidade Aumentada .............................................................45 P de transporte de objetos virtuais...........................................................................46 Aprendizagem de mecnica quntica com realidade aumentada: O Orbitrio .........46 Dificuldades de aprendizagem da Mecnica Quntica........................................47 O computador e a aprendizagem da Mecnica Quntica ....................................48
Concluses ................................................................................................................51
REFERENCIAS BIBLIOGRFICAS............................................................................51
Lus Augusto Consularo, 1Nivaldi Calonego Jnior Carlos A. Dainese1, Tania R. Garbin1, Claudio Kirner1, Jorge Trindade2 , Carlos Fiolhais2
Programa de Ps Graduao em Cincia da Computao Faculdade de Cincias Matemticas da Natureza e Tecnologia da Informao Universidade Metodista de Piracicaba (UNIMEP) Rodovia do Aucar, Km 156 13.400-911 - Piracicaba SP
2
1.1 Introduo
Este documento apresenta o pacote ARToolKit, enfatizando a instalao e o uso. O ARToolKit uma biblioteca em linguagem C que permite aos programadores desenvolver aplicaes de Realidade Aumentada. Realidade Aumentada (RA) a sobreposio de imagens virtuais de computao grfica sobre cenas do mundo real. Esse modelo de interface tem mostrado potencial para muitas aplicaes em pesquisa industrial e acadmica. Nos tutoriais do ARToolKit [KATO 2002], os autores encorajam os leitores a enviar comentrios e questes sobre o ARToolKit e relatos de erros e falhas para Hirokazu Kato (kato@sys.im.hiroshima-cu.ac.jp) ou para Mark Billinghurst (grof@hitl.washington.edu). H tambm uma lista de discusses que usada para difundir notcias sobre novas verses do ARToolKit, correes e aplicaes que a comunidade que trabalha com ARToolKit est desenvolvendo. Para assinar esta lista, envie uma mensagem para majordomo@hitl.washington.edu com as palavras "subscribe artoolkit" no corpo da mensagem. Depois disso, qualquer mensagem que voc enviar para artoolkit@hitl.washington.edu ser enviada a todos os membros desta lista de discusses. As listas so muito teis para encontrar dicas sobre o uso das funes, sobre equipamentos que esto sendo utilizados pelos desenvolvedores1,2 e ainda sobre novas verses e revises do pacote.
1 2
http://onyx.sys.im.hiroshima-cu.ac.jp/people/kato/ http://www.hitl.washington.edu/people/grof/
Atualmente, o ARToolKit executa nas plataformas SGI Irix3, PC Linux4, PC Windows 95/98/NT/2000/XP5 e Mac OS X6. H verses separadas para cada uma destas plataformas. A funcionalidade de cada verso do kit a mesma, mas o desempenho pode variar conforme as diferentes configuraes de hardware. Na plataforma SGI, por exemplo, o ARToolkit foi testado apenas para computadores SGI O2, contudo deve tambm executar nos computadores SGI atuais que contm com entradas de vdeo. A verso atual do ARToolKit oferece suporte para realidade aumentada com viso direta por vdeo ou viso direta ptica. A RA por viso direta por vdeo aquela cujas imagens virtuais so sobrepostas s imagens de vdeo ao vivo adquiridas do mundo real. A outra opo a RA por viso direta ptica, na qual modelos de computao grfica (os objetos virtuais) so sobrepostos diretamente s imagens do mundo real percebidas pelo sujeito. A RA por viso direta requer um dispositivo HMD (Head Mounted Display) e exige tambm um procedimento de calibrao da cmera que adquire imagens do mundo real [KATO 2002; KATO & BILLINGHURST 1999]. Estes procedimentos podem variar entre algo mais simples (que ser mostrado na seo 1.3), quando a viso direta por vdeo, ou mais complexo quando por viso direta ptica. Uma das partes mais trabalhosas no desenvolvimento de uma aplicao em RA calcular precisamente o ponto de vista do usurio em tempo-real para que imagens virtuais sejam alinhadas com preciso s imagens dos objetos do mundo real [HARTLEY & ZISSERMAN 2003]. O ARToolKit usa tcnicas de viso computacional para calcular a posio no espao real da cmera e sua orientao em relao aos cartes marcadores, permitindo ao programador sobrepor objetos virtuais aos cartes. O pacote inclui bibliotecas de rastreamento e disponibiliza o cdigo fonte completo, tornando possvel o transporte do cdigo para diversas plataformas ou adapt-los para resolver as especificidades de suas aplicaes. Vrias aplicaes simples so fornecidas com o ARToolKit para que programadores comecem rapidamente a desenvolver suas aplicaes. Alm disso, o ARToolKit livre para uso em aplicaes no-comerciais e distribudo com cdigo aberto sob licena GPL. Os interessados no uso do ARToolKit para o desenvolvimento de aplicaes comerciais devem entrar em contato com Hirokazu Kato1 ou com Mark Billinghurst2. O ARToolKit uma novidade em termos de modelo e programao de interfaces, em que alguns tutoriais apresentados pelos autores do ARToolKit e outros interessados [BERRE et al. 2002; KATO, BILLINGHURST & POUPYREV 2000; KE 2000] so as principais fontes de informao. Assim, a elaborao de um texto que trata de mostrar os elementos necessrios ao desenvolvimento desse tipo de aplicao exige uma organizao de texto que o resultado da compilao desses tutoriais e de experimentaes dos prprios autores deste texto, e est distribudo em cinco sesses. A primeira apresenta a instalao do ARToolKit. A segunda trata da programao de aplicaes com o ARToolKit, explorando os exemplos mais simples de execuo, que so distribudos com o Kit, e detalhando os passos do desenvolvimento de uma aplicao tpica. A terceira sesso apresenta o procedimento necessrio calibrao de cmeras, usando os
3 4 5 6
utilitrios disponveis no ARToolKit. Os utilitrios podem ser usados isoladamente, pois seus resultados so armazenados em arquivos que podem ser lidos por outras aplicaes. A quarta sesso descreve as bibliotecas, enfocando as funes mais importantes utilizadas para implementar aplicaes com o ARToolKit em computadores PC-compatveis com Windows. A quinta e ltima sesso discute algumas limitaes deste tipo de implementao de RA e mostra tambm algumas perspectivas para esta biblioteca.
http://www.ptgrey.com/ http://www.ims.tuwien.ac.at/~thomas/artoolkit.php
ainda que se conecte cmeras Firewire no Windows para que a aquisio das imagens seja mais rpida, possibilitando o aumento da taxa de processamento dos quadros. O autor alega que o suporte ao DirectShow tem um desempenho em torno de 3 vezes superior ao desempenho das verses com OpenGL. A verso 2.68 a mais recente e tem verses disponveis para Windows e para Linux/SGI/MacOSX. Ainda no oferece suporte ao VRML e est disponvel em http://www.eden.net.nz/phil/develop/artoolkit/. Esta verso corrige alguns problemas da verso 2.65, que invertia as coordenadas de altura nas imagens adquiridas das cmeras. Ainda h implementaes independentes do ARToolKit para Matlab (http://mixedreality.nus.edu.sg/ software.htm), uma outra que conecta as bibliotecas do ARToolKit com Java, o JARToolKit9 [GEIGER et al. 2002], e tambm uma iniciativa de software para aplicaes de RA para PDAs da linha iPaq10 [WAGNER & SCHMALSTIEG 2003]. A Erro! A origem da referncia no foi encontrada. ilustra um diagrama resumindo as verses convencionais disponveis do ARToolKit. As verses PC, SGI e Linux do ARToolKit esto disponveis gratuitamente em http://www.hitl.washington.edu/research/shared_space/download/. Este tutorial descreve a instalao da verso 2.65 com VRML, que est disponvel em http://www.hitl.washington.edu/artoolkit/download.htm.
http://www.c-lab.de/jartoolkit http://studierstube.org/handheld_ar
10 11
http://www.logitech.com/index.cfm/support/products/details/US/EN,CRID=1795,CONTENTID=6041
12 13 14
haja motivo de incompatibilidade entre cmeras e placas de aquisio de vdeo que sejam suportados pelo Vision SDK, Video for Windows ou pelo WDM (Windows Driver Model) da Microsoft. Os cdigos-fonte foram compilados com o MS Visual C++ 6.0 e o MS Visual C++ 7.0 (ambos com instalao do Visual Studio15).
Os programas de exemplo includos com o ARToolKit, todos, utilizam a biblioteca GLUT de interface com o OpenGL. Portanto, para compilar estes programas, deve estar instalada a verso 3.6 ou alguma verso mais atualizada. As bibliotecas GLUT esto disponveis em http://opengl.org/resources/libraries/glut.html. Para economizar tempo, copie os diretrios do OpenGL nos diretrios do ARToolKit. O diretrio GL com os prottipos (arquivos com extenso .h) do OpenGL no diretrio include do ARToolKit, o arquivo de biblioteca glut32.lib no diretrio lib e o glut32.dll no diretrio bin. Se existe uma instalao das bibliotecas em outro diretrio, com os caminhos todos definidos na configurao de projetos do Visual C, ento isto no necessrio. Para definir estes caminhos do Visual C, necessrio abrir o arquivo do workspace de sua aplicao, selecionar no projeto de sua aplicao o item Project e, ento, a opo Settings. Surgir uma caixa de dilogo com vrias configuraes. Voc precisar das opes C/C++ e Link.
15
http://msdn.microsoft.com/vstudio
Na opo C/C++ voc poder adicionar novos diretrios de prottipos selecionando a opo Preprocessor em Category. Na caixa de texto Additional include directories, inclua o diretrio de sua preferncia. Na opo Link, selecione Input em Category. Na caixa de texto Additional library path, inclua os diretrios de bibliotecas de sua preferncia, isto , aqueles nos quais voc incluiu os arquivos com extenso .lib.
Figura 1-2 Estrutura de diretrios depois de instalado o ARToolKit 2.65 com VRML
As prximas sees descrevem o hardware necessrio para executar o ARToolKit e depois mostram como executar os exemplos do ARToolKit em um PC-Windows. Em qualquer uma das instalaes das verses anteriores, a sada do programa simple.exe deve ter o mesmo comportamento.
Figura 1-3 Janela de propriedades da cmera. Os elementos configurveis desta caixa de dilogo depende da cmera que foi instalada.
Clicando OK nesta caixa de dilogo, voc ver uma janela para entrada de comandos mostrando as sadas textuais do programa (veja Figura 1-4).
Figura 1-4 Sada em janela de texto do programa simple.exe, mostrando os parmetros de exibio e de calibrao da cmera.
Finalmente, aparecer a janela de visualizao da cena com um cubo sobre um marcador (veja a Figura 1-5) .
Figura 1-5 Resultado da execuo do arquivo simple.exe, mostrando um cubo virtual sobre o marcador real.
Para que o objeto virtual aparea, toda a borda preta do quadrado que envolve o desenho padro deve estar enquadrada pela imagem da cmera, assim como o prprio desenho padro. Se as imagens virtuais no aparecerem ou piscarem aparecendo e desaparecendo da imagem, por causa das condies de iluminao do ambiente. Isto pode ser corrigido alterando o valor do limiar usado pelas rotinas de processamento de imagens. Se voc pressionar a tecla <t> no teclado, ser pedido a voc que entre com o valor de um novo limiar. Este novo limiar pode estar entre 0 e 255; o normal 100. Pressionando a tecla <esc> sai do programa e mostra a informao da taxa de atualizao em quadros por segundo (frame rate). Esta informao til par testar o desempenho de sua configurao. Uma taxa pequena (em torno de 10 quadros/segundo) pode ser invivel para sua aplicao. OBS: Se o programa sair anormalmente ou por alguma outra maneira
que no seja pressionando <esc>, recomenda-se que voc reinicie seu computador antes de usar novamente alguma aplicao de vdeo. O programa simple mostra como uma aplicao baseada no software ARToolKit capaz de calcular o ponto de vista da cmera em tempo real e usar esta informao para sobrepor precisamente o objeto do mundo real com imagens de objetos virtuais.
Neste caso, so dois padres: um com a palavra Hiro (que so as iniciais do autor Hirokazu, que est no arquivo Data/patt.hiro) escrita no quadrado e outra com um ideograma kanji (Data/patt.kanji). O padro patt.hiro uma referncia ao objeto VRML que est descrito no arquivo Wrl/bud_B.dat, que uma animao de uma abelha sobrevoando uma flor. O padro kanji referencia o arquivo Wrl/snoman.dat, que associa cdigo VRML para o desenho de um boneco de neve. Portanto, os arquivos .dat associam as marcas aos arquivos de cena. As duas ltimas linhas de cada padro so parmetros que especificam o tamanho com que o objeto deve aparecer na imagem e o local do centro deste objeto em relao ao centro da placa.
A execuo deste programa, assim como no simple.exe, mostrar uma tela de configurao da cmera e depois uma tela de comandos. Na janela de visualizao da cena podero ser vistos os padres (veja Figura 1-6a) e seus respectivos objetos (veja Figura 1-6b). (a) (b)
Figura 1-6 Resultado da execuo do programa simplevrml.exe: (a) mostrando apenas a aquisio de vdeo e (b) mostrando um objeto virtual e animado sobre o marcador.
(c)
Figura 1-7 Resultado da execuo do programa simple.exe mostrando (a) a imagem da cena com um marcador; (b) a imagem limiarizada e (c) o cubo virtual sobreposto ao marcador.
O diagrama da Figura 1-8 ilustra os passos do processamento de imagens usado para detectar a geometria do marcador e depois o posicionamento de um objeto virtual sobre este marcador detectado.
Detectar os marcadores e reconhecer os padres no quadro capturado da entrada de vdeo; Passo 4: Calcular a transformao da cmera em relao aos padres detectados; Passo 5: Desenhar os objetos virtuais nos padres detectados; Passo 6: Fechar a entrada de vdeo. Os passos 2 at 5 so repetidos continuamente at que a aplicao termine, j os passos 1 e 6 so executados, respectivamente, apenas na inicializao e na finalizao da aplicao. Alm destes passos, a aplicao pode precisar responder ao mouse, ao teclado ou a outros eventos especficos da aplicao. Para mostrar em detalhes como desenvolver uma aplicao, seguiremos cada passo no cdigo fonte do programa simpleVRML. Este exemplo encontrado no diretrio examples.
Figura 1-8 Diagrama descrevendo os passos da deteco dos marcadores e o posicionamento de objetos virtuais sobre os marcadores detectados na cena. Traduzido do tutorial dos autores [KATO, BILLINGHURST & POUPYREV 2000].
O arquivo que estaremos visualizando o simpleVRML.c. Este programa consiste de uma funo main e vrias funes grficas. A funo principal (main) mostrada no Cdigo 2.
Esta funo chama uma outra funo de inicializao (init()) que contm o cdigo para definio do caminho dos parmetros do dispositivo de vdeo, da leitura dos parmetros dos marcadores e da cmera e da janela grfica. Isto corresponde ao Passo 1. Depois, a funo arVideoCapStart() inicia a captura de imagens de vdeo. Finalmente, a funo argMainLoop chamada para iniciar o lao do programa principal, associar a funo keyEvent aos eventos do teclado e a funo MainLoop com o lao principal da renderizao grfica. A definio de argMainLoop est contida no arquivo gsub.c, que pode ser encontrado no diretrio lib/SRC/Gl/. O arquivo simpleVRML.c contm as funes que correspondem aos seis passos de aplicao acima so mostradas na tabela abaixo. As funes correspondentes aos passos 2, 3, 4 e 5 so chamadas dentro da funo mainLoop. Estas chamadas de funo sero explicadas com mais detalhes no restante da seo. Passo do ARToolKit 1.Inicializa a aplicao 2.Captura um quadro de vdeo 3.Detecta os marcadores 4.Calcula a transformao da cmera 5.Desenha os objetos virtuais 6.Fecha o dispositivo de vdeo Funo init arVideoGetImage arDetectMarker arGetTransMat draw cleanup
1.2.7.1 init()
A funo init() chamada a partir da funo principal e usada para definir o caminho dos parmetros para o dispositivo de vdeo e para ler os parmetros iniciais da aplicao ARToolKit. Os parmetros principais para uma aplicao ARToolKit so: 1. os padres que sero usados para comparar os padres e encontrar a correspondncia entre o desenho no padro e um objeto virtual. 2. as caractersticas da cmera de vdeo que est sendo usada. Estes dois parmetros principais podem ser lidos de arquivos de configurao, ou fornecidos na linha de comando da aplicao ou ainda definidos em constantes diretamente no cdigo. O parmetro default da rotina init para o nome do arquivo de parmetros da cmera Data/camera_para.dat, enquanto o nome default para o arquivo de objetos Data/vrml_data. O arquivo que contm os nomes dos padres e dos objetos virtuais lido com a chamada de funo do Cdigo 3.
/* carrega os dados do objeto -
marcadores treinados e arquivos de mapas de bits */ if ((object = read_VRMLdata(modelname, &objectnum)) == NULL) exit(0);
A funo read_VRMLdata obtm todos os padres treinados, que correspondem aos nomes dos padres lidos na biblioteca AR. Antes destes nomes serem lidos, o dispositivo de vdeo aberto e encontrado o tamanho configurado da imagem de vdeo (veja o Cdigo 4)
/* abre o dispositivo de vdeo */ if (arVideoOpen(vconf) < 0) exit(0); /* encontra o tamanho da janela */ if (arVideoInqSize(&xsize, &ysize) < 0) exit(0); printf("Image size (x, y) = (%d, %d)\n", xsize, ysize);
A varivel vconf contm a configurao inicial do vdeo e definida no topo do simpleVRML.c. Esta varivel uma cadeia de caracteres e sua configurao deve seguir uma sintaxe de configurao de vdeo definida pelo ARToolKit. H um comentrio explicando esta sintaxe e mostrando alguns exemplos. Agora, os parmetros da cmera so lidos, como mostra o Cdigo 5.
/* configura os parmetros iniciais da cmera */ if (arParamLoad(cparaname, 1, &wparam) < 0) { printf("Camera parameter load error!\n"); exit(0); }
Depois, os parmetros so transformados para o tamanho real da imagem, pois os parmetros da cmera mudam de acordo com o tamanho da imagem, mesmo que seja utilizada a mesma cmera (veja o Cdigo 6).
arParamChangeSize(&wparam, xsize, ysize, &cparam);
Os parmetros da cmera so configurados de acordo com a leitura anterior e ento so mostrados na tela (veja o Cdigo 7). Logo aps a janela grfica aberta:
arInitCparam( &cparam ); printf("*** Camera Parameter ***\n"); arParamDisp( &cparam ); /* abre a janela grafica */ argInit( &cparam, 1.0, 0, 0, 0, 0 ); /* cparam, zoom, fullflag, xwin, ywin, hmd */
Cabem alguns comentrios relativos aos parmetros de argInit. O primeiro parmetro na verdade a estrutura que contm os parmetros da cmera. O segundo parmetro o zoom,
isto , o quanto se quer aumentar a imagem de aquisio para ser exibida na tela. Lembre-se que o zoom aumenta o tamanho do pixel. O terceiro parmetro um sinal indicando se a janela grfica deve cobrir toda a tela (1, neste caso) ou se deve abrir uma janela sobre a rea de trabalho (zero, neste caso). Os outros dois parmetros so os tamanhos de eventuais extenses da tela contendo a imagem da cmera e, finalmente, o ltimo parmetro indica se a inicializao deve considerar que o display um HMD, isto , um capacete. A atribuio ao parmetro arImageProcMode = AR_IMAGE_PROC_IN_FULL indica ao ARToolKit para processar as imagens com o tamanho completo e original adquirido da cmera (veja o Cdigo 8). Isto pode tornar o processamento muito lento, dependendo do resultado desejado. Por isso, possvel reduzir a resoluo da imagem a ser processada fazendo arImageProcMode = AR_IMAGE_PROC_IN_HALF. Esta configurao deixa o processamento mais rpido, porm menos preciso.
arImageProcMode = AR_IMAGE_PROC_IN_FULL; // arImageProcMode = AR_IMAGE_PROC_IN_HALF; argDrawMode = AR_DRAW_BY_TEXTURE_MAPPING; // argDrawMode = AR_DRAW_BY_GL_DRAW_PIXELS;
O parmetro argDrawMode = AR_DRAW_BY_TEXTURE_MAPPING permite desenhar os pixels do vdeo como um mapeamento de texturas (veja o Cdigo 8). Se a placa grfica do computador tiver esta capacidade implementada, o processamento do vdeo ficar bem mais rpido. Com argDrawMode = AR_DRAW_BY_GL_DRAW_PIXELS os pixels da imagem so desenhados individualmente, e portanto, para equipamentos mais novos menos recomendado. Agora o momento de carregar os dados VRML, isto , os objetos 3D representados em arquivos cujo nome passado em model_name (veja o Cdigo 9). Nesta chamada de funo retorna ainda uma estrutura descrevendo este objeto e o nmero de objetos que devem ser lidos.
/* carrega os dados dos objetos - marcadores treinados e mapas de bits associados */ if ((object = read_VRMLdata(model_name, &objectnum)) == NULL ) exit(0); printf("Objectfile num = %d\n", objectnum);
momento de verificar se o objeto pode ser renderizado pela biblioteca LibVRML ou no (veja o Cdigo 10). Algum impedimento desta renderizao em um dos objetos far com que a aplicao no prossiga.
/* testa a renderizao de todos os objetos VRML */ printf("about to render VRML objects \n"); glEnable(GL_TEXTURE_2D); for (i = 0; i < objectnum; i++ ) { printf("rendering %d \n",i); arVrml97Draw( object[i].vrml_id ); } glDisable(GL_TEXTURE_2D);
Depois de renderizados os objetos, os parmetros de iluminao dos modelos devero ser inicializados (veja o Cdigo 11). Segundo um dos prprios autores do ARToolKit, brevemente haver uma verso com tratamento de sombreamento em tempo real no ARToolKit.
/* inicializa a iluminao */ init_lights();
1.2.7.2 mainLoop
Esta a rotina na qual a maior parte das chamadas de funo do ARToolKit. Ela contm o cdigo correspondente aos passos 2, 3, 4 e 5 da aplicao. Primeiro o quadro do vdeo capturado usando a funo arVideoGetImage (veja o Cdigo 12).
/* captura um quadro de vdeo */ if ((dataPtr = (ARUint8 *)arVideoGetImage()) == NULL ) { arUtilSleep(2); return; }
Algumas cmeras no possuem configurao de inverso vertical da imagem. Nas cmeras testadas para escrever este tutorial, as imagens apareciam invertidas. Portanto, foi includo um cdigo para inverter a imagem. Dependendo do processamento que estiver sendo feito, esta etapa pode deixar a aplicao mais lenta. Se esta inverso no for imprescindvel, pode ser retirada. Um passo importante em aplicaes que incluem a biblioteca LibVRML no ARToolKit a inicializao do temporizador do renderizador. Depois disso, a imagem mostrada e um outro quadro capturado (veja o Cdigo 13).
argDrawMode2D(); /* mostra a imagem na tela como um mapa de bits argDispImage( dataPtr, 0, 0 ); /* captura o prximo quadro de vdeo */ arVideoCapNext();
Ento os quadrados que contenham os marcadores corretos na imagem capturada devem ser detectados. Para isso so passados os parmetros: dataPtr, que o ponteiro indicando o incio da memria de vdeo; thresh que o limiar para separar o que fundo de um eventual objeto; marker_info, que a estrutura que contm informaes sobre o marcador e; marker_num que um valor contendo o nmero de marcadores detectados. Um retorno negativo indica uma falha que deve ocasionar a sada da aplicao (veja o Cdigo 14).
/* detecta os macadores no quadro de vdeo */ if (arDetectMarker(dataPtr, thresh, &marker_info, &marker_num) < 0 ) { cleanup(); exit(0);
O nmero de marcadores encontrados est contido na varivel marker_num. O parmetro marker_info um ponteiro para uma lista de estruturas de marcadores contendo a informao de coordenadas, valores de confiana do reconhecimento e os identificadores dos objetos correspondentes a cada um dos marcadores. Todos os valores de confiana dos marcadores detectados so comparados e associados ao nmero identificador correto, isto , com o maior valor de confiana (veja Cdigo abaixo).
/* verifica se o objeto deve ou no ser visvel */ for (i = 0; i < objectnum; i++ ) { k = -1; for (j = 0; j < marker_num; j++ ) { if (object[i].id == marker_info[j].id ) { if (k == -1 ) k = j; else { if (marker_info[k].cf < marker_info[j].cf ) k = j; } } } if (k == -1 ) { object[i].visible = 0; continue; }
A transformao entre os cartes marcadores e a cmera pode ser encontrada usando a funo arGetTransMat. A posio real da cmera e sua orientao com relao ao objeto marcador i esto contidas na matriz 3x4 object[i].trans (veja o Cdigo 16).
if ( object[i].visible == 0 ) { arGetTransMat( &marker_info[k], object[i].marker_center, object[i].marker_width, object[i].trans); } else { arGetTransMatCont(&marker_info[k], object[i].trans, object[i].marker_center, object[i].marker_width, object[i].trans); } object[i].visible = 1;
Finalmente, os objetos virtuais podem ser desenhados na placa usando a funo draw (veja o Cdigo 17).
/* desenha os objetos virtuais associados aos padres marcadores */ glClearDepth( 1.0 ); glClear(GL_DEPTH_BUFFER_BIT); glDisable(GL_BLEND); draw( object, objectnum );
A funo draw e as rotinas grficas associadas ao OpenGL esto no arquivo draw_object.c. Na funo draw, a matriz 3x4 contida em object[k].trans convertida em um arranjo de 16 posies, glpara, usando a chamada de funo argConvGLpara. O arranjo glpara ento passado para a funo draw_object. Estes 16 valores so os valores da posio e orientao da cmera real, portanto us-los para posicionar a cmera virtual faz com que os objetos grficos desenhados paream estar exatamente alinhados com o marcador fsico correspondente. A posio da cmera virtual configurada na funo draw_object usando a funo glLoadMatrix(gl_para) do OpenGL. Diferentes objetos grficos so ento desenhados de acordo com o marcador na placa, tal como um cubo para o padro cujo nome "cubo" e um cone para o padro cujo nome "cone". neste momento que chamado o renderizador VRML, na biblioteca LibVRML97, que vai associar o grafo de cena ao marcador detectado. O relacionamento entre os padres e os objetos virtuais mostrados sobre os padres determinado no arquivo vrml_data no diretrio bin/Data. Ao final da execuo da funo mainLoop, o temporizador do renderizador VRML atualizado para que eventuais e o buffer de atualizao disponibilizado pela troca entre o que est sendo desenhado e o que est sendo mostrado (veja o Cdigo 18).
/* atualiza a animao VRML */ arVrml97TimerUpdate(); /* disponibiliza um novo quadro de vdeo */ argSwapBuffers();
Os passos mencionados acima executam a cada interao do lao de renderizao. Enquanto o programa estiver executando, os eventos do mouse so tratados pela funo mouseEvent e os eventos de teclado pela funo keyEvent.
1.2.7.3 cleanup
A funo cleanup chamada para finalizar o processamento de vdeo e desconectar o dispositivo de vdeo, liberando-o para outras aplicaes. Isto acontece quando se chama as rotinas arVideoCapStop(), arVideoClose() e argCleanup().
um dos marcadores no arquivo vrml_data especificado por uma estrutura com os elementos: Nome Nome do arquivo de padres a ser reconhecido Largura do marcador a ser rastreado
Por exemplo, a estrutura correspondente ao marcador com o cubo virtual mostrada no Cdigo 19.
#padrao 1 cube Data/patt.hiro 80.0
Cdigo 19 Exemplo de estrutura que define o padro do marcador e seu objeto virtual.
Observe que as linhas que comeam com um caracter # so linhas de comentrio e so ignoradas pelo analisador do arquivo. Para mudar os padres que so reconhecidos, o nome de arquivo do padro (no exemplo, patt.hiro) deve ser substitudo pelo nome do arquivo com o padro desejado. Estes arquivos de padres pr-definidos so simplesmente um conjunto de exemplos de imagens do padro desejado. O programa que cria estes arquivos de padres pr-definidos chamado mk_patt e fica no diretrio bin. O cdigo fonte do mk_patt o arquivo mk_patt.c, que fica no diretrio util. Para criar um novo padro pr-definido, primeiro edite em um editor de imagens o arquivo blankPatt.gif, localizado no diretrio patterns. apenas um quadrado preto com um quadrado branco no meio. Ento crie uma imagem em preto e branco do padro desejado que caiba no meio deste quadrado e imprima-o. Os melhores padres so assimtricos e sem muitos detalhes. A Figura 1-9 mostra alguns padres possveis. Insira o novo padro no centro do quadrado vazio. (a) (b) (c)
Figura 1-9 Exemplos de padres que podem ser usados como marcadores.
Uma vez confeccionado o novo padro, v para o diretrio bin e execute o programa mk_patt. Ser pedido para que voc entre com um nome de arquivo de parmetros de
cmera (veja Figura 1-10). Entre com o nome do arquivo camera_para.dat. Este o nome default para o arquivo de parmetros de cmera.
O programa abrir ento uma janela de vdeo conforme mostra a Figura 11. Coloque o padro a ser treinado em uma superfcie plana em condies de iluminao similares quelas que existiro quando a aplicao de reconhecimento estar executando. Ento, coloque a cmera de vdeo apontando diretamente para o padro e vire-o at que um quadrado com dois lados vermelhos e dois lados verdes aparea em torno do padro (veja a Figura 1-11). Isto indica que o software mk_patt encontrou o quadrado em torno do padro de teste. A cmera deve ser rotacionada at que os lados vermelhos do quadrado estejam no topo e esquerda do quadrado na imagem de vdeo, conforme mostra a Figura 11. Uma vez que o quadrado encontrado esteja orientado corretamente clique o boto esquerdo do mouse. Ser ento pedido um nome de arquivo para o padro. Fornecido o nome do arquivo, gerada uma imagem em mapa de bits do padro que criado e copiado para este arquivo. Este padro ento usado na comparao de padres do ARToolKit. Outros podem ser treinados simplesmente apontando a cmera para novos padres e repetindo o processo, ou clicando o boto direito do mouse para sair da aplicao. preciso copiar os novos arquivos de padres no diretrio bin/Data antes de us-los. preciso tambm que se edite o arquivo vrml_data para associar os padres com os objetos virtuais.
1.2.9.1 ExView
A aplicao ExView (veja a Figura 1-12) permite que voc tenha uma viso externa da cmera, como se a cmera estivesse sendo rastreada. Isto til para verificar a acurcia do rastreamento. Esta aplicao permite tambm mostrar como as bibliotecas do ARToolKit podem ser usadas para encontrar uma representao quaternion da orientao do ponto de vista. No exemplo simpleVRML, o ponto de vista da cmera foi definido usando transformaes matriciais. Isto difcil de se fazer corretamente para aplicaes 3D que usem representaes por quaternion, que o caso do VRML. O ARToolKit tambm suporta a sada de quaternions, permitindo que rotinas de rastreamento de outros pacotes de renderizao sejam tambm utilizadas.
Esta aplicao mostra tambm um ponto forte do ARToolKit. Embora o ExView disponibilize um mapeamento monocular impreciso, muitas aplicaes colaborativas so viveis com um rastreamento que no exija muita preciso. Por exemplo, interfaces na qual
o usurio esteja imerso e interagindo com cones exigem apenas que se aponte para os objetos e no uma manipulao direta.
1.2.9.2 Simple
O simple.exe o programa mais simples do ARToolKit. Na verdade ele no interage com o VRML. Isto til quando h algum problema do qual se suspeita alguma relao com o grafo de cena VRML. Se o simple executar e o simpleVRML no, isto uma indicao de que h algum problema na configurao dos objetos ou no prprio renderizador do grafo de cena VRML. A Figura 1-13 mostra um instantneo do simple.
Nesta seo ser descrito o uso das rotinas de calibrao de cmera do ARToolKit. O incio do processo de calibrao a impresso dos arquivos de padres de calibrao calib_cpara.pdf e calib_dist.pdf. Estes arquivos ficam no diretrio patterns. O arquivo calib_cpara.pdf (veja Figura 1-14a) uma grade de linhas e dever ser impresso em escala para que as linhas fiquem separadas de exatamente 40 mm. O arquivo calib_dist.pdf (Figura 1-14b) contm um padro de 6x4 pontos e devero tambm ser impressos em escala para que os pontos fiquem separados de 40 mm. Uma vez
que estes arquivos estejam impressos, eles devero ser colados separadamente em algum material plano e rgido, tais como dois pedaos de papelo. As Figura 14a e 14b mostram estes padres como vistos pelas lentes das cmeras. (a) (b)
As principais propriedades de cmera que devem ser extradas deste processo so o ponto central da imagem da cmera, as distores da lente e a distncia focal da cmera. O programa calib_dist usado para calcular o ponto central da imagem e as distores das lentes. J o programa calib_param calcula a distncia focal da cmera. Os cdigos executveis de ambos os programas podem ser encontrados no diretrio bin e seus cdigos-fonte ficam respectivamente nos diretrios util/calib_distortion e util/calib_cparam. O programa calib_dist dever ser executado antes do calib_cparam, pois o calib_cparam usa o resultado do calib_dist. No restante desta seo explicaremos como e o que executa cada um destes programas.
Aparecer uma janela mostrando o vdeo que est sendo adquirido. Aponte a cmera para o padro de calibrao de tal modo que todos os pontos estejam na imagem capturada e ento clique com o boto esquerdo do mouse. Isto congelar a imagem de vdeo, como mostrado na imagem capturada da Figura 16. Agora, pressione o boto esquerdo do mouse sobre a imagem e desenhe (segurando o boto do mouse pressionado) um retngulo preto (que aparecer quando voc clicar) em volta de cada ponto da imagem. Comece com o ponto mais prximo ao canto superior esquerdo da imagem e prossiga at que todos os pontos tenham sido desenhados. Os pontos devem ser cobertos na seguinte ordem: 1 7 13 19 2 8 14 20 3 9 15 21 4 10 16 22 5 11 17 23 6 12 18 24
Depois de um retngulo ser desenhado, um software de processamento de imagens encontrar o ponto coberto pelo retngulo e colocar uma cruz vermelha em seu centro. Se no aparecer uma cruz vermelha, redesenhe o retngulo at que o ponto seja encontrado, isto , at que aparea a cruz vermelha.
Uma vez capturada cada imagem, enquanto cada retngulo estiver sendo desenhado, aparecer a seguinte sada (veja a Figura 17), mostrando cada ponto capturado.
Figura 1-17 Sada de texto enquanto cada ponto estiver sendo desenhado.
Uma vez encontrados todos os 24 pontos da imagem, pressione boto esquerdo do mouse novamente. Isto armazenar a posio dos pontos e descongelar a imagem de vdeo. A sada ilustrada na Figura 1-18 mostra a sada da tela depois disso, isto , a posio capturada de cada um dos pontos, bem como suas respectivas posies na grade.
Voc dever agora tomar outra imagem e repetir o processo para outras 5 a 10 imagens, em vrios ngulos e posies diferentes. Quanto mais imagens tomadas, mais precisa ser a calibrao. As figuras 19a e 19b mostram exemplos de imagens tpicas. (a) (b)
Figura 1-19 (a) Pose e posio diferentes do padro de calibrao da distoro. (b) A mesma imagem com os pontos marcados.
Uma vez que voc tenha tomado de 5 a 10 imagens, pressione o boto direito do mouse para parar a captura de imagens e comear a calcular os valores de distoro da cmera.
O clculo destes parmetros pode demorar alguns minutos, seja paciente. Os valores centrais x e y e o fator de distoro so os valores finais principais gerados pelo programa calib_dist. Estes valores sero diferentes para cada cmera e devero ser salvos para que se possa us-los no programa calib_cparam. A Figura 1-20 mostra a sada ao trmino desta etapa de calibrao.
Para verificar se estes parmetros esto corretos, pressione o boto esquerdo do mouse novamente. Isto mostrar aquela primeira imagem capturada com as linhas vermelhas desenhadas passando pelos pontos de calibrao. Estas linhas devero se cruzar no centro de cada um destes pontos (veja Figura 21). Cada vez que o boto esquerdo do mouse pressionado, a prxima imagem capturada mostrada.
Figura 1-21 Verificaes da aplicao da calibrao mostrando linhas passando pelos pontos do padro de calibrao.
Uma vez satisfeito com os resultados do calib_dist, clique no boto direito do mouse para sair e executar o cdigo calib_cparam.
Figura 1-22 Entrada, pela linha de comando, dos parmetros do utilitrio calib_caparam.
Aparecer uma janela de captura de vdeo. 2) Coloque o padro de calibrao em frente cmera de tal modo que: (a) a placa fique perpendicular ao eixo ptico da cmera; (b) todas as linhas da grade sejam visualziadas; e (c) a grade esteja cobrindo o maior espao possvel na imagem. 3) Pressione o boto esquerdo do mouse para capturar a imagem. Aparecer ento uma linha branca horizontal na imagem (veja a Figura 23).
4) Mova a linha branca de modo a cobrir o mximo possvel a linha preta do topo da grade. A linha pode se movimentar para cima ou para baixo usando-se as teclas de seta para cima e para baixo. A linha pode ainda ser rotacionada no sentido horrio e anti-horrio usando as teclas de setas para a direita e para a esquerda. Uma vez que a linha branca esteja alinhada com a linha do topo da grade, pressione a tecla enter. Esta linha se tornar azul e ento aparecer outra linha branca (ver Figura 24). Este processo dever ser repetido para todas as linhas horizontais.
Figura 1-24 A linha se torna azul e surge uma outra linha branca.
Uma vez que a ltima linha horizontal tenha sido ajustada, uma linha branca vertical aparecer e o processo dever ser repetido para as linhas verticais. A primeira linha branca vertical dever ser ajustada sobre a linha da grade mais esquerda e as outras linhas se ajustaro da esquerda para a direita (ver Figura 1-25).
A ordem das linhas muito importante. Elas devero ser ajustadas de cima para baixo e da esquerda para a direita at que todas as 16 linhas tenham sido desenhadas na tela. 5) Uma vez que o processo tenha terminado para uma imagem, o padro de grade dever ficar mais distante 100mm da cmera (mantendo a cmera perpendicular ao padro) e o processo deve ser repetido novamente. A Figura 26 ilustra a ltima linha ajustada para uma das imagens capturadas.
6) Repita o processo cinco vezes, afastando o padro de calibrao por um total de 500mm da cmera. Depois da quinta etapa de calibrao, o programa automaticamente calcular os parmetros da cmera. Ser pedido que voc entre com um nome de arquivo para armazenar estes parmetros nele (veja Figura 1-27). Uma vez que os valores estejam armazenados em arquivo de dados da cmera, pressione o qualquer boto do mouse para sair.
Mudando o nome deste arquivo de dados da cmera para camera_para.dat e colocando-o no diretrio bin/Data ele j pode ser usado nos programas exemplos do ARToolKit. A calibrao da sua cmera dever produzir resultados de rastreamento bem melhores que o da configurao padro de parmetros. A distncia padro entre as linhas da grade no arquivo calib_cparam.pdf exatamente 40 mm, enquanto o padro deve ser afastado da cmera em 100mm para cada mensurao, que deve ser repetida 5 vezes. Estes valores so todos determinados no cdigo fonte calib_cparam.c no diretrio util/calib_cparam (veja Cdigo 20). Se voc quiser modificar a distncia entre as linhas da grade, o trecho de cdigo fonte abaixo deve ser modificado.
inter_coord[k][j][i+7][0] = 40.0*i; inter_coord[k][j][i+7][1] = 40.0*j; inter_coord[k][j][i+7][2] = 100.0*k;
Cdigo 20 Trecho do programa calib_cparam.c para alterar o distanciamento dos padres de calibrao.
Neste cdigo, 40 a distncia entre as grades e entre os pontos, e 100.0 a distncia padro em que devem ser afastados os padres a partir da cmera, a cada vez. O nmero de medidas que devem ser tomadas pode ser alterado na varivel loop_num (veja Cdigo 21).
*loop_num = 5;
Cdigo 21 Varivel que deve ser alterada para mudar o nmero de distncias do padro de calibrao at a cmera.
A partir da verso 2.43 foram includas as bibliotecas de grafo de cena VRML, LibVRML97. Esta biblioteca de grafo de cena inclui outras 4 bibliotecas: libARvrml.lib: esta biblioteca implementa um visualizador VRML sobre o OpenGL. Na verdade ela implementa um visualizador utilizando as funes da biblioteca LibVRML97 que atuam diretamente sobre o OpenGL. Estende ao ARToolKit a classe OpenGLViewer fornecida pela biblioteca libvrml97gl. libvrml97core.lib: a implementao das funes VRML97. Contm todos os comandos para gerar uma cena a partir de um cdigo VRML e, claro, o seu analisador lxico e sinttico (parser). libvrml97js.lib: a implementao do script (javascript) verso 1.1 do engine Mozzila. Estes scripts permitem gerar animaes 3D, porm nem todos os aspectos so considerados. libvrml97gl.lib: uma implementao de uma classe OpenGLViewer que renderiza as cenas VRML sobre uma janela OpenGL. Essas bibliotecas so, na verdade, implementaes agrupadas pela LibVRML97. Uma discusso detalhada sobre suas funes no est no escopo deste tutorial.
1.4.2.1 arInitCparam
1.4.2.1.1 Funo: Iniciar os parmetros especificados na estrutura de parmetros da cmera. O argumento *param aponta para uma memria esttica na
biblioteca AR. Estes parmetros de cmera so normalmente lidos pelo programa de inicializao a partir de um arquivo de dados. Em aplicaes de RA por viso direta, parmetros default de cmera so suficientes, ou seja, no preciso qualquer calibrao de cmera. 1.4.2.1.2 Varivel: *param a estrutura do parmetro de cmera. 1.4.2.1.3 Retorno: sempre zero.
1.4.2.2 arLoadPatt
1.4.2.2.1 Funo: Carregar o mapa de bits do padro especificado no arquivo em filename, no vetor de padres para uso posterior pelas rotinas de deteco de marcadores. 1.4.2.2.2 Varivel: *filename nome do arquivo que contm o mapa de bits a ser carregado 1.4.2.2.3 Retorno: o nmero do padro carregado ou 1 em caso de falha.
estruturas ARMarkerInfo, que contm todas as informaes sobre os quadrados detectados na imagem.
1.4.2.4 arGetTransMat
1.4.2.4.1 Funo: calcular a transformao entre um marcador detectado e a cmera real, isto , a posio e orientao da cmera relativas marcao de rastreamento. 1.4.2.4.2 Variveis: ARMarkerInfo *marker_info a estrutura que contm os parmetros para o marcador para o qual a posio e orientao da cmera ser relativa. Essa estrutura encontrada usando arDetectMarker.
double pos3d[4][2] posies fsicas dos vrtices do marcador.
arGetTransMat assume que o marcador est no plano xy, e que o eixo z est apontando para baixo do plano do marcador. Deste modo, as posies dos vrtices podem ser representadas em coordenadas 2D, ignorando a informao do eixo z. A ordem das posies dos vrtices so especificadas no sentido horrio. Por exemplo, para um marcador com lado medindo 50 mm e com a origem das coordenadas do marcador no seu centro:
pos3d[4][2] = { { -25.0, -25.0 }, { 25.0, -25.0 }, { 25.0, 25.0 }, {-25.0, 25.0 } };
inicializao do programa.
double conv[3][4] a matriz de transformao entre as coordenadas do
marcador e as coordenadas do frame da cmera, que a posio relativa da cmera real em relao ao marcador real.
1.4.2.5 arSavePatt
1.4.2.5.1 Funo: usado no mk_patt para gravar um mapa de bits do padro do marcador que est sendo detectado.
1.4.2.5.2 Variveis: ARUint8 *image ponteiro para a imagem contendo o padro do marcador a ser treinado.
ARMarkerInfo *marker_info um ponteiro para a estrutura ARMarkerInfo do
gravada.
1.4.2.5.3 Retorno: zero se a imagem foi salva com sucesso, -1 caso contrrio 1.4.3 Funes de Aquisio de Vdeo
As seguintes funes da biblioteca libARvideo.lib so mais comumente usadas:
int arVideoOpen( void ); int arVideoClose( void ); int arVideoInqSize( int *x, int *y); unsigned char *arVideoGetImage( void );
1.4.3.1 arVideoOpen
1.4.3.1.1 Funo: abre o driver de vdeo para tentar encontrar todos os dispositivos de vdeo registrados no Windows 1.4.3.1.2 Variveis: nenhuma 1.4.3.1.3 Retorno: zero sucesso, -1 se o driver de vdeo no puder ser aberto.
1.4.3.2 arVideoClose
1.4.3.2.1 Funo: uma funo que precisa ser chamada para finalizar a captura de vdeo. 1.4.3.2.2 Variveis: nenhuma 1.4.3.2.3 Retorno: zero se finalizou com sucesso, -1 caso contrrio.
1.4.3.3 arVideoInqSize
1.4.3.3.1 Funo: retorna tamanho do quadro de vdeo capturado. 1.4.3.3.2 Variveis: int *x, *y ponteiros para largura (*x) e altura (*y) da imagem capturada.
1.4.3.3.3 Retorno: zero se as dimenses foram encontradas com sucesso, -1 caso contrrio
1.4.3.4 arVideoGetImage
1.4.3.4.1 Funo: capturar um nico quadro de vdeo 1.4.3.4.2 Variveis: nenhuma 1.4.3.4.3 Retorno: retorna um ponteiro para o quadro de vdeo capturado ou NULL se um quadro no puder ser capturado.
6,985 40,64 8,89 63,5 10,795 86,36 18,72 127 Esta limitao de espao tambm afetada de alguma maneira por padres cheios de detalhes. Quanto mais simples o padro, melhor. Padres com grandes regies pretas e brancas (isto , padres de baixa freqncia) so mais eficazes. Para se ter uma idia, neste experimento, o padro quadrado de 10,795 centmetros, usado no resultado da tabela acima,
foi substitudo por um padro do mesmo tamanho, mas com mais detalhes. Esta simples troca reduziu o espao de rastreamento de 86,36 para 38,1 centmetros. O rastreamento tambm afetado pela orientao dos marcadores em relao cmera. Conforme os marcadores se inclinam, menos os padres do centro sero visveis e o reconhecimento torna-se menos confivel. Padres confeccionados sobre superfcies maleveis (como o papel sulfite comum), que se curvam facilmente tambm no so adequados, tornando-se sujeitos a indecises de reconhecimento. Os resultados do rastreamento so afetados tambm por condies de iluminao. A saturao luminosa pode criar reflexes e regies brilhantes nas marcas do papel tornando mais difcil a tarefa de encontrar as marcas quadradas. Para reduzir o brilho, os padres podem ser confeccionados com material no reflexivo. Por exemplo, os marcadores podem ser confeccionados com papel camura, encontrado em papelarias. Pode-se perceber, a partir destas limitaes, que o ambiente no qual a aplicao de RA ocorrer assim como as interaes entre os objetos, exigem que as aplicaes sejam planejadas para que se possa determinar os tamanhos adequados dos marcadores, suas possveis inclinaes, ou ainda a iluminao do ambiente. Marcadores que se movimentam ao alcance das mos dos usurios devem ter um tamanho menor que aqueles que so utilizados apenas para visualizados a uma certa distncia, como por exemplo, uma decorao virtual em um apartamento real. fcil notar que marcadores estacionrios so menos suscetveis a problemas de reconhecimento que aqueles que se movimentam muito. Uma taxa de quadros deve dar ao usurio a iluso de uma interao real. Atualizaes de quadro com menos que 20 fps podem comprometer a fidelidade da aplicao, principalmente se esta aplicao envolver a manipulao de objetos virtuais. Outros experimentos explicitando estas limitaes podem ser encontrados em [DAVIS, CLARKSON & ROLLAND 2003; MALBEZIN, PIEKARSKI & THOMAS 2002; OWEN, XIAO & MIDDLIN 2002].
Os ambientes podem contribuir, estimulando a curiosidade e auxiliando no desenvolvimento da autonomia. A aprendizagem ocorre, quando o indivduo est engajado e utiliza de forma consciente estratgias de resoluo de problemas para a construo significativa. No se deve questionar o valor da instruo, mas importante a descoberta de novos conhecimentos, atravs da relao do novo com a experincia anterior. Assim, a possibilidade de interao entre objetos reais e virtuais, que ocorre atravs da Realidade Aumentada (RA), pode oferecer ao usurio maiores informaes sensitivas, facilitando a associao e a reflexo sobre a situao. Os sistemas de Realidade Aumentada permitem que o usurio decida sobre os ambientes, compondo cenas com imagens de objetos tridimensionais geradas por computador misturadas com imagens reais, aumentando as informaes do cenrio e oferecendo condies para a imerso no ambiente criado. A principal caracterstica destes ambientes que as informaes do mundo real so utilizadas para criar um cenrio incrementado com elementos gerados por computador [Dainese, 2003].
aprendizagem, o sistema no deve ser linear-fechado, onde apenas uma resposta correta frente a um tipo de estmulo apresentado. A aceitao de uma interface depende da capacidade de sua linguagem de interao em comunicar suas funes com clareza. Assim, no desenvolvimento de interfaces de realidade aumentada como mediador pedaggico, a questo de qualidade deve ter como objetivo a inteno do usurio e, principalmente, a usabilidade, possibilitando criar o novo a partir das experincias vividas. Os requisitos de ambientes de realidade aumentada para satisfazer as necessidades educativas, enquanto mediador pedaggico para sistemas complexos, so: Oferecer flexibilidade, em funo do ambiente; Exibir uma conduta adaptativa; Operar em tempo real; Oferecer a possibilidade de interao entre o real e virtual; Operar atravs de interao direta com linguagem natural; Oferecer um ambiente complexo, e aberto para: - Identificao de grande quantidade de dados; - Identificao de reaes perceptuais e motoras com muitos graus de liberdade. Nos ambientes de realidade aumentada, espera-se que o usurio possa: Utilizar smbolos e abstraes; Utilizar linguagem natural; Realizar aes que compem, alteram ou criam novas situaes; Interagir com objetos virtuais em tempo real; Relacionar ou compor cenas e ambientes com a integrao entre o real e o virtual; Realizar aes autnomas no ambiente conduzidas pelo desejo e imaginao.
situaes de ensino, com o objetivo de oferecer ao usurio a possibilidade de interagir e visualizar novas situaes. Nesse contexto, a Realidade Aumentada [Azuma, 1997] enriquece o ambiente real com objetos virtuais, com base em tecnologias que permitem misturar o cenrio real com virtuais. Isto pode ser feito, atravs do uso de WebCam que permite a captura do cenrio real e o rastreamento das mos ou de algum dispositivo auxiliar (placa com marcador). Esse ambiente permite fornecer maior realismo s aplicaes e o uso das mos para manipulao dos objetos, minimizando os inconvenientes da Realidade Virtual. Com esse fator motivacional, a Realidade Aumentada possibilita implementar ambientes que permitam a aplicao de estratgias diferenciadas para o desenvolvimento cognitivo. O trabalho consistiu de duas etapas: a) desenvolvimento tecnolgico e b) aplicaes educacionais. Uma vez que o ARToolKit um software aberto, o desenvolvimento tecnolgico consistiu na alterao de seu cdigo de programao para dar funcionalidades especficas no contempladas no software original, mas necessrias para o desenvolvimento de aplicaes diferenciadas. Nesse sentido, foram introduzidos trechos de programas que permitiram a introduo de som (Santin, 2004), controle de posicionamento (Lahr, 2004), controle de sequncia de objetos e transporte de objetos (Santin, 2004). As aplicaes baseadas em ARToolKit dependem de trs elementos: o cenrio real, objeto virtual e uma placa quadrada (marcador) com uma moldura e um identificar desenhado dentro dela. Ligando-se o sistema, a imagem capturada pela WebCam aparece na tela do monitor. Ao introduzir o marcador no campo de viso da cmera (usando as mos), o software ARToolKit posiciona o objeto virtual sobre o marcador no cenrio real, misturando as imagens. Ao movimentar-se o marcador, o objeto virtual acompanha este movimento, permitindo sua manipulao com as mos. Com o uso de som [Santin, 2004], associa-se, a cada objeto, um som correspondente (rudos, locues, etc) que disparado quando a placa entra no campo de viso da WebCam, alm do aparecimento do objeto virtual sobre a placa. Como exemplo, pode-se citar a visualizao de um carro virtual sobre a placa acompanhada do som do motor. Com o uso de uma placa adicional de controle [Santin, 2004], foi possvel alterar o objeto virtual associado a uma placa, trocando suas caractersticas, ou mesmo, a troca do objeto. Como exemplo, pode-se citar a presena de um carro em uma placa, que muda de cor, ou de modelo, com cada introduo da placa de controle. O som associado tambm pode ser alterado por esta placa. Atravs do posicionamento espacial, foi possvel registrar a trajetria dos objetos, capturando-se cada posicionamento e desenhando-se o deslocamento da trajetria [ Utiyama, 2004]. Como exemplo, a movimentao do carro no campo de viso da cmera, pode ser visualizada. No transporte de objetos [Santin, 2004] [ Lahr, 2004], uma placa de controle, ao aproximarse da placa com objeto virtual, permitiul a movimentao do objeto de uma placa para outra, ou a cpia de objetos entre placas. Com isto, foi elaborada uma ferramenta de autoria [Galana, 2004], que propiciou a montagem de cenrios de Realidade Aumentada com uso das mos pelo usurio.
1.6.4 Quebra-cabeas
O quebra-cabea, com Realidade Aumentada consistiu em conjunto de peas que formam uma imagem de um lado e no seu verso um marcador. Ao montar corretamente o quebracabea, a pessoa visualiza a imagem final na parte da frente. Virando-o e expondo o marcador, montado no seu verso, cmera, aparece o objeto virtual correspondente. Como exemplo, foi utilizado o quebra-cabea de um trem (Figuras 1 e 2), que, na frente, mostra a figura de um trem e, sobre o marcador no verso, um trem virtual em movimento
.
Figura 1-29 Parte superior do quebra-cabeas
Outra aplicao foi o desenvolvimento do Livro Interativo de Realidade Aumentada (LIRA) (Akagui, 2004) que consistiu na montagem de um livro explicativo sobre poliedros. Cada folha do livro apresentou um marcador de forma que, ao exp-lo no campo de viso da cmera, apareceu o poliedro virtual (Figuras 3 e 4) em 3D sobre o livro.
O uso do marcador permitiu uma variao da visualizao do poliedro, alterando suas cores, mostrando sua verso aramada e colocando-o para girar de forma a permitir a visualizao de vrios pontos de vista.
Contudo, a aprendizagem da Mecnica Quntica normalmente considerada difcil pelos alunos, devido ao seu caracter axiomtico. Quando os alunos estudam Mecnica Quntica, tm frequentemente de visualizar informao 3-D mostrada em grficos 2-D. Uma dificuldade adicional dos alunos a utilizao de conceitos que so muito diferentes dos que so aprendidos na Mecnica Clssica (por exemplo, um eltron num dado estado pode ser detectado em diferentes pontos do espao, com diferentes probabilidades dadas pelo mdulo do quadrado da funo de onda). Contudo, no ensino tradicional da Mecnica Quntica, supe-se que o conceito de probabilidade de fcil assimilao para os alunos. A noo de ocupao probabilstica do espao parece, porm, oferecer algumas dificuldades dos alunos. Existe uma desfasagem entre a inovao tecnolgica e a sua aplicao no ensino. Contudo, desde os primrdios da utilizao dos computadores no ensino, tm sido reconhecidas as potencialidades dos computadores como ferramenta de ensino e aprendizagem. Uma das mais promissoras tecnologias de apoio ao ensino e aprendizagem das cincias a realidade virtual. Entre as fronteiras desta e da realidade existe o espectro da realidade aumentada na qual cenrios do mundo real (por exemplo, os grficos 2-D habituais dos manuais de Mecnica Quntica) podem ser combinados com modelos virtuais (por exemplo, os respectivos modelos 3-D correspondentes s representaes 2-D). Uma das vantagens pedaggicas da realidade aumentada a possibilidade de permitir a visualizao simultnea de processos a diferentes escalas. Pode ainda juntar os grficos 2-D dos textos de Mecnica Quntica com os respectivos modelos 3-D. Motivados por estas idias, est sendo desenvolvido, aplicado e avaliado um programa baseado em realidade aumentada para ajudar no estudo de conceitos de Mecnica Quntica para alunos dos anos terminais do ensino secundrio e do primeiro ano da universidade. Os conceitos pertencem ao mbito da Mecnica Quntica no relativista, incluindo a interpretao probabilstica da funo de onda, as propriedades das solues da equao de Schrdinger, os princpios da incerteza e de excluso de Pauli, etc. Tambm sero ilustradas algumas experincias importantes como a de difrao de Rutherford, a de Thompson sobre a razo e/m para um eltron, etc.
secundrio e do primeiro ano do ensino superior e pode ser disponibilizado gratuitamente a pedido [ gua Virtual, 2004]. O Orbitrio O Orbitrio [Trindade, 2004] destinado ao estudo de orbitais hidrogenides, num nvel introdutrio, e encontra-se no incio da sua avaliao. A escolha da Mecnica Quntica encontra a sua justificao nas razes anteriormente invocadas, nomeadamente a explorao de conceitos abstractos, que so ensinados nas aulas, mas para os quais no existem modelos de referncia acessveis (conceitos de orbital e de densidade eletrnica) [Barton, 1997] [Story, 1998]]. O programa foi desenvolvido com o ARToolKit, que o software livre normalmente utilizado para desenvolver aplicaes de realidade aumentada. Trata-se de uma ferramenta de cdigo aberto com frequentes atualizaes, encontrando-se acessvel em vrios sites [Kato, 2003] . Um procedimento fundamental no desenvolvimento da aplicao consiste na sobreposio dos modelos virtuais (as orbitais) com o ambiente real (por exemplo, o manual). Para tal, preciso obter a posio e a orientao dos objetos da cena real e associ-los com os modelos previamente armazenados no computador. Isto normalmente conseguido com o recurso a determinados padres, isto , placas com marcas fiduciais que contm smbolos para se diferenciarem uma das outras, tornando-as singulares. Usando como exemplo a associao do modelo da orbital 2p respectiva marca fiducial (Figura 6), a imagem da placa fiducial, captada por uma webcam, convertida para um formato binrio. Uma vez reconhecido o padro, calculada a posio e orientao do marcador relativamente webcam. O modelo da orbital associado ao padro identificado e feito o rendering do modelo virtual no vdeo. O modelo da orbital (esttico ou dinmico) ir aparecer sobreposto ao respectivo padro e a sua representao poder ser feita de forma imersiva (num capacete de visualizao ou culos com ou sem estereoscopia) ou de forma no imersiva no monitor do computador (Figura 1-33). Ao manipular a placa (que pode estar incorporada num livro de texto), o objeto virtual realizar os mesmos movimentos da placa, como se a ela estivesse preso.
Figura 1-33 - Sobreposio do modelo virtual ao objecto real tomando como exemplo a orbital 2px.
A webcam capta o padro pr-definido e converte-o para um formato binrio para reconhecimento. O modelo da orbital associado ao padro identificado e calculada a posio e a orientao do marcador relativamente webcam. Finalmente efetua-se o rendering do modelo virtual no vdeo que aparecer sobreposto ao respectivo marcador.
Uma vez reconhecido o padro, o modelo da orbital (esttico ou dinmico) ir aparecer sobreposto ao respectivo marcador e a sua representao poder ser feita, por exemplo, de forma no imersiva no monitor do computador; b) Ao manipular a placa (que pode estar incorporada num manual), o objeto virtual realizar os mesmos movimentos do marcador, como se a ele estivesse preso. Como o ARToolKit usa cdigo aberto, foi possvel desenvolver recursos adicionais no cdigo referentes interao da aplicao e implementao de som. No que toca interao, possvel alterar o modelo virtual, a partir da introduo de uma placa adicional de controle. A alterao dinmica do objeto virtual, a partir da introduo de uma placa adicional de controle, consiste na utilizao de uma placa que possa interferir no objeto virtual de outra placa, de modo a troc-lo ou alter- lo, o que viabiliza a associao de mais objetos virtuais a uma s placa, de acordo com a necessidade da aplicao. Isto permite, por exemplo, que se possa visualizar a mesma orbital mas para diferentes orientaes espaciais ou para diferentes distribuies de densidade eletrnica. Esta (simples) interao, que consiste apenas na troca de uma placa de controle, acompanhada de som que explica as alteraes visveis no modelo, como por exemplo a variao da densidade eletrnica. Com a insero do som, consegue-se com a modificao
do ARToolKit para que seja executado o arquivo de udio com o surgimento do objeto virtual, quando se introduz a placa em frente cmara. Assim, foi possvel combinar num ambiente o melhor da exibio bidimensional (dos manuais) com a exibio computacional 3D, apelando-se a uma utilizao conjunta do livro de texto e do computador, contrariamente ao que habitualmente acontece com a utilizao do software.
1.6.8 Concluses
Em atividades educativas com uso de recursos computacionais, necessrio o planejamento adequado do uso de tecnologias em software e hardware, que possibilitam explorar: a carga cognitiva do usurio, o senso de observao, a ateno, a explorao e a reteno de informaes, utilizando elementos de percepo visual, ttil e auditiva. Para isso, necessrio desenvolver sistemas computacionais que apresentem: 1) facilidade na identificao dos componentes; 2) adaptabilidade ao nvel do usurio; 3) adequao dos programas s necessidades curriculares; 4) existncia de recursos motivacionais; 5) posssibilidade constante de alteraes do sistema (incluso de novos elementos); 6) fornecimento de retorno; 7) integrao do sistema com outros recursos; 8) capacidade de armazenamento de respostas; 9) registro de tempo de resposta e latncia e 10) liberdade de manipulao e navegao - controle sobre os elementos. Uma das vantagens do uso da Realidade Aumentada a possibilidade de criar interfaces multisensorias, sem a necessidade de perifricos de alto custo, como culos e capacete de visualizao, luva, caverna (CAVE), utilizados em experimentos de realidade virtual. Com isto, possvel o desenvolvimento de ambientes relevantes e interessantes para o usurio, utilizando materiais acessveis e disponveis nos laboratrios de informtica das escolas. Considerando a importncia do processo de construo do conhecimento para a formao do indivduo, os ambientes de realidade aumentada podem contribuir de forma a oferecer condies de experimentar, criar, descobrir, sem instrues previamente elaboradas ou definidas pelo sistema, pois o ambiente funciona como mediador, auxiliando o educando na descoberta e construo do novo. A construo do ambiente grfico ficou muito mais simplificada e rpida, reduzindo-se exclusivamente ao que essencial: os modelos que se pretendem explorar no ensino e aprendizagem. A tecnologia envolvida desempenha um papel muito menos dominante e distrativa para o aluno. Tal como referido por Cornu [Cornu, 1995], as novas tecnologias apenas estaro integradas no ensino quando elas no forem ferramentas suplementares mas sim quando elas se tornarem naturais e invsiveis como o telefone, o televisor e as calculadoras de bolso. As novas tecnologias s estaro realmente integradas na pedagogia quando, dessa unio, surgirem novos mtodos pedaggicos bem sucedidos.
Allendoerfer, R. (1990) "Teaching the shapes of the hydrogenlike and hybrid atomic orbitals". Journal of Chemical Education, 67 (1990) 37-40. Azuma, R. (1997) "A Survey of Augmented Reality", Presence: Teleoperators and Virtual Environments, vol. 6, 4, August 1997), p. 355-385. Azuma, R, et al. (2001) "Recent Advances in Augmented Reality". IEEE Computer Graphics and Applications, November/December 2001, vol. 21, p. 34-37. Baranauskas, M. C. C.; Rocha, H. V. (2003) "Design e Avaliao de Interfaces HumanoComputador". Campinas SP: NIED/UNICAMP, 2003. Barton, G. (1997) "Quantum dynamics of simple systems". Contemporary Physics, 38 (1997) 429-430. Boyce, W. (1997) "Interactive Multimedia Modules in Mathematics, Engineering, and Science". Computers In Physics, 11 (1997) 151-157. Brandt, S., Dahmen, H. (2000) "The Picture Book of Quantum Mechanics". Springer, NewYork (2000). Cornu, B. (1995) "New technologies: integration into education". In D. Watson e D. Tinsley (Eds.), Integrating Information Technology into Education. Chapman & Hall, New York (1995). Dainese, C.A., Garbin, T.R. e Kirner, C. (2003) "Sistema de Realidade aumentada para o Desenvolvimento da Criana Surda", In:VI Symposium on Virtual Reality:, 2003. Ribeiro Preto - SP. SBC, 2003. p.273-281. Galana, S.C., Silva, R.R.P.C.L., Kirner, C. (2004) Autoria Colaborativa de Mundos Virtuais Educacionais com Realidade Misturada Anais do 1o Workshop de Realidade Aumentada, Piracicaba, SP, maio de 2004, p. 17-20. Garbin, T.R., Dainese, C.A., Kirner, C., Santos, A.M., Jesus, M.A. (2004) Avaliao de Interface de um Sistema de Realidade Aumentada para a Criana Surda com base no Construcionismo Anais do 1o Workshop de Realidade Aumentada, Piracicaba, SP, maio de 2004, p. 33-36. Hurwitz, C., Abegg, G., Garik, P., Nasr, R. (1998) "High school students understanding of the quantum basis of chemistry". J. of Research in Science Teaching, 34(1998) 535-545. Jones, L. (1999) "Learning Chemistry through design and construction. UniServe Science News", 14 (1999) 3-7. Kato, H.; Billinghurst, M.; Poupyrev, I. (2003) "ARToolKit version 2.33 Manual", Nov.,2003.http://www.hitl.washington.edu/research/shared_space Lahr. P; Loureno, P. C.; Dainese, C. (2004) Desenvolvimento de uma ferramenta para Rastreamento em Sistemas de Realidade Aumentada. Anais do I WorkShop sobre Realidade Aumentada WRA 2004, UNIMEP, Maio, 2004, 37-40. Lvy, P. (1999) "O que virtual?", Traduo de Paulo Neves, So Paulo: Ed. 34, 1999. Rebello, N., Zollman, D. (2000) "Conceptual understanding of quantum mechanics after using hands on experiments and visualization instructional materials". In Annual
Teaching,
Boston
Redish, E., Bao, L. (2000) "Student difficulties with energy in quantum mechanics". In AAPT Winter Meeting, Phoenix (http://www.physics.umd.edu/perg/cpt.html, consultado em Outubro de 2000). Shotsberger, P., Vetter, C. (2001) "Teaching and learning in the wireless classroom. Computer", 34 (2001) 110-111. Santin, R.; Kirner, C. (2004) Desenvolvimento de Tcnicas de Interao para Aplicaes de Realidade Aumentada com o ARToolKit. Anais do I WorkShop sobre Realidade Aumentada WRA 2004, UNIMEP, Maio, 2004, 13-16. Story, R. (1998) "Bridging a quantum-mechanical barrier". IEEE Transactions on Education, 41 (1998) 54-60. Trindade, J., Fiolhais, C., Gil, V. (1999) "Virtual Water, an application of virtual environments as an education tool for physics and chemistry". In G. Cumming, T. Okamoto, L. Gomez (Eds.), Proceedings of ICCE99, 7th International Conference on Computers in Education, Chiba, Japo, (1999) 655-658. Trindade, J., Kirner, C., Fiolhais, C. (2004) An Augmented Reality Application for Studying Atomic Orbitals: Orbitrio Proc. of IADIS International conference on Cognition and Exploratory Learning in Digital Age, Lisboa, Portugal, Dec., 2004. Utiyama, F., Kirner, C. (2004) "Rastreamento e Visualizao de Trajetrias para Treinamento com Realidade Aumentada", Proc. of VII Symposium on Virtual Reality, SP, outubro de 2004. Valente, J.A. (2001) "Aprendendo para a vida: o uso da informtica na educao especial". In Valente, J.A.Aprendendo para a vida: os computadores na sala de aula. So Paulo. Cortez Editora, p.29-42, 2001. APPLE, C. FireWire. (http://developer.apple.com/firewire/). 2004. BERRE, A., INGVALDSEN, K., SYVERINSEN, T. & SALOMONSEN, M. for Dummies, 2002. (http://rasmus.uib.no/~st02204/HCI/). CAREY, R. & BELL, G. 504pp, 1997. ARToolKit
DAVIS, L., CLARKSON, E. & ROLLAND, J.P. Predicting Accuracy in Pose Estimation for Marker-based Tracking. In: Proceedings of the Second IEEE and ACM International Symposium on Mixed and Augmented Reality (ISMAR '03), Tokyo, Japan, p28-35, 2003. GEIGER, C., REIMANN, C., STICKLEIN, J. & PAELKE, V. JARToolKit - A Java binding for ARToolKit. In: The First IEEE Augmented Reality ToolKit International Workshop, p124, 2002. HARTLEY, R. & ZISSERMAN, A. Multiple View Geometry in Computer Vision. Cambridge University Press, 655pp, 2003.
KATO, H. Inside ARToolKit. 2002. (http://www.ikg.uni-hannover.de/lehre/katalog/ Augmented_Reality/pdf_files/ART02-Tutorial.pdf) KATO, H. & BILLINGHURST, M. Marker Tracking and HMD Calibration for a Videobased Augmented Reality Conferencing System. In: Proceedings of the 2nd IEEE and ACM Internationall Workshop on Augmented Reality, San Francisco, CA, USA, p85-94, 1999. KATO, H., BILLINGHURST, M. & POUPYREV, I. ARToolKit Version 2.33, 44pp, 2000. (http://www.hitl.washington.edu/people/grof/SharedSpace/Download/ARToo lKit2.33doc.pdf). KE, X. Tutorial: Installation of the ARToolkits and the relevant hardware (Version 2.11), 2000. (http://www.ece.nus.edu.sg/stfpage/eleadc/ARToolkit-tutorial-v2.pdf).
MALBEZIN, P., PIEKARSKI, W. & THOMAS, B.H. Measuring ARToolKit Accuracy in Long Distance Tracking Experiments. In: Proceedings of the 1st Augmented Reality Toolkit Workshop, Darmstadt, Germany, p124-125, 2002. MICROSOFT, CO. Introduction to DirectShow. http://msdn.microsoft.com/library/ default.asp?url=/library/en-us/directshow/htm/introductiontodirectshow.asp. 2004. MICROSOFT, CO. Microsoft Vision SDK, Version 1.2. http://msdn.microsoft.com/ library/default.asp?url=/library/en-us/dnvissdk/html/vissdk.asp. 2000. MICROSOFT, CO. WDM: Introduction to Windows Driver Model. http://www.microsoft. com/whdc/archive/wdm.mspx. 2002. MORLEY, C. LibVRML97 / Lookat. http://www.vermontel.net/~cmorley/vrml.html . 2000. NOMAD ELECTRONICS.COM. Capture using Video for Windows. http://www. nomadelectronics.com/VidCap/Capture using VFW/captureVFW.htm. 2004. OPENVRML.ORG. OpenVRML. http://www.openvrml.org/. 2003. OWEN, C.B., XIAO, F. & MIDDLIN, P. What is the best fiducial? In: Proceedings of The First IEEE Augmented Reality Toolkit International Workshop, p124, 2002. SGI OpenGL. Ver. 1.4. Silicon Graphics Incorporated, 2003. (http://www.opengl.org/) WAGNER, D. & SCHMALSTIEG, D. ARToolKit on the PocketPC platform. In: Proceedings of the 2nd Augmented Reality Toolkit Workshop, p14-15, 2003.