O documento discute o SDK do Kinect como uma plataforma para desenvolvimento de aplicativos para Windows. O Kinect usa câmeras, sensores de profundidade e microfones para rastrear esqueletos, detectar voz e medir distâncias. O documento explica como usar os recursos do Kinect SDK para acessar os dados dos sensores e fornece demonstrações de como rastrear esqueletos, medir profundidade e reconhecer voz.
3. NUI – Natural User Interface
NUI é um sistema que facilita a interação
Homem-Maquina criando uma interface
intuitiva e “natural” para o usuário.
4. Visão Geral
Emissor do
InfraVermelho Câmera RGB Sensor do
InfraVermelho
Tilt Motor
Microfones
Câmera RGB Rastreio de Esqueleto (Skeletal Tracking)
Câmera de Profundidade (Depth) Microfone
5. Kinect SDK - Nível de dificuldade
Existe realmente uma quebra de paradigmas envolvida quando começamos a
trabalhar com o SDK, pois temos que lidar com operações bastante específicas
que boa parte dos desenvolvedores não esta acostumada a trabalhar.
Um detalhe importante é que o Kinect não retorna imagens montadas (como
muitos supõem), ele retorna apenas bytes, que devem ser convertidos ou
interpretados pelo aplicativo.
6. Kinect SDK - Nível de dificuldade
O que você imagina quando vê os primeiros códigos.
7. Kinect SDK - Nível de dificuldade
Como é de verdade:
A API do NUI detecta tudo automático.
A única coisa que você tem que
preocupar são com as conversões
de valores.
8. O que iremos usar?
Kinect SDK v1.0
http://kinectforwindows.org
Coding4Fun Toolkit
http://channel9.msdn.com/coding4fun/kinect
9. Procedimento
Pegar o Kinect ativo no sistema.
KinectSensor
Ativar os recursos do Kinect que você vai usar:
KinectSensor.SkeletonStream.Open()
KinectSensor.DepthStream.Open()
Adicionar evento para tratar os sensores:
KinectSensor.AllFrameReady += ...
E finalmente dar um Start no Kinect.
KinectSensor.Start();
10. Eventos
Quando cada imagem é detectada ele invoca um evento:
DepthFrameReady;
ColorFrameReady;
SkeletonFrameReady;
AllFrameReady;
AllFrameReady sempre que todos os frames são detectados, sempre no
tempo do mais lento.
11. Tilt – DEMO
Pegar o sensor ativo.
Controlar do motor alterando a propriedade ElevationAngle.
12. Tilt
É importante ressaltar que o ângulo mostrado, é relativo a gravidade
e não é fixo a base, isso quer dizer que se o Kinect tiver preso na
parede a posição 1 será diferente do 1 dele em cima da mesa.
14. Skeletal Tracking
Detecta até 6 pessoas
Destes, apenas 2 são inteiramente
Compreendidos (20 articulações)
Valores das posições de cada articulação
está em metros.
Os outros 4 são parcialmente
compreendidos (somente a localização)
15. Skeletal Tracking - Demo
Cada esqueleto possui um TrackingID.
Articulações:
Cada articulação conta com X, Y e Z e um estado:
Tracked, Not Tracked, Inferred
Sendo Inferred quando o Kinect não consegue achar a articulação e
presume sua posição baseado nas outras.
16. Sensor de Profundidade (Depth) - Demo
Captura a distância e o jogador de cada ponto.
Distância entre o ponto e Kinect em milímetros.
De 1 a 6 jogadores.
“Eu vim em paz”
17. Trabalhando o Audio - Demo
O Kinect é composto por vários microfones,
aumentando assim a confiabilidade da detecção de voz.
Ativar o AudioStream:
AudioStream.Start()
Criar variável para reconhecimento de voz:
SpeechRecognitionEngine
Adicionar as palavras que vão ser “entendidas”:
var words = new Choices();
words.Add("green");
words.Add("blue");
Adicionar o evento:
sre.SpeechRecognized += this.SreSpeechRecognized;
18. Posição e confiabilidade do som
O Kinect retorna a confiabilidade de uma sentença:
e.Result.Confidence de 0 a 1.
Posição:
É possível pegar o ângulo da o onde o som vem.
O resultado é gerado automaticamente dentro do AudioSensor.
KinectSensor.AudioSensor.SoundSourceAngle
KinectSensor.AudioSensor.SoundSourceAngleConfidence
19. Conclusão
Os sensores de movimentos vieram para ficar.
E o Kinect abre uma gama de possibilidades, que os desenvolvedores não tinham
antes. Sua utilização vai muito além dos games.