Kinect - brunocampagnolo.com€¦ · Kinect Adaptando e desenvolvendo jogos para uso com o...
Transcript of Kinect - brunocampagnolo.com€¦ · Kinect Adaptando e desenvolvendo jogos para uso com o...
Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Bruno C. de Paula
2
Quem sou eu?
Bruno Campagnolo de Paula
http://www.brunocampagnolo.com
http://twitter.com/bcp
Material deste tutorial
www.brunocampagnolo.com/tutorialkinect2011
Por que estou aqui?
411/11/2011
Centro de
Engenharia de
Sistemas
Inteligentes
Por que estou aqui?
PUCPR;
Professor dos cursos de jogos e do curso de Sistemas de Informação;
ResumoVamos aprender o que é o Kinect;
Arquitetura básica;
Falar sobre o princípios de funcionamento;
Usar o FAAST para prototipação rápida de aplicativos com o Kinect;
Demonstrar ferramentas de desenvolvimento e o SDK oficial.
Comentar sobre aplicações e projetos.
Público-alvo da palestra
Pessoal da computação em geral;
Interessados em robótica;
Desenvolvedores de jogos;
Pesquisadores e desenvolvedores interessados no futuro dos sistemas de informação;
Educadores (gesture based learning).
711/11/2011
PARTE 1
O que é o Kinect?
O que é o Kinect?
Dispositivo de interação natural;
Microsoft;
XBOX 360 (jogos);
Lançamento: 4/11/2010;
8 milhões vendidos em 60 dias (recorde);
10 milhões até março de 2011;
911/11/2011
Motivação para criação do Kinect
Sucesso do Wii;
1011/11/2011
Wii / Kinect não são tão pioneiros!Dispositivos de interface natural
Trabalhos de Myron Krueger (Video Place);
Problemas sempre foram: performance e reconhecimento facial.
1111/11/2011
Wii / Kinect não são tão pioneiros!Dispositivos de interface natural
Activator, EyeToy, Track IR
Wii / Kinect não são tão pioneiros!Dispositivos de interface natural
Não faça com o Kinect o que uma câmera normal resolve!
Exemplo de projeto final.
Kinect não é o único dispositivo moderno de interface natural atual
Wavi Xtion da Asus
1411/11/2011
Kinect não vai ser o único dispositivo futuro de interface natural
Windows 8/9;
iOs 6;
1511/11/2011
Projeto Natal - Origem
Forte P&D;
Alex Kipmann - Diretor de incubação da Microsoft;
PrimeSense;
3DV Systems.
1611/11/2011
History is about to be rewritten.
This time human beings will be at the centre
-- and the machines will be the ones that
adapt.
(apresentação do Kinect 2010)
1811/11/2011
Se você sabe mover-se você
sabe usar o Kinect
1911/11/2011
Qualquer tecnologia suficientemente
avançada é indistinguível de magia.
Arthur C. Clarke
Arquitetura do Kinect
2011/11/2011
Arquitetura do Kinect2111/11/2011
Projetor de Luz Infravermelha (invisível)
Câmera RGB (“comum”)
Câmera infravermelha
Conjunto de microfones
Motor
Arquitetura do Kinect
2211/11/2011
Arquitetura do KinectImage StreamCada pixel representa uma cor;
640x480 (30 fps) OU
1280x1024 (máximo 15 fps);
2311/11/2011
Arquitetura do KinectDepth Stream
Cada pixel representa a distância em relação ao objeto;
11 bits de precisão (2048níveis de sensibilidade);
1.2 a 3.5 metros;
640x480 (30 fps – sem informação do jogador) e 320x240 (30 fps – com informação do jogador);
2411/11/2011
Arquitetura do KinectAudio Stream
4 microfones;
Anula ruído e eco.
Permite gravação de audio;
Excelente reconhecimento de fala (em inglês);
2511/11/2011
Arquitetura do KinectMotor
27 graus para cima ou para baixo;
Não chamar com muita freqüencia;
SDK, por exemplo, limita em 15 vezes a cada 20 segundos.
2611/11/2011
Sensor de profundidade 3d do Kinect
2711/11/2011
Projetor de Luz Infravermelha
Câmera infravermelha
Sensor de Profundidade 3D
Princípio de funcionamento do sensor de profundidade 3D
Medição de um “padrão” invisível projetado no corpo;
2811/11/2011
Observação: não é uma câmera estereoscópica!
Informações de esqueleto dos jogadoresDetecta até 6
jogadores;
Obtém informação de esqueleto de 2 jogadores;
Dá para obter a qualidade da captura;
Este é o grande destaque do Kinect na área de Machine Learning.
2911/11/2011
Informações de esqueleto dos jogadores
O que dá para fazer com tudo isto?
Vídeo sobre Os 5 primeiros meses do Kinect;
Antes do lançamento do SDK Oficial!!
3111/11/2011
Desenvolvendo para o Kinect
Drivers abertos (Open Kinect):
Windows XP, Vista, 7;
MacOS X;
Linux;
Open Source;
OpenNI (PrimeSense):
Windows, Linux, Mac OS X;
Kinect SDK:
Oficial da Microsoft;
Apenas para Windows 7;
3211/11/2011
Desenvolvendo para o KinectDrivers abertos
Após o lançamento foi “hackeado” em poucos dias;
Ele é um dispositivo USB não criptografado!
Microsoft já estava prevendo usos fora do XBOX;
Open Kinect Contest
US$ 3.000,00;
3311/11/2011
Desenvolvendo para o KinectOpenNI
Wrappers para linguagens diversas:
C, C++, Processing, Java, Scratch;
Fácil de integrar com o FAAST;
O FAAST permite a criação de programas para o Kinect sem saber programar para o Kinect.
3411/11/2011
Desenvolvendo para o Kinect SDK oficial
13/junho/2011
Windows 7;
2GB RAM;
DirectX 9.0c;
Dual Core 2.66 GHz;
Versão Beta;
Licença não-comercial (cuidado!!);
3511/11/2011
PARTE 2Prototipação rápida para o Kinect usando o FAAST
FAAST
Flexible Action and Articulated Skeleton Toolkit;
University of Southern California;
Permite o mapeamento de movimentos do corpo em ações de dispositivos tradicionais de interação (mouse e teclado);
Também faz o streaming via VRPN (Virtual Reality Peripheral Network);
Elimina a necessidade de programação;
Adequado para prototipação rápida.
Instalação
Usar o Zigfu Dev Bundle;
OU:
Instalar OpenNI;
Instalar NITE;
Instalar sensores.
Veja mais detalhes no texto do tutorial.
Tela inicial do FAAST
Configuração do sensor
Full Body: o corpo todo é considerado;
Upper Body: apenas a parte superior do corpo;
Lower Body: apenas a parte inferior;
Hands Only: apenas as mãos, pode utilizar um focus gesture para habilitar o reconhecimento das ações;
Smoothing factor: suavização da perturbação do movimento. 0.07~0.08 para controle de mouse preciso.
Calibração
Pose de psi;
Essencial em aplicação baseada em OpenNI.
Controle de mouse
Associação da mão esquerda ou direita à posição do mouse;
Controle absoluto: posição do mouse determinada a partir da posição dentro do bounding rectangle;
Controle relativo: velocidade do mouse determinada a partir da distância até o bounding rectangle;
Controle do mouse
Forward Threshold: distância que a mão deve ser extendida à frente para ativar o controle do mouse.
Movement Threshold: valor mínimo em pixels necessário para alterar a posição do mouse;
Speed: no movimento relativo, velocidade máxima nos limiares.
Mapeamento de ações em eventos
nome_ação: nome da pose ou gesto;
limiar: mínimo de ativação, depende da ação;
tipo_evento: tipo de evento que será gerado;
nome_evento: evento específico que será gerado.
Ver tabelas 1, 2 e 3 no texto do tutorial!
Exemplo 1
lean_left 20 key_hold left_arrow
lean_right 20 key_hold right_arrow
jump 2 key_press space
Exemplo 2
lean_left 20 key_hold a
lean_right 20 key_hold d
lean_forwards 15 key_hold w
lean_backwards 15 key_hold s
Atividade!
Crie controles para os seguintes jogos:
Canabalt;
Muulti-Muu.
Angry Birds;
PARTE 3Programando para o Kinect
Exemplos em:
Processing
SDK Oficial
Usando o Processing
Processing é uma linguagem voltada para desenho, animação e interação;
Bastante adequada para prototipação rápida de jogos.
Exemplos de uso da biblioteca SimpleOpenNI
exemplo1;
exemplo2;
Estudo de caso: 3dpht.
DEMOS do QuickStart do Kinecthttp://channel9.msdn.com/Series/KinectSDKQuickstarts/
1)Instalação do Sensor / Download do SDK;
2) Configurando o ambiente;
3) Criando um projeto Kinect no Visual Studio;
4) Exibindo a imagem da câmera;
5) Alterando o ângulo de elevação da câmera;
6) Trabalhando com a informação de profundidade;
7) Obtendo informações do esqueleto
8) Reconhecimento de fala.
5111/11/2011
1)Instalação do Sensor
O Kinect que vem no Bundle do XBOX não tem o cabo de energia (pode ser comprado a parte);
Não coloque 2 Kinects ou 2 câmeras no mesmo hub USB;
Verifique a versão do Windows (64 / 32 bits).
5211/11/2011
2) Configurando o ambiente
Instalar Visual Studio (pode ser o Express);
Instalar DirectX SDK – Junho 2010;
Instalar Runtime do DirectX;
Se quiser usar o reconhecimento de voz:
Speech Runtime 10.2;
Kinect Speech Platform;
Speech SDK;
5311/11/2011
3) Criando um projeto Kinect no Visual Studio
5411/11/2011
3) Criando um projeto Kinect no Visual Studio
5511/11/2011
3) Criando um projeto Kinect no Visual Studio
5611/11/2011
*
4) Exibindo a imagem da câmera
Ver eventos VideoFrameReady e DepthFrameReady;
5711/11/2011
5) Alterando o ângulo de elevação da câmera
nui.NuiCamera.ElevationAngle = (int)slider1.Value;
Máximo de 15 mudanças em 20 segundos;
-27 a +27 graus;
5911/11/2011
6) Trabalhando com informação de profundidade
Cálculo da distância em milímetros:
Depth Image Type;• Bitshift o segundo byte por 8;
• Distância = (int) Bits[0] | Bits[1] << 8;
DepthAndPlayerIndex Type:• Bitshift do primeiro por 3 e do segundo por 5;
• Distância = (int) Bits[0] | Bits[1] << 5;
O Player Index indica o jogador que está contido naquele ponto;
Máximo de 6 jogadores;
6011/11/2011
7) Obtendo informações do esqueleto
6111/11/2011
Evento SkeletonFrameReady.
7) Obtendo informações do esqueleto
Cada joint retorna:
X – Posição horizontal entre -1 e 1
Y – Posição vertical entre -1 e 1
Z – Distância até o Kinect em metros
Cada joint tem um estado associado:
Tracked;
Not Tracked: raro;
Inferred: oclusão, cortado, baixa confiança.
6211/11/2011
PARTE 4Aplicações
Kinect Effect
http://www.xbox.com/en-US/kinect/kinect-effect?uid=150260184&tid=
Aplicações e possibilidades do Kinect
Controle de dispositivos através das mãos (Minority Report);
6511/11/2011
Aplicações e possibilidades do Kinect
Controle robótico:
Kits que eram $28.000 agora são $500;
Exemplo com quadricóptero;
6611/11/2011
Aplicações e possibilidades do Kinect
Mocap baratíssimo!
6711/11/2011
Aplicações e possibilidades do Kinect
Video conferência 3D;
6811/11/2011
Aplicações e possibilidades do Kinect
Scanner 3D (melhor ainda se integrado com uma impressora 3D);
6911/11/2011
Aplicações e possibilidades do Kinect
Kinect + Realidade Aumentada
7011/11/2011
Aplicações e possibilidades do Kinect
Kinect Shopping
7111/11/2011
Aplicações e possibilidades do Kinect
Trocar canal da TV;
Adaptação de jogos normais para Kinect;
Ensino de idiomas;
Ensino em geral;
Sistema de navegação para carros;
Música;
Aplicações médicas;
Controle de Apresentação (PowerPoint);
COLOQUE A SUA IDEIA AQUI!!!!
7211/11/2011
Mas, não precisa usar o Kinect para tudo...
Cliente Twitter usando o Kinect;
7311/11/2011
Links Recomendados
Kinect Hacks:
http://kinecthacks.net/
Portal que centraliza aplicativos e testes com o Kinect.
Kinect Education:
http://www.kinecteducation.com/
Usos do Kinect na educação;
7411/11/2011
Links Recomendados
Kinect SDK:
http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/
Portal oficial da Microsoft sobre desenvolvimento para o Kinect;
Coding4Fun Kinect Toolkit:
http://c4fkinect.codeplex.com/
Bibliotecas extras úteis para uso com o SDK.
7511/11/2011
Links Recomendados
OpenKinect:
http://openkinect.org/wiki/Main_Page
Download dos drivers open source -libfreenect;
OpenNI:
http://www.openni.org/
Download dos drivers da PrimeSense.
7611/11/2011
Material Extra e Referências
http://blogs.msdn.com/b/uk_faculty_connection/archive/2011/06/21/kinect-for-windows-sdk-event.aspx
http://readwriteweb.com.br/2010/11/09/um-cientista-explica-o-microsoft-kinect/
http://www.kinecteducation.com/
http://www.wired.co.uk/magazine/archive/2010/11/features/the-game-changer?page=all
7711/11/2011
78
Obrigado!!
http://www.brunocampagnolo.com
http://twitter.com/bcp
www.brunocampagnolo.com/tutorialkinect2011