universidade de sao paulo˜ -...

63
UNIVERSIDADE DE S ˜ AO PAULO Instituto de Ci ˆ encias Matem ´ aticas e de Computac ¸˜ ao Reconhecimento de Gestos 3D utilizando o dispositivo Kinect Matheus Lin Truglio Alvarenga ao Carlos – SP

Upload: lamthien

Post on 20-Jan-2019

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

UNIVERSIDADE DE SAO PAULOInstituto de Ciencias Matematicas e de Computacao

Reconhecimento de Gestos 3D utilizando o dispositivo

Kinect

Matheus Lin Truglio Alvarenga

Sao Carlos – SP

Page 2: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi
Page 3: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

Reconhecimento de Gestos 3D utilizando o dispositivo

Kinect

Matheus Lin Truglio Alvarenga

Orientador: Fernando Santos Osorio

Monografia de conclusao de curso apresentada ao Instituto de

Ciencias Matematicas e de Computacao – ICMC-USP – para

obtencao do tıtulo de Bacharel em Engenharia de Computacao.

Area de Concentracao: Computacao Bioinspirada, Interacao

Usuario-Maquina, Robotica

USP - Sao Carlos

Novembro de 2011

Page 4: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi
Page 5: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

Monografia de conclusao de curso sob o tıtulo “Reconhecimento de Gestos 3D utilizando

o dispositivo Kinect” apresentada ao Instituto de Ciencias Matematicas e de Computacao –

ICMC-USP – por Matheus Lin Truglio Alvarenga e aprovada em 17 de Novembro de 2011, em

Sao Carlos, Sao Paulo pela banca examinadora constituıda por:

Prof. Dr. Fernando Santos OsorioDepartamento de Sistemas de Computacao

Orientador

Prof. Dr. Julio Cezar EstrellaDepartamento de Sistemas de Computacao

Prof. Dr. Fernando Santos OsorioDepartamento de Sistemas de Computacao

Page 6: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi
Page 7: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

O primeiro passo

para o futuro e imagina-lo.

Page 8: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi
Page 9: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

Dedico

esta monografia a

meus pais, Paulo e Lin,

por todo o apoio e oportunidades

que me deram durante todos esses anos de graduacao e por toda a vida.

Dedico tambem, a minha namorada Thaıs, sempre ao meu lado desde que nos conhecemos.

Page 10: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi
Page 11: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

Agradecimentos

Este trabalho de conclusao de curso certamente nao teria sido possıvel sem a participacao

de varias pessoas e amigos conhecidos durante a graduacao. Meus sinceros agradecimentos:

Aos professores do curso, com destaque aqueles que, com sua simpatia e metodos didaticos,

ensinaram conceitos importantes para a formacao do autor, tanto de forma tecnica quanto

com relacao a realizar analises crıticas. Agradecimentos especiais a Alysson Costa, Car-

los Maciel, Denis Wolf, Diogo Correa, Eduardo Simoes, Fernando Osorio, Gustavo Ba-

tista, Joao Batista Neto, Joao Navarro, Kalinka Castelo Branco, Marcos Santana, Maria

Cristina de Oliveira, Monica Rocha, Paulo Souza, Regina Santana, Sarita Bruschi, Si-

mone Souza, Rodrigo Andrade, Rodrigo Mello, Valdir Grassi Jr., Victor Ranieri.

Aos amigos, sem os quais este curso teria sido muito menos proveitoso e divertido. Agrade-

cimentos especiais a Andres Martano, Athila Quaresma, Bruno Alba, Bruno Tiba, Cassio

Matos, Ciro Gutierre, Daniel Luna, Felipe Coelho, Felipe Gomes, Gabriel Coelho, Gui-

lherme Hoshino, Joao Lucas do Val, Laercio Asano Jr, Luciano Falqueto, Luiz Fernando

Prado, Marcelo Mergulhao, Murillo Batista, Natassya Silva, Pedro Castellucci, Pedro

Pereira, Thiago Maziero, Tiago Casagrande, Vinıcius Madisson, entre tantos outros!

A minha namorada e companheira Thaıs, que esteve ao meu lado em muitos momentos

importantes do curso e de minha vida;

Alem desses, agradeco tambem a toda minha famılia e a Deus, pelo apoio, confianca e

oportunidades a mim depositados, sempre.

Sem a ajuda de todos voces, a experiencia unica de estudar nesta universidade nao seria tao

proveitosa e completa!

Page 12: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi
Page 13: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

Resumo

Este projeto tem por objetivo utilizar o sistema ROS (Robot Operating System) e suas ferra-

mentas para classificar tres gestos simples desenvolvidos pela mao direita de um usuario. A

identificacao da pose e posicao do usuario e realizada pelo dispositivo eletronico Kinect c©,

que possui um sensor de profundidade capaz de mapear o ambiente a sua frente de forma tri-

dimensional. O uso de ferramentas do ROS permitem realizar a leitura dos sensores do Ki-

nect, enviando-as ao sistema aqui desenvolvido para extrair caracterısticas da movimentacao do

usuario. Atraves da realizacao dos movimentos a serem classificados, geram-se amostras de

treinamento e teste, utilizadas para realizar o aprendizado de uma rede neural artificial do tipo

MLP. Uma vez treinada, a rede e capaz de identificar os gestos realizados pelo usuario em tempo

real, permitindo o uso de comandos a distancia e sem o uso de equipamentos mecancios. Essa

possibilidade fornece um tipo atual de interface humano-maquina, criando uma interface mais

natural. Entre seus usos, destaca-se a area de jogos eletronicos, simulacoes e a possibilidade de

fornecer comandos a distancia para outros softwares ou ate mesmo aplicacoes roboticas.

Palavras-chave: Kinect, Artificial Neural Network, Perceptron, MLP, ROS, Gesture

Recognition, HCI

Page 14: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

Sumario

Lista de Figuras p. III

Lista de Tabelas p. V

Lista de Abreviaturas p. VII

1 Introducao p. 9

1.1 Contextualizacao e Motivacao . . . . . . . . . . . . . . . . . . . . . . . . . p. 9

1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 9

1.3 Organizacao do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 10

2 Revisao Bibliografica p. 11

2.1 Consideracoes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 11

2.2 Interface com usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 11

2.3 O Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 12

2.4 Ferramentas de Software para uso do Kinect - ROS . . . . . . . . . . . . . . p. 14

2.4.1 Estrutura de Comunicacao . . . . . . . . . . . . . . . . . . . . . . . p. 14

2.4.2 O Pacote de Demonstracoes do MIT . . . . . . . . . . . . . . . . . . p. 17

2.5 Reconhecimento de Gestos . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 17

2.6 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19

Page 15: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.6.1 O Perceptron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20

2.6.2 O Aprendizado do Perceptron . . . . . . . . . . . . . . . . . . . . . p. 23

2.6.3 Aplicacoes do Perceptron . . . . . . . . . . . . . . . . . . . . . . . p. 26

2.6.4 MLP - Multi-Layer Perceptron . . . . . . . . . . . . . . . . . . . . . p. 26

2.6.5 O Aprendizado da MLP . . . . . . . . . . . . . . . . . . . . . . . . p. 27

2.6.6 Usos da MLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32

2.7 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32

3 Desenvolvimento do Trabalho p. 33

3.1 Consideracoes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 33

3.2 Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 33

3.3 Descricao das Atividades Realizadas . . . . . . . . . . . . . . . . . . . . . . p. 34

3.4 Resultados Obtidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 39

3.5 Dificuldades e Limitacoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45

3.6 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45

4 Conclusao p. 47

4.1 Contribuicoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 47

4.2 Consideracoes sobre o Curso de Graduacao . . . . . . . . . . . . . . . . . . p. 48

Referencias Bibliograficas p. 49

Page 16: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

Lista de Figuras

2.1 Kinect e seus principais componentes. Fonte: (XBOX GAZETTE, 2011) . . . p. 12

2.2 openni tracker, detector de humanos. Fonte: (RUSU; CONLEY; FOOTE,

2011) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 13

2.3 Sequencia tıpica de criacao de topicos, uso do no ROS Master . . . . . . . . p. 15

2.4 Captura de tela do detector de maos. Fonte: (SUENDERHAUF; NEUBERT;

GALLAGHER, 2011) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 17

2.5 Representacao do neuronio biologico, adaptado de (JAROSZ, 2009) . . . . . p. 19

2.6 Modelo do Perceptron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20

2.7 Exemplo de classificacao do Perceptron: IMC . . . . . . . . . . . . . . . . . p. 21

2.8 Efeito da variacao dos parametros a) pesos e b) bias . . . . . . . . . . . . . . p. 22

2.9 Exemplos de funcoes de ativacao: sigmoid (vermelho) e tanh (verde) . . . . . p. 25

2.10 Representacao de MLP de 3 camadas . . . . . . . . . . . . . . . . . . . . . p. 27

2.11 Funcoes com a) um unico mınimo e b) varios mınimos . . . . . . . . . . . . p. 30

2.12 Navalha de Occam: selecionando a solucao correta . . . . . . . . . . . . . . p. 31

3.1 Movimentos a serem classificados: a) circle, b come here e c) goodbye . . . . p. 33

3.2 Visao dos topicos e nos do ROS durante aquisicao de dados . . . . . . . . . . p. 38

3.3 Erros x epoca, variando-se o numero de neuronios da camada escondida . . . p. 43

3.4 Erros x epoca, variando-se a taxa de erro maxima para treinamento . . . . . . p. 43

Page 17: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

3.5 Erros x epoca, variando-se o passo de aprendizado α . . . . . . . . . . . . . p. 44

3.6 Erros x epoca, variando-se o fator de momento . . . . . . . . . . . . . . . . p. 44

Page 18: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

Lista de Tabelas

3.1 Resultado do teste de Validacao Cruzada . . . . . . . . . . . . . . . . . . . . p. 41

3.2 Resultado do teste com dados de uso real . . . . . . . . . . . . . . . . . . . p. 42

Page 19: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi
Page 20: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

Lista de Abreviaturas

ROS Robot Operating System, um projeto open source com ferramentas deapoio ao desenvolvimento da robotica;

MLP Multi-Layer Perceptron, nome dado a rede neural artificial de multiplascamadas que faz uso de neuronios do tipo Perceptron;

USB Universal Serial Bus, interface padronizada de hardware;MIT Massachussets Institute of Technology, desenvolvedora de alguns paco-

tes ROS utilizados neste projeto;OCR Optical Character Recognition, reconhecimento de caracteres opticos

(uso de uma camera, por exemplo);HCI Human Computer Interface, forma de comunicacao entre usuarios e

maquinas;SDK Software Development Kit, ferramentas de desenvolvimento de soft-

ware.

Page 21: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi
Page 22: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

9

1 Introducao

1.1 Contextualizacao e Motivacao

A area de pesquisas de HCI buscam novas formas de permitir que diferentes usuarios in-

terajam com diversas apliacoes. Dentro dessa area, encontram-se areas de pesquisa em reco-

nhecimento de gestos, disponibilizando uma forma natural e intuitiva de fornecer comandos ao

computador ou aplicacao.

Um novo dispositivo, Kinect, possui recursos para permitir o reconhecimento de gestos

de humanos, atraves de sensores de profundidade, capazes de gerar um mapeamento em 3

dimensoes. Algumas bibliotecas recentes (ROS) permitem utilizar esses recursos, fornecendo

informacoes valiosas para a determinacao de pose e posicao de usuarios.

O uso de redes neurais artificiais permite o reconhecimento de padroes atraves de um

metodo simples e eficaz, de modo que pode ser aplicado a leituras do Kinect para determinar

gestos realizados pelo usuario. Esses gestos poderiam ser utilizados para diversas aplicacoes,

inclusive na robotica, podendo fornecer comandos a robos sem o uso de dispositivos mecanicos

como teclados, joysticks ou controles remotos.

1.2 Objetivos

Este projeto visa desenvolver um software capaz de utilizar o Kinect para detectar os gestos

(sequencia de posicoes ou deslocamentos) realizados pela mao direita de um usuario. Planeja-

se que o software seja capaz de reconhecer pelo menos 3 tipos distintos de movimento. Alem

disso, espera-se que a fase de treinamento da rede seja rapida e seu resultado obtenha uma alta

Page 23: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

10 1 Introducao

taxa de acerto (classifique corretamente pelo menos 90% dos gestos realizados, desde que sejam

gestos que a rede tenha sido treinada para reconhecer).

1.3 Organizacao do Trabalho

Esta monografia foi redigida segundo a seguinte estrutura: No capıtulo 2, ha uma Revisao

Bibliografica, que introduz, explica e exemplifica conceitos importantes para o desenvolvimento

do trabalho: Interfaces com usuario; detalhes do inovador dispositivo Kinect; ROS, uma ferra-

menta para utilizar o dispositivo, bem como a estrutura de comunicacao entre aplicativos que

a utilizam; a importancia e relevancia do reconhecimento de gestos em HCI; finalizando com

Redes Neurais artificiais, algumas tecnicas de melhoria de resultados e modo de avaliacao.

O Capıtulo 3 apresenta a descricao das etapas desenvolvidas, seguidas do detalhamento

de sua execucao e resultados obtidos. Descreve, tambem, as dificuldades encontradas para o

desenvolvimento do projeto.

Por fim, o capıtulo 4 conlui o projeto, citando as contribuicoes deste trabalho para o meio

academico e contribuicoes do desenvolvimento do projeto para o autor, como pessoa. Cita,

tambem, a visao do autor com relacao ao curso de graduacao da Engenharia da Computacao.

Alem disso, sugere-se algumas atividades que possam utilizar-se deste trabalho como base para

aplicacoes maiores.

Page 24: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

11

2 Revisao Bibliografica

2.1 Consideracoes Iniciais

As secoes a seguir sao importantes para a compreensao deste projeto, fornecendo a base

teorica de seu funcionamento. Os assuntos tratados envolvem interfaces com usuarios, reco-

nhecimento de gestos, Redes Neurais do tipo MLP (Multi-Layer Perceptron) e o projeto ROS

(Robotic Operational System).

2.2 Interface com usuario

A area de HCI (Human Computer Interface, Interface Usuario-Computador ou usuario-

maquina) tem sido desenvolvida no sentido de facilitar a comunicacao entre usuarios e aplicacoes

eletronicas, facilitando o uso de computadores e maquinas e exigindo menos conhecimento

tecnico para uso dessas aplicacoes, atraves de interfaces mais naturais e intuitivas.

Desenvolvimentos recentes de dispositivos compostos por acelerometros, giroscopios e no-

vos meios de comunicacao sem fio permitiram a criacao de novos equipamentos eletronicos

para essa interface. Entre as eles, destacam-se:

Wii Remote c©: controle remoto do vıdeo-game Wii c©, da Nintendo c©, dotado de acelerometros

e sensores infra-vermelho; e capaz de comunicar ao console sua pose e posicao, permi-

tindo mimetizar os movimentos do jogador dentro do jogo. Para seu funcionamento no

jogo, e necessario um emissor de luz infravermelha localizado acima ou abaixo da tela.

Utilizando esse emissor, o controle remoto e capaz de estimar sua distancia. Para uso

somente dos acelerometros, contudo, nao se faz necessario esse emissor. O Wii Remote

Page 25: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

12 2 Revisao Bibliografica

comunica-se utilizando a tecnologia sem fio Bluetooth.

Playstation Move c©: controle de aparencia similar a um microfone, desenvolvido para uso

com o console Playstation 3 c©, da Sony c©. Dotado de acelerometros, e capaz de estimar

sua posicao angular e, atraves de uma camera especial (Playstation Eye c©) localizada

acima ou abaixo da tela, estima-se tambem sua posicao. Esse conjunto realiza intenso uso

de processamento de imagens para realizar as estimativas. A comunicacao do controle e

feita atraves da tecnologia sem fio Bluetooth.

Kinect c©: dispositivo periferico do console XBOX 360 c©, da Microsoft c©, nao requer uso de

um dispositivo mecanico para interacao com usuario. Dotado de um sensor de profundi-

dade com uso de uma grade de pontos infra-vermelho, e capaz de mapear o ambiente a sua

frente, podendo reconhecer e rastrear os movimentos do usuario. Ha um detalhamento

mais aprofundado sobre este dispositivo na proxima secao.

2.3 O Kinect

Figura 2.1: Kinect e seus principais componentes. Fonte: (XBOX GAZETTE, 2011)

Conhecido previamente como “Project Natal” , o Kinect (Figura 2.1 e um dispositivo de-

senvolvido principalmente para uso em jogos eletronicos do console XBOX 360 c©, da Micro-

soft c©, lancado em Novembro de 2010. Atualmente, mantem o record mundial de disposi-

tivo eletronico mais rapidamente vendido, alcancando a marca de 8 milhoes de vendas em 60

Page 26: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.3 O Kinect 13

dias (GUINNESS WORLD RECORDS, 2011). Dotado de uma camera RGB, um sensor de

profundidade capaz de mapear o ambiente em 3 dimensoes, microfones, um motor para alterar

seu angulo de visao e interface USB 2.0, outras areas, como a Robotica, podem fazer bom uso

do dispositivo. Em Junho de 2011, a Microsoft lancou um SDK nao comercial para Windows, e

outra versao comercial mais tarde. (MICROSOFT, 2011)

Os sensores de profundidade 3D, porem, foram desenvolvidos pela empresa PrimeSense

(PRIME SENSE, 2011), que juntou-se a outras duas empresas para desenvolver o projeto

openni kinect (RUSU; CONLEY; FOOTE, 2011), como um pacote para o ROS, disponi-

bilizando drivers e ferramentas open source para seus sensores, compatıvel com os sensores

presentes no Kinect. A primeira versao do openni kinect foi publicada em Marco de 2011,

para a versao Diamondback do ROS. Em Julho de 2011, foi lancado o openni tracker, capaz

de reconhecer um humano e acompanhar seus movimentos, estimando-se a posicao de algumas

juntas do corpo (como pescoco, ombros, cotovelos e maos). Esse modulo e amplamente utili-

zado em inumeras outras aplicacoes, pois e uma forma rapida e eficiente de rastrear o usuario.

A Figura 2.2 mostra uma captura de tela da aplicacao de rastrear humanos.

Figura 2.2: openni tracker, detector de humanos. Fonte: (RUSU; CONLEY; FOOTE, 2011)

De posse desses drivers e modulos, o Kinect torna-se uma ferramenta bastante flexıvel

quanto ao uso, podendo servir como scanner 3D para modelar ambientes ou objetos fısicos e

para reconhecer gestos e movimentos, fornecendo uma interface mais “natural” entre o usuario

e o computador.

Page 27: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

14 2 Revisao Bibliografica

2.4 Ferramentas de Software para uso do Kinect - ROS

Segundo o site oficial, “ROS (Robot Operating System) prove bibliotecas e ferramentas

para auxiliar desenvolvedores de software na criacao de aplicativos roboticos. Ele disponibi-

liza abstracao de hardware, drivers para dispositivos, bibliotecas, visualizadores, passagem de

mensagem, gerenciador de pacotes e mais. ROS esta sob uma licenca open source, a BSD

license.” (WILLOW GARAGE, 2009) (em traducao livre).

O projeto ROS foi escolhido como base para o desenvolvimento deste projeto por disponibi-

lizar uma estrutura de comunicacao entre processos, por possuir drivers e ferramentas para uso

do dispositivo Kinect, por ser open source, possuir uma plataforma com suporte a mais de uma

linguagem (C++, python e lisp), por tratar-se de um projeto de suporte a robotica e por disponi-

bilizar acesso a outras bibliotecas populares no mundo da robotica, como a OpenNI e OpenCV.

Alem disso, e possıvel encontrar varias ferramentas desenvolvidas com uso do ROS que forne-

cem suporte ao desenvolvimento de outras aplicacoes, como o caso do pacote de demonstracoes

do MIT.

A seguir, explica-se a estrutura basica de comunicacao do ROS.

2.4.1 Estrutura de Comunicacao

A comunicacao entre processos e abstraıda como uma estrutura de “topicos” (topics) e

“nos” (nodes). Em baixo nıvel, a comunicacao e realizada ponto-a-ponto (peer-to-peer). Alem

disso, permite-se o uso de “servicos” (services) e “clientes” (clients). Em linhas gerais, toda

aplicacao e um “no”. Os nos podem enviar e receber mensagens atraves de topicos, similar-

mente a um forum da web: um no pode “inscrever-se” (subscribe) em um topico. Assim,

cada vez que uma mensagem for publicada (published) naquele topico, todos os nos nele inscri-

tos receberao a mesma mensagem, executando uma rotina de callback para tratar a mensagem

recebida.

O gerenciamento de inscricoes e publicacoes e realizado pelo ROS Master, um no que prove

servicos de nomeamento (naming) e registros (registering) para os demais nos: sempre que um

Page 28: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.4 Ferramentas de Software para uso do Kinect - ROS 15

no declara sua intencao de publicar mensagens num determinado topico, ele notifica o mestre.

Sempre que um no se inscreve num topico, o mestre e notificado. Quando ha pelo menos um

no registrado para publicar e pelo menos um no para receber as mensagens no mesmo topico,

o mestre os notifica para que possam localizar um ao outro e realizar a troca de mensagens. O

papel do mestre, e “permitir que nos individuais encontrem um ao outro” (WILLOW GARAGE,

2009). A Figura 2.3 mostra um esquema de publicacao e inscricao com uso do Mestre, por um

no que representa uma camera digital (Camera) que publica imagens no topico “images”, e

outro no recebe essas imagens (Image viewer).

Figura 2.3: Sequencia tıpica de criacao de topicos, uso do no ROS Master

O no mestre tambem prove um servidor de parametros (Parameter Server), usado por ou-

tros nos para armazenar e recuperar parametros em tempo de execucao. Esses parametros sao

disponibilizados de forma global, facilitando que ferramentas inspecionem e alterem os valores

dos parametros, se necessario (WILLOW GARAGE, 2009).

Alguns comandos auxiliares para uso do ROS incluem:

roscd [pacote]: muda o diretorio de trabalho para o diretorio raiz do [pacote];

rostopic list: lista todos os topicos ativos no momento;

rosnode list: lista todos os nos ativos no momento;

rosservice list: lista todos os servicos disponıveis no momento;

rosrun [pacote] [alicativo]: Executa o [aplicativo] do [pacote];

Page 29: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

16 2 Revisao Bibliografica

roslaunch [pacote] [script.launch]: Executa um script de lancamento de um aplicativo, po-

dendo conter a inicializacao de varios nos, requisitar servicos e ajustar ou ler parametros.

Os tipos de mensagens enviadas em topicos e utilizadas em servicos deve ser definido

quando o mesmo e criado. E possıvel utilizar tipos ja existentes ou definir novos tipos de

mensagem, criando-se um arquivo especıfico com a definicao da mesma. Essa definicao e feita

escrevendo-se num arquivo os tipos e nomes dos “componentes” da mensagem. Por exemplo,

uma mensagem para definir um ponto x,y,z do espaco teria 3 campos (um em cada linha) defi-

nindo seu tipo (por exemplo, float) com os nomes desses campos (x, y, z). O Codigo 2.1

apresenta um arquivo de mensagem do tipo Point.msg, do pacote geometry msgs:

Codigo 2.1: Exemplo de mensagem: Point.msg� �# Th i s c o n t a i n s t h e p o s i t i o n o f a p o i n t i n f r e e s p a c ef l o a t 6 4 xf l o a t 6 4 yf l o a t 6 4 z� �

Os componentes de uma mensagem podem ser tipos de dados primitivos, vetores de tipos

primitivos, outras mensagens ou mesmo vetores de outras mensagens. Para que um tipo de

mensagem seja utilizada como parte de outro tipo, deve-se declarar o pacote de origem e o

tipo da mesma. Se o tipo de mensagem for do mesmo pacote, nao e necessario informar o

pacote de origem. A excecao e o tipo Header (utilizado para controle de sequenciamento de

mensagens): se for inserido como primeiro componente da mensagem e considerado como

std msgs/Header. (WILLOW GARAGE, 2009)

O ROS tambem disponibiliza uma ferramenta para gravacao e reproducao de mensagens,

atraves do comando rosbag. Esse comando pode gravar uma sequencia de mensagens que

sejam enviadas em todos os topicos ou somente em um topico especıfico, gerando um arquivo

com extensao .bag. Esse arquivo pode ser reproduzido, gerando as mesmas mensagens na

mesma ordem e instantes (relativos ao inıcio da gravacao) em que ocorreram durante a gravacao,

sendo uma ferramenta util em testes e demonstracoes.

Page 30: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.5 Reconhecimento de Gestos 17

2.4.2 O Pacote de Demonstracoes do MIT

O pacote de demonstracoes do Massachusets Institute of Technology (MIT) para o ROS

pode ser encontrado na web, tambem sob licenca BSD (SUENDERHAUF; NEUBERT; GAL-

LAGHER, 2011). Em seus destaques, encontram-se pacotes que fazem uso do Kinect, capazes

de identificar maos e dedos (de humanos), tocador de piano virtual, um robo acompanhante (que

acompanha um humano, tendendo a ficar sempre uma mesma distancia dele ou dela) e uma in-

terface com usuario para manipular imagens inspirada numa cena do filme Minority Report c©.

Como ferramental utilitario, o pacote do MIT disponibiliza pacotes de identificacao es-

queletica (skeletal tracker), alem de mensagens especıficas para para escrita em topicos

(pacote body msgs). A Figura 2.4 exibe uma captura de tela do aplicativo de deteccao de maos.

Figura 2.4: Captura de tela do detector de maos. Fonte: (SUENDERHAUF; NEUBERT; GAL-LAGHER, 2011)

2.5 Reconhecimento de Gestos

Em varias situacoes, seria conveniente que o computador compreendesse as intencoes do

usuario de formas mais simples que digitando comandos ou clicando em diversos menus su-

Page 31: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

18 2 Revisao Bibliografica

cessivos. Por exemplo, um clique e um arrasto (um traco) com o mouse poderiam voltar uma

pagina do seu web browser, regular o zoom da imagem para que ajuste-se ao tamanho da ja-

nela ou mudar a formacao de suas unidades militares de um jogo de estrategia. Outro traco,

diferente, poderia salvar uma imagem da pagina visitada, salvar seu documento ou ordenar uma

nova construcao no jogo.

Embora comumente ja existam outros modos de se realizar essas acoes, novas formas, mais

rapidas, simples ou que utilize outro dispositivo, podem melhorar a experiencia do usuario

com a aplicacao, reduzindo o tempo gasto com tarefas simples que demandam muitos cliques,

troca de dispositivos (teclado e mouse, por exemplo) ou movimentos precisos e lentos. Uma

forma comum de acelerar essas tarefas sao as teclas de atalho/hotkey, combinacoes de teclas

que, quando pressionadas conjuntamente, realizam algumas dessas tarefas. Reconhecer gestos

podem, tambem, fornecer ao usuario uma imersao maior na aplicacao, principalmente no caso

de um jogo ou simulacao, fazendo com que sinta-se em outro ambiente.

Nesse sentido, um “gesto” e uma sequencia de movimentos que segue um determinado

padrao. Por exemplo, para reconhecimento de gestos com o mouse, um metodo encontrado em

extensoes e plug-ins de alguns web browsers e: pressionar e segurar o botao direito do mouse

(identifica inıcio de padrao), arrasta-lo seguindo formas pre-definidas (identificacao do padrao),

liberacao do botao direito (evento que encerra o padrao). Os deslocamentos do mouse enquanto

o botao direito do mouse e mantido pressionado sao registrados e comparados, de alguma forma,

aos padroes pre-definidos. Uma vez identificado o padrao realizado, alguma acao pre-definida

e realizada, por exemplo executando-se um script. Exemplos uteis incluem: “ir para a pagina

inicial”, “voltar uma pagina” ou “fechar uma aba”.

Porem, esses padroes dificilmente sao executados exatamente da mesma forma pelos usuarios:

um deslocamento horizontal dificilmente possui apenas componentes horizontais. Assim, para

tornar-se utilizavel, aplicativos de reconhecimento de gestos devem possuir uma tolerancia

aceitavel de erros no reconhecimento de padroes.

Uma ferramenta computacional atualmente popular utilizada para reconhecimento de padroes

sao as redes neurais artificiais, descritas na proxima secao. Entre suas caracterısticas, a classificacao

Page 32: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.6 Redes Neurais Artificiais 19

aceita pequenas variacoes em suas entradas, mantendo uma alta taxa de acerto.

2.6 Redes Neurais Artificiais

Segundo (HAYKIN, 1998), “Redes Neurais Artificiais sao modelos matematicos que se

assemelham as estruturas neurais biologicas e que tem capacidade computacional adquirida

por meio de aprendizado e generalizacao”. Uma rede neural artificial e um sistema inspirado no

conceito do neuronio biologico e a rede formada por celulas desse tipo. Os neuronios biologicos

sao celulas do sistema nervoso, capazes de receber, processar e enviar sinais eletricos. A Fi-

gura 2.5 exibe uma representacao de um neuronio biologico, apresentando apenas o nome das

regioes mais importantes para os neuronios artificiais.

Figura 2.5: Representacao do neuronio biologico, adaptado de (JAROSZ, 2009)

Os dendritos sao terminais “de entrada” do neuronio, por onde recebe sinais eletricos, vin-

dos de outros neuronios ou outras celulas especiais, principalmente sensoriais (como celulas

sensıveis a luz, som ou toque) ou do sistema nervoso central (cerebro, cerebelo e medula es-

pinhal). O nucleo atua como uma unidade de processamento dos sinais de entrada recebi-

dos: os pulsos eletricos recebidos variam o potencial eletrico da membrana da celula. Quando

esse potencial ultrapassa um determinado limiar, o neuronio e “ativado”, emitindo um sinal

eletrico atraves do axonio. E importante salientar que os neuronios obedecem a regra do “tudo-

ou-nada”: se um neuronio responde aos estımulos, responde com intensidade maxima; caso

contrario, nao responde (observe a similaridade com a funcao matematica “degrau unitario”).

Isto e: mesmo com mais estımulos (ou mais intensos), sua resposta nao tera maior intensi-

Page 33: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

20 2 Revisao Bibliografica

dade, embora possa ser enviada com maior frequencia. As respostas geradas seguem ao longo

do axonio, chegando a seus terminais, onde podem haver conexoes com dendritos de outros

neuronios ou celulas especiais (como musculos, indicando que devem ser contraıdos, por exem-

plo). Dessa forma, os terminais do axonio atuam como terminais “de saıdas” do neuronio.

Inspirado nesses conceitos, McCullouch e Pitts propuseram, em 1943, um modelo compu-

tacional baseado em neuronios, chamado “Threshold Logic” (a “logica do limiar”). Na decada

de 1940, o psicologo Hebb propos a hipotese de que seria possıvel aprender baseado na ca-

pacidade do cerebro de se remodelar em funcao das experiencias do sujeito, reformulando as

conexoes em funcao das necessidades e fatores do ambiente. Em 1958, o psicologo Rosenblatt

propos o modelo Perceptron, um classificador linear e binario.

2.6.1 O Perceptron

Um neuronio artificial, ou Perceptron, e um modelo matematico que representa o neuronio

biologico, adaptado para uso na matematica e na computacao. A Figura 2.6 exibe seu modelo

matematico.

Figura 2.6: Modelo do Perceptron

Esse modelo e capaz de classificar um conjunto de entrada entre duas classes, utilizando-se

a equacao de um hiperplano do espaco de busca. (Nota: um hiperplano e uma generalizacao de

um “plano”, que divide o espaco (3 dimensoes) em duas regioes; dessa forma, um hiperplano

para um espaco de 2 dimensoes (”plano”) e uma reta, pois divide o plano em 2 regioes).

Como caso ilustrativo, a Figura 2.7 apresenta a resposta de um Perceptron, capaz de dife-

renciar duas classes, num espaco de duas dimensoes. Por exemplo, o IMC (Indice de Massa

Page 34: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.6 Redes Neurais Artificiais 21

Corporal) e uma medida internacional para estimar se uma pessoa apresenta-se dentro de seu

peso ideal. O IMC e calculado como sendo:

IMC[kg/m2] =Massa[kg]

Altura2[m2]

Dependendo do sexo da pessoa e da faixa de valores em que se encontra esse ındice, a

pessoa pode ser considerada “abaixo do peso”, “saudavel”, “acima do peso” ou diferentes graus

de “obeso”. Dessa forma, e possıvel implementar um Perceptron que receba como entrada a

altura ao quadrado e a massa de uma pessoa e determinar se esta “obesa” ou “nao-obesa” (duas

classes). Na figura 2.7, os pontos verdes (acima da reta tracejada) representariam pessoas obesas

e os vermelhos (abaixo da reta tracejada) pessoas nao-obesas. Observe como uma unica reta

(hiperplano) pode separar as entradas em dois grupos.

Figura 2.7: Exemplo de classificacao do Perceptron: IMC

As equacoes de hiperplanos para hiperespacos de n dimensoes sao da forma:

w1x1 +w2x2 + . . .+wnxn +b = 0

Para um caso de duas dimensoes, tem-se:

w1x+w2y+b = 0

Page 35: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

22 2 Revisao Bibliografica

ou

y = wx+b

sendo x uma das dimensoes, y a segunda dimensao, w, w1 e w2 sao pesos das variaveis que

multiplicam e b uma constante denominada “bias”.

Dessa forma, pontos que estejam acima da reta sao rotulados como pertencendo a uma

classe e os pontos abaixo pertencem a outra classe. A figura 2.6 representa, tambem, o esquema

de um perceptron: valores reais sao fornecidos para o perceptron (entrada1 e entrada2);

esses valores sao multiplicados por pesos (w1 e w2) e somados ao bias. Sobre o resultado

dessa soma, aplica-se uma funcao de ativacao (funcao f (x) ). Essa funcao retorna um valor

1, caso a soma obtida seja maior que zero; retorna 0 caso contrario (funcao degrau unitario).

Esse resultado e, entao, emitido na saıda. A representacao da Figura 2.6 ilustra um caso com 2

entradas, mas pode-se generalizar para um numero qualquer de entradas.

Convem notar, tambem, que a equacao do hiperplano que classifica corretamente os dados

nao e unica: variacoes no vetor de pesos e no bias podem mudar a inclinacao e posicao do

hiperplano que separa as classes, mas, ainda assim, podem classificar as entradas corretamente.

A figura 2.8 ilustra essas situacoes, variando-se a) os pesos e b) o bias.

Figura 2.8: Efeito da variacao dos parametros a) pesos e b) bias

Page 36: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.6 Redes Neurais Artificiais 23

2.6.2 O Aprendizado do Perceptron

O aprendizado do Perceptron e um algoritmo iterativo que, atraves de exemplos de classificacao

(contendo as entradas e as respectivas saıdas esperadas) varia os valores dos pesos e bias, de

modo a encontrar um conjunto de parametros capaz de classificar as entradas conforme as saıdas

esperadas.

Para o aprendizado, utiliza-se um conjunto de entradas e saıdas denominado “conjunto

de treinamento”, contendo exemplos do que deve ser classificado e suas classificacoes. Para

avaliar-se a eficiencia do perceptron para uma rodada de treinamento, utiliza-se o erro quadratico

medio ε:

erro j = res j− y j(t) = res j− f (net j)

ε =1N

N

∑j=1

((res j− y j)2)

onde j indica o numero da tuplas de entrada, N a quantidade de tuplas de entradas, y j e o

resultado obtido para a tupla j e res j e o resultado esperado para a entrada j.

Esta medida fornece uma estimativa do erro para cada classificacao. Utiliza-se um erro

quadratico para evitar que um caso que tenha um erro “positivo” e outro com erro “nega-

tivo” anulem-se ao calcular a soma dos erros. A quantidade de iteracoes necessarias para que

a rede seja bem treinada depende de varios fatores, como o tamanho do passo de aprendizado

(α), pesos iniciais e complexidade do conjunto de treinamento. Desse modo, o treinamento

pode levar um tempo longo para ser concluıdo. Abordagens tıpicas envolvem parar o treina-

mento apos um numero fixo de iteracoes ou aguardar ate que o erro quadratico medio esteja

abaixo de um determinado valor. O teste final utiliza-se de um conjunto de entradas e saıdas es-

peradas que nao estava no conjunto de treinamento, para avaliar-se a habilidade de classificacao

do Perceptron para casos desconhecidos.

O algoritmo e iniciado com um vetor de pesos e bias aleatorios (tipicamente com valores

entre−1.0 e +1.0). Entao, aplica-se uma entrada e compara-se a saıda obtida e a saıda esperada

Page 37: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

24 2 Revisao Bibliografica

para aquela entrada. A diferenca entre elas e denominada “erro”. O objetivo do perceptron e,

entao, variar os parametros a que tem acesso (pesos e bias) de forma a minimizar esse erro

(obter respostas mais proximas das respostas esperadas). Para isso, utiliza-se o metodo do

gradiente descendente: utiliza-se da derivada da funcao a ser minimizada (no caso, o erro) para

encontrar seu ponto mınimo (ou, pelo menos, num mınimo local). Como o gradiente fornece

o sentido de maior crescimento da funcao, o metodo utiliza-se do oposto desse resultado, para

reduzir seu valor mais rapidamente. O erro e usado como uma proporcao de quanto cada peso

deve ser alterado, e um fator α (passo) indica quanto dessa proporcao, de fato, sera utilizada na

adaptacao dos parametros. Equacionando para a entrada x j,i no instante t tem-se:

net j =n

∑i=1

wi(t)x j,i +b j

y j(t) = f (net j)

E preciso encontrar, entao, a derivada da funcao erro com relacao aos pesos, para poder

minimiza-la. Deriva-se com relacao a cada peso wi. O procedimento e o mesmo para o bias.

∂erro2

∂wi= 2(res j− f (net j))

(∂ res j

∂wi− ∂ f (net)

∂wi

)=−2(res j− f (net j))

∂ f (net)∂wi

Aplicando-se a regra da cadeia,

∂ f (net)∂wi

=∂ f (net)

∂net∂net∂wi

∂net∂wi

=∂ (w1x1 +w2x2 + . . .+wnxn)

∂wi= xi

Resta definir a derivada da funcao de ativacao com relacao a net. Aqui, portanto, requer que a

funcao de ativacao seja diferenciavel. A funcao degrau, ate entao utilizada aqui, nao convem,

pois e descontınua em 0. Uma funcao de ativacao tıpica e a funcao sigmoide (MELLO, 2011):

sigmoid(x) =1

1+ e−x

Page 38: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.6 Redes Neurais Artificiais 25

cuja forma e similar a degrau, mas nao igual: para valores negativos, o resultado tende a ser 0;

para positivos, tende a 1. A funcao atinge metade de seu valor maximo em x = 0. A derivada

da funcao sigmoide e dada por:

δ sigmoid(x)δx

= sigmoid(x)(1− sigmoid(x))

Ha outra funcao com comportamento semelhante, a tangente hiperbolica ou tanh(x). Sua

definicao e derivada sao:

tanh(x) =sinh(x)cosh(x)

=ex− e−x

ex + e−x

δ tanh(x)δx

=1

cosh2(x)= 1− tanh2(x)

A Figura 2.9 apresenta a forma dessas curvas:

Figura 2.9: Exemplos de funcoes de ativacao: sigmoid (vermelho) e tanh (verde)

Finalmente, tem-se que o novo valor do peso wi, no instante t +1, e dado por

wi(t +1) = wi(t)+α(res j− y j(t))∂ f (net j)

∂wix j,i

sendo wi o peso analisado.

Page 39: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

26 2 Revisao Bibliografica

2.6.3 Aplicacoes do Perceptron

O modelo Perceptron demonstra bons resultados para classificacoes binarias e linearmente

separaveis, tais como algumas operacoes logicas (AND, OR, NOR, NAND). Contudo, uma

publicacao de 1969 (MINSKY; PAPERT, 1969) demonstrou que alguns problemas simples,

como a operacao logica “ou exclusivo” (XOR) nao poderiam ser classificadas corretamente

atraves do perceptron, dado que nao sao separaveis por um unico hiperplano. Esse fato, so-

mado ao limitado poder de processamento dos computadores da epoca, questionaram o uso real

do Perceptron, estagnando pesquisas nessa area. Alguns anos depois, em 1975, o algoritmo

Backpropagation foi proposto e, com alguns perceptrons conectados, foi possıvel classificar

situacoes como o XOR. Surgia a ideia do MLP - Multi-Layer Perceptron.

2.6.4 MLP - Multi-Layer Perceptron

Consiste de um conjunto de perceptrons (ou neuronios), agrupados em camadas, onde todos

os neuronios de uma camada conectam sua saıda a todos os neuronios da camada seguinte (rede

do tipo “feedforward”). Tipicamente, tem-se pelo menos 3 camadas: camada de entrada (input

layer), camada intermediaria ou escondida (hidden layer) e camada de saıda (output layer). Ex-

ceto pelos neuronios da camada de entrada, todos os neuronios sao tipicamente iguais quanto

ao funcionamento (mas poderiam nao se-lo, tendo, por exemplo, funcoes de ativacao diferentes

na camada escondida e saıda). A camada de entrada, porem, nao realiza processamento, sim-

plesmente aplicando na saıda o que recebe na entrada. Sua funcao e distribuir as entradas para

todos os neuronios da primeira camada escondida. E possıvel implementar uma rede neural

com varias camadas escondidas, mas a complexidade aumenta significativamente. Redes neu-

rais com 3 camadas, em geral, resolvem classificacoes complexas, desde que tenham neuronios

o suficiente na camada escondida.

A Figura 2.10 representa uma MLP com 3 camadas, de forma generalizada quanto a quan-

tidade de neuronios em cada camada ( n na de entrada, m na escondida e k na de saıda). Cada

aresta entre a camada de entrada e a escondida possui um “peso” associado, assim como entre

a escondida e a de saıda.

Page 40: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.6 Redes Neurais Artificiais 27

Figura 2.10: Representacao de MLP de 3 camadas

Uma rede MLP e capaz de classificar entradas mais complexas e em regioes disjuntas, como

e o caso da funcao logica XOR. O algoritmo Backpropagation consiste de propagar erros no

sentido da ultima camada para a primeira. E possıvel utilizar esse metodo para qualquer numero

de camadas, mas aumenta-lo tambem aumenta a complexidade e, potencialmente, o tempo de

convergencia do sistema.

2.6.5 O Aprendizado da MLP

O funcionamento e aprendizado da rede MLP, em pseudocodigo, e fornecido no Codigo 2.2.

Codigo 2.2: Pseudocodigo de aprendizado de uma MLP� �Para cada v e t o r de e n t r a d a :

/∗ Feed fo rward ∗ /a p l i c a r s e u s v a l o r e s na camada de e n t r a d a ;p a r a cada n e u r o n i o da camada i n t e r m e d i a r i a :

n e t = 0 ;p a r a cada e n t r a d a :

m u l t i p l i c a r a e n t r a d a p e l o r e s p e c t i v o peso ;somar o r e s u l t a d o a n e t ;

somar o b i a s a n e t ;a p l i c a r a fu n ca o de a t i v a c a o em n e t ;o b t e r r e s u l t a d o , s e r a e n t r a d a da camada de s a i d a ;

p a r a cada n e u r o n i o da camada de s a i d a :n e t = 0 ;p a r a cada e n t r a d a :

Page 41: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

28 2 Revisao Bibliografica

m u l t i p l i c a r a e n t r a d a p e l o r e s p e c t i v o peso ;somar o r e s u l t a d o a n e t ;

somar o b i a s a n e t ;a p l i c a r fu n ca o de a t i v a c a o em n e t ;o b t e r r e s u l t a d o , s e r a s a i d a da camada de s a i d a ;

/∗ B a c k p r o p a g a t i o n ∗ /p a r a cada n e u r o n i o da camada de s a i d a :

c a l c u l a r o e r r o o b t i d o , comparando a s a i d a com a s a i d a e s p e r a d a ;a j u s t a r os p e s o s do n e u r o n i o ;

p a r a cada n e u r o n i o da camada e s c o n d i d a :c a l c u l a r o a j u s t e n e c e s s a r i o p a r a s e u s p e s o s ;a j u s t a r s e u s p e s o s� �

As equacoes finais de adaptacao dos pesos das camadas de saıda e escondida sao fornecidas

abaixo, considerando-se a funcao de ativacao tanh(x):

f (x) =ex− e−x

ex + e−x

f ′(x) = 1− f 2(x)

Camada de saıda:

δoqk = (reso

qk− yqk) f ′(netoqk)

wok j(t +1) = wo

k j(t)+αδoqkresh

q j

sendo wok j(t) o peso do neuronio da camada de saıda (output) k para sua entrada j (que vem

do neuronio j da camada escondida) no instante t; δ oqk e um fator de erro do neuronio da camada

de saıda (output) k para a entrada de teste q; resoqk e o resultado (saıda, apos funcao de ativacao)

do neuronio da camada de saıda k para a entrada de teste q; netoqk e a soma dos produtos das

entradas reshq j por seus respectivos pesos, mais o bias; resh

q j e a saıda do neuronio j da camada

escondida para a entrada de teste q (que, aqui, tem papel de “entrada” para o neuronio k); f ′

representa a derivada da funcao f em relacao ao peso wok j. α e o passo de aprendizado.

Camada escondida:

δhq j = f ′hj (neth

q j)∑k

δoqkwo

k j

Page 42: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.6 Redes Neurais Artificiais 29

whji(t +1) = wh

ji(t)+αδhq jxqi

sendo whji(t) o peso do neuronio j da camada escondida (hidden) para sua entrada i (que

vem da camada de entrada) no instante t; δ hq j o fator de erro da camada escondida (hidden)

j para a entrada de teste q; nethq j e a soma dos produtos das entradas xqi por seus respectivos

pesos, mais o bias; xqi e a entrada i para a entrada de teste q; os demais termos sao os mesmos

da camada de saıda.

Principais limitacoes

As redes neurais e outros algoritmos onde deseja-se encontrar “os melhores modelos” de

representar dados ou classificacoes apresentam algumas limitacoes comuns, que devem ser le-

vadas em consideracao. Entre eles, cita-se dois casos importantes:

Mınimos locais: Os algoritmos baseiam-se em gradientes descendentes, tendendo a seguir a

direcao que indica reducao de uma determinada funcao (no caso da MLP, deseja-se mi-

nimizar o erro, mas casos de otimizacao visariam reduzir custos, por exemplo). Esses

algoritmos obtem bons resultados quando a funcao possui somente um mınimo (que, por-

tanto, e global). Na maioria dos casos, contudo, problemas reais possuem varios mınimos

locais, que causam a convergencia do algoritmo antes de atingir resultados melhores.

Como exemplo, a figura 2.11 apresenta a) uma funcao com apenas um mınimo e b) outra

com alguns mınimos locais. Em a), observa-se que, se o algoritmo iniciar no ponto a

ou b, eventualmente o metodo do gradiente descendente leva a solucao para o mınimo

global m. Contudo, em b), dependendo de onde o algoritmo iniciar (como em a, ou c),

o gradiente descendente converge em um ponto de mınimo local, nao alcancando o me-

lhor resultado possıvel (m)(BUCKLAND, 2002). Depender das condicoes iniciais para

encontrar o melhor resultado nao e uma boa solucao.

Superajuste ou Overfitting: O treinamento da rede neural, em geral, e mantido “evoluindo”

ate que o erro para os casos de treinamento nao ultrapassem uma determinada marca.

Porem, e possıvel que ocorra o chamado overfitting, ou “superajuste”, isto e, o treina-

Page 43: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

30 2 Revisao Bibliografica

Figura 2.11: Funcoes com a) um unico mınimo e b) varios mınimos

mento leva a uma solucao especıfica para os dados de treinamento, e nao para o caso geral

do problema tratado. Existe uma heurıstica cientıfica conhecida como Occam’s Razor, ou

“Navalha de Occam”, que cita: “se todos os resultados forem iguais, a explicacao mais

simples tende a ser a correta” (SAGAN, 1997) (THRUN, 2011). A Figura 2.12 ilustra

essa situacao: na subfigura a), observam-se duas explicacoes que passam exatamente por

todos os pontos amostrados (erro 0). Porem, a linha contınua apresenta uma explicacao

mais simples que a linha pontilhada, e provavelmente explica melhor o comportamento

das amostras. Na subfigura b), observa-se um caso de superajuste: a linha contınua e

mais simples que a pontilhada, mas apresenta um erro maior, enquanto a pontilhada passa

exatamente pelos pontos, mas descreve um comportamento complexo e improvavel. A

subfigura c) relaciona um exemplo de erros de treinamento e de teste em funcao da com-

plexidade da solucao. Observa-se o ponto de melhor desempenho destacado como best

epoch, provavelmente a melhor solucao.

Melhorias no aprendizado

Ao longo dos anos, algumas tecnicas foram desenvolvidas para melhorar o desempenho do

treinamento das redes neurais, seja para reduzir o tempo de convergencia ou para melhorar os

resultados obtidos, entre as quais cita-se:

Page 44: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

2.6 Redes Neurais Artificiais 31

Figura 2.12: Navalha de Occam: selecionando a solucao correta

Momentum: Durante cada atualizacao dos pesos de um neuronio, uma fracao de sua ultima

atualizacao de peso e adicionada. Esta tecnica evita que os pesos mantenham-se em

mınimos locais, melhorando as chances de chegar ao mınimo global.

Limiar ou threshold: Saıdas com valores numerico acima de um determinado limiar sao

consideradas como “1”; abaixo desse valor (ou de outro limiar), sao consideradas como

“0”. Valores comuns para o limiar variam entre 0,7 e 0,9.

Validacao Cruzada ou Cross Validation: consiste em dividir-se o conjunto de treinamento

em partes de tamanhos diferentes, utilizar algumas para efetivamente treinar a rede neu-

ral e utilizar as restantes para analisar a capacidade da rede de classificar casos ineditos.

Tipicamente, divide-se o conjunto em 10 partes iguais, utilizando-se 1 parte para teste e

9 para treino, mas qualquer numero de partes poderia ser usado. Outra variacao, ainda,

Page 45: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

32 2 Revisao Bibliografica

realiza esse procedimento utilizando como conjunto de teste cada uma das partes dis-

ponıveis, utilizando-se as outras para treino, de modo a obter resultados estatısticos sobre

o treinamento.

Best Epoch: Cada rodada de treinamento e chamada de “epoca” (epoch). Treinamentos que

tem como criterio de parada um erro muito pequeno correm um grande risco de cau-

sar um superajuste (overfitting), reduzindo a corretude na classificacao de casos ineditos.

Contudo, se fosse possıvel encerrar o treinamento na melhor epoca que nao causa over-

fitting, seria uma solucao com mais chances de ser melhor. Utilizando-se os conceitos da

validacao cruzada, pode-se utilizar 8 partes para treinar a rede, 1 para “testar” o desem-

penho para casos ineditos e, assim, encontrar a best epoch do treinamento. Ao termino

do treinamento, utiliza-se a 1 parte restante para validar a rede, com os pesos encontrados

na best epoch.

Winner takes it all: a saıda corretamente classificada como “1” e aquela que apresenta o

maior valor dentre todas as saıdas antes de aplicar o limiar. Valido para classificacoes

“binarias” onde pode haver no maximo uma saıda “1” e as demais sao “0”.

2.6.6 Usos da MLP

Ha diversas aplicacoes de MLP em varias areas, entre as quais cita-se: classificacao de ima-

gens de satelite, processo de laminacao, processo de flotacao de minerios, analise de credito (RE-

ZENDE, 2003), diagnostico de imagens medicas, classificacao de qualidade de madeira, jogos

eletronicos, compra e venda de acoes em bolsa de valores, reconhecimento de voz, aprendizado

de maquina, identificacao de sorrisos em maquinas fotograficas automaticas, identificacao de

rostos em fotografias, reconhecimento de texto (OCR) e reconhecimento de gestos.

2.7 Consideracoes Finais

De posse das ferramentas acima descritas, da-se inıcio ao projeto de reconhecimento de

gestos utilizando o dispositivo Kinect.

Page 46: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

33

3 Desenvolvimento do Trabalho

3.1 Consideracoes Iniciais

Neste capıtulo, serao apresentadas as etapas de planejamento e desenvolvimento do projeto,

resultados obtidos, dificuldades e limitacoes encontradas.

3.2 Projeto

O objetivo deste trabalho e ser capaz de reconhecer gestos (sequencia de deslocamentos

tridimensionais) desenvolvidos pela mao direita do usuario, para que seja possıvel fornecer co-

mandos a computadores ou robos a distancia e sem o uso de instrumentos mecanicos. Planejou-

se 3 gestos para serem identificados, como mostra a Figura 3.1

Figura 3.1: Movimentos a serem classificados: a) circle, b come here e c) goodbye

Para cumprı-lo, e necessario compreender a estrutura de comunicacao do ROS, pois o uso

das mensagens enviadas e essencial para o cumprimento da tarefa. Alem disso, verifica-se

a necessidade de realizar algumas tarefas especıficas, tais como identificar a posicao da mao

Page 47: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

34 3 Desenvolvimento do Trabalho

direita do usuario, verificar se ela deslocou-se significativamente e preparar os dados coletados

para que possam alimentar a rede neural.

Para a fase de treinamento, tambem e util gravar as mensagens enviadas durante a coleta de

amostras, para que possam ser reproduzidas mais tarde e se possa analisar os resultados obtidos.

Em linhas gerais, as atividades realizadas foram as seguintes: instalacao do ROS, tu-

torial do ROS, criacao de aplicacao teste, estudo das informacoes disponibilizadas pelo no

hand interaction, identificacao da posicao da mao direita do esqueleto das mensagens envia-

das, criacao do programa para analisar deslocamentos da mao direita, adaptacao de uma rede

neural (SCHEMENAUER, 2010) com entradas e saıdas o suficiente para classificar os movi-

mentos, gravacao de amostras para criar conjuntos de treinamento para a rede, criacao de um

programa para criar os conjuntos a partir das amostras gravadas, treinamento e teste da rede

neural, teste em tempo real da rede neural.

Essas atividades sao descritas em maiores detalhes na secao seguinte.

3.3 Descricao das Atividades Realizadas

Inicialmente, fez-se necessario instalar uma versao do ROS que fosse compatıvel com

os modulos de demonstracao do MIT. Atualmente, existem 4 versoes do ROS: Box Turtle

(mar/2010), C Turtle (ago/2010), Diamondback (mar/2011), Electric Emys (ago/2011). Em-

bora a versao mais recente seja a Electric, uma melhor compatibilidade com os modulos a

serem utilizados foi encontrada com a Diamondback. Essa versao foi instalada na distribuicao

Linux - Ubuntu 10.10.

Em seguida, para compreender o funcionamento do ROS, o tutorial disponıvel no site oficial

foi seguido, onde foram aprendidos os conceitos de no, topico, servico, cliente, parametro,

mensagem, ferramentas auxiliares para visualizar os topicos e comunicacao entre os nos e poder

ter uma visao mais abrangente do funcionamento das aplicacoes.

Em determinada secao do tutorial, foi requisitado escolher entre as linguagens C++ ou

python para continuar. A escolhida foi python, devido a sua programacao dinamica e agilidade

Page 48: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

3.3 Descricao das Atividades Realizadas 35

de desenvolvimento (BARRY, 2010) (LUTZ, 2009). Para praticar os conceitos de publicacao

(publish) e inscricao (subscribe), foi desenvolvido um sistema simples de envio de mensagens

de texto (chat). Nesse sistema, um no receberia como entrada um texto digitado por linha de

comando, e esse texto (String) seria publicado num topico, onde outro no estaria inscrito. Ao

receber uma mensagem, o segundo no simplesmente o faria aparecer na tela.

Baseado nesse, desenvolveu-se um unico no que envia e recebe mensagens do mesmo

topico. Dessa forma, varias instancias do aplicativo poderiam trocar mensagens com todas

as outras instancias. Como exemplo, foi bastante ilustrativo desenvolve-lo.

O aplicativo de demonstracao do MIT hand interaction disponibiliza um conjunto de pro-

gramas que sao lancados em conjunto, capazes de identificar e rastrear um usuario (humano),

estimando a pose de seu esqueleto (utilizando posicoes estimadas das juntas do usuario, como

ombros, cotovelos e maos). Opcionalmente, e possıvel utilizar o visualizador rviz (outro pacote

padrao do ROS) para visualizar o esqueleto detectado e destacar as maos do usuario.

Um dos nos criados dessa forma e o skeletons, que envia mensagens contendo um vetor

com todos os esqueletos identificados em cada leitura de dados do Kinect. Desses esqueletos,

seleciona-se somente o primeiro (posicao 0), por simplificacao, pois supoe-se que apenas um

usuario por vez utilizara o software. Outros usuarios podem entrar em cena, tambem, mas suas

mensagens nao serao consideradas. Cada esqueleto contem um conjunto de posicoes tridimen-

sionais, indicando a posicao referente a cada junta do usuario. Uma dessas juntas e a mao direita

(right hand), que e o alvo da identificacao deste projeto.

Analisando-se o conteudo da mensagem de um esqueleto (comando rosmsg show [paco-

te/tipo de mensagem]), obtem-se a seguinte arvore do Codigo 3.1 (as reticencias referem-se a

segmentos da mensagem sem relevancia para este projeto):

Codigo 3.1: Segmento do tipo de mensagem body msgs/Skeletons� �rosmsg show body msgs / S k e l e t o n s. . .body msgs / S k e l e t o n [ ] s k e l e t o n s

. . .body msgs / S k e l e t o n J o i n t r i g h t h a n d

geomet ry msgs / P o i n t p o s i t i o n

Page 49: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

36 3 Desenvolvimento do Trabalho

f l o a t 6 4 xf l o a t 6 4 yf l o a t 6 4 z

f l o a t 3 2 c o n f i d e n c e. . .� �Dessa forma, para extrair a posicao (x, y, z) da mao direita do primeiro esqueleto da

mensagem (do tipo body msgs/Skeletons) deve-se requisitar

data.skeletons[0].right hand.position e a essa linha, adicionar .x, .y ou .z, sendo

data a mensagem recebida pela funcao de callback.

Para analisar os deslocamentos da mao direita do usuario, um programa supervisor foi

desenvolvido, em linguagem python. Este programa analisa a posicao da mao direita, armaze-

nando pontos e deslocamentos em listas separadas. Caso a lista esteja vazia ou caso a distancia

do ponto atual e do ultimo ponto adicionado seja maior que 5 cm, a lista de pontos armazena a

posicao atual. Os pontos sao adicionados ao inıcio da lista. Este valor (5 cm) foi escolhido arbi-

trariamente, pois um valor pequeno poderia ser afetado por ruıdos e um valor grande tornaria os

gestos muito longos. Se ja houver pelo menos um ponto na lista quando outro ponto for adicio-

nado, calcula-se os “deslocamentos significativos” para cada eixo: se houve um deslocamento

maior que 5 cm no sentido positivo de x, o “deslocamento x” e +1; se for no sentido negativo,

−1; se o deslocamento no eixo x for menor que 5 cm, o “deslocamento x” e 0. Realiza-se essas

atribuicoes tambem para os eixos y e z. Esses tres deslocamentos sao adicionados ao inıcio da

lista de deslocamentos.

Quando a lista de deslocamentos atinge um tamanho de 20 (selecionado arbitrariamente,

longo o bastante para gerar um padrao reconhecıvel, alem de permitir aumentar a quantidade de

gestos a serem reconhecidos), uma mensagem do tipo Trace (Codigo 3.2) e enviada ao topico

“right hand trace”, contendo esses 20 deslocamentos. Se a lista ultrapassar a quantidade de

20, descarta-se os pontos mais antigos, ate retornar ao maximo de 20 permitidos. Se forem

realizadas 50 leituras de posicao sem que nenhum deslocamento significativo ocorra, as listas

sao esvaziadas. Esse recurso foi desenvolvido para “cancelar” um movimento sem precisar

pressionar botoes.

Page 50: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

3.3 Descricao das Atividades Realizadas 37

Codigo 3.2: Mensagem do tipo: tcc/Trace.msg� �Header h e a d e rgeomet ry msgs / P o i n t [ ] t r a c e� �

Apos a criacao do analisador de deslocamentos, utilizou-se uma rede neural implemen-

tada em python e disponibilizada como domınio publico (SCHEMENAUER, 2010) (PYTHON,

1990), sobre a qual foram realizadas as adaptacoes necessarias para uso e analise neste projeto,

tais como funcoes para gravar erros de treinamento e teste. Essa rede necessita de um total de 60

neuronios na camada de entrada (pois ha 20 pontos de deslocamento, com 3 deslocamentos em

cada ponto), 3 na camada de saıda (pois ha 3 tipos de movimentos reconhecıveis) e um numero

arbitrario de neuronios na camada escondida (foram testados algumas quantidades e optou-se

por 20 neuronios). A funcao de ativacao da rede e:

f (net) = tanh(x) =ex− e−x

ex + e−x

que retorna valores no intervalo ]−1,+1[.

A rede MLP utilizada dispoe de metodos de treinamento, teste e uso. Para o treinamento,

um conjunto de treinamento (entradas e respostas esperadas) sao passados, devendo respeitar

as dimensoes da rede. Passa-se, tambem, o erro maximo permitido (condicao de parada do

treinamento: a soma dos erros quadraticos deve ser menor que esse valor), a taxa de aprendi-

zado α (aqui, empiricamente, observou-se que valores da ordem de 0,005 a 0,01 apresentam

resultados melhores) e um parametro m, de momentum: ao adaptar-se um peso, adiciona-se m

vezes a adaptacao da ultima iteracao, para evitar que os pesos fiquem estagnados numa regiao

de mınimo local. Opcionalmente, se mais um conjunto de entradas e saıdas esperadas for pas-

sado, sera utilizado para “validacao cruzada” (cross-validation) e determinacao da “melhor

epoca” (best epoch): a cada rodada de treinamento, esse conjunto de teste (que deve ser inedito,

isto e, disjunto do conjunto de treinamento) sera avaliado. Se sua avaliacao atual for melhor que

a melhor avaliacao ate entao, a atual passa a ser a melhor e os pesos da rede sao armazenados

como “melhores pesos”. Essa tecnica evita a ocorrencia de superajuste (overfitting), tendendo a

fornecer solucoes mais genericas e, provavelmente, mais acertadas.

Page 51: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

38 3 Desenvolvimento do Trabalho

Alem disso, utiliza-se tambem os seguintes criterios de classificacao: Uma saıda so e consi-

derada valida (classificacao da entrada) se possuir um valor maior que um limiar, aqui adotado

como 0,8. Caso mais de uma saıda seja maior que 0,8, considera-se como verdadeira aquela

que tiver o melhor (maior) valor. Caso uma saıda seja considerada valida e verdadeira, as de-

mais saıdas recebem o valor 0.

Apos a preparacao da rede neural, e necessario criar um conjunto de treinamento. Para

isso, gravou-se, utilizando-se o comando rosbag record, amostras de um usuario realizando

somente 1 classe de gesto em cada secao. Outro programa (no) foi criado para receber as men-

sagens enviadas ao topico “right hand trace”, armazenar os deslocamentos como “entradas” e

associa-los com a resposta esperada sendo classificada. Por exemplo, se o usuario somente re-

alizara movimentos circulares, os gestos obtidos sao classificados como “cırculo”. O mesmo

deve ser realizado com os outros gestoss a serem classificados. A Figura 3.2 exibe os topicos e

nos ativos durante uma secao de gravacao de amostras, para fornecer ao leitor uma ideia do pro-

cessamento necessario para identificar as maos do usuario. Os nos hachurados representam os

desenvolvidos neste projeto e utilizados durante uma secao de gravacao ou uso da rede neural.

Figura 3.2: Visao dos topicos e nos do ROS durante aquisicao de dados

Uma vez obtidos conjuntos de treinamentos para cada tipo de gesto, cria-se um unico con-

junto de treinamento, contendo partes iguais de amostras de cada gesto. Um programa foi de-

Page 52: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

3.4 Resultados Obtidos 39

senvolvido para realizar essa tarefa, o embaralhador, que obtem todos os conjuntos de entrada

(um de cada tipo de gesto), embaralha cada conjunto separadamente, seleciona as primeiras

amostras de cada um (aqui, foram usadas 300 amostras de cada gesto) e intercala-os em 3 novas

listas: conjunto de treinamento (80 %, 720 amostras), conjunto de teste cross-validation (10 %,

90 amostras) e conjunto de teste real (10 %, 90 amostras), selecionadas ao acaso. Finalmente,

cada uma dessas listas e armazenada em um arquivo separado. Essa tarefa foi realizada pelo

programa shuffler.py, desenvolvido neste projeto.

Quanto ao treinamento da rede, utilizou-se o conjunto de treinamento para treinar, ate que

a soma dos erros quadraticos atingisse 1 % da quantidade de exemplos de treinamento; a cada

rodada do treinamento, utilizou-se o conjunto de teste cross-validation para determinar a “me-

lhor epoca” da rede, onde classificou de maneira mais satisfatoria um conjunto de dados inedito

desde o inıcio do treinamento. Apos o termino do treinamento, o conjunto de testes real e apli-

cado a rede e avalia-se a quantidade de classificacoes corretas. Nessa fase, um codigo carrega os

melhores pesos encontrados (best epoch) e utiliza a rede para classificar. Havendo bom desem-

penho, e simulada uma situacao real, reproduzindo-se uma das gravacoes rosbag para estimar a

quantidade de acertos.

Finalmente, testa-se a rede neural numa situacao real, utilizando-se o Kinect, a aplicacao

do MIT hand detector, o programa supervisor e o programa que utiliza a rede neural. Em caso

de sucesso, novos testes serao realizados, variando-se os parametros da rede, tais como erro

maximo durante o treinamento, passo de aprendizado, fator de momento e numero de neuronios

da camada escondida. Esses testes permitem analisar os efeitos dessas variacoes de parametros

no desempenho da rede (tempo de convergencia, taxa de acerto etc).

3.4 Resultados Obtidos

Para a obtencao dos resultados, os seguintes programas (nos) foram desenvolvidos:

overseer: programa supervisor; observa os deslocamentos da mao direita do usuario e envia

ao topico right hand trace os ultimos 20 deslocamentos identificados. Os desloca-

Page 53: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

40 3 Desenvolvimento do Trabalho

mentos possuem valores +1, 0 ou −1, dependendo de quanto foi deslocado em cada

eixo.

cnne: programa que recebe a mensagem do topico right hand trace e associa os deslo-

camentos a um dos 3 tipos de gesto, armazenando-os num arquivo. A cada execucao,

somente um tipo de gesto e associado.

shuffler: abre os arquivos de amostra (de cada gesto), seleciona as primeiras 300 amostras

de cada e armazena essas informacoes em 3 listas, uma para cada tipo de gesto. Entao,

embaralha cada lista separadamente. Em seguida, 3 novas listas sao criadas, que con-

terao os conjuntos de treinamento, validacao cruzada e teste final. Entao, as amostras

sao retiradas das listas dos gestos individuais e intercalados nas listas finais: a cada 10

amostras, a primeira vai para validacao cruzada, a segunda para teste final e as restantes

para treinamento. Por fim, as listas sao armazenadas em arquivos separados.

nn: cria uma rede neural com as dimensoes especificadas (60 de entrada, 20 escondidos, 3

de saıda), abre os arquivos gerados pelo shuffler referentes ao treinamento e validacao

cruzada, realizando testes da forma descrita no fim da secao anterior, armazenando-se

os pesos da rede sempre que a validacao cruzada apresenta resultados melhores que os

melhores ate entao (best epoch).

test nn: cria uma rede neural com as dimensoes especificadas, carrega os melhores pesos

obtidos na validacao cruzada e utiliza-os para avaliar os resultados dos casos de teste

final. Nessa fase, os resultados da rede sao avaliados em:

hit: significa, apenas, que houve pelo menos uma classificacao com resultado maior que

o limiar, indicando que a rede “classificou”, seja de forma correta ou incorreta;

correct: a classificacao foi a esperada (acerto)

missed: tanto para classificacoes erroneas quanto aquelas em que o limiar nao foi atin-

gido (erro).

use nn: cria uma rede neural com as dimensoes especificadas, carrega os melhores pesos

obtidos na validacao cruzada e utiliza-os para classificar os resultados vindos diretamente

Page 54: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

3.4 Resultados Obtidos 41

do topico right hand trace. Os resultados sao emitidos na tela, e e realizada uma

medida de quantas classificacoes ja foram realizadas: c indica o numero de entradas

classificadas como “circle”, “k”as classificadas como “come here”, g as classificadas

como “goodbye” e out of, que indica o numero total de mensagens recebidas para

classificacao.

Foram realizados e gravados 3 ensaios em que um usuario moveu sua mao seguindo os

padroes pre-definidos. Em cada ensaio, o usuario realizou somente 1 tipo de gesto:

1 - (1, 0, 0) - circle: o usuario descreve um cırculo no sentido anti-horario para si mesmo

(ou horario para o Kinect)

2 - (0, 1, 0) - come here: com o braco esticado para frente e palma da mao para cima,

o usuario dobra o cotovelo, trazendo sua mao para perto do corpo, e esticando o braco

novamente.

3 - (0, 0, 1) - goodbye: o usuario acena, deslocando a mao alternadamente para a esquerda

e para a direita.

A camada de saıda possui 3 neuronios, fornecendo, portanto, 3 resultados binarios. A

numeracao e trios ordenados na descricao acima indicam os numeros esperados para cada tipo

de gesto.

Apos a gravacao de aproximadamente 300 amostras de cada classe de movimento, foram

criados 3 conjuntos de amostras: o de treinamento (80 % das amostras), o de validacao cruzada

(10 %) e o de teste final (10 %). Com eles, executaram-se varios treinamentos com a rede com

parametros fixos (20 neuronios, 1 % de erro maximo no treinamento, α = 0,01, m = 0,1). Os

resultados obtidos sao apresentados nas tabelas 3.1 e 3.2. A tabela 3.2 apresenta resultados em

que o usuario realizou apenas 1 movimento por secao.

Tabela 3.1: Resultado do teste de Validacao Cruzadacorrect missed hit total

83 7 85 90

Page 55: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

42 3 Desenvolvimento do Trabalho

Tabela 3.2: Resultado do teste com dados de uso realMovimento realizado circle circle circle total taxa de acerto (%)circle 323 0 0 323 100,0come here 0 383 3 400 95,7goodbye 0 1 307 317 96,8

Com o resultado bem sucedido da classificacao real, observou-se a possibilidade de testar

a eficiencia da rede quanto a variacao de seus parametros. Rodadas de treinamento e validacao

cruzada foram realizadas, com varios parametros distintos, a fim de verificar o efeito na variacao

de cada um. Como o teste de todas as combinacoes possıveis seriam muito custosas e de difıcil

analise, variou-se apenas 1 parametro por secao de analise, mantendo os demais fixos com

os valores utilizados anteriormente, para manter uma referencia e poder observar as variacoes

causadas por cada parametro.

Os seguintes valores foram utilizados: erro maximo de treinamento (0,5 %; 1 %; 5 %; 10 %

da quantidade de amostras de treinamento), passo de aprendizado (α = 0,001; 0,01; 0,05; 0,1; 0,5),

fator de momento (m = 0,0; 0,05; 0,1; 0,5) e o numero de neuronios da camada escondida

(nhidden = 5; 10; 20; 30). Os resultados sao exibidos nas Figuras 3.3, 3.4, 3.5 e 3.6.1

Esses resultados permitem concluir que os efeitos de cada parametro sao:

Neuronios da camada escondida: Pode-se observar que, com apenas 5 neuronios, a rede nao

e capaz de convergir para um erro de treinamento de 1%, alem de causar erros de teste

altıssimos, indicando a ocorrencia de superajuste durante o treinamento. Aparentemente,

10 neuronios sao suficientes para classificar os movimentos aqui apresentados. Nao e

possıvel determinar se ha melhoria entre 20 e 30 neuronios;

Erro maximo para treino: Para este caso, considera-se que todas as redes apresentam a

mesma “taxa de aprendizado”, atribuindo-se eventuais diferencas aos valores iniciais

(aleatorios). E importante observar que uma taxa de erro mais alta faz com que o apren-

dizado seja concluıdo antes de se melhorar os resultados. Os resultados finais, em geral,

sao melhores com um erro de 1 % ou 0,5 %.1Em geral, as figuras apresentam apenas os detalhes mais relevantes dos graficos plotados. Se uma linha nao

aparece na figura, significa que seus erros foram muito mais altos que os demais, indicando situacoes que devemser evitadas.

Page 56: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

3.4 Resultados Obtidos 43

Figura 3.3: Erros x epoca, variando-se o numero de neuronios da camada escondida

Figura 3.4: Erros x epoca, variando-se a taxa de erro maxima para treinamento

Page 57: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

44 3 Desenvolvimento do Trabalho

Figura 3.5: Erros x epoca, variando-se o passo de aprendizado α

Figura 3.6: Erros x epoca, variando-se o fator de momento

Page 58: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

3.5 Dificuldades e Limitacoes 45

Passo de aprendizado (α): Observa-se que o melhor valor testado foi α = 0,001, tendo

obtido os menores resultados de teste de validacao cruzada. Os outros valores, alem de

levarem mais tempo para convergir, nao obtiveram resultados tao bons. Assim, ha uma

grande chance de que este seja um problema melhor resolvido com ajustes finos. Valores

elevados de α podem comprometer a convergencia da rede.

Fator de momento: Um valor alto, como 0,5, manteve-se com erros altıssimos, comprome-

tendo a convergencia da rede. A Figura 3.6 mostra apenas um detalhe dos resultados

obtidos. Os erros de treinamento mantiveram-se em torno de 1 e o erro de teste nao che-

gou a ser inferior a 1,1. Para os demais valores, a rede convergiu em menos de 70 epocas.

Um valor m = 0,0 tornou a convergencia mais lenta que as demais, mas nao evitou que

alcancasse seu objetivo. Um fator menor que a referencia, contudo, demonstrou melhor

desempenho.

3.5 Dificuldades e Limitacoes

A maior dificuldade encontrada no desenvolvimento deste projeto foi relacionado a rede

neural e as melhorias necessarias para que obtivesse bons resultados. Inicialmente, apenas a

variacao de parametros (passo de aprendizado, erro, numero de neuronios e fator de momento)

nao permitiram bons resultados. Apos a implementacao de algumas melhorias, como a Win-

ner takes all em conjunto com o limiar, os resultados foram significativamente melhores. As

tecnicas de validacao cruzada e best epoch auxiliaram na analise de desempenho do projeto e

na obtencao de melhores resultados nos testes finais.

3.6 Consideracoes Finais

O objetivo deste trabalho foi cumprido, obtendo-se taxas de acerto acima do esperado para

o reconhecimento de alguns gestos simples: 99% de acerto na fase de treinamento, 93,77% na

validacao cruzada e 95,7% de acerto para teste em tempo real. Apos alguns testes com outros

usuarios, concluiu-se que seria uma boa pratica fornecer uma etapa de calibracao da rede antes

Page 59: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

46 3 Desenvolvimento do Trabalho

de utiliza-la em aplicacoes reais. A calibracao seria realizada apenas requisitando ao usuario

que executasse os movimentos a serem reconhecidos e utiliza-los para treinar a rede neural com

os melhores parametros aqui encontrados.

Dessa forma, os metodos aqui descritos mostraram-se adequados para trabalhar reconheci-

mentos de gestos com o dispositivo Kinect.

Page 60: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

47

4 Conclusao

Este trabalho foi realizado tendo como base conceitos atuais da area de tecnologias compu-

tacionais, como Redes Neurais Artificias, Sensores Inteligentes e Interacao Usuaro-Maquina. A

interdisciplinaridade deste trabalho e um exemplo da importancia de conhecer diferentes areas

da ciencia: a combinacao das partes pode realizar feitos incrıveis.

4.1 Contribuicoes

Este trabalho fornece contribuicoes tanto para a area de Interacao Usuario-Maquina quanto

para a robotica, exemplificando como o uso de redes neurais artificiais pode contribuir com

novas formas de comunicacao com robos e outras maquinas. Os bons resultados obtidos de-

monstram a viabilidade do uso das tecnicas aqui apresentadas em aplicacoes semelhantes..

Para o autor, este trabalho contribuiu fazendo-o aprofundar-se nas areas de conhecimento

envolvidas, principalmente quanto a robotica e computacao bioinspirada, areas essas de grande

interesse do autor. A familiarizacao com o sistema ROS sera util para o desenvolvimento de

futuras aplicacoes roboticas, dado o porte do projeto e quantidade de ferramentas disponıveis. O

trabalho tambem contribuiu demonstrando de forma empırica o verdadeiro potencial das redes

neurais artificiais, ate entao vista somente em fundamentacoes teoricas e resultados obtidos em

outras aplicacoes.

A experiencia obtida certamente foi muito enriquecedora, fixando importantes conceitos

que, certamente, serao usados tambem fora da universidade.

Page 61: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

48 4 Conclusao

4.2 Consideracoes sobre o Curso de Graduacao

O curso de graduacao em Engenharia da Computacao da USP de Sao Carlos mostrou-

se enriquecedor para o conhecimento tecnico do autor, oferecendo disciplinas diversificadas e

abrangentes sobre temas diversos relacionados a computacao, numa boa medida entre discipli-

nas basicas e avancadas.

Durante a graduacao, algumas atividades extra-curriculares (tais como a participacao no

grupo de estudos The Fellowship of the Game e Iniciacao cientıfica) foram importantes para

descobertas mais profundas sobre assuntos de interesse pessoal. Nesse sentido, sugere-se um

maior incentivo aos alunos para que participem de grupos de estudo e/ou Iniciacao Cientıfica,

para que possam ter uma compreensao maior sobre os assuntos de interesse pessoal. Ainda,

se possıvel, fornecer creditos (optativos livres, por exemplo) por tais atividades, fornecendo um

incentivo para a formacao de alunos mais interessados e, provavelmente, melhores profissionais.

Sugere-se, no entanto, uma analise da viabilidade de se reduzir a quantidade de creditos

obrigatorios e aumento da quantidade de creditos optativos eletivos, permitindo uma melhor

flexibilidade quanto a escolha das disciplinas a serem cursadas. Essa ideia permitiria aos alunos

matricular-se em mais disciplinas de interesse proprio, provavelmente melhorando a taxa de

aprendizado das aulas para ambas partes: alunos e professores.

Sugere-se, tambem, a criacao de uma disciplina que conscientize os alunos sobre a res-

ponsabilidade de um profissional formado pela USP para a sociedade, instigando-os a aplicar

os conhecimentos do curso a projetos sociais, retribuindo, de alguma forma, as pessoas que

contribuıram para os estudos do aluno.

Por fim, sugere-se tambem analisar a viabilidade de realizar visitas tecnicas relacionadas a

computacao. Ao que consta ao autor, somente uma viagem dessas e oferecida durante todo o

curso, e, para a turma do autor, essa viagem nao ocorreu.

Page 62: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

49

Referencias Bibliograficas

BARRY, P. Head First Python. Sebastopol, CA, USA: O’Reilly Media, 2010.

BUCKLAND, M. AI techniques for game programming. Portland, OR, USA: Premier Press,2002. (The Premier press game development series). ISBN 9781931841085.

GUINNESS WORLD RECORDS. Kinect. 2011. Acesso em 06 nov. 2011. Disponıvel em:<community.guinnessworldrecords.com/ Kinect-Confirmed-As-Fastest-Selling-Consumer-Electronics-Device/blog/3376939/7691.html>.

HAYKIN, S. Neural Networks: A Comprehensive Foundation. 2nd. ed. Upper Saddle River,NJ, USA: Prentice Hall PTR, 1998. ISBN 0132733501.

JAROSZ, Q. Neuron Hand-tuned. 2009. Acesso em 06 nov. 2011. Disponıvel em:<commons.wikimedia.org/wiki/File:Neuron Hand-tuned.svg>.

LUTZ, M. Learning Python, 4th Edition. Sebastopol, CA, USA: O’Reilly Media, 2009.

MELLO, R. F. Aula - Redes Neurais Artificiais. 2011. Acesso em 13 out. 2011. Disponıvel em:<www.icmc.usp.br/˜mello/courses.php>.

MICROSOFT. Kinect for Windows. 2011. Acesso em 06 nov. 2011. Disponıvel em:<kinectforwindows.org/>.

MINSKY, M.; PAPERT, S. Perceptron. The MIT Press, 1969.

PRIME SENSE. Prime Sense Natural Interaction. 2011. Acesso em 05 nov. 2011. Disponıvelem: <www.primesense.com/>.

PYTHON. Python Programming Language. 1990. Acesso em 06 nov. 2011. Disponıvel em:<python.org>.

REZENDE, S. Sistemas Inteligentes: Fundamentos e Aplicacoes. Barueri, SP, Brasil: Manole,2003. ISBN 9788520416839.

RUSU, R. B.; CONLEY, K.; FOOTE, T. OpenNI Kinect. 2011. Acesso em 06 nov. 2011.Disponıvel em: <www.ros.org/wiki/openni kinect>.

SAGAN, C. Contato. Sao Paulo, SP, Brasil: Schwarcz ltda, 1997.

SCHEMENAUER, N. Back-Propagation Neural Network. 2010. Acesso em 06 nov. 2011.Disponıvel em: <python.ca/nas/python/>.

SUENDERHAUF, N.; NEUBERT, P.; GALLAGHER, G. MIT ROS pkg. 2011. Acesso em 06nov. 2011. Disponıvel em: <www.ros.org/wiki/mit-ros-pkg>.

Page 63: UNIVERSIDADE DE SAO PAULO˜ - osorio.wait4.orgosorio.wait4.org/.../Monografia/Monografia-TCC-Final-MatheusLin.pdf · Matheus Lin Truglio Alvarenga ... Rodrigo Mello, Valdir Grassi

50 Referencias Bibliograficas

THRUN, S. Video, Unit 5 7 Occam’s Razor. 2011. Acesso em 05 nov. 2011. Disponıvel em:<www.ai-class.com/course/video/videolecture/50>.

WILLOW GARAGE. Robot Operating System. 2009. Acesso em 06 nov. 2011. Disponıvelem: <www.ros.org>.

XBOX GAZETTE. Kinect. 2011. Acesso em 06 nov. 2011. Disponıvel em: <www-.xboxgazette.com/>.