• Nenhum resultado encontrado

Uma interface para o controle de robôs móveis por intermédio de gestos

N/A
N/A
Protected

Academic year: 2017

Share "Uma interface para o controle de robôs móveis por intermédio de gestos"

Copied!
80
0
0

Texto

(1)

PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA MECÂNICA

UMA INTERFACE PARA O CONTROLE DE ROBÔS MÓVEIS POR INTERMÉDIO DE GESTOS

Oto Emerson de Albuquerque

Orientador: Prof. Dr. Wallace Moreira Bessa

(2)

UMA INTERFACE PARA O CONTROLE DE ROBÔS MÓVEIS POR INTERMÉDIO DE GESTOS

Dissertação de Mestrado apresentada ao Programa de Pós-Graduação em Engenharia Mecânica da UFRN como parte dos requisitos para a obtenção do título de Mestre em Engenharia Mecânica. Área de concentração: Engenharia Computacional. Orientador: Prof. Dr. Wallace Moreira Bessa

(3)
(4)

PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA MECÂNICA

UMA INTERFACE PARA O CONTROLE DE ROBÔS MÓVEIS POR INTERMÉDIO DE GESTOS

Oto Emerson de Albuquerque

Esta dissertação foi julgada para a obtenção do título de Mestre

em Engenharia Mecânica sendo aprovada em sua forma final

Prof. Dr. Wallace Moreira Bessa – UFRN Orientador

BANCA EXAMINADORA

Prof. Dr. Natanaeyfle Randemberg Gomes dos Santos – FMN

Prof. Dr. Luiz Guilherme Meira de Souza – UFRN

Prof. Dr. Angelo Roncalli Oliveira Guerra – UFRN

(5)
(6)

Agrade¸co primeiramente a Deus. Agrade¸co a minha esposa Jaciana e a toda a minha fam´ılia.

Agrade¸co ao meu Orientador Prof. Dr. Wallace Moreira Bessa e ao Coordenador do Curso de P´os Gradua¸c˜ao de Engenharia Mecˆanica, Prof. Dr. Luiz Guilherme Meira de Souza por todo o tempo e ajuda dispensados a minha pessoa.

Agrade¸co aos meus amigos: Kayo, Caio, Jorge, Sandro e George, que ajudaram a tornar poss´ıvel a conclus˜ao desta disserta¸c˜ao.

(7)
(8)

O principal objetivo deste trabalho foi possibilitar o reconhecimento de gestos humanos atrav´es do desenvolvimento de um programa computacional. O programa criado capta os gestos executados pelo usu´ario por interm´edio de uma cˆamera acoplada ao computador e envia para o robˆo o comando referente ao gesto. Foram interpretados no total cinco gestos feitos pela m˜ao humana. O software (desenvolvido em C++) usou largamente os conceitos de vis˜ao computacional e da biblioteca de c´odigo aberto OpenCV que impactam diretamente na eficiˆencia geral do controle de robˆos m´oveis. Os conceitos de vis˜ao computacional levam em considera¸c˜ao o uso de filtros para suavizar/borrar a imagem para redu¸c˜ao de ru´ıdos, espa¸co de cores para melhor adequar o ambiente de trabalho do desenvolvedor al´em de informa¸c˜oes ´uteis para a manipula¸c˜ao de imagens digitais. A biblioteca OpenCV foi essencial na cria¸c˜ao do projeto, pois, foi poss´ıvel o uso de v´arias fun¸c˜oes/procedimentos para um controle completo de filtros, contornos de imagem, ´area de imagem, centro geom´etrico de contornos, troca de espa¸cos de cores, convex hull e convexity defect, al´em de todos os meios necess´arios para a caracteriza¸c˜ao de features de imagens obtidas. Durante a evolu¸c˜ao do software houve o aparecimento de v´arios problemas, como, falsos positivos (ru´ıdos), desempenho abaixo do esperado com a inser¸c˜ao de v´arios filtros com tamanhos de m´ascaras superdimensionados, al´em de problemas decorrentes da escolha do espa¸co de cores para o tratamento dos tons de pele do ser humano. Por´em, depois do desenvolvimento de sete vers˜oes do software de controle, foi poss´ıvel minimizar o aparecimento de falsos positivos devido a um melhor uso dos filtros aliados com um tamanho de m´ascara bem dimensionado (testado em tempo de execu¸c˜ao) todos associados a uma l´ogica de programa¸c˜ao que foi aperfei¸coada ao longo da constru¸c˜ao das sete vers˜oes. Ap´os todo o desenvolvimento se conseguiu um software que satisfez os requisitos estabelecidos. Depois da conclus˜ao do software de controle, foi poss´ıvel observar que a eficiˆencia geral dos diversos programas, destacando-se em especial os programas V com: 84,75%, VI com: 93,00% e VII com: 94,67% mostraram que o programa final apresentou um bom desempenho na interpreta¸c˜ao dos gestos, provando que foi poss´ıvel o controle de robˆos m´oveis atrav´es de gestos humanos sem a necessidade de acess´orios externos, obtendo-se com isso, uma melhor mobilidade e redu¸c˜ao de custos para se manter um sistema como este. O grande m´erito do programa foi a capacidade de auxiliar na desmistifica¸c˜ao do conjunto homem/m´aquina, pois, utiliza uma interface f´acil e bastante intuitiva para controle de robˆos m´oveis. Outra caracter´ıstica importante observada ´e que para controlar o robˆo m´ovel, n˜ao ´e necess´ario estar pr´oximo do mesmo, visto que, para controlar o equipamento ´e necess´ario apenas receber o endere¸co que o Robotino passa ao programa via rede ou WI-FI.

(9)

The main objective of this work was to enable the recognition of human gestures through the development of a computer program. The program created captures the gestures executed by the user through a camera attached to the computer and sends it to the robot command referring to the gesture. They were interpreted in total five gestures made by human hand. The software (developed in C ++) widely used the computer vision concepts and open source library OpenCV that directly impact the overall efficiency of the control of mobile robots. The computer vision concepts take into account the use of filters to smooth/blur the image noise reduction, color space to better suit the developer’s desktop as well as useful information for manipulating digital images. The OpenCV library was essential in creating the project because it was possible to use various functions/procedures for complete control filters, image borders, image area, the geometric center of borders, exchange of color spaces, convex hull and convexity defect, plus all the necessary means for the characterization of imaged features. During the development of the software was the appearance of several problems, as false positives (noise), underperforming the insertion of various filters with sizes oversized masks, as well as problems arising from the choice of color space for processing human skin tones. However, after the development of seven versions of the control software, it was possible to minimize the occurrence of false positives due to a better use of filters combined with a well-dimensioned mask size (tested at run time) all associated with a programming logic that has been perfected over the construction of the seven versions. After all the development is managed software that met the established requirements. After the completion of the control software, it was observed that the overall effectiveness of the various programs, highlighting in particular the V programs: 84.75 %, with VI: 93.00 % and VII with: 94.67 % showed that the final program performed well in interpreting gestures, proving that it was possible the mobile robot control through human gestures without the need for external accessories to give it a better mobility and cost savings for maintain such a system. The great merit of the program was to assist capacity in demystifying the man set/machine therefore uses an easy and intuitive interface for control of mobile robots. Another important feature observed is that to control the mobile robot is not necessary to be close to the same, as to control the equipment is necessary to receive only the address that the Robotino passes to the program via network or Wi-Fi.

(10)

Figura 1 Exemplo de vis˜ao computacional (reconhecimento de pessoas) . . . 16

Figura 2 Robˆo autˆonomo - Asimo . . . 17

Figura 3 Robˆo autˆonomo - Robotino . . . 19

Figura 4 Imagem original (a) e sua representa¸c˜ao no espa¸co de cor RGB (b) e CMYK (c). . . 23

Figura 5 Figuras representativas da varredura da tela . . . 25

Figura 6 Lado esquerdo uma imagem com ru´ıdo, e na direita a mesma imagem ap´os filtragem . . . 26

Figura 7 Filtro Mediana . . . 27

Figura 8 Aplica¸c˜ao do filtro mediana (direita) sobre uma imagem original (es-querda) . . . 28

Figura 9 Filtro Gaussiano 2-D . . . 29

Figura 10 Dilata¸c˜ao morfol´ogica. (a) Imagem Original, (b) Imagem Dilatada, (c) Imagem Dilatada 2x . . . 29

Figura 11 Imagem morfol´ogica. (a) Imagem Original, (b) Imagem Erodizada, (c) Imagem Erodizada 2x . . . 30

Figura12 Limpeza de uma imagem ruidosa: (a) Image Original, (b) Dilata¸c˜ao dos conjuntos pretos . . . 30

Figura 13 Limpeza de uma imagem ruidosa: (a) Image Original, (b) Eros˜ao dos conjuntos pretos . . . 31

Figura 14 Representa¸c˜ao visual do convex hull do conjunto fechado. . . 32

(11)

contorno da m˜ao em rela¸c˜ao ao convex hull. . . 34

Figura 17 Algoritmo do programa de controle . . . 36

Figura 18 T´ecnicas usadas: convex hull (ponta dos dedos) e convex hull defect (vales) . . . 38

Figura 19 Imagem feita `a uma distˆancia de 9 cm da cˆamera / medi¸c˜ao feita com uma trena de 5 m (professional uyustolls) . . . 39

Figura20 Imagem feita `a uma distˆancia de 31 cm da cˆamera / medi¸c˜ao feita com uma trena de 5 m (professional uyustolls) . . . 40

Figura 21 Imagem (a) (67 cm de distˆancia da cˆamera), Imagem (b) (240 cm de distˆancia da cˆamera), Imagem (c) (250 cm de distˆancia da cˆamera) / todas as medi¸c˜oes foram feitas com uma trena de 5 m (professional uyustolls) . . . 40

Figura 22 Imagem bin´aria (a) e Imagem suavizada (b) . . . 41

Figura 23 Exemplo de utiliza¸c˜ao do Robotino SIM . . . 44

Figura 24 Janela ativa contendo a legenda de comandos . . . 45

Figura 25 Contorno de uma imagem . . . 46

Figura 26 Ponto vermelho central: COG com sua respectiva coordenada (x, y). . . 47

Figura 27 Visualiza¸c˜ao dos pontos interpretados: 0, 1 e 2 . . . 48

Figura 28 Visualiza¸c˜ao dos pontos interpretados: 3, 4 e 5 . . . 48

Figura 29 Robotino . . . 49

Figura 30 Roda Mecanum usada pelo Robotino . . . 49

Figura 31 Display do Robotino . . . 50

Figura 32 Ponto de acesso Wi-Fi . . . 50

Figura 33 Erros de interpreta¸c˜ao de imagens . . . 53

(12)

Figura 36 (a) Interpreta¸c˜ao correta da imagem. (b) Presen¸ca de falsos positivos

na imagem (pontos 1, 2 e 3) . . . 55

Figura 37 Parte do ombro ´e desprezada . . . 56

Figura 38 Programa despreza ´area menor que 5000 pixels . . . 56

Figura 39 Programa 1: Contorno da imagem captada pela cˆamera (imagem da esquerda) e imagem real captada (imagem da direita). . . 60

Figura 40 Programa 2: Contorno da imagem captada pela cˆamera (imagem da esquerda) e imagem real captada (imagem da direita). . . 61

Figura 41 Programas 3 e 4: Contorno da imagem captada pela cˆamera (imagem da esquerda), imagem negativa ´util da imagem (centro) e imagem real captada (imagem da direita). . . 61

Figura 42 Programa 5: Contorno da imagem captada pela cˆamera (imagem da esquerda) e imagem real captada (imagem da direita). . . 62

Figura 43 Gestos mostrados para a cˆamera / gesto 0 . . . 63

Figura 44 Gestos mostrados para a cˆamera / gesto 1 . . . 63

Figura 45 Gestos mostrados para a cˆamera / gesto 2 . . . 64

Figura 46 Gestos mostrados para a cˆamera / gesto 3 . . . 64

Figura 47 Gestos mostrados para a cˆamera / gesto 4 . . . 65

Figura 48 Gestos mostrados para a cˆamera / gesto 5 . . . 65

Figura 49 Kinect utilizado no Xbox One . . . 69

(13)

Tabela1 Informa¸c˜oes sobre a fonte de ilumina¸c˜ao artificial . . . 44

(14)

3CCD – Sistema de imagens usa trˆes separadores do tipo CCD Android – Sistema operacional m´ovel desenvolvido pela Google API – Aplicativo de interface de programa¸c˜ao

BMP – Bitmap

BSD – Licen¸ca de c´odigo aberto do tipo Berkeley Software Distribution

C – Linguagem de Programa¸c˜ao

C# – Linguagem de programa¸c˜ao orientada a objetos criada pela Microsoft C++ – Evolu¸c˜ao da Linguagem de programa¸c˜ao baseada em C

CCD – Charged Coupled Device

CMOS – Complementary Metal Oxide Semiconductor

CMYK – Sistema de cores formado por Ciano, Magenta, Amarelo e Preto

COG – Center of gravity

CRT – Tubo de raios cat´odicos

HSI – Sistema de cores que adiciona intensidade HSL – Sistema de cores que adiciona luminosidade

HSV – Sistema de cores formadas pelas componentes hue, saturation e value IEEE – Institute of Electrical and Electronics Engineers

IHC – Itera¸c˜ao Homem-Computador

I/O – Entrada e Sa´ıda

iOS – Sistema operacional m´ovel desenvolvido pela Apple

IP – Internet Protocol

JPEG – Joint Photographic Experts Group

LCD – Liquid Crystal Display

Linux – Sistema operacional Open Source desenvolvido por Linus Torvalds Mac – Computador pessoal desenvolvido pela Apple

Open Source – C´odigo aberto

OpenCV – Biblioteca de Vis˜ao Computacional (Open Source)

PC – Personal computer

PID – Proportional Integrator-Differentiator

Plasma – TV que gera imagens de uma g´as (plasma) preenchido com Xenˆonio e Neon

QVGA – Quarter VGA

RGB – Red, Green and Blue (Vermelho, verde e azul) Robotino SIM – Simulador virtual do robotino

(15)

UFRN – Universidade Federal do Rio Grande do Norte

USB – Universal Serial Bus

VDC – Tens˜ao M´edia

VGA – Video Graphics Array

WEP – Wired Equivalent Privacy

WIFI – Wireless Fidelity

WPA-PSK – WiFi Protected Access, Pre-Shared Key

(16)

1 INTRODU ¸C ˜AO . . . 16

1.1 Apresenta¸c˜ao do Trabalho . . . 16

1.2 Objetivos . . . 20

1.2.1 Geral . . . 20

1.2.2 Espec´ıficos . . . 20

1.3 Estrutura da Disserta¸c˜ao . . . 20

2 REVIS ˜AO BIBLIOGR ´AFICA . . . 22

2.1 Reconhecimento dos contornos de uma imagem . . . 23

2.2 ´Area do contorno . . . 25

2.2.1 F´ormula de Green . . . 25

2.3 Filtros . . . 26

2.3.1 Filtro Mediana (Median blur) . . . 27

2.3.2 Filtro Gaussiano (Gaussian blur) . . . 28

2.3.3 Filtros de Dilata¸c˜ao e Eros˜ao . . . 29

2.3.3.1 Dilata¸c˜ao . . . 30

2.3.3.2 Eros˜ao. . . 31

2.4 Convex Hull . . . 31

2.5 Convexity Defect (defeitos de convexidade) . . . 33

2.6 Trabalhos Semelhantes . . . 34

3 MATERIAIS E M´ETODOS . . . 36

3.1 Biblioteca OpenCV . . . 37

3.2 M´etodos Aplicados no Desenvolvimento do Programa . . . 39

3.2.1 Manipula¸c˜ao da Imagem . . . 39

3.2.1.1 Determina¸c˜ao da Distˆancia da Cˆamera . . . 39

3.2.1.2 Imagem Negativa. . . 40

3.2.2 Centro Geom´etrico (COG) . . . 42

3.3 Sistema de Controle por Gestos . . . 43

3.4 Inicializa¸c˜ao do robˆo . . . 43

3.5 Fun¸c˜oes, Headers e Classe Utilizadas para Inicializa¸c˜ao do Robˆo . . . 43

3.6 Elabora¸c˜ao do Programa de Controle . . . 44

3.7 Robotino . . . 48

(17)

4.2 Reconhecimento de comandos semelhantes . . . 54

4.3 ´Area M´ınima da Imagem. . . 55

4.4 Problemas Enfrentados Durante o Desenvolvimento do Programa de Controle e Suas Respectivas Solu¸c˜oes . . . 56

4.5 Desempenho das Vers˜oes do Software de Reconhecimento de Co-mandos . . . 59

4.5.1 Programa 1 . . . 59

4.5.2 Programa 2 . . . 60

4.5.3 Programas 3 e 4 . . . 61

4.5.4 Programa 5 . . . 61

4.5.5 Programas 6 e 7 . . . 62

4.5.6 Evolu¸c˜ao da Interpreta¸c˜ao dos Comandos . . . 62

5 CONSIDERA ¸C ˜OES FINAIS . . . 67

5.1 Conclus˜oes. . . 67

5.2 Sugest˜oes para Trabalhos Futuros . . . 68

REFERˆENCIAS . . . 70

APˆENDICE . . . 75

(18)

1 INTRODU ¸C ˜AO

1.1 Apresenta¸c˜ao do Trabalho

Vis˜ao computacional ´e respons´avel pela forma como um computador enxerga o meio `a sua volta, extraindo informa¸c˜oes significativas a partir de imagens capturadas por cˆa-meras de v´ıdeo, sensores, scanners, entre outros dispositivos.

Estas informa¸c˜oes permitem reconhecer, manipular e pensar sobre os objetos que comp˜oem uma imagem (BALLARD; BROWN, 1982). Na figura (1), pode-se ter uma ideia da interpreta¸c˜ao de informa¸c˜oes desejadas (pessoas) na imagem. Exemplos de aplica¸c˜oes incluem o controle de processos (como robˆos industriais ou ve´ıculos autˆonomos), detec¸c˜ao de eventos, organiza¸c˜ao de informa¸c˜ao, modelagem de objetos ou ambientes e intera¸c˜ao (atrelado a uni˜ao homem-computador).

Figura 1 - Exemplo de vis˜ao computacional (reconhecimento de pessoas)

Fonte: (LINUX MAGAZINE ONLINE,2015)

Tem-se lan¸cado m˜ao de v´arias ´areas do conhecimento com o intuito de cumprir tais objetivos, como por exemplo: Inteligˆencia Artificial, Engenharia El´etrica, Engenharia Mecˆanica e Inform´atica. Por´em, mesmo com todo o avan¸co que j´a se alcan¸cou em tais ciˆencias, o homem ainda n˜ao obteve ˆexito em criar uma m´aquina que tenha todas as habilidades f´ısicas e cognitivas encontradas em um ser humano.

(19)

Figura 2 - Robˆo autˆonomo - Asimo

Fonte: (HONDA,2015)

Entre as habilidades mencionadas, `a vis˜ao de robˆos (mais especificamente a vis˜ao computacional), tem sido alvo de v´arias pesquisas e estudos na ´area de computa¸c˜ao (CRO-WLEY et al., 1994). Partindo-se de um conhecimento de como funciona a vis˜ao humana, pesquisadores tem buscado desenvolver mecanismos que possibilitem que esta habilidade seja poss´ıvel a robˆos, de modo que a percep¸c˜ao tridimensional de objetos em um ambiente por parte de um robˆo e a associa¸c˜ao destes objetos a um conhecimento pr´evio sobre tais, seja realizada com sucesso (ORLANDINI,2012).

Levando-se em considera¸c˜ao todas as informa¸c˜oes mencionadas anteriormente, optou-se pelo desenvolvimento de um software de vis˜ao computacional com foco no reco-nhecimento de comandos, utilizando-se para isso uma linguagem de programa¸c˜ao (Visual Studio C++ 2013), al´em da biblioteca open source OpenCV (vers˜ao 2.4.10). A fun¸c˜ao do software ser´a a de reconhecer comandos feitos diante de uma webcam ou cˆamera ex-terna acoplada em um computador, para controlar um robˆo m´ovel – Robotino (FESTO, 2014). O software vai atuar como uma esp´ecie de controle remoto feito exclusivamente pelo reconhecimento da ponta dos dedos da m˜ao humana.

Este trabalho traz contribui¸c˜oes importantes, uma vez que pretende-se facilitar o uso de robˆos m´oveis por interm´edio de gestos da m˜ao humanos, sem a utiliza¸c˜ao de acess´orios extras, como por exemplo: joystick e ´oculos de realidade virtual acoplados com luvas contendo sensores.

(20)

Ainda nesta linha, Iba (IBA,1999) aborda algo parecido, pois para o controle do robˆo, foram necess´arios o armazenamento em uma matriz de forma offline de 5000 amostras representativas de gestos da m˜ao, para a partir da´ı analisar os gestos feitos pelo usu´ario, comparar com a matriz previamente armazenada e s´o ent˜ao comandar o robˆo.

Dentre os artigos dispon´ıveis, o trabalho de Kaura (KAURA, 2013) ´e o que mais se aproxima da abordagem aqui apresentada. Kaura (KAURA, 2013) utiliza programa¸c˜ao em C++ e fun¸c˜oes da biblioteca OpenCV para controlar um robˆo m´ovel (Arduino), en-tretanto, utiliza para isso apenas quatro gestos (reconhecendo a partir de dois at´e cinco dedos) para controle do robˆo, al´em da intercepta¸c˜ao da palma da m˜ao para estabelecer as dire¸c˜oes direita/esquerda/tr´as.

Existem tamb´em na ind´ustria diversos trabalhos voltados para o reconhecimento de gestos. A pr´opria Volkswagen j´a anunciou que ir´a lan¸car um dos seus carros (Golf R Touch Concept) no mercado europeu (j´a no ano de 2016) com sistema de controle por gestos, que faz o uso de uma cˆamera 3D instalada no teto do carro, para controlar as funcionalidades do sistema sem o uso de uma tela (IG, 2015).

A Audi apresentou um conceito que utiliza um display na frente do motorista, outro na frente do passageiro e ainda um terceiro entre os dois, que pode ser visto pelas duas pessoas nos bancos da frente. Apesar desta ideia em si n˜ao ser particularmente revolucio-n´aria, a transferˆencia de informa¸c˜oes de uma tela para a outra ´e. O passageiro pode acessar as informa¸c˜oes sobre um restaurante em sua pr´opria tela e depois pode pass´a-las por con-trole gestual para o display central, fornecendo ao condutor as instru¸c˜oes de navega¸c˜ao. A tecnologia apresentada ainda est´a em fase de desenvolvimento e n˜ao h´a informa¸c˜oes sobre uma poss´ıvel data para sua implementa¸c˜ao nos ve´ıculos da marca (FUTURELAB,2015a).

A Mercedes-Benz apresentou um experimento chamado Dynamic & Intuitive Control Experience (DICE), ou Experiˆencia de Controle Dinˆamico e Intuitivo, utiliza uma s´erie de sensores de proximidade para detectar os movimentos dos bra¸cos e m˜aos, que controlam tudo, desde m´usica, navega¸c˜ao e funcionalidades sociais, a um display, que compreende o p´ara-brisa inteiro, ainda sem data para lan¸camento (FUTURELAB, 2015b).

Nos ´ultimos anos, h´a grande interesse em pesquisas voltadas para automa¸c˜ao de pro-cessos por meio de sistemas rob´oticos, com intuito de promover o aumento da qualidade dos produtos e a otimiza¸c˜ao do tempo. Esses sistemas, em sua maioria, utilizam t´ecnicas de inteligˆencia artificial (IA) empregadas na constru¸c˜ao dos algoritmos propostos para so-lucionar os problemas. Por isso, sistemas autˆonomos de navega¸c˜ao rob´otica que permitem a tomada de decis˜ao com base em informa¸c˜oes extra´ıdas do ambiente, que proporcionam a coopera¸c˜ao de agentes ou possuem vis˜ao computacional, tˆem sido largamente explora-dos em pesquisas nas ´areas de automa¸c˜ao, rob´otica e IA, o que gera muitas propostas de aplica¸c˜oes em v´arios segmentos (ARA ´UJO; LIBRANTZ, 2006).

(21)

com Muir (MUIR, 1988) o mesmo define um robˆo m´ovel como: um robˆo capaz de se locomover sobre uma superf´ıcie somente atrav´es da atua¸c˜ao de rodas montadas no robˆo e em contato com a superf´ıcie (VICTORINO,1998). As rodas permitem um deslocamento relativo entre o seu eixo e a superf´ıcie sobre a qual se espera ter um ´unico ponto de contato com rolamento puro.

Um robˆo m´ovel usualmente ´e equipado com sensores (vis˜ao, infravermelho, sonar, tato, toque, sistemas de navega¸c˜ao inercial, etc.) que permite a percep¸c˜ao do meio am-biente, total ou parcialmente desconhecido, e ´e dotado de capacidade de decis˜ao, que lhe permite cumprir uma tarefa sem interven¸c˜ao humana. Quando tais sensores est˜ao dispo-n´ıveis no robˆo, pode-se fazer uso da intera¸c˜ao do robˆo com o ambiente, fazendo-o perceber e construir o modelo do ambiente no qual o movimento se desenvolve e depois decidir as a¸c˜oes a serem tomadas para a realiza¸c˜ao da tarefa (J ´ACOBO,2001). Abaixo pode-se ver o robˆo m´ovel (Robotino) alvo de estudos neste trabalho, figura (3).

Figura 3 - Robˆo autˆonomo - Robotino

O uso de gestos ´e uma forma comum e umas das mais utilizadas para a comunica¸c˜ao entre humanos. Com a busca por meios mais eficazes de comunica¸c˜ao entre homem/m´a-quina, o estudo do reconhecimento de gestos da m˜ao atrav´es de cˆameras ganhou muita aten¸c˜ao por se tratar do desenvolvimento de uma forma mais interativa e natural de promover essa comunica¸c˜ao.

Levando-se em considera¸c˜ao a facilidade de utiliza¸c˜ao pelo usu´ario, interatividade e o avan¸co da tecnologia de reconhecimento de gestos, pois atualmente essa linha de pesquisa se mostra muito dinˆamica e interessante, surgiu a ideia de se implementar uma aplica¸c˜ao capaz de reconhecer gestos, proporcionando assim um m´etodo mais natural de intera¸c˜ao humano-computador.

Uma das possibilidades da aplica¸c˜ao do sistema de reconhecimento de comandos ´e o reconhecimento da ponta dos dedos de uma m˜ao para acionar um robˆo m´ovel, que nesse caso particular ser´a o Robotino.

(22)

dispositivos eletrˆonicos.

1.2 Objetivos

1.2.1 Geral

Desenvolver rotinas de vis˜ao computacional com foco no reconhecimento de ges-tos humanos, utilizando algumas linguagens de computa¸c˜ao cient´ıfica, al´em da biblioteca OpenCV que impactam diretamente na eficiˆencia geral do controle de robˆos m´oveis.

1.2.2 Espec´ıficos

1. Desenvolver um software para controlar os movimentos de um robˆo m´ovel;

2. Reconhecimento de imagens captadas pela webcam ou cˆamera externa;

3. Teste de todas as vers˜oes desenvolvidas para verifica¸c˜ao da eficiˆencia e confiabi-lidade do software em quest˜ao;

4. Controlar a interface por meio da interpreta¸c˜ao de gestos da m˜ao humana;

5. Testar a funcionalidade do software com rela¸c˜ao ao controle do robˆo m´ovel (Ro-botino) que ser´a utilizado.

1.3 Estrutura da Disserta¸c˜ao

A estrutura do trabalho ficou dividida da seguinte forma:

1. Introdu¸c˜ao:

• A primeira parte do trabalho compreende uma ideia geral sobre vis˜ao com-putacional, sistemas artificias, robˆos m´oveis, motiva¸c˜oes para a elabora¸c˜ao do trabalho e sua utilidade futura, al´em dos objetivos pretendidos com esse trabalho.

2. Revis˜ao Bibliogr´afica:

(23)

3. Materiais e m´etodos:

• Aborda as caracter´ısticas gerais do projeto, dando ˆenfase `a biblioteca OpenCV, manipula¸c˜ao da imagem, centro geom´etrico, al´em de informa¸c˜oes mais detalhadas sobre o robˆo m´ovel (Robotino) utilizado no desenvolvi-mento do software.

4. Sistema de controle por gestos

• S˜ao vistas neste cap´ıtulo informa¸c˜oes sobre a inicializa¸c˜ao do robˆo, a elabo-ra¸c˜ao do software de reconhecimento de comandos e os testes experimentais que foram necess´arios para o desenvolvimento do trabalho.

5. An´alise e discuss˜ao dos resultados:

• Neste cap´ıtulo foram abordados os erros de interpreta¸c˜ao de imagens, o reco-nhecimento dos comandos semelhantes, ´area m´ınima da imagem, problemas e solu¸c˜oes enfrentados durante o desenvolvimento do software, desempenho das v´arias vers˜oes desenvolvidas e finalmente a evolu¸c˜ao da interpreta¸c˜ao dos comandos reconhecidos.

6. Considera¸c˜oes finais:

(24)

2 REVIS ˜AO BIBLIOGR ´AFICA

Para a aquisi¸c˜ao de dados das imagens foram necess´arias a incorpora¸c˜ao de algumas t´ecnicas de vis˜ao computacional e espa¸co de cores que levam em considera¸c˜ao a forma na qual os dados s˜ao fornecidos e por consequˆencia, interpretados e passados para o programa de computa¸c˜ao e assim termos controle efetivo e refinado das informa¸c˜oes, diminuindo assim a solicita¸c˜ao computacional exigida na coleta dos dados.

Espa¸co de cores (tamb´em sistema de cores ou espectro de cores) ´e um modelo abs-trato matem´atico para formalizar a descri¸c˜ao de cores atrav´es de tuplas de n´umeros, tipicamente formadas por trˆes ou quatro elementos. S˜ao normalmente tridimensionais, mas tamb´em podem ser quadrimensionais.

Os espa¸cos de cores RGB (sistema de cores aditivas formado pelas iniciais das cores em inglˆes Red, Green e Blue, que significa em portuguˆes, respectivamente, Vermelho, Verde e Azul), CMYK (padr˜ao de cores subtrativas, formado pelos pigmentos prim´arios Cyan (Ciano), Magenta (Magenta) e Yellow (Amarelo) e ainda, o blacK (Preto)) e YCbCr (sistema de cores onde o Y representa a luminˆancia (criado pela soma do vermelho, azul e verde), Cb que representa a componente de croma da diferen¸ca de azul e Cr que representa a componente de croma da diferen¸ca de vermelho) s˜ao os mais frequentemente utilizados (MAGAZINE, PC., 2016;POYNTON,2012).

Um Espa¸co de Cor pode ser visto como um sistema definido por uma base represen-tativa dos componentes, de acordo com a defini¸c˜ao do espa¸co considerado. A representa¸c˜ao de qualquer cor pode ent˜ao ser feita `a custa da combina¸c˜ao desses componentes.

O modelo de espa¸co de cores RGB ´e provavelmente o mais usado entre os modelos de cores, especialmente para dados de 8 bits. A teoria do espa¸co de RGB (vermelho-verde-azul), de Thomas Young (YOUNG; KELLAND,1845), ´e baseada no princ´ıpio de que diversos efeitos crom´aticos s˜ao obtidos pela proje¸c˜ao da luz branca atrav´es dos filtros vermelho, verde e azul e pela superposi¸c˜ao de c´ırculos nas cores projetadas, figura (4)b.

O espa¸co CMYK ´e o sistema complementar ao RGB, onde a ausˆencia das compo-nentes resulta no branco:

• A medida que v˜ao sendo adicionadas, na sua intensidade m´axima, chega-se ao` preto.

Este modelo baseia-se na absor¸c˜ao de luz com o objetivo de se conseguir uma boa impress˜ao no papel:

• Este sistema ´e utilizado nas impressoras;

• Teoricamente estas trˆes cores se misturam para produzirem o preto.

(25)

Figura 4 - Imagem original (a) e sua representa¸c˜ao no espa¸co de cor RGB (b) e CMYK (c)

Fonte adaptada: (TECMUNDO,2009)

O sistema YCbCr n˜ao ´e um espa¸co de cor absoluta, mas sim, ´e uma forma de codifica¸c˜ao de informa¸c˜oes RGB. A cor real exibida depende das cores reais RGB prim´arias usadas para exibir o sinal. Portanto, um valor expresso comoY CbCr´e previs´ıvel se as cores

prim´arias padr˜ao RGB forem utilizadas (POYNTON, 2012).

2.1 Reconhecimento dos contornos de uma imagem

Um contorno ´e um agrupamento de pixels que representa uma curva fechada em uma imagem. Uma vez que uma imagem ´e dividida em componentes conectados, ´e frequen-temente usual computar estat´ısticas para cada ´area (BRADSKI; KAEHLER, 2012). Todas essas informa¸c˜oes podem ser utilizadas de forma a encontrar uma ´area de interesse em uma imagem.

Essas estat´ısticas incluem, conforme indicado em (SZELISKI,2010):

• Area do componente conectado - n´´ umero total de pixels do contorno;

• Per´ımetro - medida de comprimento de um contorno;

(26)

ou forma rasterizada. Os momentos de um contorno s˜ao definidos da mesma forma, mas calculado usando a f´ormula de Green (GLASNER, KARL, 2014).

O algoritmos usados para a extra¸c˜ao de contornos, inclusive utilizado pelo pr´oprio OpenCV, foi o algoritmo desenvolvido pelos Japoneses Satoshi Suzuki e Keiichi Abe, (SUZUKI et al., 1985).

Inicialmente, o algoritmo analisa uma imagem bin´aria de entrada por interm´edio de uma varredura e interrompe a mesma quando um pixel que satisfa¸ca a exigˆencia ´e encontrada.

A varredura da imagem bin´aria ´e feita come¸cando-se pelo canto inferior esquerdo at´e o canto superior direito da tela. O algoritmo varre todas as linhas de todas as colunas da tela procurando por informa¸c˜oes relevantes (pontos brancos), visto que, todas as in-forma¸c˜oes n˜ao relevantes (fundo da imagem) est´a setada na cor preta. Tomando-se uma coordenada qualquer A(x,y) na tela, o algoritmo analisa o pr´oprio ponto A(x,y) e seus vizinhos B(x+1,y) e C(x-1, y) e procura por informa¸c˜oes relevantes (pontos brancos). O modo como o algoritmo varre a imagem pode ser visto passo-a-passo abaixo:

• Caso 1: se o algoritmo encontra um ponto relevante em uma coordenada qual-quer A(x,y) e n˜ao encontra nenhum ponto relevante nas coordenadas vizinhas B(x+1,y) e C(x-1, y), o algoritmo identifica que encontrou um contorno e arma-zena a coordenada do ponto A(x,y) em um vetor de pontos.

• Caso 2: se o algoritmo encontra um ponto relevante em uma coordenada A(x,y) e no seu vizinho posterior B(x+1,y) e n˜ao encontra um ponto relevante em seu vizinho anterior C(x-1,y), o algoritmo identifica que encontrou um contorno e armazena a coordenada do ponto A(x,y) em um vetor de pontos.

• Caso 3: se o algoritmo encontra um ponto relevante em uma coordenada qualquer A(x,y), B(x+1,y) e C(x-1,y) o algoritmo identifica que est´a dentro do per´ımetro da imagem, portanto, a coordenada do ponto A(x,y) n˜ao ´e armazenada.

• Caso 4: se o algoritmo encontra um ponto relevante em uma coordenada qualquer A(x,y) e em seu vizinho anterior C(x-1,y) e n˜ao encontra nada relevante no seu vizinho posterior B(x+1,y) o algoritmo identifica que encontrou um contorno e armazena a coordenada do ponto A(x,y) em um vetor de pontos.

• Caso 5: se o algoritmo n˜ao encontra um ponto relevante em uma coordenada qualquer A(x,y), B(x+1,y) e C(x-1,y) o algoritmo identifica que est´a fora do pe-r´ımetro da imagem, portanto, a coordenada do ponto A(x,y) n˜ao ´e armazenada.

(27)

Figura 5 - Figuras representativas da varredura da tela

2.2 Area do contorno´

A fun¸c˜ao computacional da ´area do contorno utilizada neste trabalho leva em con-sidera¸c˜ao a f´ormula de Green, equa¸c˜ao (2.3). Assim, a ´area retorna um n´umero de pixels diferente de zero.

2.2.1 F´ormula de Green

Seja u uma fun¸c˜ao tal que −→∇2u = 0, ou seja,u ´e a solu¸c˜ao da equa¸c˜ao de Laplace.

Diz-se ent˜ao que u´e harmˆonica. Sejam u ev duas fun¸c˜oes definidas em uma regi˜aoR, e seja Σ a superf´ıcie (eventualmente composta de v´arias partes conexas) que delimita essa regi˜ao. Apliquemos o teorema do divergente `a fun¸c˜aou−→∇v. Temos, preliminarmente, que:

div(u−→∇v) = u−→∇2v+−→∇u−→∇v (2.1)

Logo,

Z

div(u−→∇v)dV =

Z

u−→∇2vdV +

Z

∇u.−→∇vdV =

Z

Σ

(28)

onde a igualdade entre a primeira e a ´ultima integrais constitui o teorema do divergente. Rearranjando, temos:

Z

∇u.−→∇vdV =−

Z

u−→∇2vdV + Z

Σ

u−→∇v.−→n dS (2.3)

Esta equa¸c˜ao ´e denominada primeira f´ormula de Green. Considere agora a fun¸c˜aou−→∇v−

v−→∇u, e apliquemos a ela o teorema do divergente. Temos:

Z

dV div(u−→∇v −v−→∇u) =

Z

dv(u−→∇2vv−→2u) = Z

dS(u−→∇v−v−→∇u).−→n (2.4)

Logo,

Z

dv(u−→∇2v−v−→∇2u) =

Z

dS(u−→∇v−v−→∇u).−→n (2.5)

Esta igualdade ´e denominada segunda f´ormula de Green (FLEMING H., 2013).

2.3 Filtros

Filtros s˜ao processos que tem por finalidade salientar determinados aspectos em imagens digitais ou reduzir ru´ıdos. Os processos de vis˜ao computacional, muitas vezes, necessitam de uma etapa de pr´e-processamento envolvendo o processamento de imagens. As imagens de onde queremos extrair alguma informa¸c˜ao em alguns casos precisam ser convertidas para um determinado formato ou tamanho, e precisam ainda ser filtradas para remover ru´ıdos provenientes do processo de aquisi¸c˜ao da imagem. Esses ru´ıdos podem ter sido introduzidos na imagem durante o processo de aquisi¸c˜ao da imagem, devido a limita¸c˜oes de hardware, no processo de quantiza¸c˜ao e digitaliza¸c˜ao, pelo excesso de compress˜ao da imagem, problemas na transmiss˜ao entre outros.

Os filtros, figura (6), s˜ao as ferramentas b´asicas para remover ru´ıdos de imagens, neste caso, o ru´ıdo ´e aquele que aparece no processo de aquisi¸c˜ao da imagem.

Figura 6 - Lado esquerdo uma imagem com ru´ıdo, e na direita a mesma imagem ap´os filtragem

(29)

Os filtros podem ser espaciais (filtros que atuam diretamente na imagem) ou de frequˆencia, onde a imagem ´e inicialmente transformada para o dom´ınio de frequˆencia usando da transformada de Fourier (geralmente atrav´es da transformada de Fourier dis-creta) e ent˜ao ´e filtrada neste dom´ınio e em seguida a imagem filtrada ´e transformada de volta para o dom´ınio de espa¸co.

No desenvolvimento do programa, por exemplo, foram usados os filtros: Mediana, Gaussiano, Eros˜ao e Dilata¸c˜ao.

2.3.1 Filtro Mediana (Median blur)

Filtro mediana ´e uma transforma¸c˜ao bastante comum, e utilizado principalmente para suavizar ru´ıdos do tipo impulsivo em sinais e imagens digitais.

A principal utilidade do filtro de mediana ´e diminuir o ru´ıdo na imagem, principal-mente quando ele ´e formado por pequenos pontos (tamb´em conhecido como salt and peper, ou sal e pimenta), o filtro Mediana suaviza a imagem sem contudo diminuir sua resolu¸c˜ao. Mas ele tamb´em ´e ´util para tornar bordas mais n´ıtidas em algumas situa¸c˜oes (IMAGESURVEY,2010).

Tukey (TUKEY,1977) foi um dos primeiros que sugeriu o uso de filtros de mediana para a suaviza¸c˜ao do sinal. Rabiner, Samgur, Schmidt (RABINER et al., 1975) e Jayant (JAYANT, 1976), aplicaram filtros medianas no processamento da fala, Pratt (PRATT, 1975) e Frieden (FRIEDEN, 1976) aplicaram-no ao processamento de imagem.

O filtro de mediana ´e um filtro de vizinhan¸ca onde o valor de um pixel ´e substitu´ıdo

pela mediana dos pixels da sua vizinhan¸ca,f =

N + 1 2

(HUANG et al., 1979).

No caso de dados ordenados de amostras de tamanho N, se N for ´ımpar, a mediana ser´a o elemento central (N+1)2 . Se N for par, a mediana ser´a o resultado da m´edia simples entre os elementos N

2 e

N

2 + 1.

Para cada vizinhan¸ca, ordena os pixels em ordem crescente de intensidade e escolhe como sa´ıda o valor mediano - aquele que est´a no centro da sequˆencia, figura (7).

Figura 7 - Filtro Mediana

(30)

Figura 8 - Aplica¸c˜ao do filtro mediana (direita) sobre uma imagem original (esquerda)

Esta opera¸c˜ao de filtragem pode ser escrita matematicamente como:

g(i, j) =median(f(i+k, j+l)h(k, l))

ondef ´e a imagem da fonte, g ´e a imagem filtrada, e h´e a uniformemente ponderada do n´ucleo mediano de filtragem. Este passo foi necess´ario para reduzir o ru´ıdo da imagem e o o n´umero de pontos de convexidade indesejados. A fun¸c˜ao OpenCV correspondente ´e

<medianBlur>(DU; TO, 2011).

2.3.2 Filtro Gaussiano (Gaussian blur)

O Filtro Gaussiano ´e um filtro capaz de reduzir o n´ıvel de ru´ıdo de um sinal de entrada, a fim de diminuir a distor¸c˜ao numa imagem.

A forma dos filtros Gaussianos em 2-D, figura (9) ´e dada pela seguinte express˜ao:

H(u, v) =e−D22(σ2u,v)

(31)

Figura 9 - Filtro Gaussiano 2-D

Fonte: (BACKS, ANDR´E,2010)

Os filtros Gaussianos s˜ao muito ´uteis tamb´em em Biologia Computacional e Vi-s˜ao, pois no processo de vis˜ao algumas c´elulas tˆem forma de resposta aproximadamente Gaussiana.

O filtro Gaussiano suaviza (smoothing, blur) a imagem, quase da mesma forma que o filtro de m´edia mean filter). O resultado ser´a t˜ao mais suave quanto maior o valor de sigma, σ, desvio padr˜ao (standard deviation) da Gaussiana usada. Desvios padr˜oes maiores tamb´em fazem com que a m´ascara (convolution kernel) deva ser maior para uma representa¸c˜ao adequada.

2.3.3 Filtros de Dilata¸c˜ao e Eros˜ao

As transforma¸c˜oes morfol´ogicas b´asicas s˜ao as de dilata¸c˜ao, figura (10), e eros˜ao, figura (11) e que surgem numa vasta variedade de contextos, tais como a remo¸c˜ao de ru´ıdo, isolando elementos individuais, e juntando elementos d´ıspares em uma imagem (BRADSKI; KAEHLER,2012).

Figura 10 - Dilata¸c˜ao morfol´ogica. (a) Imagem Original, (b) Imagem Dilatada, (c) Imagem Di-latada 2x

(32)

Figura 11 - Imagem morfol´ogica. (a) Imagem Original, (b) Imagem Erodizada, (c) Imagem Ero-dizada 2x

Fonte: (BRADSKI; KAEHLER,2012)

2.3.3.1 Dilata¸c˜ao

De acordo com Serra (SERRA, 1983), a opera¸c˜ao de dilata¸c˜ao bin´aria δ pode ser mostrada como a dilata¸c˜ao de uma imagemf pelo elemento estruturanteB que pode ser representada como:

δB(f) = {x∈f :Bx∩f 6=∅} (2.6)

ondeBx representa o elemento estruturanteB transladado na posi¸c˜ao x.

Segundo a equa¸c˜ao (2.6), o elemento estruturante Bx, posicionado e centrado em

cada pixelxdef desliza na imagemf e verifica uma poss´ıvel interse¸c˜ao com a vizinhan¸ca dex. Caso seja verdadeiro, o ponto central na imagem resultado ser´a considerado um pixel relevante e ser´a marcado como tal. Caso contr´ario, ele ser´a considerado como irrelevante e ser´a apagado (FACON, J., 2011). A figura (12) mostra uma representa¸c˜ao do filtro de dilata¸c˜ao.

Figura 12 - Limpeza de uma imagem ruidosa: (a) Image Original, (b) Dilata¸c˜ao dos conjuntos

pretos

(33)

2.3.3.2 Eros˜ao

De acordo com Serra (SERRA, 1983), a opera¸c˜ao de eros˜ao bin´aria E pode ser mos-trada como a eros˜ao de uma imagemf pelo elemento estruturanteB que pode ser repre-sentada como:

EB(f) = {xE :B

x ⊂f} (2.7)

ondeBx representa o elemento estruturanteB transladado na posi¸c˜ao x.

Segundo a equa¸c˜ao (2.7) deve-se deslizar o elemento estruturanteB sobre a imagem

f e para cada pixel x verificar a configura¸c˜ao de sua vizinhan¸ca em rela¸c˜ao `a estrutura

do elemento estruturante B. Por ser bin´arios, a imagem f e o elemento estruturante B

cont´em dois tipos de informa¸c˜ao, o fundo e os pixels relevantes.

O significado da equa¸c˜ao (2.7) ´e que o elemento estruturante Bx, posicionado e

centrado no pixel x de f, tenta aparelhar-se com a vizinhan¸ca de x. Entende-se que cada pixel relevante deBx deve encontrar-se na mesma posi¸c˜ao na vizinhan¸ca dex. Caso

seja verificado, o pixel x na imagem erodida ser´a considerado um pixel relevante e ser´a preservado. Caso contr´ario, ele ser´a considerado como irrelevante e ser´a apagado (FACON, J., 2011). A figura (13) mostra uma representa¸c˜ao do filtro de eros˜ao.

Figura 13 - Limpeza de uma imagem ruidosa: (a) Image Original, (b) Eros˜ao dos conjuntos

pretos

Fonte adaptada: (FACON, J.,2011)

2.4 Convex Hull

(34)

Figura 14 - Representa¸c˜ao visual do convex hull do conjunto fechado.

Fonte adaptada: (KUKURUKU,2014)

O algoritmo utilizado na opera¸c˜ao convex hull objetiva gerar o menor pol´ıgono que englobe um determinado conjunto de pontos. Opera somente com uma ´unica camada de entrada por vez, cujo tipo de geometria poder´a ser de qualquer tipo.

Em matem´atica, o convex hull ou envolt´orio convexo de um conjunto de pontos no plano euclidiano ou espa¸co euclidiano ´e o menor conjunto convexo que cont´em os pontos. Por exemplo, quando X ´e um subconjunto limitado do plano, o convex hull, figura (15), pode ser visualizado como uma configura¸c˜ao formada por uma faixa de borracha esticada em torno de X (BERG et al., 2000).

Figura 15 - Convex hull de um conjunto finito: analogia com uma tira el´astica (atilho).

Fonte: (CODEPROJECT,2008)

Formalmente, o convex hull pode ser definido como a intersec¸c˜ao de todos os con-juntos convexos que cont´em X ou como o conjunto de todas as combina¸c˜oes convexas de pontos em X . De acordo com a ´ultima defini¸c˜ao, convex hulls podem ser expandidos a partir de espa¸cos euclidianos para os espa¸cos vetoriais reais arbitr´arios; al´em disso eles podem tamb´em ser generalizados para matr´oides orientados (KNUTH et al.,1992).

Um matr´oide ´e um par ordenado M = (S, I) que satisfaz as propriedades:

• S ´e um conjunto finito e n˜ao vazio;

(35)

independente deS, tal que se B ∈I e A⊆B ent˜ao A ∈I;

– Dizemos queI ´e heredit´aria se satisfaz esta propriedade;

– Note que o conjunto vazio (∅) ´e obrigatoriamente um membro deI.

• Se A ∈ I, B ∈I, e |A| < |B|, ent˜ao existe algum elemento x ∈ B−A tal que

A∪ {x} ∈I.

– Dizemos queM satisfaz a propriedade de troca (CAMPONOGARA, E.,2014).

O convex hull de um conjunto finito de pontoS´e o conjunto de todas as combina¸c˜oes convexas de seus pontos. Em uma combina¸c˜ao convexa,xi de cada ponto deS´e atribu´ıdo

um peso ou coeficiente αi de tal maneira que os coeficientes s˜ao todos n˜ao-negativos e

resumidos a um, e estes pesos s˜ao utilizados para calcular uma m´edia ponderada dos pontos. Para cada escolha de coeficientes, a combina¸c˜ao resultante ´e convexa de um ponto no convex hull, e todo o convex hull pode ser formado por escolha de coeficientes de todas as maneiras poss´ıveis. Expressando isso como uma ´unica f´ormula, o convex hull ´e o conjunto (BERG et al.,2000; KNUTH et al., 1992; CHAZELLE, 1993):

λi >0∀ i e n

X

i=1

λi = 1 (2.8)

Um conjunto solu¸c˜ao limitada de um sistema finito de desigualdades lineares pode ser escrito matematicamente da seguinte forma:

P =P(A, b) :=

x∈Rd

aTi x6bi for 16i6m

(2.9)

Onde A ∈ Rm×d

´e uma matriz real com linhas aT

i e b ∈ Rm ´e um vetor real com

entradasbi, (HENK et al.,2004).

2.5 Convexity Defect (defeitos de convexidade)

Outra modo ´util de compreender a forma de um objeto ou contorno ´e calcular o convex hull para o objeto e, em seguida, calcular o convexity defect (vales encontrados em uma dada imagem) (HOMMA; TAKENAKA,1985). As formas de diversos objetos complexos s˜ao bem caracterizados por esses vales.

(36)

Figura 16 - Imagem representativa do convex hull que ´e linha escura do contorno em volta da m˜ao e as regi˜oes quadriculadas (A-H) s˜ao o convexity defect no contorno da m˜ao em rela¸c˜ao ao convex hull.

Fonte: (SAPACHAN, 2015)

A biblioteca OpenCV possui implementado tanto as fun¸c˜oes deconvex hull()quanto a de convexity defect().

Existe no OpenCV trˆes m´etodos relacionados ao convex hull e convexity defect. O primeiro simplesmente verifica o hull do contorno que j´a foi identificado, e o segundo permite verificar se o contorno identificado j´a ´e convexo. O terceiro avalia o convexity defect em um contorno na qual o convex hull ´e identificado (BRADSKI; KAEHLER, 2012).

2.6 Trabalhos Semelhantes

O trabalho desenvolvido por Waldherr (WALDHERR,2000), foi um importante ponto de estudo, pois o mesmo usa uma interface computacional para controlar um robˆo m´ovel, sendo que a interface fica instalada no pr´oprio robˆo.

O robˆo reconhece alguns gestos pr´e estabelecidos e executa as fun¸c˜oes referentes ao gesto. Dois m´etodos foram combinados para se conseguir uma melhor resposta do reconhecimento dos gestos. Sendo o primeiro a cria¸c˜ao de um banco de dados com gestos pr´e gravados e o segundo utiliza uma abordagem com a utiliza¸c˜ao de redes neurais.

Ap´os o reconhecimento do gesto o robˆo segue o usu´ario e executa fun¸c˜oes pr´e esta-belecidas. A finalidade do robˆo que foi testado era o de limpeza.

(37)

matriz offline (gerada anteriormente) ao processamento dos gestos. A grande vantagem desse m´etodo ´e a velocidade de execu¸c˜ao e tempo de resposta pelo robˆo m´ovel, por´em, um fator que pode prejudicar essa abordagem ´e que, se houver algum gesto (mesmo que semelhante) que n˜ao sido armazenado previamente na matriz o robˆo simplesmente n˜ao executa nem uma fun¸c˜ao pois desconhece o gesto que foi exibido.

O trabalho de Kaura (KAURA, 2013), foi o que mais se aproximou da abordagem utilizada neste trabalho, visto que, utiliza programa¸c˜ao em C++, bibliotecas do OpenCV, captura as imagens dos gestos, processa as mesmas em tempo de execu¸c˜ao, gera um comando para o robˆo referente ao gesto interpretado e finalmente manda o robˆo (Arduino) para um local especificado pelo gesto.

(38)

3 MATERIAIS E M´ETODOS

Este cap´ıtulo aborda as caracter´ısticas gerais das principais ferramentas utilizadas no software de controle e pelo robˆo m´ovel Robotino (equipamento alvo da pesquisa deste trabalho).

O software de controle pode ser visualizado no algoritmo abaixo, figura (17), e leva em considera¸c˜ao todos os passos necess´arios para o controle final do robˆo, que abrange a capta¸c˜ao da imagem, inicializa¸c˜ao do robˆo, processamento, interpreta¸c˜oes de erros e comandos finais para que o robˆo m´ovel execute as informa¸c˜oes impostas pelo usu´ario.

Figura 17 - Algoritmo do programa de controle

Primeiramente o programa verifica se a cˆamera est´a presente (cˆamera do laptop, webcam ou cˆamera externa). Caso negativo, o software apresenta uma mensagem de erro e sai do programa. Caso positivo, inicializa o robˆo.

Ap´os a inicializa¸c˜ao do robˆo o software capta a imagem da cˆamera, aplica os filtros mediana e Gaussiano (ambas as fun¸c˜oes do OpenCV) e converte o espa¸co de cor RGB (default) para o espa¸co YCbCr (fun¸c˜ao do OpenCV), gera a imagem bin´aria (uma das fun¸c˜oes utilizadas foi a split() - OpenCV) correspondente `a imagem captada, aplica os ´

(39)

(fun¸c˜ao do OpenCV) da mesma.

Depois da aquisi¸c˜ao do contorno ´e feito o c´alculo da ´area da imagem e verifica-se se a imagem recebida ´e maior ou igual a 5000 pixels. Caso negativo, o programa volta a procurar o contorno da imagem. Caso positivo, o programa inicia a procura pelas pontas do dedos da m˜ao humana.

Encontrando-se a ponta ou as pontas dos dedos da m˜ao o software manda a infor-ma¸c˜ao correspondente para o robˆo m´ovel. O ciclo se repete at´e que a tecla <ESC> seja pressionada, quando finalmente o programa ´e finalizado.

3.1 Biblioteca OpenCV

OpenCV ´e uma biblioteca para o desenvolvimento de aplicativos na ´area de vis˜ao computacional. Atrav´es dela, ´e poss´ıvel fazer a an´alise, interpreta¸c˜ao e processamento de imagens em tempo real (BRADSKI; KAEHLER, 2012).

Originalmente, desenvolvida pela Intel, em 2000, ´e uma biblioteca multiplataforma, totalmente livre ao uso acadˆemico e comercial, para o desenvolvimento de aplicativos na ´area de Vis˜ao computacional, bastando seguir o modelo de licen¸ca BSD Intel. O OpenCV possui m´odulos de Processamento de Imagens e Video I/O, Estrutura de dados, ´Algebra Linear, GUI (Interface Gr´afica do Usu´ario) B´asica com sistema de janelas independentes, Controle de mouse e teclado, al´em de mais de 350 algoritmos de Vis˜ao computacional como: filtros de imagem, calibra¸c˜ao de cˆamera, reconhecimento de objetos, an´alise estru-tural e outros. O seu processamento ´e em tempo real de imagens.

No inicio do projeto, os objetivos foram definidos como:

a) Avan¸car a pesquisa em vis˜ao computacional por prover n˜ao apenas c´odigo aberto mas otimizado para tarefas b´asicas de vis˜ao, de modo que o c´odigo pudesse ser prontamente lido e transfer´ıvel;

b) Avan¸car aplica¸c˜oes baseadas em vis˜ao computacional por fazer c´odigo port´avel e otimizado dispon´ıvel de gra¸ca, com uma licen¸ca que n˜ao requer que a aplica¸c˜ao seja de c´odigo aberto.

A vers˜ao 1.0 foi lan¸cada no final do ano de 2006 e foi desenvolvida nas linguagens de programa¸c˜ao C e C++. Atualmente (primeiro trimestre de 2015) a biblioteca est´a na vers˜ao 2.4.10 (est´avel) e 3.0 (beta), e d´a suporte tamb´em para desenvolvedores Linux, Mac, Android e iOS que desejem utiliz´a-la em seus projetos. Possuindo mais de 500 fun¸c˜oes que podem ser aplicadas nas ´areas de Intera¸c˜ao Homem-Computador (IHC), identifica¸c˜ao de objetos, reconhecimento de face, rastreamento, reconhecimento de movimentos, dentre outras.

(40)

manipula¸c˜ao de imagens e que, assim, contribui para aumentar tamb´em a confiabilidade nas aplica¸c˜oes desenvolvidas.

A biblioteca OpenCV possui recursos que auxiliam o desenvolvimento de softwares paro o reconhecimento de imagens analisadas. Para isto ´e necess´ario o uso de fun¸c˜oes e t´ecnicas de espa¸cos de cores (filtros) para que a an´alise seja efetuada (OPENCV,2014). ´E poss´ıvel usar, como exemplo, uma m˜ao humana, figura (18). Caso seja inserido dentro do sistema que o padr˜ao a ser reconhecido por ele ser´a uma m˜ao aberta, o sistema procurar´a na imagem os contornos que sejam similares a picos (ponta dos dedos - convex hull) e vales (regi˜ao inferior entre os dedos - convex hull defects). Ao se mostrar para a cˆamera uma m˜ao aberta, as fun¸c˜oes entrar˜ao em a¸c˜ao procurando pelos pontos v´alidos, e o sistema passar´a a executar os procedimentos estipulados para o reconhecimento deste padr˜ao. No momento em que a m˜ao for fechada, ela deixar´a de ser reconhecida (inexistˆencia de picos e vales), e o sistema passar´a acusar a falta de padr˜oes na imagem. ´E por isto que se deve prever a maior parte das poss´ıveis posi¸c˜oes e gestos da m˜ao, para que ela continue sendo reconhecida como uma m˜ao mesmo ap´os sofrer, perante o sistema, modifica¸c˜oes de formato durante a movimenta¸c˜ao.

Figura 18 - T´ecnicas usadas: convex hull (ponta dos dedos) e convex hull defect (vales)

Fonte: (HAMLYNKINECT,2015)

V´arias fun¸c˜oes do OpenCV foram utilizadas no desenvolvimento do software de controle. Dentre elas se destacam as fun¸c˜oes:

1. medianBlur(), GaussianBlur(), dilate() e erode() – utilizadas para a inicializa¸c˜ao dos diversos filtros usados no programa;

2. cvtcolor() e split() – utilizadas para trocar o espa¸co de cores RGB em YCbYr e separar as componentes do novo espa¸co de cor para se conseguir um melhor controle das vari´aveis;

(41)

4. convexHull() e ConvexityDefects() – utilizadas para auxiliar no reconhecimento dos picos e vales de uma imagem, possibilitando assim que as pontas dos dedos da m˜ao humana fossem identificadas.

3.2 M´etodos Aplicados no Desenvolvimento do Programa

Nesta se¸c˜ao ser˜ao mostrados os m´etodos e conceitos que foram utilizados para o desenvolvimento do software.

3.2.1 Manipula¸c˜ao da Imagem

N˜ao foi necess´aria a calibra¸c˜ao da cˆamera, visto que, os parˆametros intr´ınsecos e extr´ınsecosdefault das cˆameras convencionais (webcam e cˆamera do laptop) n˜ao influen-ciavam na correta capta¸c˜ao da imagem.

3.2.1.1 Determina¸c˜ao da Distˆancia da Cˆamera

O usu´ario deve estar posicionado entre 10 `a 60 cm de distˆancia da cˆamera. Isso ´e importante pois foi constatado que, se o usu´ario ficar muito longe da cˆamera (al´em de 60 cm de distˆancia) as imagens ficam distorcidas uma vez que os filtros aplicados sobre a imagem tem como uma das caracter´ısticas a de borrar a imagem captada.

Se o usu´ario ficar `a menos de 10 cm da cˆamera a imagem fica muito grande e portanto de dif´ıcil interpreta¸c˜ao por parte do software, figura (19).

Figura 19 - Imagem feita `a uma distˆancia de 9 cm da cˆamera / medi¸c˜ao feita com uma trena de 5 m (professional uyustolls)

(42)

Figura 20 - Imagem feita `a uma distˆancia de 31 cm da cˆamera / medi¸c˜ao feita com uma trena de 5 m (professional uyustolls)

A figura (21), mostra como se comportam as imagens que foram obtidas al´em do

range de 60 cm.

Figura 21 - Imagem (a) (67 cm de distˆancia da cˆamera), Imagem (b) (240 cm de distˆancia da

cˆamera), Imagem (c) (250 cm de distˆancia da cˆamera) / todas as medi¸c˜oes foram feitas com uma trena de 5 m (professional uyustolls)

Tanto a distˆancia m´ınima de 10 cm quanto a distˆancia m´axima de 60 cm foram determinados atrav´es de testes pr´aticos em tempo de execu¸c˜ao.

3.2.1.2 Imagem Negativa

(43)

Figura 22 - Imagem bin´aria (a) e Imagem suavizada (b)

• Utilizou-se o procedimento de autoria do desenvolvedor (skinExtract()) que aplica na imagem recebida os filtros Mediana (m´ascara - 17x17), Gaussiano (m´ascara - 25x25) e converte o espa¸co de cor RGB (espa¸codefault de entrada) em YCbCr (fun¸c˜ao OpenCV utilizada para convers˜ao - cvtColor());

• Uma vez que o novo espa¸co de cor est´a setado para YCbCr (matriz multi canais), separa-se o espa¸co nas suas matrizes individuais de cores (Cb e Cr) para um controle mais preciso da imagem rec´em adquirida;

• Atrav´es da varredura da matriz rec´em separada por interm´edio de um la¸cofor(), e pela verifica¸c˜ao do conte´udo das componentes Cb e Cr (la¸co condicionalif()), consegue-se verificar se Cb e Cr est˜ao dentro do intervalo 100 ≤ Cb ≤ 127 e 138≤Cr≤170 respectivamente. Caso o resultado da compara¸c˜ao (para aquela coordenada analisada) seja verdadeiro a coordenada de pixel da tela recebe o valor 255 (pixel branco) caso contr´ario recebe o valor 0 (pixel preto) para se conseguir com isso a constru¸c˜ao de uma imagem bin´aria.

• Finalizando o procedimento (skinExtract()), aplica-se os filtros Dilata¸c˜ao e Ero-s˜ao (m´ascara - 5x5) para a suaviza¸c˜ao final da imagem, figura (22)b.

Os filtros Mediana e Gaussiano foram utilizados para borrar parcialmente a imagem e com isso se conseguir uma minimiza¸c˜ao de falsos positivos.

Os filtros Dilata¸c˜ao e Eros˜ao tiveram como objetivo reduzir ainda mais os falsos positivos, visto que, atuam depois da aplica¸c˜ao dos filtros Mediana e Gaussiano.

Para os filtros em quest˜ao foi necess´ario fazer alguns testes pr´aticos (em tempo de execu¸c˜ao) para se determinar qual seriam os tamanhos de m´ascaras mais adequados para se conseguir o melhor resultado entre desempenho computacional e identifica¸c˜ao da imagem pelo programa.

(44)

(matriz) de 17x17.

J´a para o filtro Gaussiano foi utilizada a mesma estrat´egia utilizada no filtro Medi-ana, e ap´os os testes das m´ascaras: 3x3, 5x5, 7x7, 12x12, 15x15, 17x17, 20x20, 25x25 e 28x28, escolheu-se a m´ascara de 25x25.

Para o filtro Dilata¸c˜ao e Eros˜ao, testou-se as m´ascaras: 3x3, 5x5, 7x7, 12x12, 15x15, 17x17 e 20x20, escolhendo-se assim a m´ascara de 5x5.

Matrizes acima de 3x3 borram e melhoram um pouco a imagem e matrizes acima de 10x10, borram, melhoram e destacam a imagem como um todo, por´em, impactam diretamente na velocidade de execu¸c˜ao do programa, deixando o sistema mais lento.

Em contraste com o RGB, o espa¸co YCbCr ´e luma independente, resultando em uma melhor performance (KUKHAREV; NOWOSIELSKI, 2004).

A principio utilizou-se o intervalo 80≤Cb≤120 e 133≤Cr≤173, como ponto de partida (BASILIO, 2011). Por´em, ap´os v´arios teste em tempo de execu¸c˜ao, optou-se pela utiliza¸c˜ao dos intervalos 100 ≤ Cb ≤ 127 e 138 ≤ Cr ≤ 170 (engloba o range dos tons de pele do tipo caucasiano), pois os mesmos resultaram em menos falsos positivos para o reconhecimento de imagens.

3.2.2 Centro Geom´etrico (COG)

O centro geom´etrico ´e um importante conceito pois serve para se conseguir localizar o centro de uma imagem captada.

No caso de uma imagem processada os momentos que formam o COG,M oments::

mji s˜ao computados como:

mji =

X

x,y

(array(x, y).xj.yi) (3.1)

O momento central, M oments::muji s˜ao computados como:

muji =X

x,y

(array(x, y).(x−x)j.(yy)i) (3.2)

Onde (x, y) ´e o centro geom´etrico:

x= m10

m00

, y= m01

m00

(3.3)

Os momentos centrais normalizados, M oments::nuij s˜ao computados como:

nuji =

muji m 1+j 2+1 00 (3.4)

(45)

n˜ao s˜ao armazenados.

Os momentos de um contorno s˜ao definidos do mesmo modo mas s˜ao computados usando-se a f´ormula de Green, (RILEY et al.,2006).

Observa-se tamb´em que desde que os momentos de contorno s˜ao calculados usando a f´ormula de Green, pode-se obter resultados aparentemente estranhos para contornos com auto-interse¸c˜oes, por exemplo, uma ´area de zeros (M00) para contornos em forma de borboleta.

3.3 Sistema de Controle por Gestos

Atualmente h´a televisores que podem ser controlados por gestos, smartphones, com-putadores e robˆos. Os video games est˜ao cada dia mais voltados aos comandos com a utiliza¸c˜ao do pr´oprio corpo como controlador e essa tendˆencia deve se espalhar para todos os outros ramos da tecnologia (HAMANN, R., 2014).

Dessa forma, pode-se constatar que os estudos de reconhecimento de gestos e con-troles sem o aux´ılio de equipamentos externos como: joysticks e capacetes de realidade virtual est˜ao sendo cada vez mais desenvolvidos e apontam para uma realidade concreta para a utiliza¸c˜ao por todas as pessoas nos pr´oximos anos.

A seguir, pode-se contatar o desenvolvimento do programa (passo-a-passo) que ser´a mostrado nas pr´oximas se¸c˜oes.

3.4 Inicializa¸c˜ao do robˆo

Durante o inicio da execu¸c˜ao do programa o primeiro ponto a ser tratado ´e a existˆen-cia de uma cˆamera de v´ıdeo. Caso a mesma seja localizada, o programa trata de iniexistˆen-cializar as API’s do Robotino. Inicializa¸c˜ao essa que leva em considera¸c˜ao o IP do robˆo que ´e pas-sado ao programa pelo roteador do pr´oprio Robotino. Ap´os isso o Robotino estar´a pronto para receber e executar a qualquer comando enviado ao mesmo.

3.5 Fun¸c˜oes, Headers e Classe Utilizadas para Inicializa¸c˜ao do Robˆo

Para a utiliza¸c˜ao correta do Robotino fez-se uso de algumas rotinas (C++) para controle completo do robˆo, destacando-se para isso:

• O tratamento de erros de inicializa¸c˜ao;

• A inicializa¸c˜ao propriamente dita;

• Inicializa¸c˜ao dos atuadores;

• Controle individual dos motores de todas as rodas do robˆo;

(46)

3.6 Elabora¸c˜ao do Programa de Controle

Para o desenvolvimento de t´ecnicas de controle de gestos (vis˜ao computacional) usou-se a biblioteca OpenCV 2.4.10 para facilitar a integra¸c˜ao entre C++ (visual Studio C++) e a API 1.1 do Robotino.

O desenvolvimento do software e seus respectivos testes foram feitos em uma sala cujas dimens˜oes eram de 3,90 m x 2,85 m, com uma fonte de ilumina¸c˜ao artificial cujos dados podem ser visualizados na tabela (1).

Tabela 1 - Informa¸c˜oes sobre a fonte de ilumina¸c˜ao artificial

Lˆampada Fluorecente - OSRAM

Potˆencia Nominal 23,0 W

Tens˜ao Nominal 220 V .. 240 V

Corrente Nominal 0,23 A

Fluxo Luminoso 1280 lm

Temperatura da Cor 6500 K

Tonalidade da Luz 865

Tonalidade de Acordo com EM 12464-1 Daylight ´Indice de Reprodu¸c˜ao de Cor Ra 80

Fonte: (OSRAM,2015)

O software tamb´em pode testar as rea¸c˜oes do robˆo utilizando-se para isso o simulador virtual do Robotino, figura (23), que pode ser baixado direto do site da Festo (Robotino SIM) para verificar se o robˆo responderia adequadamente aos comandos, sem que o mesmo esteja presente fisicamente. Isto ´e muito importante, pois, nem sempre ´e poss´ıvel ter o robˆo a disposi¸c˜ao durante todo o tempo de testes. O IP utilizado para os testes foi o endere¸co local 127.0.0.1:8080.

Figura 23 - Exemplo de utiliza¸c˜ao do Robotino SIM

(47)

impor-tantes para que o robˆo respondesse de forma adequada aos gestos apresentados.

Inicialmente ´e passado para o programa o endere¸co IP default (172.26.201.1) pas-sado pelo roteador do Robotino. Caso o usu´ario queira passar outro endere¸co IP para o programa basta apenas inserir o mesmo na linha de execu¸c˜ao, por exemplo, nome pro-grama.exe [IP] <enter>.

Ap´os a passagem do endere¸co o programa checa se a cˆamera foi devidamente inici-alizada, caso negativo, apresenta uma mensagem de erro e sai do programa. Se a cˆamera tiver sido devidamente inicializada o programa executa uma rotina para inicializar o robˆo, usando-se para isso a API 1.1 do Robotino. Ap´os a checagem da inicializa¸c˜ao do robˆo o programa apresenta uma tela contendo uma legenda onde constam todos comandos com-preendidos pelo robˆo para servir de orienta¸c˜ao ao usu´ario, como pode ser visto na figura (24).

Figura 24 - Janela ativa contendo a legenda de comandos

Continuando-se com a execu¸c˜ao do software, se utiliza o procedimento de autoria do desenvolvedorskinExtract()), que aplica na imagem recebida os filtros Mediana e Gaussi-ano, converte-se o espa¸co de cor RGB em YCbCr e gera-se uma imagem bin´aria.

Finalizando-se o procedimento, aplica-se os filtros Dilata¸c˜ao e Eros˜ao para a redu-¸c˜ao de falsos positivos (uma vez que a imagem j´a recebeu dois filtros anteriormente) e suaviza¸c˜ao final da imagem, figura (22)b.

(48)

Figura 25 - Contorno de uma imagem

Ap´os a passagem da fun¸c˜ao de contorno, verifica-se se o tamanho do contorno ´e diferente de zero, caso verdadeiro o programa segue normalmente, caso falso o programa volta ao in´ıcio e procura por uma nova imagem.

Uma vez que ´e constatado que o tamanho do contorno ´e diferente de zero, se utiliza um la¸co for() para varrer o vetor de pontos que cont´em o contorno armazenado para se calcular a ´area total do contorno atrav´es da fun¸c˜ao do OpenCV contourArea(). Isso ´e importante pois atrav´es de testes experimentais (em tempo de execu¸c˜ao) viu-se que com uma ´area total de imagem de no m´ınimo 5000 pixels se consegue reduzir falsos positivos e a carga computacional, visto que, todas as ´areas menores que 5000 pixels s˜ao desprezadas pelo software. Outro ponto percebido foi que, mesmo com uma imagem maior que 5000 pixels se a mesma ficar muito longe da cˆamera (al´em de 60 cm de distˆancia) as imagens ficavam distorcidas, figura (21).

Ap´os a constata¸c˜ao que a ´area do contorno ´e maior que 5000 pixels se utiliza o pro-cedimento on trackbar() (de autoria do desenvolvedor) para desenhar na tela o contorno encontrado e prosseguir-se com a execu¸c˜ao normal do programa.

(49)

Figura 26 - Ponto vermelho central: COG com sua respectiva coordenada (x, y).

A seguir, tem-se o chamamento da fun¸c˜ao Dist Focagem() (de autoria do desenvol-vedor) que usa as informa¸c˜oes vindas da fun¸c˜ao de contorno findContours() e da fun¸c˜ao

C COG()juntamente com as fun¸c˜oes do OpenCVconvexHull() econvexityDefects() para o reconhecimento das pontas dos dedos na imagem.

A fun¸c˜ao em quest˜ao, utiliza um la¸co for() para vasculhar inteiramente o vetor de dados retornado pela fun¸c˜ao de contorno e aplica em cada itera¸c˜ao as fun¸c˜oes do

convexHull() e convexityDefects() para guardar as informa¸c˜oes referentes ao contorno e desenhar na tela as informa¸c˜oes advindas da fun¸c˜ao convex hull. Uma vez que as informa-¸c˜oes foram armazenadas nos respectivos vetores pontos do convex hull e convexity defect ´e utilizado mais um la¸cofor() para encontrar a m´edia de pontos de cada massa de dados do convexity defect (para cada itera¸c˜ao o vetor do convexity defect armazena o ponto inicial o ponto final e o ponto mais distante do convex hull dentro do convexity defect) para a partir da´ı, selecionar um ´unico ponto por itera¸c˜ao.

Novamente ´e utilizado mais um la¸co for() que abrange o c´alculo da distˆancia entre os pontos encontrados e o centro do contorno e verifica-se atrav´es de um la¸co condicional

if() se os pontos encontrados est˜ao situados na parte superior, laterais e abaixo do centro geom´etrico do contorno.

Uma vez que essas informa¸c˜oes s˜ao conhecidas, pode-se determinar se os pontos podem ser considerados como ponta dos dedos ou n˜ao. Caso se determine que o ponto encontrado ´e v´alido (ponta do dedo), se tra¸ca um circulo representativo e uma linha unindo o centro geom´etrico da imagem ao ponto rec´em descoberto.

(50)

Figura 27 - Visualiza¸c˜ao dos pontos interpretados: 0, 1 e 2

Figura 28 - Visualiza¸c˜ao dos pontos interpretados: 3, 4 e 5

O programa fica em execu¸c˜ao at´e que o usu´ario pressione a tecla <ESC>, quando finalmente o programa ´e encerrado.

3.7 Robotino

O Robotino (figura29) ´e um sistema rob´otico totalmente funcional, de alta qualidade m´ovel, com uma unidade omnidirecional composta por trˆes rodas Mecanum (figura 30), todas as quais s˜ao individualmente control´aveis, dispostas em um ˆangulo de 120◦

(51)

Figura 29 - Robotino

Fonte: (FESTO,2015b)

Figura 30 - Roda Mecanum usada pelo Robotino

Fonte: (FESTO,2015c)

O Robotino pode ser programado com o auxilio do software Robotino View ou lin-guagem de programa¸c˜ao em um PC via rede wireless. Tanto O Robotino View (Apenas para o sistema operacional Windows) quanto a programa¸c˜ao feita por linguagens com-putacionais (C, C++, Java, .Net) s˜ao capaz de transmitir sinais para o controlador do motor, assim como, mostrar, trocar e avaliar valores dos sensores.

(52)

Figura 31 - Display do Robotino

Fonte: (FESTO,2015b)

O Robotino possui um ponto de acesso via Wi-Fi, figura (32), que pode ser fixado diretamente na carca¸ca do robˆo para que o mesmo seja controlado por uma rede sem fio.

Figura 32 - Ponto de acesso Wi-Fi

O Robotino pode ser usado para o treinamento de pessoal, treinamento esse que abrange as seguintes ´areas:

a) Mecˆanica

– Constru¸c˜ao mecˆanica de um sistema de robˆo m´ovel.

b) El´etrica

(53)

– Fia¸c˜ao correta de componentes el´etricos.

c) Sensores

– Controle de trajet´oria guiado por sensores.

– Controle de trajet´oria anti colis˜ao com sensores de distˆancia.

– Controle de trajet´oria via processamento de imagem conseguido por inter-m´edio de fotos de uma webcam.

d) Sistemas de controle por experiˆencia.

– Controle de unidades omnidirecionais.

e) Uso de interface de comunica¸c˜ao.

– Rede sem fio (WI-FI).

f) Comissionamento

– Comissionamento de um sistema de robˆo m´ovel.

O Robotino ´e equipado com nove (9) sensores infravermelhos de medi¸c˜ao de distˆan-cias que s˜ao montados no chassis do robˆo em um ˆangulo entre eles de 40◦

. O Robotino pode escanear todas as ´areas ao redor de objetos com esses sensores. Cada um dos sensores podem ser consultados individualmente atrav´es da placa de circuitos I/O.

Dessa forma os obst´aculos podem ser evitados e distˆancias seguras podem ser man-tidas. Os sensores s˜ao capazes de medi¸c˜oes precisas para uma distˆancia relativa de 4 a 30 cm. A conex˜ao com os sensores ´e especialmente simples, incluindo apenas um sinal de sa´ıda anal´ogica e fonte de alimenta¸c˜ao. A eletrˆonica implantada nos sensores pode determinar a distˆancia e permitir que o mesmo seja lido como um sinal anal´ogico.

A velocidade real de cada motor individual ´e medida em RPM pelo encoder peri-odicamente. Se a velocidade real do motor se desviar do ponto de ajuste (setado pelo usu´ario/programador), o programador pode usar o software Robotino View para configu-rar os parˆametros do controlador PID, e dessa forma resolver o problema.

O sensor anti-colis˜ao, est´a instalado sob uma tira de borracha, que est´a fixado em torno da circunferˆencia do chassi. Uma cˆamara de comuta¸c˜ao est´a localizada dentro de um perfil de pl´astico.

Imagem

Figura 1 Exemplo de vis˜ao computacional (reconhecimento de pessoas) . . . . . 16 Figura 2 Robˆo autˆonomo - Asimo
Figura 1 - Exemplo de vis˜ ao computacional (reconhecimento de pessoas)
Figura 4 - Imagem original (a) e sua representa¸c˜ao no espa¸co de cor RGB (b) e CMYK (c)
Figura 5 - Figuras representativas da varredura da tela
+7

Referências

Documentos relacionados

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

Realizou-se estudo do tipo ecológico com o objetivo de investigar o perfil sociodemográfico e epidemiológico, a frequência de casos, os indicadores epidemiológicos

Canto VI - Enquanto os portugueses rumam em direção às Índias, Baco desce ao palácio de Netuno e incita os deuses Canto VI - Enquanto os portugueses rumam em direção às Índias,

O(s) analista(s) de investimento declara(m) que as opiniões contidas neste relatório refletem exclusivamente suas opiniões pessoais sobre a companhia e seus valores mobiliários e

Audiência pública sobre direitos e deveres Pela Resolução nº 1.229, de 30.11.05, a Agência Nacional de Transportes Terrestres fixou proce- dimentos para utilização de ônibus

Portanto, o usuário de álcool e outras drogas, como qualquer outro portador de transtorno mental, quando recluso em uma instituição de tratamento, tem o direito de manter

Entretanto, assinalamos o uso dos diferentes recursos tecnológicos no processo educativo não apenas para encorajarmos a escola à superação de uma educação

Próximo à desembocadura e seguindo pelo estuário inferior, no estuário médio bem como em grande parte do estuário superior se observa, igualmente, a concentração de areias