Você está na página 1de 5

Real versus virtual | ANLISE

Realidade aumentada

Real versus virtual


A tecnologia da realidade aumentada, alm de fascinar qualquer ser humano, um assunto emergente. Neste artigo, veremos seus princpios bsicos. por Alessandro de Oliveira Faria (Cabelo)

ANLISE

tecnologia de realidade aumentada, definida como a sobreposio, no ambiente real, de objetos virtuais e tridimensionais gerados por computador por meio de algum dispositivo tecnolgico de videocaptura. Esta tecnologia disponibiliza uma interao sem necessidade de treinamento, pois o usurio pode trazer para o ambiente real os objetos virtuais, incrementando e aumentando a viso do mundo real. Isso somente possvel com tcnicas de viso computacional juntamente com computao grfica. Os objetos virtuais introduzidos no ambiente real podem ser manipulados com as prprias mos, assim, proporcionando ao usurio uma interao inovadora e atrativa. Na gura 1, confira uma representao grfica do recurso e interatividade com a tecnologia de realidade aumentada. Os principais recursos da tecnologia de realidade aumentada so: Combinar elementos virtuais com o ambiente real.

Interatividade e processamento

em tempo real Ser concebida em trs dimenses. Meu primeiro contato com realidade aumentada teve incio em setembro de 2008, quando conheci o fantstico projeto Levelhead [1] criado pelo designer e programador Julian Oliver, o jogo open source baseado em um cubo real que utiliza somente bibliotecas de viso computacional de cdigo aberto para reproduzir o cubo virtual no monitor. Foi preciso um final de semana para baixar os cdigos-fontes e compil-los com todas as dependncias. A jogabilidade resume-se a entrar e sair de portas utilizando memria e inteligncia espacial, o que o levar para outros ambientes onde ser necessrio resolver alguns quebra-cabeas.

ARToolKit
Existem diversas bibliotecas e tecnologias tanto de cdigo aberto, como proprietrias, para o uso de realidade aumentada (openCV, Bazar e outras). Entretanto, uma quantidade significa-

tiva de trabalhos de software livre so baseados ou derivados da biblioteca ARToolKit (gura 2), uma biblioteca livre escrita em C, desenvolvida pelo Dr. Hirokazu Kato. Atualmente utilizada por pesquisadores do Laboratrio Tecnolgico de Interface Humana, na Universidade de Washington. A biblioteca surgiu com o objetivo de facilitar a construo de aplicaes de realidade aumentada (RA), sendo assim, o seu funcionamento utiliza recursos de viso computacional e processamento de imagens para prover os recursos de RA. O que encanta nesta tecnologia, e a complexidade do desenvolvimento das aplicaes, ou seja, calcular precisamente, em tempo real, o ponto de observao do usurio, para somente ento projetar corretamente os objetos virtuais no mundo real. Este o principal objetivo da biblioteca ARToolKit, rastrear rapidamente e calcular a posio real da cmera e de seus marcadores de referncia possibilitando que o programador acrescente objetos virtuais sobre es-

Linux Magazine #77 | Abril de 2011

63

ANLISE | Real versus virtual

compilao na ntegra, execute o comando make. Se todos os passos foram concludos com sucesso, entre no diretrio /bin para testar os exemplos (sugiro o binrio videoTest). Antes crie a varivel do ambiente ARTOOLKIT_CONFIG para definir as configurao do seu dispositivo de captura:
Figura 1: Esquema de funcionamento
da realidade aumentada. $ export ARTOOLKIT_CONFIG=v4l2src device=/dev/video0 use-fixedfps=false ! ffmpegcolorspace ! capsfilter caps=video/x-raw- rgb,bpp=24, width=960,height=720 ! identity name=artoolkit ! fakesink

tes marcadores no mundo real, sem sacrifcios nem magia negra. Para o perfeito funcionamento desta tecnologia, em primeiro lugar preciso transformar o quadro capturado no video ao vivo, em uma imagem com valores binrios e, somente ento, examin-la para encontrar regies quadradas. Ao encontrar um quadrado, a imagem no seu interior comparada com algumas imagens pr-cadastradas. Existindo uma similaridade suficiente com a imagem, utiliza-se o tamanho conhecido do quadrado e a orientao do padro encontrado, para calcular a posio real da cmera em relao posio real do marcador.

Se tudo estiver em perfeito funcionamento, ser apresentado uma janela cujo contedo ser o video ao vivo da sua webcam.

Calibre seu dispositivo


As propriedades padro da biblioteca ARToolKit esto localizadas no arquivo de parmetro do dispositivo de captura. Este arquivo denominado camera_para.dat e encontra-se no diretrio ARToolKit/bin/Data. O arquivo presente no projeto, apresenta um padro que abrange um amplo conjunto de dispositivos de videocaptura. Porm, sugiro a calibragem da cmera conforme as instrues a seguir. Para iniciar o processo de calibragem, em primeiro lugar devemos

Instalao da biblioteca ARToolkit


Efetue o download da verso 2.72.1 do cdigo fonte do projeto no SourceForge [2] e descompacte o pacote com o tradicional comando tar:
$ tar -zxvf ARToolKit-2.72.1.tgz

imprimir os arquivos calib_cpara. pdf e calib_dist.pdf. O arquivo calib_cpara.pdf uma grade de linha. Imprima este arquivo na escala onde preferencialmente as linhas fiquem separadas com uma distncia exata de 40mm. O arquivo calib_dist.pdf possui uma matriz de 6x4 pontos e, como ilustrado no arquivo pdf anterior, tambm dever ser impresso na escala onde as distncias entre os pontos so exatamente 40mm. Ambos os arquivos devero ser impressos em papel cartonado ou colados em superfcies no flexveis. A calibragem do dispositivo de captura obtida a partir das posies do ponto central, distores da lente e da distncia focal da cmera. Sendo assim, o binrio calib_dist utilizado para calcular o ponto central da imagem e a respectiva distoro da lente. De forma complementar, o programa calib_param calcula a distncia focal da cmera. Como todo excelente trabalho de cdigo aberto, os fontes esto disponveis para estudo e aprendizado. Vale a pena mencionar que devemos primeiro executar o programa calib_dist para depois executar o calib_cparam. O primeiro passo executar o calib_dist e logo em seguida posicionar a folha impressa (arquivo calib_dist.pdf) de tal modo que to-

Entre na pasta ARToolKit recm-criada e execute o comando ./configure seguido das respostas (5,n,n,) onde 5 representa a utilizao da biblioteca GStreamer para acesso aos dispositivos de videocaptura, n caso o sistema operacional seja de 64 bits, n novamente para no gerar informaes de debug e y se estiver trabalhando com uma placa NVIDIA ou ATI. Finalmente, para iniciar a

Figura 2: A biblioteca ARToolkit uma das grandes responsveis pelos


calculos necessrios ao projeto.

64

www.linuxmagazine.com.br

Real versus virtual | ANLISE

dos os pontos estejam visveis. Ento, clique com o boto esquerdo do mouse para congelar a imagem. Aps o congelamento, pressione o boto esquerdo do mouse sobre a imagem e desenhe um retngulo em torno de todos os pontos da imagem (segurando o boto do mouse pressionado). Comeando pelo ponto localizado no canto superior esquerdo da imagem e prossiga at que todos os pontos tenham sido desenhados. Repita este procedimento de 5 a 10 vezes em vrios ngulos. Termine a operao pressionando o boto direito do mouse ou a tecla [ESC]. O programa comear a calcular os valores de distoro da cmera. Para se certificar dos parmetros e clculos da operao, pressione o boto esquerdo do mouse para mostrar as imagens capturadas, com as linhas vermelhas desenhadas, passando pelos pontos de calibragem. Se tudo estiver em pleno funcionamento, as linhas devero se cruzar no centro de cada um destes pontos. Cada vez que o boto esquerdo do mouse pressionado, a prxima imagem capturada mostrada (figura 3). Agora partiremos para o programa calib_cparam, que como mencionado anteriormente, usado para encontrar a distncia focal da cmera, alm de outros parmetros. Para continuarmos, execute o programa e informe as coordenadas do centro e o fator de distoro disponibilizado pelo aplicativo calib_dist. Coloque a impresso do arquivo calib_cpara.pdf diante da cmera de tal modo que a imagem fique o mais perpendicular possvel ao eixo tico da cmera. Nele tambm todas as linhas devem ser visualizadas. Basta pressionar o boto esquerdo do mouse para capturar a imagem. Logo a seguir ser exibida uma linha branca horizontal na imagem. Movimente a linha

branca at cobrir a linha preta no topo e pressione [ENTER]. A linha movimenta-se para cima ou para baixo ao utilizar as teclas de seta para cima ou para baixo. A linha pode ainda ser rotacionada no sentido horrio e anti-horrio usando-se as teclas de setas para a direita e para a esquerda. Repita esse processo com todas as linhas verticais e horizontais por 5 vezes. Ao terminar, informe o nome do arquivo (figura 4). Para utilizar o arquivo de calibragem recm-criado, basta copi-lo para a pasta Data com o nome camera_para.dat ou alterar no cdigofonte a varivel char *cparam_name. Agora, para testar o funcionamento da realidade aumentada, execute o programa simpleTest e veja o resultado ao apresentar o arquivo pattHiro. pdf impresso para a cmera. O aplicativo ExView exibe a viso externa da cmera e tambm projeta em tempo real seu movimento em 3 dimenses. Para executar este aplicativo, digite o comando ./exview na pasta bin (gura 5). Para trabalhar com outros padres, utilize o programa mk_patt. Ao execut-lo, aponte o dispositivo de captura para o padro e rotacione at os dois lados vermelho e verde aparecerem em torno do padro. Os lados vermelhos do quadrado devem posicionar-se no topo e esquerda do quadrado. Logo em seguida, clique no boto esquerdo do mouse e informe o nome do arquivo padro.

Figura 3: As linhas vermelhas devem


passar pelos pontos do arquivo impresso.

toriamente necessrio, facilitam (e muito) a vida do programador. Claro que nada impede o uso do OpenGL junto biblioteca ARToolKit, OpenCV ou Bazar. A escolha do motor (engine) de renderizao determinar o sucesso ou o fracasso do projeto. Pois, no que tange viso computacional, todo processamento deve ser bem distribudo e projetado. Projetar objetos em 3 dimenses na web, em games ou apresentaes, requer esforo computacional distinto. Por exemplo, um motor de renderizao para games pode apresentar uma qualidade inferior, uma vez que existem outras tarefas matemticas a serem cumpridas (efeitos abstratos como fogo e exploses resultantes de tiros). A seguir, listo 4 entre os muitos motores de renderizao existentes.

Motores de renderizao
Os motores de renderizao so bibliotecas e componentes que facilitam a projeo em 3 dimenses de objetos ou cenrios criados em editores tridimensionais (Blender, por exemplo). Embora o uso de motores de renderizao no sejam obrigaFigura 4: O processo de calibragem,
embora demorado, permite ao programa calcular a posio do objeto virtual em relao ao real.

Linux Magazine #77 | Abril de 2011

65

ANLISE | Real versus virtual

IrrAR [3]
Motor de renderizao multiplataforma, performtico e de cdigo aberto. Ideal para criao de jogos, pois baseado na Irrlicht, que alm de suportar arquivos do Quake, suporta outros diversos formatos. Este motor permite o processamento de efeitos abstratos como neve, fumaa, fogo, superfcies aquticas e outros. Logo chegaremos a concluso que ele utiliza grande parte do seu processamento com efeitos e sendo assim, talvez no proporcione uma renderizao to realista em tempo real.

funes de deteco e rastreamento de marcadores do ARToolKit junto aos recursos de construo de modelos virtuais da biblioteca OpenSceneGraph. A OSGART apresenta alta qualidade na renderizao dos objetos virtuais, suporte reproduo de video e tcnicas de renderizao de sombras. Um boa escolha para aplicativos voltados para apresentaes.

Figura 5: Se tudo for feito corretamente, o ExView exibir um cubo como o visto acima.

Utilizando a osgART
Como seria muito extenso detalhar a instalao e utilizao de todas as tecnologias mencionadas nesse texto, decidi explicar a biblioteca osgART pelo fato de demonstrar excelente qualidade de renderizao. Sendo assim, para iniciar o trabalho, devemos primeiramente baixar, compilar e instalar o pacote OpenSceneGraph. O artigo toma como referncia a verso 1.2, porm, no obrigatrio o uso desta. O principal motivo da utilizao dessa verso somente manter a compatibilidade com os estudos do projeto Levelhead, e tambm obedecer verso requerida para a biblioteca osgART. Para iniciar, faa o download no link
http://www.artoolworks.com/dist/ osgart/release/1.0/osgART-1.0.tar. bz2 e em seguida execute: $ tar-xfzj osgART-x.x.tar.bz2 $ cd osgART/bin

FLARToolkit [4]
um porte do cdigo fonte da biblioteca ARToolKit para o Action Script 3.0 (Flash), feito pelo japons Saqoosha sob licena livre. O projeto carrega todas os recursos do projeto em que se baseia: detecta movimento, reconhece uma determinada marca e projeta um cenrio ou objeto 3D. Utiliza a renderizao baseada no Papervision3D e movimenta os objetos de acordo com movimentos reais. Este motor no apresenta altssima qualidade, pois foi projetado para ser executado no ambiente web (navegador); esta tecnologia deve estar preparada para qualquer tipo de equipamento e velocidade de conexo [5].

AndAR
um projeto que tenho orgulho de divulgar, pois foi devido a minha solicitao e contato com o autor, que este, abriu seu cdigo fonte. AndAR um projeto tambm baseado na biblioteca ARToolKit. Mesmo criado para equipamentos portteis, apresenta um excelente desempenho. O autor projetou com excelncia a abstrao da biblioteca com JNI e assim, escreveu muito bem o software.

Agora compile a biblioteca substituindo o trecho abaixo pela localizao do ARToolKit como parmetro do comando make.
$ make -f GNUmakefile ARTOOLKIT_ PATH=[path da biblioteca ARToolKit]

E os modelos 3D? O pacote


osgExport um plugin do Blender

osgART [6]
A biblioteca osgART facilita o desenvolvimento de aplicativos de realidade aumentada. Ela agrupa as

que exporta os modelos desejados para o formato osg (figura 6). Esse plugin, um mdulo escrito em Python e pode ser obtido na pgina oficial do software [7] ou para os usurios openSUSE, dis-

ponibilizo um rpm no meu repositrio [8]. Se resolver efetuar o download na pagina oficial, basta salvar o arquivo osgexport-2.42.py no diretrio [local-do-blender]/ blender/.blender/scripts. Em seguida, abra o modelo que deseja exportar e clique em File/ Export/OpenSceneGraph (.OSG). Ser exibida uma janela de dilogo onde devemos informar a localizao completa do arquivo a ser salvo e clique no boto Export. Utilize o programa osgconv que acompanha o pacote OpenSceneGraph compilado e instalado anteriormente, para converter o arquivo .osg para .ive. Esta extenso apenas a verso binria do arquivo .osg. Vale a pena mencionar, que para conferir o arquivo .osg, podemos utilizar o programa osgview que tambm pertence ao pacote OpenSceneGraph. Agora, finalmente veremos o resultado de todo este trabalho: entre no diredrio bin do projeto recmcompilado osgART e execute o programa osgARTsimpleNPR usando como parmetro seu arquivo .ive e o tamanho e a posio (X Y Z). Lembre-se que a varivel ambiental ARTOOLKIT_ CONFIG deve existir com as devidas configuraes, conforme mencionado anteriormente.
./osgart_example models/ cubo-neti.ive 80 0 0 5

Divirta-se vendo o seu objeto ganhar vida na tela do seu computador!

66

www.linuxmagazine.com.br

Real versus virtual | ANLISE

Figura 6: O osgEXPORT permite que voc exporte objetos do Blender para


utiliz-los em seus projetos de realidade aumentada.

Mais informaes
[1] Projeto Levelhead: http://selectparks.net/~julian/levelhead/ [2] ARToolkit: http://sourceforge.net/projects/artoolkit/ [3] IrrAR: http://sourceforge.net/projects/irrar/ [4] FLARToolkit: http://saqoosha.net/category/flash/flartoolkit/ [5] Teste do FLARToolkit: http://www.netitec.com.br/alessandro/ra [6] OSGART: http://osgart.org/ [7] osgEXPORT: http://projects.blender.org/projects/osgexport/ [8] Repositrio openSUSE do Cabelo: http://download. opensuse.org/repositories/home:/cabelo:/osgexport/

Sobre o autor
Alessandro Faria scio-proprietrio da NETi TECNOLOGIA, fundada em Junho de 1996 (http://www.netitec.com.br) e especializada em desenvolvimento de software e solues biomtricas. Consultor Biomtrico na tecnologia de reconhecimento facial, atuando na rea de tecnologia desde 1986. Leva o Linux a srio desde 1998 com desenvolvimento de solues opensource, membro colaborador da comunidade Viva O Linux e mantenedor da biblioteca opensource de vdeo captura, entre outros projetos.

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/5049

Linux Magazine #77 | Abril de 2011

67