38
Realidade Aumentada na Plataforma GNU/Linux Alessandro de Oliveira Faria (A.K.A.CABELO) [email protected]

Realidade Aumentada na plataforma GNU/Linux

Embed Size (px)

DESCRIPTION

Conceito básico, projetos de código aberto e produtos e serviços criado com a tecnologia de realidade aumentada.

Citation preview

Page 1: Realidade Aumentada na plataforma GNU/Linux

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

[email protected]

Page 2: Realidade Aumentada na plataforma GNU/Linux

Perfil Técnico:Alessandro de Oliveira Faria (A.K.A. CABELO)

Diretor de pesquisasNETi 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).

Page 3: Realidade Aumentada na plataforma GNU/Linux

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.

Realidade AumentadaDefinição

Page 4: Realidade Aumentada na plataforma GNU/Linux

ConceitoO que é realidade Aumentada?

Page 5: Realidade Aumentada na plataforma GNU/Linux

Realidade AumentadaDefinição

Page 6: Realidade Aumentada na plataforma GNU/Linux

ConceitoO 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.

Page 7: Realidade Aumentada na plataforma GNU/Linux

Projetos e aplicabilidadeMídia no universo paralelo

Page 8: Realidade Aumentada na plataforma GNU/Linux

Projetos e aplicabilidadeJogo levelhead

Page 9: Realidade Aumentada na plataforma GNU/Linux

Projetos e aplicabilidadeJogo 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

Page 10: Realidade Aumentada na plataforma GNU/Linux

Projetos e aplicabilidadeJogo Eye Pet da Sony

Page 11: Realidade Aumentada na plataforma GNU/Linux

Projetos e aplicabilidadeCartão virtual

Page 12: Realidade Aumentada na plataforma GNU/Linux

Projetos e aplicabilidadeRossi

A utilização desta tecnologia proporcionou ao projeto da Rossi o título de maior caso de 

Realidade Aumentada do mundo.

Page 13: Realidade Aumentada na plataforma GNU/Linux

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 aplicabilidadeJogo da velha

Page 14: Realidade Aumentada na plataforma GNU/Linux

ARTOOLKITconceito

Page 15: Realidade Aumentada na plataforma GNU/Linux

  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.

Page 16: Realidade Aumentada na plataforma GNU/Linux

ARTOOLKITInstalação

$ wget http://downloads.sourceforge.net/project/artoolkit/artoolkit/2.72.1/ARToolKit-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.

Page 17: Realidade Aumentada na plataforma GNU/Linux

$ cd ARToolKit/

$ ./configureSelect 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 FrameworkEnter : 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 cardsEnter : y

$ make

*** Se estiver utilizando a API-V4L1, Digite o valor numério 1 na seleção do driver de captura.

Page 18: Realidade Aumentada na plataforma GNU/Linux

$ 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

ARTOOLKITInstalação

Page 19: Realidade Aumentada na plataforma GNU/Linux

ARTOOLKITCalibração da Webcam.

$ ./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"

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.

Page 20: Realidade Aumentada na plataforma GNU/Linux
Page 21: Realidade Aumentada na plataforma GNU/Linux
Page 22: Realidade Aumentada na plataforma GNU/Linux

ARTOOLKITCalibração da Webcam.

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

Checking fit on image 1 of 5.

$ ./calib_cparamInput center coordinates: X = 425 : Y = 323Input distortion ratio: F = 9.500000

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

Page 23: Realidade Aumentada na plataforma GNU/Linux
Page 24: Realidade Aumentada na plataforma GNU/Linux

$ ./simpleTest

ARTOOLKITTeste e exemplos

Page 25: Realidade Aumentada na plataforma GNU/Linux

$ ./exview

Page 26: Realidade Aumentada na plataforma GNU/Linux

ARTOOLKITCalibraçã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();

Page 27: Realidade Aumentada na plataforma GNU/Linux

$ ./mk_patt

ARTOOLKITPadrões

Page 28: Realidade Aumentada na plataforma GNU/Linux

Motor de renderizaçãoQual 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).

Page 29: Realidade Aumentada na plataforma GNU/Linux

Motor de renderizaçãoIrrAR

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.

Page 30: Realidade Aumentada na plataforma GNU/Linux

Motor de renderizaçãoFLARToolKit

É 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.

Page 31: Realidade Aumentada na plataforma GNU/Linux

É 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çãoAndAR

Page 32: Realidade Aumentada na plataforma GNU/Linux

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.

Motor de renderizaçãoosgART

Page 33: Realidade Aumentada na plataforma GNU/Linux

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

openSceneGraphInstalação e configuração

Page 34: Realidade Aumentada na plataforma GNU/Linux

osgARTInstalaçã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]"

Page 35: Realidade Aumentada na plataforma GNU/Linux
Page 36: Realidade Aumentada na plataforma GNU/Linux

osgARTTestando os exemplos

$ ./osgart_example models/cubo-neti.ive 80 0 0 5

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.

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. 

Page 37: Realidade Aumentada na plataforma GNU/Linux

Testando os exemplos

osgART

Page 38: Realidade Aumentada na plataforma GNU/Linux

Críticas e sugestõ[email protected]

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

Obrigado!

http://cabelovivaolinux.wordpress.com