Kinect Semana Acadêmica de Ciência da Computação - PUCPR Bruno C. de Paula
Quem sou eu? Bruno Campagnolo de Paula  brunodepaula@gmail.com  http://www.brunocampagnolo.com http://twitter.com/bcp
Por que estou aqui? 26/07/11 Centro de Engenharia de Sistemas Inteligentes
Interesse em aplicações para a  GGJ12 ! Global Game Jam  2010 e 2011 ( Curitiba ) 26/07/11 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 ). 26/07/11
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; 26/07/11
Motivação para criação do Kinect Sucesso  do Wii; 26/07/11
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. 26/07/11
Kinect não é o único dispositivo moderno de interface natural atual Wavi Xtion da Asus 26/07/11
Kinect não vai ser o único dispositivo futuro de interface natural Windows 8/9; iOs 6; 26/07/11
Projeto Natal - Origem Forte P&D; Alex Kipmann  - Diretor de incubação da Microsoft; PrimeSense ; 3DV Systems. 26/07/11
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 )
26/07/11 Se você sabe  mover-se  você sabe usar o Kinect
26/07/11 Qualquer tecnologia suficientemente avançada é indistinguível de magia. Arthur C. Clarke
Arquitetura do Kinect 26/07/11
Arquitetura do Kinect 26/07/11 Projetor de Luz Infravermelha (invisível) Câmera RGB (“comum”) Câmera infravermelha Conjunto de microfones Motor
Arquitetura do Kinect 26/07/11
Arquitetura do Kinect Image Stream Cada pixel representa uma cor; 640x480  (30 fps) OU 1280x1024  ( máximo  15 fps); 26/07/11
Arquitetura do Kinect Depth 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);  26/07/11
Arquitetura do Kinect Audio Stream 4  microfones; Anula ruído e eco. Permite gravação de audio; Excelente  reconhecimento de fala (em  inglês ); 26/07/11
Arquitetura do Kinect Motor 27 graus para cima ou para baixo; Não chamar  com muita freqüencia; SDK limita em  15  vezes a cada  20  segundos. 26/07/11
Sensor de profundidade 3d do Kinect 26/07/11 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; 26/07/11 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 . 26/07/11
O que dá para fazer com tudo isto? Vídeo sobre Os  5 primeiros meses  do Kinect; Antes  do lançamento do  SDK Oficial!! 26/07/11
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 ; 26/07/11
Desenvolvendo para o Kinect Drivers 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; 26/07/11
Desenvolvendo para o Kinect OpenNI 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. 26/07/11
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 !!) ; 26/07/11
DEMOS do QuickStart do Kinect http://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 26/07/11
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). 26/07/11
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 ; 26/07/11
3) Criando um projeto Kinect no Visual Studio 26/07/11
3) Criando um projeto Kinect no Visual Studio 26/07/11
3) Criando um projeto Kinect no Visual Studio 26/07/11 *
4) Exibindo a imagem da câmera Ver eventos  VideoFrameReady  e  DepthFrameReady ; 26/07/11
 
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; 26/07/11
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; 26/07/11
7) Obtendo informações do esqueleto Evento  SkeletonFrameReady . 26/07/11
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. 26/07/11
Demos diversos Skeletal Viewer; ShapeGame; Kinect Mouse Cursor ; Kinect NUI ; Demos no  Processing  e do  FAAST  (se der tempo!);  26/07/11
Aplicações e possibilidades do Kinect Controle de dispositivos através das mãos (Minority Report); 26/07/11
Aplicações e possibilidades do Kinect Controle robótico: Kits que eram $28.000 agora são $500; Exemplo com  quadricóptero ; 26/07/11
Aplicações e possibilidades do Kinect Mocap  baratíssimo! 26/07/11
Aplicações e possibilidades do Kinect Video conferência 3D ; 26/07/11
Aplicações e possibilidades do Kinect Scanner 3D (melhor ainda se integrado com uma impressora 3D); 26/07/11
Aplicações e possibilidades do Kinect Kinect + Realidade Aumentada 26/07/11
Aplicações e possibilidades do Kinect Kinect Shopping 26/07/11
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!!!! TENHO INTERESSE EM PROJETOS FINAIS / EVENTOS USANDO KINECT. 26/07/11
Mas, não precisa usar o Kinect para tudo... Cliente Twitter usando o Kinect; 26/07/11
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; 26/07/11
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. 26/07/11
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. 26/07/11
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 26/07/11
Obrigado!! brunodepaula@gmail.com  http://www.brunocampagnolo.com  http://twitter.com/bcp

Desenvolvendo Aplicativos para o Kinect

  • 1.
    Kinect Semana Acadêmicade Ciência da Computação - PUCPR Bruno C. de Paula
  • 2.
    Quem sou eu?Bruno Campagnolo de Paula brunodepaula@gmail.com http://www.brunocampagnolo.com http://twitter.com/bcp
  • 3.
    Por que estouaqui? 26/07/11 Centro de Engenharia de Sistemas Inteligentes
  • 4.
    Interesse em aplicaçõespara a GGJ12 ! Global Game Jam 2010 e 2011 ( Curitiba ) 26/07/11 Saiba mais em: http://www.ggjcwb.com/2011/02/relatorio/
  • 5.
    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.
  • 6.
    Público-alvo da palestraPessoal 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 ). 26/07/11
  • 7.
    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; 26/07/11
  • 8.
    Motivação para criaçãodo Kinect Sucesso do Wii; 26/07/11
  • 9.
    Wii / Kinectnã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. 26/07/11
  • 10.
    Kinect não éo único dispositivo moderno de interface natural atual Wavi Xtion da Asus 26/07/11
  • 11.
    Kinect não vaiser o único dispositivo futuro de interface natural Windows 8/9; iOs 6; 26/07/11
  • 12.
    Projeto Natal -Origem Forte P&D; Alex Kipmann - Diretor de incubação da Microsoft; PrimeSense ; 3DV Systems. 26/07/11
  • 13.
    History is aboutto 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 )
  • 14.
    26/07/11 Se vocêsabe mover-se você sabe usar o Kinect
  • 15.
    26/07/11 Qualquer tecnologiasuficientemente avançada é indistinguível de magia. Arthur C. Clarke
  • 16.
  • 17.
    Arquitetura do Kinect26/07/11 Projetor de Luz Infravermelha (invisível) Câmera RGB (“comum”) Câmera infravermelha Conjunto de microfones Motor
  • 18.
  • 19.
    Arquitetura do KinectImage Stream Cada pixel representa uma cor; 640x480 (30 fps) OU 1280x1024 ( máximo 15 fps); 26/07/11
  • 20.
    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); 26/07/11
  • 21.
    Arquitetura do KinectAudio Stream 4 microfones; Anula ruído e eco. Permite gravação de audio; Excelente reconhecimento de fala (em inglês ); 26/07/11
  • 22.
    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. 26/07/11
  • 23.
    Sensor de profundidade3d do Kinect 26/07/11 Projetor de Luz Infravermelha Câmera infravermelha Sensor de Profundidade 3D
  • 24.
    Princípio de funcionamentodo sensor de profundidade 3D Medição de um “ padrão ” invisível projetado no corpo; 26/07/11 Observação: não é uma câmera estereoscópica !
  • 25.
    Informações de esqueletodos 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 . 26/07/11
  • 26.
    O que dápara fazer com tudo isto? Vídeo sobre Os 5 primeiros meses do Kinect; Antes do lançamento do SDK Oficial!! 26/07/11
  • 27.
    Desenvolvendo para oKinect 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 ; 26/07/11
  • 28.
    Desenvolvendo para oKinect Drivers 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; 26/07/11
  • 29.
    Desenvolvendo para oKinect OpenNI 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. 26/07/11
  • 30.
    Desenvolvendo para oKinect 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 !!) ; 26/07/11
  • 31.
    DEMOS do QuickStartdo Kinect http://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 26/07/11
  • 32.
    1)Instalação do SensorO 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). 26/07/11
  • 33.
    2) Configurando oambiente 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 ; 26/07/11
  • 34.
    3) Criando umprojeto Kinect no Visual Studio 26/07/11
  • 35.
    3) Criando umprojeto Kinect no Visual Studio 26/07/11
  • 36.
    3) Criando umprojeto Kinect no Visual Studio 26/07/11 *
  • 37.
    4) Exibindo aimagem da câmera Ver eventos VideoFrameReady e DepthFrameReady ; 26/07/11
  • 38.
  • 39.
    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; 26/07/11
  • 40.
    6) Trabalhando cominformaçã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; 26/07/11
  • 41.
    7) Obtendo informaçõesdo esqueleto Evento SkeletonFrameReady . 26/07/11
  • 42.
    7) Obtendo informaçõesdo 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. 26/07/11
  • 43.
    Demos diversos SkeletalViewer; ShapeGame; Kinect Mouse Cursor ; Kinect NUI ; Demos no Processing e do FAAST (se der tempo!); 26/07/11
  • 44.
    Aplicações e possibilidadesdo Kinect Controle de dispositivos através das mãos (Minority Report); 26/07/11
  • 45.
    Aplicações e possibilidadesdo Kinect Controle robótico: Kits que eram $28.000 agora são $500; Exemplo com quadricóptero ; 26/07/11
  • 46.
    Aplicações e possibilidadesdo Kinect Mocap baratíssimo! 26/07/11
  • 47.
    Aplicações e possibilidadesdo Kinect Video conferência 3D ; 26/07/11
  • 48.
    Aplicações e possibilidadesdo Kinect Scanner 3D (melhor ainda se integrado com uma impressora 3D); 26/07/11
  • 49.
    Aplicações e possibilidadesdo Kinect Kinect + Realidade Aumentada 26/07/11
  • 50.
    Aplicações e possibilidadesdo Kinect Kinect Shopping 26/07/11
  • 51.
    Aplicações e possibilidadesdo 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!!!! TENHO INTERESSE EM PROJETOS FINAIS / EVENTOS USANDO KINECT. 26/07/11
  • 52.
    Mas, não precisausar o Kinect para tudo... Cliente Twitter usando o Kinect; 26/07/11
  • 53.
    Links Recomendados KinectHacks: http://kinecthacks.net/ Portal que centraliza aplicativos e testes com o Kinect. Kinect Education: http://www.kinecteducation.com/ Usos do Kinect na educação; 26/07/11
  • 54.
    Links Recomendados KinectSDK: 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. 26/07/11
  • 55.
    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. 26/07/11
  • 56.
    Material Extra eReferê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 26/07/11
  • 57.
    Obrigado!! brunodepaula@gmail.com http://www.brunocampagnolo.com http://twitter.com/bcp

Notas do Editor

  • #8 + Dados (http://www.lukew.com/ff/entry.asp?1348): 2,5 milhões em 30 dias; 2/3 dos donos de XBOX americanos compraram um Kinect; Ganhou o MacRober Award. 26/07/11
  • #12 26/07/11
  • #13 http://veja.abril.com.br/noticia/vida-digital/%E2%80%9Cdesenvolvi-o-primeiro-prototipo-em-dois-meses%E2%80%9D-diz-criador-do-kinect &amp;quot;Ao acordar um dia, percebi que não havia qualquer dispositivo eletrônico ao meu redor e gostei daquela sensação. Então, pensei que seria bom jogar games daquela maneira, sem fios ou controles: decidi dar fim aos botões” http://www.engadget.com/2009/06/03/microsofts-project-natal-roots-revealed-3dv-systems-zcam/ 26/07/11
  • #15 http://jogos.uol.com.br/videos/player.jhtm?mediaId=entrevista-com-alex-kipman-04029B3560D0B98307 26/07/11
  • #17 Fonte: http://www.wired.com/magazine/2011/06/mf_kinect/all/1 26/07/11
  • #20 Imagem original: - http://blogs.msdn.com/b/eternalcoding/archive/2011/06/13/unleash-the-power-of-kinect-for-windows-sdk.aspx 26/07/11
  • #24 Ilustração do design de referência da PrimeSense, parceira da Microsoft no desenvolvimento do Kinect Retirado de: http://readwriteweb.com.br/2010/11/09/um-cientista-explica-o-microsoft-kinect/ Fonte da 2ª imagem: http://www.wired.com/gadgetlab/2010/11/kinect-teardown-reveals-ir-projector-fan/ 26/07/11
  • #25 Figura original em: http://www.mattcutts.com/blog/open-kinect-contest/ Veja também o video em: http://www.youtube.com/watch?v=nvvQJxgykcU 26/07/11
  • #29 Ver mais sobre como hackear um dispositivo USB: http://www.ladyada.net/learn/diykinect/ 26/07/11