SlideShare uma empresa Scribd logo
1 de 41
Realidade Aumentada na
Plataforma GNU/Linux Alessandro cabelo@opensuse.org
                                de Oliveira Faria (A.K.A.CABELO)
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 9 Artigos
●
  Internet 100 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
               Campus Party
Projetos e aplicabilidade
                 Arquitetura
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.
Projetos e aplicabilidade
      ATOMIC – Ferramenta RAD
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

Mais conteúdo relacionado

Mais procurados

Equipamentos de realidade virtual - Controlo e manipulação I
Equipamentos de realidade virtual - Controlo e manipulação IEquipamentos de realidade virtual - Controlo e manipulação I
Equipamentos de realidade virtual - Controlo e manipulação I
Susana Oliveira
 
Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)
Felipe Pedroso
 

Mais procurados (9)

Desenvolvimento de Aplicacoes para o Kinect
Desenvolvimento de Aplicacoes para o KinectDesenvolvimento de Aplicacoes para o Kinect
Desenvolvimento de Aplicacoes para o Kinect
 
Apresentacao KINECT
Apresentacao KINECTApresentacao KINECT
Apresentacao KINECT
 
[Rva] SEEL UEM
[Rva] SEEL UEM[Rva] SEEL UEM
[Rva] SEEL UEM
 
Desenvolvendo com Kinect
Desenvolvendo com KinectDesenvolvendo com Kinect
Desenvolvendo com Kinect
 
Desenvolvendo Aplicativos para o Kinect
Desenvolvendo Aplicativos para o KinectDesenvolvendo Aplicativos para o Kinect
Desenvolvendo Aplicativos para o Kinect
 
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft KinectAdaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
 
[Ci2015] sim rva
[Ci2015] sim  rva[Ci2015] sim  rva
[Ci2015] sim rva
 
Equipamentos de realidade virtual - Controlo e manipulação I
Equipamentos de realidade virtual - Controlo e manipulação IEquipamentos de realidade virtual - Controlo e manipulação I
Equipamentos de realidade virtual - Controlo e manipulação I
 
Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)
 

Semelhante a Realidade Aumentada

Demonstrador virtual web com recursos de Realidade Aumentada - Apresentação
Demonstrador virtual web com recursos de Realidade Aumentada - ApresentaçãoDemonstrador virtual web com recursos de Realidade Aumentada - Apresentação
Demonstrador virtual web com recursos de Realidade Aumentada - Apresentação
Leonardo Pereira Santos
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16
Gabriel Lima
 

Semelhante a Realidade Aumentada (20)

OpenKinect, o Kinect para todos
OpenKinect, o Kinect para todosOpenKinect, o Kinect para todos
OpenKinect, o Kinect para todos
 
Construção de interfaces on-demand baseadas em Realidade Aumentada Projetiva ...
Construção de interfaces on-demand baseadas em Realidade Aumentada Projetiva ...Construção de interfaces on-demand baseadas em Realidade Aumentada Projetiva ...
Construção de interfaces on-demand baseadas em Realidade Aumentada Projetiva ...
 
Netduino e .NET Micro Framework
Netduino e .NET Micro FrameworkNetduino e .NET Micro Framework
Netduino e .NET Micro Framework
 
Palestra realidade aumentada
Palestra   realidade aumentadaPalestra   realidade aumentada
Palestra realidade aumentada
 
Kinect
KinectKinect
Kinect
 
Programação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkProgramação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro Framework
 
Introdução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livreIntrodução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livre
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 
Internet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine LearningInternet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine Learning
 
Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...
Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...
Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...
 
Programação Robótica com RobotExpert
Programação Robótica com RobotExpertProgramação Robótica com RobotExpert
Programação Robótica com RobotExpert
 
[WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e...
[WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e...[WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e...
[WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e...
 
Introdução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosIntrodução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de Jogos
 
A Internet das coisas e a programação de micro controladores
A Internet das coisas e a programação de micro controladoresA Internet das coisas e a programação de micro controladores
A Internet das coisas e a programação de micro controladores
 
Demonstrador virtual web com recursos de Realidade Aumentada - Apresentação
Demonstrador virtual web com recursos de Realidade Aumentada - ApresentaçãoDemonstrador virtual web com recursos de Realidade Aumentada - Apresentação
Demonstrador virtual web com recursos de Realidade Aumentada - Apresentação
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16
 
WRVA 2015
WRVA 2015WRVA 2015
WRVA 2015
 
Android: Conheça o Futuro Inevitável
Android: Conheça o Futuro InevitávelAndroid: Conheça o Futuro Inevitável
Android: Conheça o Futuro Inevitável
 
FLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactFLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth Impact
 

Mais de Campus Party Brasil

Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
Campus Party Brasil
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
Campus Party Brasil
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
Campus Party Brasil
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Campus Party Brasil
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
Campus Party Brasil
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
Campus Party Brasil
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
Campus Party Brasil
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
Campus Party Brasil
 

Mais de Campus Party Brasil (20)

Wordpress
WordpressWordpress
Wordpress
 
Buracos negros
Buracos negrosBuracos negros
Buracos negros
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivos
 
Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?
 
Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
 
Passeio virtual pelo LHC
Passeio virtual pelo LHCPasseio virtual pelo LHC
Passeio virtual pelo LHC
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
 
Fazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXFazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectX
 
Blue Via
Blue ViaBlue Via
Blue Via
 
Linux para iniciantes
Linux para iniciantesLinux para iniciantes
Linux para iniciantes
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
 
Gestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreGestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software Livre
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
 
Vida de Programador
Vida de Programador Vida de Programador
Vida de Programador
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
 

Realidade Aumentada

  • 1. Realidade Aumentada na Plataforma GNU/Linux Alessandro cabelo@opensuse.org de Oliveira Faria (A.K.A.CABELO)
  • 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 inter­processos. ●  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.
  • 4. Conceito O que é realidade Aumentada?
  • 5. Realidade Aumentada Definição
  • 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.
  • 7. Projetos e aplicabilidade Mídia no universo paralelo
  • 8. Projetos e aplicabilidade Jogo levelhead
  • 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
  • 10. Projetos e aplicabilidade Jogo Eye Pet da Sony
  • 13. Projetos e aplicabilidade Cartão virtual
  • 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.
  • 16. Projetos e aplicabilidade ATOMIC – Ferramenta RAD
  • 17. ARTOOLKIT conceito
  • 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ê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"
  • 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
  • 26.
  • 27. ARTOOLKIT Teste e exemplos $ ./simpleTest
  • 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();
  • 30. ARTOOLKIT Padrões $ ./mk_patt
  • 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é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
  • 41. Críticas e sugestões cabelo@opensuse.org Obrigado! “Colaborar atrai amigos,  competir atrai inimigos...” http://cabelovivaolinux.wordpress.com