Você está na página 1de 38

Realidade Aumentada na

Plataforma GNU/Linux Alessandro de Oliveira Faria (A.K.A.CABELO)


cabelo@opensuse.org
Perfil Técnico:
Alessandro de Oliveira Faria (A.K.A. CABELO)
Diretor de pesquisas
NETi TECNOLOGIA


 Atuando no mercado de software desde 1986 

 Embaixador e openSUSE Member; 

 Membro da comunidade Viva O Linux desde 2003; 

 Conselheiro Administrativo Linux do projeto Tecnociência;

 Projetista/mantenedor mais de 90 RPMs no openSUSE Build Service; 

Mantenedor e Desenvolvedor

 droidFrete: Cálculo de frete na plataforma Android.

 droidRastreamento: Rastreabilidade de objeto postados.

 stampDate: Serviço de menu KDE para estampar data em imagens.

 libHAIRCAPTURE: Biblioteca de video captura em Linux.

 IPCMSG: Biblioteca de comunicação inter­processos.

 easyPCSC: Biblioteca para utilização de cartões sma

Publicações:

 Linux Magazine 8 Artigos

 Internet 94 artigos técnicos (VOL/Tecnociência/Linha de Código).
Realidade Aumentada
Definição

RA define-se como a sobreposição


no ambiente real de objetos virtuais e
tridimensionais gerados por computador,
por meio de algum dispositivo tecnológico
de vídeo captura.

Isto somente é possível com técnicas de


visão computacional junto a computação
gráfica.
Conceito
O que é realidade Aumentada?
Realidade Aumentada
Definição
Conceito
O que é realidade Aumentada?

As principais qualidades da tecnologia realidade aumentada são:


* Combinar elementos virtuais com o ambiente real;
* Interatividade e processamento em tempo real;
* Ser concebida em três dimensões.
Projetos e aplicabilidade
Mídia no universo paralelo
Projetos e aplicabilidade
Jogo levelhead
Projetos e aplicabilidade
Jogo levelhead

Minhas pesquisa na NETi TECNOLOGIA sobre realidade aumentada iniciou em setembro de 
2008, quando conheci o fantástico projeto Levelhead 
http://selectparks.net/~julian/levelhead/ criado pelo designer e programador Julian Oliver
Projetos e aplicabilidade
Jogo Eye Pet da Sony
Projetos e aplicabilidade
Cartão virtual
Projetos e aplicabilidade
Rossi
A utilização desta tecnologia proporcionou ao 
projeto da Rossi o título de maior caso de 
Realidade Aumentada do mundo.
Projetos e aplicabilidade
Jogo da velha

O usuário imprime um campo de jogo com medidas específicas e utiliza um dispositivo de 
vídeo captura para interpretar a imagem em tempo real. O usuário joga com pedaços de 
papeis amaçado e/ou dobrado, fazendo um X com uma caneta ou colocando alguma peça 
na casa correspondente.
ARTOOLKIT
conceito
  Existem  diversas  biblioteca/tecnologia  de  código  aberto  e  proprietário  para  o  uso  da 
tecnologia  RA  (openCV,  Bazar  e  outras).  Entretanto,  uma  quantidade  significativa  de 
trabalhos de código aberto é baseado e/ou derivada da biblioteca ARToolKit, uma biblioteca 
escrita em C, baseada em software livre e desenvolvida pelo Dr. Hirokazu Kato. Atualmente 
utilizada  por  pesquisadores  do  Laboratório  Tecnológico  de  Interface  Humana,  na 
Universidade de Washington, surgiu com o objetivo de facilitar a construção de aplicações 
de Realidade Aumentada.
ARTOOLKIT
Instalação

$ wget
http://downloads.sourceforge.net/project/artoolkit/artoolkit/2.72.1/A
RToolKit-2.72.1.tgz

$ tar -zxvf ARToolKit-2.72.1.tgz

Entre na pasta ARToolKit recém-criada e execute o comando ./configure seguido das


respostas (5,n,n,) onde “5” representa a utilização da biblioteca Gstreamer para acesso
aos dispositivos de vídeo captura, “n” se o sistema operacional estiver trabalhando no
modo 64 bits, “n” novamente para não gerar informações para debug e “y” se estiver
trabalhando uma placa NVIDIA ou ATI . E finalmente para iniciar a compilação na integra,
execute o comando make.
$ cd ARToolKit/

$ ./configure
Select a video capture driver.
1: Video4Linux
2: Video4Linux+JPEG Decompression (EyeToy)
3: Digital Video Camcoder through IEEE 1394 (DV Format)
4: Digital Video Camera through IEEE 1394 (VGA NONCOMPRESSED Image
Format)
5: GStreamer Media Framework
Enter : 2

Color conversion should use x86 assembly (choose 'n' for 64bit systems)?
Enter : n

Do you want to create debug symbols? (y or n)


Enter : n

Build gsub libraries with texture rectangle support? (y or n)


GL_NV_texture_rectangle is supported on most NVidia graphics cards and
on ATi Radeon and better graphics cards
Enter : y

$ make

*** Se estiver utilizando a API-V4L1, Digite o valor numério 1 na


seleção do driver de captura.
ARTOOLKIT
Instalação

$ cd bin

$ export ARTOOLKIT_CONFIG="v4l2src device=/dev/video0 use-fixed-


fps=false ! ffmpegcolorspace ! capsfilter caps=video/x-raw-
rgb,bpp=24,width=960,height=720 ! identity name=artoolkit ! fakesink"

*** Se estiver utilizando a API-V4L1, defina a variável ambiental


ARTOOLKIT_CONFIG com os parâmetros abaixo:

$ export ARTOOLKIT_CONFIG="-dev=/dev/video0 -palette=YUV420P


-width=640 -height=480"

$ ./videoTest
ARTOOLKIT
Calibração da Webcam.

Imprimir  calib_cpara.pdf  e  calib_dist.pdf  na  escala  onde  preferencialmente  as  linhas 


fiquem separadas com uma distância exata de 40 mm.

A calibração do dispositivo de captura obtêm­se com a extração do ponto central, 
distorções da lente e a distância focal da câmera. Os programas utilizados são calib_dist 
e logo a seguir o calib_cparam.

$ ./calib_dist "v4l2src device=/dev/video0 use-fixed-fps=false !


ffmpegcolorspace ! capsfilter caps=video/x-raw-
rgb,bpp=24,width=960,height=720 ! identity name=artoolkit ! Fakesink"
ARTOOLKIT
Calibração da Webcam.

Para continuarmos, execute o programa e informe as coordenadas 
do  centro  e  o  fator  de  distorção  disponibilizado  pelo  aplicativo 
calib_dist.

--------------
Center X: 425,000000
Y: 323,000000
Dist Factor: 9,500000
Size Adjust: 1,010218
--------------

Checking fit on image 1 of 5.

$ ./calib_cparam
Input center coordinates: X = 425
: Y = 323
Input distortion ratio: F = 9.500000
ARTOOLKIT
Teste e exemplos

$ ./simpleTest
$ ./exview
ARTOOLKIT
Calibração da Webcam.

- Inicialização: Inicializa o dispositivo de captura, carrega em memória


o modelo impresso e carrega o parâmetros de calibração da câmera.
arVideoOpen(), arLoadPatt e arParamLoad()

- Captura um quadro.
arVideoGetImage()

- Detecta as marcas do padrão na imagem.


arDetectMarker()

- Calcula a transformação relativa.


arGetTransMat()

- Desenha o objeto virtual sob o padrão detectado.


Recursos openGL

- Finaliza o dispositivo de captura.


arVideoCapStop();
arVideoClose();
argCleanup();
ARTOOLKIT
Padrões

$ ./mk_patt
Motor de renderização
Qual utilizar

O Motor de renderização são bibliotecas e/ou componentes que facilitam 
a  projeção  em  3  dimensões  de    objetos  e/ou  cenários  criados  e  editores 
tridimensionais (Blender por exemplo). 

A escolha do Engine (motor) de Renderização determinará o sucesso ou 
fracasso  do  projeto.  Pois  no  que  tange  visão  computacional,  todo 
processamento deve ser bem distribuído e projetado. Pois projetar objetos 
em  3  dimensões  na  web,  em  games    apresentações,  requer  esforço 
computacional  distintos.  Por  exemplo  um  motor  de  renderização  para 
games  pode  apresentar  uma  qualidade  de  inferior  uma  vez  existindo 
outras  tarefas  matemáticas  a  cumprir  (efeitos  abstratos  como  fogo  e 
explosões resultantes de tiros).
Motor de renderização
IrrAR

Motor  de  renderização  multiplataforma, 


performático  e  de  código  aberto.  Ideal  para 
criação  de  jogos  pois  é  baseado  na  Irrlicht 
que  além  de  suportar  arquivos  do  quake, 
suporta outros diversos formatos. 

Este  motor  permite  o  processamento  de 


efeitos  abstratos  como  neve,  fumaça,  fogo, 
superfícies  aquática  e  outros.  Logo 
chegaremos  a  conclusão  que  este  motor 
utiliza  grande  parte  do  seu  processamento 
com efeitos, assim talvez não proporcionando 
uma renderização tão realista em tempo real.
Motor de renderização
FLARToolKit

É um porte do código fonte da biblioteca 
ARToolKit para o Action Script 3.0, feito pelo 
japonês Saqoosha sob licença livre. O projeto 
carrega  todas  as  funcionalidade  do  seu 
propulsor,  detecta  o  movimento,  reconhece 
uma  determinada  “marca”  e  projeta  um 
cenário/objeto  3D.  Utiliza  a  renderização 
baseada  no  Papervision3D  e  movimenta  os 
objetos  de  acordo  com  os  movimentos  reais. 
Este  motor  mão  apresentar  altíssima 
qualidade,  pois  foi  projetado  para  executar 
no  ambiente  WEB  (browse),  esta  tecnologia 
deve  estar  preparado  para  qualquer  tipo  de 
equipamento e velocidade de conexão.
Motor de renderização
AndAR

É um projeto que tenho orgulho de propagar, pois foi 
devido a minha solicitação e/ou contato com o  autor 
que  derivou  abertura  do  código  fonte.  AndAR  é  um 
projeto  também  baseado  na  biblioteca  ARToolKit. 
Mesmo criado para equipamentos portáteis, apresenta 
um  excelente  desempenho.  O  autor  projetou  com 
excelência  a  abstração  da  biblioteca  com  JNI,  assim 
performando muito bem o software.
Motor de renderização
osgART

A  biblioteca  OSGART  facilita  e  muito  o  desenvolvimento  de  aplicações  de 


Realidade  Aumentada,  ela  agrupa  as  funções  de  detecção  e  rastreamento  de 
marcadores do ARToolKit junto aos recursos de construção de modelos virtuais da 
biblioteca OpenSceneGraph. A OSGART apresenta alta qualidade na renderização 
dos objetos  virtuais    suporte  a  reprodução  de  vídeo,  técnicas  de  renderização  de 
sombras. Um boa escolha para aplicações voltada para apresentações.
openSceneGraph
Instalação e configuração

http://download.gna.org/underware/sources/openscenegraph-1.2.0.tar.gz

$ tar -zxvf ../openscenegraph-1.2.0.tar.gz


$ cd openscenegraph-1.2.0/
$ cd OpenThreads
$ make
$ sudo make install
$ cd ..
$ cd Producer
$ make
$ sudo make install
$ cd ..
$ cd OpenSceneGraph
$ make COMPILE_EXAMPLES=yes
$ sudo make install
osgART
Instalação e configuração

http://www.artoolworks.com/dist/osgart/release/1.0/osgART-1.0.tar.bz2

$ tar xfzj osgART-x.x.tar.bz2


$ cd osgART/bin
$ make -f GNUmakefile ARTOOLKIT_PATH="[path da biblioteca ARToolKit]"
osgART
Testando os exemplos

Agora  finalmente  veremos  o  resultado 


de todo este trabalho, entre na pasta bin do 
projeto recém­compilado osgART e execute 
o  programa  osgARTsimpleNPR  com  os 
parâmetros  [Seu arquivo .ive] tamanho  e 
posição  (X  Y  Z).  Lembre  que  a  variável 
ambiental  ARTOOLKIT_CONFIG  deve 
existir  com  as  devidas  configurações 
conforme mencionado anteriormente. 
A seguir um exemplo de execução na linha de comando. Bom acredito que este texto 
facilitará o aprendizado de muitos que desejam trabalhar com realidade aumentada.

$ ./osgart_example models/cubo-neti.ive 80 0 0 5
osgART
Testando os exemplos
Críticas e sugestões
cabelo@opensuse.org

Obrigado!

“Colaborar atrai amigos,
 competir atrai inimigos...”

http://cabelovivaolinux.wordpress.com