1. O documento descreve o perfil técnico e experiência de Alessandro de Oliveira Faria.
2. Alessandro tem mais de 30 anos de experiência no mercado de software e é membro ativo de várias comunidades de código aberto.
3. Ele mantém vários projetos de código aberto relacionados a realidade aumentada e desenvolvimento para Android.
2. 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 interprocessos.
●
easyPCSC: Biblioteca para utilização de cartões sma
Publicações:
●
Linux Magazine 9 Artigos
●
Internet 100 artigos técnicos (VOL/Tecnociência/Linha de Código).
3. 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.
6. 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.
9. 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
14. 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.
15. 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.
18. 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.
19. 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.
20. $ 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.
21. 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
22. 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êmse 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"
23.
24.
25. 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
29. 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();
31. 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).
32. 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.
33. 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.
34. 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.
35. 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.
36. 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
37. 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]"
38.
39. osgART
Testando os exemplos
Agora finalmente veremos o resultado
de todo este trabalho, entre na pasta bin do
projeto recémcompilado 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