kinect: muito além do xbox - semcomp 2012
DESCRIPTION
Conheça o Kinect e suas principais bibliotecas e descubra o potencial que este equipamento tem para criar jogos e outras aplicações. Aprenda conceitos de NUI e veja um pouco sobre o que o futuro nos reserva com relação a interação homem-maquina.TRANSCRIPT
Kinect: muito além do Xbox
André Paulovich
Descobrindo o SDK do Kinect como plataforma de desenvolvimento de
aplicativos para windows
NUI – Natural User Interface
NUI é um sistema que facilita a interação Homem-Maquina criando uma interface intuitiva e “natural” para o usuário.
Visão Geral
Câmera RGB Câmera de Profundidade (Depth)
Rastreio de Esqueleto (Skeletal Tracking)
Microfone
Sensor do InfraVermelho
Tilt Motor
Microfones
Emissor do InfraVermelho Câmera RGB
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.
O que você imagina quando vê os primeiros códigos.
Kinect SDK - Nível de dificuldade
Kinect SDK - Nível de dificuldade
A API do NUI detecta tudo automático.
A única coisa que você tem que preocupar são com as conversões de valores.
Como é de verdade:
O que iremos usar?
Kinect SDK v1.0http://kinectforwindows.org
Coding4Fun Toolkithttp://channel9.msdn.com/coding4fun/kinect
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();
1
2
3
4
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.
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.
Sério, não fique usando muitoo motor, ele não é um robô!
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)
Cada articulação conta com X, Y e Z e um estado:
Tracked, Not Tracked, Inferred
Cada esqueleto possui um TrackingID.
Articulações:
Sendo Inferred quando o Kinect não consegue achar a articulação e presume sua posição baseado nas outras.
Skeletal Tracking - 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”
Sensor de Profundidade (Depth) - 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;
Trabalhando o Audio - Demo
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.SoundSourceAngleKinectSensor.AudioSensor.SoundSourceAngleConfidence
Posição e confiabilidade do som
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.
Conclusão
Perguntas?!
Procurando um desafiante?
andrepaulovich
Obrigado!