Kinect
Além do XBOX
Android para iniciantes
Android intermediário
Mobile Games com AndEngine
Hackathon Sesc
Realidade Aumentada com
Android
Videos StopMotion
Linux para certificação
Oficinas de tecnologia
Odair Bonin
Desenvolvedor
experiente
Articulista
Entusiasta de tecnologia
Projetos Java, Android,
NoSQL
Instrutor Java/Android
Pai, marido, filho, irmão,
…
Precisa ter mais horas de Atividade Complementar na
faculdade
Tem muitas idéias na cabeça
Quer resolver problemas com a tecnologia
Se interessa por tecnologia
Tem curiosidade
Voce está aqui porque …
Gosta de programar
O que é o futuro ?
Consumer Eletronics Show
Tecnologias recentes ?(em 2001)
"The tablet is an extension of the desktop"
Oficinas de tecnologia
Tecnologias recentes ?(em 2001)
Cell phone
MP3 Player
Messaging using SMS
Wireless Web browser
E-mail
Bluetooth connectivity
Security
Games
Tecnologias recentes ?(em 2001)
Oficinas de tecnologia
Oficinas de tecnologia
http://www.techtudo.com.br/eventos/ces
http://www.techtudo.com.br/eventos/ces
Oficinas de tecnologia
http://www.techtudo.com.br/eventos/ces
“Todas as grandes inovações atuais envolvem software.
dos os grandes softwares saíram da cabeça de um programa
Fiquem atentos …
( Clarice Lispector, 2012 )
Então, … o que viemos fazer
aqui ?
Nosso objetivo
“Desenvolver um simples
aplicativo que envolva a
tecnologia Kinect interagindo
com Android”
Como ?
Processing
Kinect SDK
Android SDK
Processing
Processing
“Uma linguagem de programação
de código aberto baseada em
Java construída para as artes
eletrônicas e comunidades de
projetos visuais”
“IDE de programação”
Processing
openprocessing.org
Kinect além do XBoX
Kinect
O Kinect é um sensor de movimentos desenvolvido
para o Xbox 360 e Xbox One, pela empresa Microsoft
junto com a empresa PrimeSense.
Obrigado, wikipedia
Kinect
m uma sensação de como seria não depender de nenhum tipo
Kinect
Desde 2002 na Microsoft, ele já trabalhou na área do
Windows e atualmente é o diretor geral de incubação do
Xbox
Nunca existirá um SDK
… ahahahah !
O Kinect foi lançado em
04 de novembro de 2010
Kinect
Somente para XBox ?
Será ?
Do IT Yourself
O Driver OpenKinect foi lançado em
10 de novembro de 2010
Kinect além do XBoX
Oficinas de tecnologia
Kinect
Somente para XBox ?
http://git.marcansoft.com/?p=libfreenect.git
Kinect
Somente para XBox ?
Comunidade aberta de pessoas interessadas em fazer uso do
hardware Kinect com o seu PC e outros dispositivos
+ de 2000 membros
Framework libfreenet:
escrito em C mas possui Wrappers para Java, Python, C#, Javascript
Kinect
Somente para XBox ?
Ecosistema de membros que criam aplicações que envolvam Natural
Interface (NI)
Amplo suporte
OpenNI SDK + NITE Middleware
escrito em C mas possui Wrappers para Java
Kinect
NI ?
CLI
Command Line
Interface
GUI
Graphic User
Interface
NUI
Natural User
Interface
Kinect
Somente para XBox ?
Ecosistema de membros que criam aplicações que envolvam Natural
Interface (NI)
Amplo suporte
OpenNI SDK + NITE Middleware
escrito em C mas possui Wrappers para Java
Kinect
Somente para XBox ?
Desenvolvedores criam aplicações que permitem aos usuários interagir
naturalmente com os seus computadores através de gestos e fala
Sistema
Operacional
Windows, Linux,
Mac OS
Windows, Linux,
Mac OS
Windows only
Uso de vários
kinects
SIM SIM SIM
Detecção de
esqueleto
NÃO SIM SIM
Detecção de
movimentos da
mão (click)
NÃO SIM NÃO
Áudio
NÃO POR
PADRÃO
NÃO SIM
Android
79.3
%
1 bilhão de
pessoas
no mundo
Como ganhar dinheiro ?
Licença full: usuário paga para utilizar todas as
funções
App Freemium: versão free com muitas funções e versão paga
com “bônus” de funções
Licença in-apps: usuário compra adicionais (muito usado em
games)
Free com Ads: usuário recebe propaganda (e pode até pagar para
remove-las)
Futuro
Computação baseada em gestos ?
Dispositivos móveis ?
Então, … o que viemos fazer
aqui ?
Oficinas de tecnologia
Opção 1
http://www.creativeapplications.net/processing/kinect-physics-tutorial-for-processing/
Opção 1
App Oficina SESC
Kinect
Processing
Server
Opção 1
Processing
Server
Oficinas de tecnologia
Opção 2
http://www.computer-orchestra.com/
Opção 2
Gravar o som App para reproduzir o som
1 2
Oficinas de tecnologia
Opção 2
Processing
Reproduzir o som
Reproduzir o som
Reproduzir o som
Reproduzir o som
Cronograma
Hoje
8 15 22 8 15 29
Processing Kinect
5 12
Android
26
Grande dia
Princípios de programação Java com processing
Box2D para simular física (colisões de objetos, gravidade, etc)
Kinect SDK (gestos, tracking de esqueleto, cameras)
App Android (Android SDK, comunicação com servidores, reconhecer toque)
Praticar fora do ambiente de
trabalho
Contribuição com algum projeto
Networking
Conhecimento
Insight para os seus projetos
pessoais
Novas idéias
Experimentar a tecnologia
Ficar por dentro das novidades
Porque ?
Kinect
Além do XBOX
Obrigado
Pixels
Obrigado Wikipedia, alguma hora eu faço a doação …
Pixels
7px x 8px = 56 / 1000000 = 0,000056
7px
8
p
x
Pixels
1 2 3 4 5 6 7
1
2
3
4
5
6
7
0
0
linha de 0,1 até 4,5 ?
Pixels
1 2 3 4 5 6 7
1
2
3
4
5
6
7
0
0
linha de 0,1 até 4,5
Pixels
size(600, 600);
Pixels
1 2 3 4 5 6 7
1
2
3
4
5
6
7
0
0
line (0,1,4,5);
linha de 0,1 até 4,5
Kinect além do XBoX
Oficinas de tecnologia
Primeiro código fonte Processing :)
Pixels
line(Ax, Ay, Bx, By);
Pixels
E se …
Pixels
1 2 3 4 5 6 7
1
2
3
4
5
6
7
0
0
rect(2,3,5,4);
Pixels
1 2 3 4 5 6 7
1
2
3
4
5
6
7
0
0
rect(2,3,5,4);
Pixels
1 2 3 4 5 6 7
1
2
3
4
5
6
7
0
0
rect(2,3,5,4);
Kinect além do XBoX
Oficinas de tecnologia
Pixels
1 2 3 4 5 6 7
1
2
3
4
5
6
7
0
0
rect(2,3,5,4);
Pixels
1 2 3 4 5 6 7
1
2
3
4
5
6
7
0
0
rect(2,3,5,4);
1 2 3 4 5 6 7
1
2
3
4
5
6
7
0
0
rectMode(CENTER);
rect(2,3,5,4);
Kinect além do XBoX
Pixels
CORNERS: Referencial TOP/LEFT (default rect)
CENTER: Referencial CENTRO
Cores
size(600, 600);
ellipse(200,200,100,100);
Ax Ay W H
Cores
fill(255, 0, 0);
ellipse(200,200,100,100);
rect(200,300,500,400);?
R G B A
size(600, 600);
Cores
size(600, 600);
fill(255, 0, 0);
ellipse(200,200,100,100);
rect(200,300,500,400);?
Quadrado azul ?
Cores
size(600, 600);
fill(255, 0, 0);
ellipse(200,200,100,100);
rect(200,300,500,400);?
fill(0, 0, 255);
Zoog
Tamanho: 600, 600 :
size()
Referencia elipse: CENTRO
Referencia retangulo: CENTRO
Cor da linha: 0 : stroke()
Retangulo começando em 100, 100 de tamanho 20, 100
Cor do preenchimento: 150
Cor do próximo preenchimento: 255
Circulo começando em 100, 70 de tamanho 60, 60
Cor do próximo preenchimento: 0
Circulo começando em 81, 70 de tamanho 16, 32
Circulo começando em 119, 70 de tamanho 16, 32
Cor da linha: 0 : stroke()
Linha começando em 90, 150 indo até 80, 160
Linha começando em 110, 150 indo até 120, 160
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Geometria
triangle(x1, y1, x2, y2, x3, y3)
triangle(x1, y1, x2, y2, x3, y3)
quad(x1, y1, x2, y2, x3, y3, x4, y4)
quad(189, 18, 216, 18, 216, 360, 144, 360);
arc(479, 300, 280, 280, PI, TWO_PI);
arc(x, y, w, h, angulo inicial, angulo final);
Geometria
Oba,
iguras geométricas :)
Kinect além do XBoX
http://proclipsing.googlecode.com/svn/tags/current_
releases/proclipsingSite/
Eclipse is the King
Plugin Processing
+
Interação
mouseX, mouseY
pmouseX, pmouseY
Ponteiro do mouse:
Posição anterior do ponteiro do mouse:
Oficinas de tecnologia
Interação
?
abs(posicao mouse x atual - posicao mouse x do passado)
#FikDik
Interação
mousePressed()
keyPressed()
Metodos de interação
mouseClicked()
Variáveis de interação
mousePressed
mouseClicked
width
height
mouseMoved()
http://mobideas.com.br/kinect/GravitySwarm.tar.gz
#vamosprogramar
Box2D
Box2D começou com uma série de tutoriais
sobre física escritos em C++ por Erin Catto
Box2D sabe tudo sobre física, mas nada sobre
o mundo dos pixels
Box2Dpublic void setup(){
Criar todos os objetos do nosso mundo;
}
public void draw(){
Calcular todas as forças do mundo;
Aplicar as forças aos nossos objetos;
Atualizar a localidade dos objetos;
Desenhar todos os objetos;
}
Box2D
Elementos principais Box2D
World: representa o mundo e a física;
Body: representa um elemento primario do Box2D;
Tem uma localidade e uma velocidade;
Shape: representa o rastreamento da colisão do
Body;
Fixture: adiciona ao Body propriedades como
densidade e fricção;
Joint: adiciona conexão entre dois "Body";
Box2D
Elementos principais Box2D
Vec2: representa um vetor no mundo Box2D;
Box2D
Vivendo em um mundo Box2D
Mundo
B
P
ndoPosicao = new Vec2(0,0); ?
sicao.x, mundoPosicao.y ,160,160);
Mundo
1 Vec2 mundoPosicao = new Vec2(0,0); ?
2 Vec2 pixelPos = box2d.coordWorldToPixels(mundoPosicao);
3 rect(pixelPos.x, pixelPos.y ,160,160);
4 Vec2 mouseWorld = box2d.coordPixelsToWorld(mouseX,mouseY);
Body
Dynamic: o mais comum, simula completamente a física.
Static: não se move, usado para paredes
ematic: pode se mover de acordo com uma velocidade aplica
Kinect
Kinect além do XBoX
Kinect
O Kinect é um sensor de movimentos desenvolvido
para o Xbox 360 e Xbox One, pela empresa Microsoft
junto com a empresa PrimeSense.
Obrigado, wikipedia
Kinect
m uma sensação de como seria não depender de nenhum tipo
Kinect
Desde 2002 na Microsoft, ele já trabalhou na área do
Windows e atualmente é o diretor geral de incubação do
Xbox
Nunca existirá um SDK
… ahahahah !
O Kinect foi lançado em
04 de novembro de 2010
Kinect
Somente para XBox ?
Será ?
Do IT Yourself
O Driver OpenKinect foi lançado em
10 de novembro de 2010
Kinect
Somente para XBox ?
http://git.marcansoft.com/?p=libfreenect.git
Kinect
Somente para XBox ?
Comunidade aberta de pessoas interessadas em fazer uso do
hardware Kinect com o seu PC e outros dispositivos
+ de 2000 membros
Framework libfreenet:
escrito em C mas possui Wrappers para Java, Python, C#, Javascript
Kinect
Somente para XBox ?
Ecosistema de membros que criam aplicações que envolvam Natural
Interface (NI)
Amplo suporte
OpenNI SDK + NITE Middleware
escrito em C mas possui Wrappers para Java
Kinect
NI ?
CLI
Command Line
Interface
GUI
Graphic User
Interface
NUI
Natural User
Interface
Kinect
Somente para XBox ?
Ecosistema de membros que criam aplicações que envolvam Natural
Interface (NI)
Amplo suporte
OpenNI SDK + NITE Middleware
escrito em C mas possui Wrappers para Java
Kinect
Somente para XBox ?
Desenvolvedores criam aplicações que permitem aos usuários interagir
naturalmente com os seus computadores através de gestos e fala
Sistema
Operacional
Windows, Linux,
Mac OS
Windows, Linux,
Mac OS
Windows only
Uso de vários
kinects
SIM SIM SIM
Detecção de
esqueleto
NÃO SIM SIM
Detecção de
movimentos da
mão (click)
NÃO SIM NÃO
Áudio
NÃO POR
PADRÃO
NÃO SIM
Windows
NiSimpleViewer
.net Framework 2.0
OpenNI 1.5.7.10
NITE 1.5.2.23
Sensor Kinect
5.1.2.1
Ubuntu
NiSimpleViewer
Ver abaixo
OpenNI 1.5.7.10
Sensor Kinect 5.1.2.1
NITE 1.5.2.23
Mac OS
NiSimpleViewer
Xcode
MacPorts
CMake
sudo port install libtool
sudo port install -devel +universal
OpenNI 1.5.7.10
Sensor Kinect 5.1.2.1
NITE 1.5.2.23
sudo apt-get install git-core cmake freeglut3-dev pkg-config build-essential
libxmu-dev libxi-dev libusb-1.0-0-dev doxygen graphviz mono-complete
sudo xcode-select --install
# recarregando repositório
sudo port -v selfupdate
# instalando dependências
sudo port install libtool
sudo port install libusb
Kinect
Resolução: 640 x 480
Frames: 30 fps
SimpleOpenNI
Profundidade (Depth)
SimpleOpenNI
Pixel mais longe
Pixel mais perto
O brilho do pixel cinza
determina a distancia
Pixels
680px
4
8
0
p
x
Pixels
Linha 1 Linha 2
Array de pixels de profundidade
int[] array = kinect.depthMap();
0 a 8.000 milimetros
Pixels onNewUser
startPoseDetection
onStartPose
requestCalibrationSkeleton
onEndCalibration
startTrackingSkeleton
Kinect
Além do XBOX
Kinect
Além do XBOX
Kinect
Além do XBOX
Kinect
Além do XBOX
Kinect
Além do XBOX
Kinect
Além do XBOX
Kinect
Além do XBOX
Preparem-se, estou chegando
para animar a festa !
+ + + +
Kinect OpenNI Framework Processing Eclipse
+
Java
Toxiclibs + BlobsDetection
Box2D
OpenGL
{
Kinect depth
Ainda vamos ver …
Toxiclibs
“Coleção de bibliotecas OpenSource desenvolvidas
para Design Computacional”
http://toxiclibs.org
toxi.audio toxi.color toxi.geom
toxi.math toxi.physics
“Biblioteca para tratamento de partículas em uma imagem”
http://www.v3ga.net/processing/BlobDetection/
BlobsDetection
Socket + Processing ?
PrimeiroBOX2D PrimeiroKinect
LeapMotion
Cronograma
8 15 22 8 15 29 5 12 261
3 meses 10 dias 3 horas / dia 10 participantes
300 horas !
Kinect além do XBoX
Oficinas de tecnologia
“Todas as grandes inovações atuais envolvem software.
dos os grandes softwares saíram da cabeça de um programa
( Clarice Lispector, 2012 )
Obrigado

Oficina kinect