Calendário DIY
Tela Multitouch Esférica - Globo Interativo
Barmak
Pontos:  58
Desde:  27/12/2011
Finalizado
Nível avançado
x 2
Favoritado
Em:  21/01/2014   ( 22/01/2014 )
Atribuição. Não permite o uso comercial. Permite projetos derivados sob a mesma licença deste.
Estrela cheiaEstrela cheiaEstrela cheiaEstrela cheiaEstrela cheia
0
1
2
3
4
5
Telas touch já são passado! Então por que não fazer uma tela touch esférica? A tela touch descrita neste tutorial foi apresentada na Campus Party 2012 (campus futuro). Como utilizamos algumas tecnologias livres no desenvolvimento deste projeto, resolvemos retribuir a comunidade com os detalhes e código de como montar uma tela igual! Quando você tiver uma funcionando na sala da sua casa não haverá uma pessoa que não ficará impressionada!
1
Introdução
Autores:
Fernando Araújo, Rafael BarmakTéo Benjamin (direção, conceito, UI, fabricação, hardware, sensores, programação)
Mariana Duprat (direção, conceito, UI, design)
Luiza Silva (programação)

Principio de Funcionamento
O domo interativo funciona da mesma maneira que uma tela multitouch difusa, ao aproximar a mão perto da tela a luz infravermelha é refletida na mão da pessoa e uma câmera apontada para tela capta essa reflexão, calculando a o posição e movimentos em um software programado para reconhecer e tratar esse tipo de dado. A câmera utilizada precisa ter um filtro que permita somente a passagem da luz infravermelha, caso contrário a luz do projetor iria criar detecções falsas. Não explicaremos muito sobre o funcionamento de uma tela touch comum pois existem inúmeras fontes na internet.

O fato da tela deixar de ser plana e virar esférica adiciona complexidades ao sistema. As duas maiores complicações são a fabricação da tela esférica (o domo) e escrever um software que seja capaz de tratar dados em coordenadas esféricas em vez de cartesianas. O software nós estamos disponibilizando neste post, já o domo ficará por sua conta. ;o)


2
Construção
Superfície Esférica (Domo)
Provavelmente esta será a parte mais cara do seu sistema! Não é fácil sair comprando domos de acrílico por ai. Então você precisará mandar fabricar... Pois é...  O nosso domo tinha 70cm de diâmetro e 30cm de altura, utilizamos acrílico transparente de 8mm de espessura, não se esqueça que existem trogloditas e crianças extremamente selvagens por aí. E na empolgação até a moça delicada esquece que tem mão frágil... Por isso 8mm é uma boa pedida. Em 2011 custou algo em torno de R$ 3000,00. É caro, pois o processo é bem artesanal e será necessário fazer um molde de madeira.

Importante: Nunca limpe acrílico com álcool. Este irá manchar a superfície do acrilíco.

Poção Mágica
O grande segredo para criar uma tela esférica (no nosso caso semiesférica), é como tornar uma superfície de acrílico transparente numa tela para projeção. Após muita pesquisa achamos um distribuidor de tintas para projeção, a Goo Systems! Lá você poderá comprar uma tinta especial para retro projeção, não é muito barata porem funciona muito bem! A tinta pode ser usada em pistolas para pintura de forma a criar uma superfície bem homogênea. Fique atento às instruções de aplicação do faricante, existem alguns pequenos detalhes para que a tinta seja bem aplicada.

Cuidado ao manusear o globo com mão suja, pois a tinta pode ficar manchada e será praticamente impossível remover a sujeira sem danificar a pintura.

Voilá
Domo + Poção Mágica = Tela Semiesférica

Apoiando o Domo / Móvel de Madeira
Arquivos em anexo com informações e medidas do móvel.
Mas basicamente é um cilíndro de madeira revestido com fórmica. Na parte de baixo desse cilindro existem dois furos para a fixação de duas ventoinhas de 110Vac, uma para sugar ar frio para dentro do domo e outra perto do projetor para expulsar o ar quente. É importante alinhar estas ventoinhas com as saídas entradas e saídas de ar do projetor. Se as ventoinhas ficarem muito no alto, será necessário colocar uma terceira ventoinha no chão, próximo à saída de ar do projetor, apontando para cima.

Alem disso há uma portinhola que permite o acesso ao interior do móvel e furos para a saída do cabeamento para o computador (que neste caso é externo). O domo foi fixado ao móvel utilizando-se de fita dupla face da 3M, mas cuidado! A fita VHB é muito forte e colocar demais pode fazer a tela ficar fixa ali para sempre!


 
3
Hardware / Eletrônica
Projetor (para depois escolher a altura do domo):
O tamanho do domo depende da capacidade do projetor de criar uma imagem com foco em planos distintos, no nosso caso quanto maior a profunidade de foco, ou seja, quanto maior a distância entre dois planos de maneira que a imagem continue dentro de foco, melhor. Utilizamos as dicas do Mike Powell para calcular o "Depth of Field" do nosso projetor. Link aqui.

Para o projetor PJD-7383, encontramos um profundidade de campo de ~30 cm, o que é um ótimo valor, pois permitirá que o domo tenha até 30cm de altura!

Uma segunda característica importante do projetor que buscavamos é de ser capaz de criar imagens grandes a distâncias curtas, pois precisamos colocar o projetor de forma a não ficar vísivel aos visitantes. O PJD-7383 é um projetor do tipo super-short throw, e se mostrou adequado para criar imagens capazes de cobrir toda a área do domo mesmo estando a uma distância de menos de 1 metro! (Alem de ser um projetor de preço bastante acessível ~$800,00).

Um excelente site para buscar dados e preços sobre projetores é o Projector Central, lá existe uma aplicação chamada de "calculator" que facilitará muito a sua vida com cálculos de distâncias e tamanhos de telas. Link aqui.

Câmera

Para aplicações de detecção de toque é necessário uma câmera com FPS alto. Por isso resolvemos utilizar uma camera de PS3, a PS3Eye, que precisa ser modificada para ter o filtro que bloqueia luz infravermelha removido. Essa câmera pode ser feita por você mesmo e existem vários vídeos na internet ensinando passo a passo como retirar o filtro. Ou você pode comprar uma já pronta no site da Peau Productions, por aproximadamente $100, link aqui.

Alem da câmera será necessário colocar um filtro que bloqueia toda a luz visível e só permita passar o infravermelho. Uma maneira fácil, rápida e barata é usar um negativo de filme revelado, utilize o início ou o fim do filme onde a superfície que foi exposta esta igualmente revelada. Caso você deseje poderá comprar esses filtros da Peau ou em qualquer distribuidor de material óptico (Edmund, Anchor Optics etc).

Espelho
Utilizamos um espelho em diagonal, apoiado no chão e na parede no móvel, inclinado aproximadamente 60° (mas isso depende do tamanho do móvel e do posicionamento do projetor). O espelho gera uma distorção trapezoidal que atrapalha a projeção da imagem e pode ser melhorada por software, mas o ideal seria até montar de uma forma que não se precise de espelho, com a lente do projetor apontada para cima


Iluminadores Infravermelho
Estes iluminadores são utlizados para refletir a luz infravermelha na mão do usuário de forma a ser detectada pela câmera. No nosso globo utilizamos 3x spots IR (Spot IR - $14,33), porem nada impede que você crie sua própria iluminação, por exemplo utilizando estes módulos aqui LEDs IR ($4,99), que na nossa época não existiam. ;o)

Uma grande parte do processo de calibração será ajustar a iluminação IR de forma a ficar o mais homogêna possível na superfície do domo, porem como o domo não é plano (se isso não for óbvio para você desista deste projeto imediatamente), não é fácil posicionar a iluminação. Se prepare para horas de muita diversão movendo os LEDs milímetro a milímetro.


 
4
Software
Sequência:
1.Câmera > 2a.CCV (OpenCV) > 2b.TUIO > 3.Aplicação com OpenFrameworks (OF) > 4.Display (domo)

[1] A câmera captura os frames a 60 FPS. Estas imagens são usadas como dados de entrada para o CCV.

[2.a.b.] O CCV é um software gratuito para aplicações em visão computacional. Muitos porjetos de telas touch são feitos utilizando-o. O CCV é um programa bem completo que já incorpora funcionalidades de calibração e vários filtros que permitem ajustar e melhorar a imagem de capturada pela câmera. Alem disso o CCV é dotado de um blob detector, que no nosso caso são as mãos e dedos dos usuários. Para cada blob criado é atribuido um ID e o programa passará a rastrear o mesmo até o momento de sua extinção. Durante a vida do blob são criadas mensagens TUIO com os dados relativos a posição e orientação da mão do usuário (blob). Estas mensagens TUIO são usadas como uma interface externa com outros programas.

Na imagem abaixo é possível ver a calibração ideal para o nosso caso, bem como os parâmetros mais importantes a serem ajustados.

[3] Esta é a parte do código que nós desenvolvemos. Este programa cuida de receber adequadamente as mensagens TUIO, com os dados dos toques, e processa esses dados de forma a obter a posição correta no espaço (R3), como a imagem recebida é plana (R2), precisamos fazer uma conversão esférica para obter a posição da mão numa secção de calota.

Uma vez obtida a posição da mão verificamos se ela esta se movendo ou não. Caso esteja, rotacionamos a textura de forma a acompanhar o movimento da mão.

Uma parte complicada do código refere-se a aplicação de distorções de forma que as texturas sejam projetadas numa superfície esférica com a menor deformação possível. Estes cálculos não são simples pois levam em conta a posição do projetor/espelho, distancias e forma do domo. Quanto mais próximo das bordas maiores as distorções - esse efeito pode ser visto no vídeo. As calibrações do software podem ser vistas nas imagens abaixo.

Na aplicação disponibilizada a pessoa pode mudar a textura mostrada ficando com a mão parada por alguns instantes no topo do domo.

[4] A aplicação em OF mostra em tela cheia o resultado das transformações necessárias para projetar numa superfície esférica corretamente. Nós utilizamos uma placa de vídeo com saída dupla. Numa conectamos o projetor do domo e na outra saída colocamos um monitor, pois como o PC do globo não fica dentro do móvel e as vezes bem afastado, é bom ter uma tela por perto para ver o que esta sendo projetado no globo.


Código Fonte
O repositório com o software pode ser encontrado aqui para download:
https://www.assembla.com/code/ovniglobo/git/nodes
Ou pode ser baixado dos arquivos em anexo


Texturas
<< onde pegar texturas >>
 
5
Referências
 
A
Anexos
Você precisa estar logado para ver os anexos.
Comentários: