Bruno C. de Paula
Kinect
Adaptando e desenvolvendo jogos para uso
com o Microsoft Kinect
Quem sou eu?
Bruno Campagnolo de Paula
[email protected]
http://www.brunocampagnolo.com
http://twitter.com/bcp
2
Material deste tutorial
www.brunocampagnolo.com/tutorialkinect2011
04/11/2015
Por que estou aqui?
Centro de
Engenharia de
Sistemas
Inteligentes
4
Por que estou aqui?
 PUCPR;
 Professor
dos cursos de jogos e do curso de
Sistemas de Informação;
Resumo
Vamos
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.
04/11/2015
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).
7
PARTE 1
O que é o Kinect?
04/11/2015
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;
9
04/11/2015
Motivação para criação do Kinect
 Sucesso
do Wii;
10
Wii / Kinect não são tão pioneiros!
Dispositivos de interface natural
 Trabalhos
 Problemas
de Myron Krueger (Video Place);
sempre foram: performance e
reconhecimento facial.
04/11/2015
11
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
04/11/2015
14
Kinect não vai ser o único dispositivo
futuro de interface natural
04/11/2015
 Windows
 iOs
6;
8/9;
15
04/11/2015
Projeto Natal - Origem
 Forte
P&D;
 Alex Kipmann - Diretor
de incubação da
Microsoft;
 PrimeSense;
 3DV Systems.
16
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)
04/11/2015
Se você sabe mover-se você
sabe usar o Kinect
18
04/11/2015
Qualquer tecnologia suficientemente
avançada é indistinguível de magia.
Arthur C. Clarke
19
04/11/2015
Arquitetura do Kinect
20
Arquitetura do Kinect
Projetor de Luz Infravermelha (invisível)
Câmera RGB (“comum”)
Câmera infravermelha
Motor
Conjunto de microfones
04/11/2015
21
04/11/2015
Arquitetura do Kinect
22
Arquitetura do Kinect
Image Stream
 Cada
pixel representa uma cor;
 640x480 (30 fps) OU
 1280x1024 (máximo 15 fps);
04/11/2015
23
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);
04/11/2015
24
Arquitetura do Kinect
Audio Stream
4
microfones;
 Anula ruído e eco.
 Permite gravação de audio;
 Excelente reconhecimento de fala (em
inglês);
04/11/2015
25
Arquitetura do Kinect
Motor
 27
04/11/2015
graus para cima ou para baixo;
 Não chamar com muita freqüencia;
 SDK, por exemplo, limita em 15 vezes a cada
20 segundos.
26
04/11/2015
Sensor de profundidade 3d do Kinect
Projetor de Luz Infravermelha
Sensor de Profundidade 3D
Câmera infravermelha
27
Princípio de funcionamento do sensor
de profundidade 3D
04/11/2015
 Medição
de um “padrão” invisível projetado
no corpo;
Observação: não é uma câmera estereoscópica!
28
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.
04/11/2015
29
Informações de esqueleto dos
jogadores
04/11/2015
O que dá para fazer com tudo isto?
 Vídeo
sobre Os 5 primeiros meses do
Kinect;
 Antes do lançamento do SDK Oficial!!
31
04/11/2015
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;
32
Desenvolvendo para o Kinect
Drivers abertos
04/11/2015
 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;
33
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.
04/11/2015
34
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!!);
04/11/2015
35
PARTE 2
Prototipaçã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 3
Programando 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.
04/11/2015
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
 8) Reconhecimento de fala.

51
04/11/2015
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).
52
04/11/2015
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;
53
3) Criando um projeto Kinect no
Visual Studio
04/11/2015
54
3) Criando um projeto Kinect no
Visual Studio
04/11/2015
55
3) Criando um projeto Kinect no
Visual Studio
04/11/2015
*
56
04/11/2015
4) Exibindo a imagem da câmera
 Ver
eventos VideoFrameReady e
DepthFrameReady;
57
5) Alterando o ângulo de elevação da
câmera
04/11/2015
nui.NuiCamera.ElevationAngle =
(int)slider1.Value;
 Máximo de 15 mudanças em 20 segundos;
 -27 a +27 graus;

59
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;
04/11/2015
60
7) Obtendo informações do
esqueleto
 Evento
SkeletonFrameReady.
04/11/2015
61
7) Obtendo informações do
esqueleto
 Cada
04/11/2015
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.
62
PARTE 4
Aplicações
Kinect Effect
 http://www.xbox.com/en-US/kinect/kinect-
effect?uid=150260184&tid=
04/11/2015
Aplicações e possibilidades do Kinect
 Controle
de dispositivos através das mãos
(Minority Report);
65
04/11/2015
Aplicações e possibilidades do Kinect
 Controle
robótico:
Kits que eram $28.000 agora são $500;
Exemplo com quadricóptero;
66
04/11/2015
Aplicações e possibilidades do Kinect
 Mocap
baratíssimo!
67
04/11/2015
Aplicações e possibilidades do Kinect
 Video
conferência 3D;
68
04/11/2015
Aplicações e possibilidades do Kinect
 Scanner
3D (melhor ainda se integrado com
uma impressora 3D);
69
04/11/2015
Aplicações e possibilidades do Kinect
 Kinect
+ Realidade Aumentada
70
04/11/2015
Aplicações e possibilidades do Kinect
 Kinect
Shopping
71
04/11/2015
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!!!!
72
Mas, não precisa usar o Kinect para
tudo...
04/11/2015
 Cliente
Twitter usando o Kinect;
73
04/11/2015
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;
74
04/11/2015
Links Recomendados
 Kinect
SDK:
http://research.microsoft.com/enus/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.
75
04/11/2015
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.
76
04/11/2015
Material Extra e Referências
 http://blogs.msdn.com/b/uk_faculty_connecti
on/archive/2011/06/21/kinect-for-windowssdk-event.aspx
 http://readwriteweb.com.br/2010/11/09/umcientista-explica-o-microsoft-kinect/
 http://www.kinecteducation.com/
 http://www.wired.co.uk/magazine/archive/20
10/11/features/the-game-changer?page=all
77
Obrigado!!
[email protected]
http://www.brunocampagnolo.com
http://twitter.com/bcp
www.brunocampagnolo.com/tutorialkinect2011
78
Download

PPT - Bruno Campagnolo de Paula