Desenvolvendo aplicações com Kinect

28
DESENVOLVENDO APLICAÇÕES COM KINECT Kinect SDK + Visual Studio OpenNI + Processing Erick Mendonça – [email protected]

description

Minicurso dado na SEMINFO'ITA'2013. Foi demonstrado como criar uma aplicação básica que use o Kinect com a Kinect SDK e OpenNI. Os slides em branco próximos ao final correspondem às partes de demonstração ao vivo de código e aplicações, que não estão nos slides.

Transcript of Desenvolvendo aplicações com Kinect

Page 1: Desenvolvendo aplicações com Kinect

DESENVOLVENDO APLICAÇÕES COM KINECT Kinect SDK + Visual Studio

OpenNI + Processing

Erick Mendonça – [email protected]

Page 2: Desenvolvendo aplicações com Kinect

AGENDA

Visão Computacional

Luz Estruturada, Tempo de Voo

Microsoft Kinect

Como funciona?

E dá pra usar no PC?

O que já fizeram?

Kinect SDK for Windows

Vantagens e desvantagens

Como funciona?

Dá pra fazer muita coisa?

Bônus:

OpenNI

Vantagens e desvantagens

Processing e SimpleOpenNI

O que é?

Como funciona?

Dá pra fazer muita coisa?

Page 3: Desenvolvendo aplicações com Kinect

VISÃO COMPUTACIONAL

O propósito da visão computacional é programar um computador para que este enxergue e “entenda” uma cena e suas características.

Medicina

Tomografia, ressonância magnética

Indústria

Robótica, inspeção

Militar

Armas e veículos autônomos

Page 4: Desenvolvendo aplicações com Kinect

VISÃO COMPUTACIONAL

Luz Estruturada, Structured light (Kinect for Xbox 360)

É um processo de projeção de um padrão de luzes conhecido em uma cena. Esses padrões são tipicamente pontos e barras. A forma como esse padrão se deforma ao incidir com superfícies permite aos sistemas de visão calcular a forma e profundidade dos objetos na cena.

Tempo de Voo, Time of flight (Kinect 2 for Xbox One)

É uma série de métodos que medem o tempo que um objeto, partícula ou onda viaja por uma distância. Câmeras ToF se baseiam na velocidade da luz, conhecida, e medem o tempo de voo de um sinal de luz entre a câmera e a cena, em cada ponto da imagem.

Page 5: Desenvolvendo aplicações com Kinect

MICROSOFT KINECT

Sensor lançado pela Microsoft para o videogame Xbox 360

Desenvolvido pela Primesense

Áudio: array de 4 microfones

Vídeo: câmera RGB, câmera infravermelho

Emissor de infravermelho

Motor de inclinação

Lançado primariamente para ser um substituto ou auxiliar ao controle tradicional, incluindo gestos e fala como entradas para o Xbox 360.

Page 6: Desenvolvendo aplicações com Kinect

MICROSOFT KINECT: COMO FUNCIONA?

Um padrão conhecido de pontos de luz infravermelha é projetado na cena;

A câmera IR captura os pontos de luz infravermelha, invisíveis a olho nu;

Como o padrão é conhecido, um algoritmo reconhece a distorção do mesmo na imagem e confere um valor de profundidade para cada ponto da imagem.

Page 7: Desenvolvendo aplicações com Kinect

Comparação:

imagem profundidade e imagem

RGB

Resultado: para cada ponto da imagem, é atribuído um valor de distância da câmera, ou seja, profundidade. Isso, aliado à câmera RGB, já oferece uma ampla variedade de aplicações.

Page 8: Desenvolvendo aplicações com Kinect

De posse dos dados de profundidade de uma cena, é possível implementar algoritmos que reconheçam objetos e usuários em um espaço 3D, sem se confundir

com seus contornos e variações de luzes e cores.

Rastreio de usuário

Rastreio de esqueleto

Ângulo das câmeras

Acelerômetro

Microfones

Page 9: Desenvolvendo aplicações com Kinect

EXEMPLOS DE JOGOS QUE UTILIZAM O KINECT

Kinect Adventures

Dance Central

Mass Effect 3

Dragon Ball Z

Project Milo (cancelado)

Page 10: Desenvolvendo aplicações com Kinect

MAS E DÁ PRA USAR NO PC?

Como vocês devem saber, SIM!

2007 – 2010: Entre rumores e o lançamento, não havia uma SDK.

04/11/2010: Quase ao mesmo tempo do lançamento, Adafruit ofereceu um prêmio de US$ 1 mil para quem desenvolvesse um driver open source. Em pouco tempo, o prêmio cresceu para US$ 3 mil!

10/11/2010: Um hacker, Hector, venceu o prêmio do Adafruit. Esse foi o nascimento da comunidade de Kinect Hacks e o OpenKinect.

Atualmente: Primesense e OpenNI; Microsoft SDK e o Kinect for Windows.

Page 11: Desenvolvendo aplicações com Kinect

O QUE JÁ FIZERAM?

Mouse de cabeça

Ubi interactive

Projetos de dança

Mapeamento de modelos 3D

Animações

Estações interativas

E jogos também!

Page 12: Desenvolvendo aplicações com Kinect

KINECT SDK E OPENNI

Microsoft Kinect SDK

Funciona apenas no Windows;

Melhor suporte da empresa;

Acesso completo ao Kinect: vídeo, profundidade, áudio, motor e funções de alto nível;

Não funciona com outros sensores;

Possui drivers atualizados e, provavelmente, vai funcionar com o Kinect 2.

OpenNI

Multiplataforma;

Comunidade maior;

Não possui acesso ao motor e áudio do Kinect;

Funciona com outros sensores (ex: Asus Xtion Pro);

Page 13: Desenvolvendo aplicações com Kinect

MICROSOFT KINECT SDK 1.8

Atualizada recentemente (Setembro/2013), o kit de desenvolvimento oficial contém diversas funcionalidades, dentre elas:

Detecção e rastreio de usuários e esqueletos;

Detecção de poses e gestos;

Rastreio de faces;

API de remoção de fundo;

Mapeamento 3D do usuário e cena, com um ou mais Kinects;

HTML e webserver de dados do Kinect;

Kinect Studio, que permite visualizar todos o dados capturados;

Kinect Toolkit com diversos exemplos prontos!

Page 14: Desenvolvendo aplicações com Kinect

INSTALANDO O SENSOR KINECT

Além do próprio sensor, você irá precisar de um acessório: o adaptador de corrente.

Esse adaptador fornece a energia necessária para o Kinect funcionar (12 watts). Uma porta USB comum fornece até 5 watts.

Em bundles novos de Xbox 360, esse adaptador não é necessário: a porta USB do console é capaz de fornecer a energia necessária!

Page 15: Desenvolvendo aplicações com Kinect

SOFTWARE NECESSÁRIO

Windows 7, 8 ou superior (ou Embedded Standard 7 ou superior)

Microsoft .NET Framework

Kinect SDK (1.8)

Kinect Toolkit (1.8)

Visual Studio (2010, 2012, Express Editions)

Page 16: Desenvolvendo aplicações com Kinect

DEMO: KINECT STUDIO

Page 17: Desenvolvendo aplicações com Kinect

CODE: HELLO WORLD!

Page 18: Desenvolvendo aplicações com Kinect

DEMO: KINECT TOOLKIT SAMPLES

Page 19: Desenvolvendo aplicações com Kinect

CODE: ESQUELETO

Page 20: Desenvolvendo aplicações com Kinect

CODE: POSE E GESTOS

Page 21: Desenvolvendo aplicações com Kinect

CODE: ÁUDIO

Page 22: Desenvolvendo aplicações com Kinect

PROCESSING

Processing é uma linguagem de programação,

ambiente de desenvolvimento e comunidade online,

desde 2001.

Utiliza principalmente Java e possui ports para

Javascript e outras plataformas.

Sua visão simplificada permite que usuários não-

especialistas em software possam expressar e criar

aplicativos gráficos (sketches).

Open-source, multiplataforma, e com centenas de

bibliotecas para expandir.

Suporta saídas 2D, 3D e PDF, além de integração

com OpenGL para aceleração 3D.

Page 23: Desenvolvendo aplicações com Kinect

COMO FUNCIONA?

void setup()

Executado uma única vez na inicialização do sketch.

void draw()

Executado em loop infinito a cada quadro de animação.

Para garantir a interação com o usuário, existem várias funções que são chamadas automaticamente para que os eventos sejam tratados, como mousePressed() e keyPressed(), além de variáveis automaticamente preenchidas com os valores atuais, como mouseX e mouseY, por exemplo.

Page 24: Desenvolvendo aplicações com Kinect

DEMO: HELLO WORLD

Page 25: Desenvolvendo aplicações com Kinect

REFERÊNCIAS E MATERIAIS PRA ESTUDO

Page 26: Desenvolvendo aplicações com Kinect

OUTROS SENSORES

Page 27: Desenvolvendo aplicações com Kinect

DÚVIDAS

Page 28: Desenvolvendo aplicações com Kinect

Obrigado!

DESENVOLVENDO APLICAÇÕES COM KINECT Kinect SDK + Visual Studio

OpenNI + Processing

Erick Mendonça – [email protected]

Até mais, e

obrigado pelos

peixes!