570 likes | 712 Views
Bruno C. de Paula. Kinect. Semana Acadêmica de Ciência da Computação - PUCPR. Quem sou eu?. Bruno Campagnolo de Paula brunodepaula@gmail.com http://www.brunocampagnolo.com http://twitter.com/bcp. Por que estou aqui?. Centro de Engenharia de Sistemas Inteligentes.
E N D
Bruno C. de Paula Kinect Semana Acadêmica de Ciência da Computação - PUCPR
Quem sou eu? Bruno Campagnolo de Paula brunodepaula@gmail.com http://www.brunocampagnolo.com http://twitter.com/bcp
Por que estou aqui? Centro de Engenharia de Sistemas Inteligentes
Interesse em aplicações para a GGJ12!Global Game Jam 2010 e 2011 (Curitiba) Saiba mais em: http://www.ggjcwb.com/2011/02/relatorio/
Resumo Vamos aprender o que é o Kinect; Arquitetura básica; Falar sobre o princípios de funcionamento; 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).
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; $$$
Motivação para criação do Kinect • Sucesso do Wii;
Wii / Kinect não são tão pioneiros!Dispositivos de interface natural • Trabalhos de Myron Krueger (Video Place), Activator, EyeToy, Track IR, projetos finais; • Problemas sempre foram: performance e reconhecimento facial.
Kinect não é o único dispositivo moderno de interface natural atual • Wavi Xtion da Asus
Kinect não vai ser o único dispositivo futuro de interface natural • Windows 8/9; • iOs 6;
Projeto Natal - Origem • Forte P&D; • Alex Kipmann - Diretor de incubação da Microsoft; • PrimeSense; • 3DV Systems.
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)
Qualquer tecnologia suficientemente avançada é indistinguível de magia. Arthur C. Clarke
Arquitetura do Kinect Projetor de Luz Infravermelha (invisível) Câmera RGB (“comum”) Câmera infravermelha Motor Conjunto de microfones
Arquitetura do KinectImage Stream • Cada pixel representa uma cor; • 640x480 (30 fps) OU • 1280x1024 (máximo 15 fps);
Arquitetura do KinectDepth Stream • Cada pixel representa a distância em relação ao objeto; • 11 bits de precisão (2048 ní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);
Arquitetura do KinectAudio Stream • 4 microfones; • Anula ruído e eco. • Permite gravação de audio; • Excelente reconhecimento de fala (em inglês);
Arquitetura do KinectMotor • 27 graus para cima ou para baixo; • Não chamar com muita freqüencia; • SDK limita em 15 vezes a cada 20 segundos.
Sensor de profundidade 3d do Kinect Projetor de Luz Infravermelha Sensor de Profundidade 3D Câmera infravermelha
Princípio de funcionamento do sensor de profundidade 3D • Medição de um “padrão” invisível projetado no corpo; Observação: não é uma câmera estereoscópica!
Informações de esqueleto dos jogadores • Detecta 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.
O que dá para fazer com tudo isto? • Vídeo sobre Os 5 primeiros meses do Kinect; • Antes do lançamento do SDK Oficial!!
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;
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;
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.
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!!);
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
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).
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;
4) Exibindo a imagem da câmera • Ver eventos VideoFrameReady e DepthFrameReady;
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;
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;
7) Obtendo informações do esqueleto • 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.
Demos diversos • Skeletal Viewer; • ShapeGame; • Kinect Mouse Cursor; • Kinect NUI; • Demos no Processing e do FAAST (se der tempo!);
Aplicações e possibilidades do Kinect • Controle de dispositivos através das mãos (Minority Report);
Aplicações e possibilidades do Kinect • Controle robótico: • Kits que eram $28.000 agora são $500; • Exemplo com quadricóptero;
Aplicações e possibilidades do Kinect • Mocap baratíssimo!
Aplicações e possibilidades do Kinect • Video conferência 3D;
Aplicações e possibilidades do Kinect • Scanner 3D (melhor ainda se integrado com uma impressora 3D);
Aplicações e possibilidades do Kinect • Kinect + Realidade Aumentada
Aplicações e possibilidades do Kinect • Kinect Shopping