17
Universidade Tecnológica Federal do Paraná – UTFPR Departamento Acadêmico de Eletrônica – DAELN Departamento Acadêmico de Informática – DAINF Engenharia de Computação Oficina de Integração 3 (CSX23) – S71 – 2017/2 Relatório Técnico Projeto Monalisa Diego W. Braga 1 [email protected] Rafael J. Trindade 2 [email protected] Ederson S. Fernandes 3 [email protected] Setembro de 2017 Resumo Este trabalho apresenta o desenvolvimento de um pescoço robótico bi- articulado, acoplado por câmeras e controlado por um sistema capaz de detectar e centralizar faces com base em distâncias inferidas. O sistema é composto por um sistema embarcado contendo um microcontrolador, duas câmeras e dois servo motores, que se comunica com uma estação base por meio de comunicação sem fio. A estação base é um computa- dor que processa imagens recebidas do embarcado e transmite coman- dos para movimentação dos motores. Este computador também exibe ao usuário o vídeo capturado em tempo real e uma estimativa da distância das faces detectadas, obtidas utilizando um algoritmo de visão estéreo. A elaboração do projeto contou com a pesquisa teórica de componentes e tecnologias que atendessem os requisitos do sistema. O desenvolvimento contou com a estruturação física do projeto, o desenvolvimento de softwa- res utilizados na estação base e no embarcado e sua integração total. Ape- sar do funcionamento adequado estar limitado a uma distância curta das câmeras e um cenário relativamente limpo de ruídos visuais, os resultados obtidos atingiram os objetivos propostos. 1 Introdução Nas últimas décadas é notável um constante aumento no uso de monitoramento por vídeo. Este tipo de monitoramento consiste na vigilância remota de espaços públicos e privados com a utilização de câmeras [1]. Neste contexto, a visão computacional atrelada ao reconhecimento facial tem sido uma tecnologia muito utilizada em aplicações de monitoramento. A disponibilidade de computadores de baixo custo e com alto poder de proces- samento, possibilitou um aumento considerável no interesse de automatizar os processos de reconhecimento facial para agregar robustez aos sistemas de mo- nitoramento [2]. O principal objetivo do projeto aqui apresentado é a criação de um pescoço robótico articulado com reconhecimento facial. Este conjunto deverá ser capaz 1

Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Universidade Tecnológica Federal do Paraná – UTFPR

Departamento Acadêmico de Eletrônica – DAELN

Departamento Acadêmico de Informática – DAINF

Engenharia de ComputaçãoOficina de Integração 3 (CSX23) – S71 – 2017/2

Relatório TécnicoProjeto Monalisa

Diego W. Braga 1 – [email protected]

Rafael J. Trindade 2 – [email protected]

Ederson S. Fernandes 3 – [email protected]

Setembro de 2017

Resumo

Este trabalho apresenta o desenvolvimento de um pescoço robótico bi-articulado, acoplado por câmeras e controlado por um sistema capaz dedetectar e centralizar faces com base em distâncias inferidas. O sistemaé composto por um sistema embarcado contendo um microcontrolador,duas câmeras e dois servo motores, que se comunica com uma estaçãobase por meio de comunicação sem fio. A estação base é um computa-dor que processa imagens recebidas do embarcado e transmite coman-dos para movimentação dos motores. Este computador também exibe aousuário o vídeo capturado em tempo real e uma estimativa da distânciadas faces detectadas, obtidas utilizando um algoritmo de visão estéreo. Aelaboração do projeto contou com a pesquisa teórica de componentes etecnologias que atendessem os requisitos do sistema. O desenvolvimentocontou com a estruturação física do projeto, o desenvolvimento de softwa-res utilizados na estação base e no embarcado e sua integração total. Ape-sar do funcionamento adequado estar limitado a uma distância curta dascâmeras e um cenário relativamente limpo de ruídos visuais, os resultadosobtidos atingiram os objetivos propostos.

1 Introdução

Nas últimas décadas é notável um constante aumento no uso de monitoramentopor vídeo. Este tipo de monitoramento consiste na vigilância remota de espaçospúblicos e privados com a utilização de câmeras [1].

Neste contexto, a visão computacional atrelada ao reconhecimento facialtem sido uma tecnologia muito utilizada em aplicações de monitoramento. Adisponibilidade de computadores de baixo custo e com alto poder de proces-samento, possibilitou um aumento considerável no interesse de automatizar osprocessos de reconhecimento facial para agregar robustez aos sistemas de mo-nitoramento [2].

O principal objetivo do projeto aqui apresentado é a criação de um pescoçorobótico articulado com reconhecimento facial. Este conjunto deverá ser capaz

1

Page 2: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 2

de reconhecer e centralizar algum rosto detectado no centro da imagem. De-verá também ser capaz de estimar a distância das faces no campo de visão doconjunto.

O nome Monalisa faz referência à mais conhecida pintura da história daArte, por Leonardo da Vinci, que é conhecida por “seguir” o observador comos olhos. Na página https://projetomonalisa.wordpress.com/ está dispo-nível o detalhamento do projeto.

A Figura 1 apresenta uma visão geral do sistema e seus principais compo-nentes.

Figura 1: Visão geral do sistema.

O sistema embarcado é responsável pela captação de vídeos pelas câmerase pelo envio das imagens captadas para a estação base. É responsável ainda porreceber os comandos processados pela estação e comandar os motores presen-tes nas articulações.

A estação base, por sua vez, é responsável por processar os vídeos recebidose interpretar as informações nele contidas, como as faces detectadas e suas dis-tâncias. A partir de tal interpretação, são gerados comandos de movimentaçãoa serem transmitidos para o sistema embarcado.

Por fim, a comunicação entre o embarcado e a estação base é feita via comu-nicação sem fio para permitir uma maior mobilidade para o sistema embarcado.

A partir do objetivo principal foram listados os requisitos funcionais e nãofuncionais que definem com mais clareza o sistema desejado.

1. Requisitos Funcionais(a) O sistema deverá mostrar na tela a imagem captada pelas câmeras.(b) O sistema deverá ser capaz de detectar faces.(c) O sistema deverá mover suas articulações de forma a seguir e cen-

tralizar a face detectada mais próxima.(d) O sistema deverá ser capaz de mensurar a distância em que se en-

contra a face detectada e mostrar ao usuário.

Page 3: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 3

2. Requisitos Não Funcionais(a) O processamento de imagens deverá ser executado na estação base.(b) O sistema deverá ser multiplataforma, isto é, ser executável nos sis-

temas operacionais Linux, Windows e Mac OS.

Na sequência serão descritas na Seção 2 as tecnologias utilizadas no projeto.Na Seção 3 encontra-se os procedimentos para o desenvolvimento do sistema.Na Seção 4 são apresentados os resultados obtidos ao término do projeto e, porfim, na Seção 5 são apresentadas as conclusões finais.

2 Componentes e tecnologias

A partir do objetivo e requisitos estabelecidos para o projeto, foram feitas pes-quisas de componentes e tecnologias que possibilitariam o desenvolvimente ecumprimento destes critérios. As soluções encontradas para as diversas partesdo projeto estão apresentadas ao longo desta seção, dividida em quatro subse-ções, referentes ao sistema embarcado, à estrutura, à estação base e à comuni-cação entre as partes.

2.1 Sistema embarcado

O sistema embarcado é composto por um microcontrolador, duas câmeras edois servo motores. Estes componentes estão detalhados ao longo desta seção,seguidos pela apresentação da técnica escolhida para desenvolvimento da es-trutura.

2.1.1 Microcontrolador

O microcontrolador é responsável pela aquisição de imagens, controle dos mo-tores e comunicação com a estação base. O modelo utilizado no sistema em-barcado foi um Raspberry Pi 3 Model B (Figura 2(a)), escolhido pela sua alta ca-pacidade de processamento, baixo custo, módulo wireless integrado e múltiplasportas USB. Suas principais especificações técnicas estão descritas a seguir.

• System-on-chip Broadcom BCM2837,Quad-Core, 1.2GHz 64bit, 1GB RAM• BCM43438 wireless LAN e Bluetooth Low Energy (BLE) integrados• 40 pinos GPIO• 4 portas USB 2• Saída HDMI• Porta Micro SD

2.1.2 Câmeras

As câmeras são os principais sensores do sistema, sendo responsáveis pela cap-tura do ambiente em vídeo. Para fácil integração ao Raspberry foram escolhidas

Page 4: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 4

câmeras com conexão USB. Com este critério, o modelo escolhido foi a webcamLogitech C270 (Figura 2 (b)), capaz de obter imagens com de até 1280x720 a 30frames por segundo.

2.1.3 Servo Motor

Um Servo Motor é um tipo de motor de corrente contínua que, ao receber umsinal de controle, pode rotacionar em qualquer ângulo entre 0 a 180 graus.

O sinal de controle do Servo Motor é o PWM (Pulse Width Modulation), ouseja, Modulação de Largura de Pulso, que é um sinal no qual é possível regu-lar a porcentagem do tempo em que o sinal permanece em nível lógico alto,tal porcentagem é denominada Duty Cycle. Conforme é variado o Duty Cycledo sinal, o Servo Motor produzirá uma rotação em um ângulo proporcional avariação.[3].

Os servo motores utilizados são o modelo SG-5010, são apresentados na Fi-gura 2 (c), que serão responsáveis pela rotação da estrutura em relação ao eixovertical e pela rotação em relação ao eixo horizontal.

Os componentes utilizados no sistema são mostrados na Figura 2

(a) (b) (c)

Figura 2: Componentes utilizados no Sistema. (a) Raspberry Pi 3. (b) Câmera LogitechC270. (c) Servo motor

2.2 Estrutura

A técnica escolhida para concepção da estrutura foi a impressão 3D. Esta técnicaviabiliza a modelagem e projeto da estrutura de forma a atender os requisitos dosistema, além de ser uma tecnologia de fácil acesso dentro da universidade.

A maioria das impressoras tridimensionais (3D) comercialmente disponí-veis utiliza uma técnica de fabricação conhecida como Molten Polymer Depo-sition (MPD), ou seja, deposição de polímero fundido, que consiste em posicio-nar um filamento termoplástico sólido em um bico de extrusão, que é aquecido,derretendo o filamento termoplástico e, assim, depositando o material derre-tido em camadas finas sobre uma placa de base móvel[4].

Page 5: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 5

Durante o processo de aquecimento do material, o bico de extrusão é capazde realizar um movimento unilateral paralelo ao plano da placa ou perpendi-cular a esta, ao mesmo tempo em que a placa também realiza um movimentounilateral na direção oposta ao movimento do bico, desta forma, é possível rea-lizar o depósito de camadas do material ao longo de toda a superfície da placa,realizando assim a impressão de objetos em 3 dimensões.

2.3 Estação base

A principal função desempenhada pela estação base consiste no processamentodos dados recebidos do sistema embarcado. Sendo assim foram investigadosalgoritmos e técnicas que atendessem as necessidades do projeto. Esta seçãoapresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir de visão estéreo.

2.3.1 Detecção facial

A detecção facial é uma área de aplicação de processamento de imagens e vi-são computacional que utiliza técnicas para detecção de faces em uma imagem.Diversos métodos podem ser empregados para este fim, como por exemplo, ométodo cascata de classificadores. Esta técnica consiste em utilizar diversos es-tágios, descartando em cada um as regiões não aceitas e aumentando gradati-vamente a precisão. O Haar Cascade, proposto por Viola e Jones em 2001 [5],utiliza desta técnica, atingindo altos níveis de detecção com baixo custo de pro-cessamento.

A biblioteca OpenCV possui uma implementação deste método. Esta setrata de uma biblioteca de código aberto de visão computacional, de uso livre,com interface em diversas linguagens e suporte para diversos sistemas operaci-onais [6]. Suas aplicações possuem um importante papel no crescimento do usode visão computacional, possibilitando a utilização de recursos anteriormentepouco disponíveis [7].

2.3.2 Mapa de profundidade a partir de visão estéreo

A estimativa de distância pode ser feita a partir da imagem de duas câmeraspara geração de um mapa de produndidade com posterior calibragem dos pa-râmetros visuais com distâncias reais. A Figura 3 apresenta uma representaçãoesquemática de como o mapa de profundidade pode ser gerado a partir de sim-ples relações matemáticas:

Page 6: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 6

Figura 3: Triângulos equivalentes de pixel em imagem estéreo [8]

O diagrama acima contém triângulos equivalentes de um pixel na imagem.A partir das equações equivalentes, chega-se ao seguinte resultado:

di spar i d ade = x −x ′ = B f

Z

x e x’ são as distâncias entre pontos em um plano de imagem correspon-dente a um ponto 3D e ao centro da câmera. B é a distância entre as duas câme-ras utilizadas e f é a distância focal da lente. A partir disto, pode se obter a pro-fundidade de todos os pixels na imagem. Desta forma também são encontradasas semelhanças entre as imagens, permitindo a geração de uma combinaçãodas imagens das câmeras. No caso das câmeras utilizadas a distância focal éde 4mm e neste projeto são montadas com uma distância de 7,3cm entre suaslentes.

2.4 Comunicação

Para realizar a troca de informações entre um cliente e um servidor, é necessárioa utilização de um protocolo de rede, para que os dados a serem enviados, pos-sam ser transmitidos de forma adequada. O protocolo de rede UDP via socketé um tipo de protocolo que permite a transmissão de dados via rede. O UDP éapropriado para aplicações em que a velocidade na transmissão dos dados sejamais valiosa do que receber os dados na ordem correta.

A implementação do protocolo UDP em JAVA consiste em 2 classes prin-cipais: datagramPacket e datagramSocket. O datagramPacket é o pacote quearmazenará os dados a serem enviados. O datagramSocket é a classe responsá-vel pelo recebimento e envio do datagramPacket para o endereço ip e porta dedestino [9].

3 Desenvolvimento

O desenvolvimento do sistema contou com 3 partes principais, sendo elas a es-truturação, desenvolvimento do software da estação base e desenvolvimento do

Page 7: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 7

software do sistema embarcado. Estas etapas estão detalhadas ao decorrer destaseção.

3.1 Estrutura

A estruturação física do projeto foi composta por duas etapas principais: im-pressão 3D das peças e montagem destas junto aos demais componentes.

Para a modelagem 3D da estrutura foi utilizado o software Sketchup[10].Este software disponibiliza uma licença gratuita de 1 mês, além de oferecer umplugin para converter os modelos 3D em arquivos do tipo .stl. Os arquivos .stlsão os principais tipos de arquivos utilizados pelas impressoras do mercadopara a concepção de modelos 3D[11].

Após a obteção dos arquivos .stl, é dado o início da impressão das peças mo-deladas. Antes da impressão é necessário selecionar o tipo de material que seráutilizado para imprimir as peças. Os principais tipos de filamento utilizados naimpressão 3D são o ABS[12] e o PLA[13], que são 2 tipos de filamento termoplás-tico que derretem ao serem aquecidos, permitindo com que a impressora rea-lize a impressão das peças conforme o conteúdo dos arquivos .stl, depositandoo material termoplástico derretido. Sendo assim, o material utilizado para a im-pressão foi o ABS, pois, ele é menos denso do que o PLA, originando peças maisleves, o que facilita a movimentação do conjunto.

Com as peças impressas, foi feita a montagem da estrutura posicionando osservo motores e peças em seus respectivos encaixes e as fixando com parafusos.O modelos 3D e a estrutura montada são mostradas na Figura 4.

3.2 Estação base

O software utilizado na estação base foi desenvolvido em linguagem JAVA. Suaimplementação foi feita em partes que posteriormente foram integradas e for-maram o sistema geral. Na Figura 5 é mostrado um diagrama de fluxo de dadosdo software, contendo as principais partes contidas no sistema e as informaçõespassadas entre elas.

Esse diagrama foi desenvolvido ao início das atividades para guiar o desen-volvimento paralelo de diversas partes. Através dele é possível ter conhecimentodos tipos de dados recebidos e fornecidos por cada parte constituinte.

Ao longo desta seção serão detalhadas as principais partes mostradas no di-agrama e o seu processo de desenvolvimento. Estas partes estão separadas emrecebimento e tratamento das imagens, detecção de faces, mapa de profundi-dade, interface gráfica e controle dos motores.

3.2.1 Recebimento e tratamento das imagens

A parte inicial do fluxo se trata do recebimento dos vídeos via socket enviadospelo sistema embarcado.

Page 8: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 8

(a) (b) (c)

(d) (e) (f)

Figura 4: Peças modeladas. (a)Base. (b) Suporte do eixo central. (c) Base das câmeras.(d) Suporte da base das câmeras. (e) Eixo central. (f) Peças impressas e montadas.

Os vídeos recebidos são capturados em frames com a utilização da biblio-teca OpenCV, de forma síncrona.

Os frames obtidos são então copiados e tratados, convertendo-os em escalade cinza para serem utilizados posteriormente pelo software.

3.2.2 Detecção de faces

A detecção de faces presentes nos vídeos recebidos foi implementada utilizandoo método Haar Cascade presente na biblioteca OpenCV.

Este método utiliza a imagem em escala de cinza obtida anteriormente, e éconfigurado com um tamanho mínimo de face para detecção. Sua saída é umvetor contendo as posições de todas as faces detectadas.

3.2.3 Mapa de profundidade

A obtenção da profundidade das faces detectadas depende da obtenção do mapadisparidade entre as imagens tratadas de cada câmera. Este mapa é calculado acada captura das imagens, e se trata do conjunto das diferenças na coordenadax de cada ponto de interesse na cena, ou seja, os centros das faces detectadas.

Page 9: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 9

Figura 5: Diagrama de fluxo de informação na estação base.

Tendo obtido as disparidades de cada face são então calculadas as distânciasde cada face presente e armazenadas em um vetor, que é utilizado para exibiçãojunto à exibição das faces.

A informação sobre as coordenadas da face mais próxima é então repassadapara o cálculo de controle dos servo motores.

3.2.4 Interface gráfica

Foi implementada uma interface gráfica que é exibida ao usuário da estaçãobase. Para isto, são recebidas as imagens originais captadas das câmeras, a partirdestas é gerado um mapa de profundidade e é realizada a detecção facial.

Esta interface gráfica contém um botão para início e pausa do funciona-mento do sistema e é exibida a imagem em tempo real capturada pelas câmeras.Com os dados da detecção facial, desenha-se retângulos no entorno das facesdetectadas e a partir do mapa de profundidade, são calculadas as coordenadaspara os servomotores. A Figura 6 mostra a interface gráfica vista pelo usuáriodurante o funcionamento do sistema.

3.2.5 Controle dos motores

A última parte presente no software executado pela estação base e que fechao fluxo de dados se trata do cálculo dos ângulos de movimentação dos servomotores, e sua transferência para o sistema embarcado. Os servo motores são

Page 10: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 10

Figura 6: Exemplo de funcionamento da interface vista pelo usuário.

controlados através da combinação dos softwares da estação base com os doRaspberry Pi, baseando se no sistema Pan/Tilt para o controle dos movimentos.Na estação base foi desenvolvido um código em JAVA, que é responsável porreceber a posição X e Y do centro da face detectada no frame das câmeras, eentão, com esse par de valores, realizar o cálculo do ângulo que cada um dosservo motores deverão rotacionar, de forma a seguir a face detectada.

Em seguida, é necessário converter os valores desses ângulos em seus DutyCycles, enviá-los para o Raspberry Pi, onde serão atribuídos aos respectivos si-nais de controle, efetivando assim a rotação dos motores[14].

A troca dessas informações entre o código JAVA executando na estação basee o código em Python executando no Raspberry Pi é realizada através de umacomunicação UDP do tipo cliente/servidor, via socket. No lado do RaspberryPi é iniciado o servidor, que recebe dados através de uma porta. Já no lado daestação base é iniciado o cliente, que estabelece conexão com o servidor atravésda porta em que o servidor está recebendo, e então, o cliente é apto a enviar osdados para o servidor[15].

Como essa comunicação é realizada via Wifi, é necessário que tanto a esta-ção base como o Raspberry Pi estejam conectados à mesma rede, de modo que,os dados possam ser transmitidos do cliente para o endereço IP e porta abertospelo servidor.

3.3 Sistema embarcado

O sistema embarcado é comandado pelo Raspberry Pi, que é responsável pelacontrole dos servomotores e captação das imagens das câmeras e transferênciade dados com a estação base.

O software desenvolvido para controlar os servo motores, foi implementado

Page 11: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 11

Figura 7: Diagrama de fluxo de informação no sistema embarcado.

em Python e é responsável por receber os Duty Cycles da estação base, e atribuí-los aos sinais de controle de cada servo motor, para que assim possa ser efeti-vada a rotação[16].

3.3.1 Streaming de vídeo

O streaming é feito utilizando duas câmeras Logitech C270 a partir do RaspberryPi. Esta tarefa é feita com o auxílio da ferramenta mjpg-streamer [17] um servi-dor de vídeo que codifica o vídeo capturado no formato mjpeg. Esta plataformafoi configurada para enviar o vídeo para o endereço atual da rede em que o Rasp-berry está conectado, possibilitando assim que esta informação seja capturadapela estação base num endereço do tipo http://x.x.x.x:port/?action=stream.

Para que o streaming de duas fontes seja realizado, é necessário que duasinstâncias (cada qual com as respectivas configurações) deste software sejamcriadas.

4 Resultados

Após o desenvolvimento é possível analisar os resultados obtidos no projeto aotodo. Esta seção apresenta os custos, dificuldades encontradas e o funciona-mento final do sistema desenvolvido.

Page 12: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 12

4.1 Sistema em funcionamento

A Figura 8 apresenta a montagem final do projeto, contendo todos os compo-nentes.

Page 13: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 13

Figura 8: Montagem final do projeto.

Na Figura 9 é exemplificado o funcionamento resultante do sistema, queatinge os objetivos e requisitos pré estabelecidos. A Figura 9(a) mostra umavisão superior do conjunto em um ambiente com três pessoas, com as facesdirecionadas para as câmeras. A Figura 9(b) apresenta a saída mostrada na es-tação base na situação descrita na Figura 9(a). Nessa saída é apresentada a cenacaptada pelas câmeras, a demarcação dos rostos detectados e suas respectivasdistâncias do conjunto. Figura 9(c) apresenta o conjunto após a ação tomadapara direcionar as câmeras para a face mais próxima, gerando a saída mostradana Figura 9(d).

(a) (b)

(c) (d)

Figura 9: Exemplo de funcionamento do sistema (a)Visão superior do conjunto em umambiente. (b) Saída do sistema para a situação mostrada em (a). (c) Visão superiordo conjunto após ação de centralização da face. (d) Saída do sistema para a situaçãomostrada em (c).

Page 14: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 14

4.2 Dificuldades Encontradas

O primeiro obstáculo encontrado durante o desenvolvimento do projeto foi comrelação a latência na transmissão via wifi das imagens obtidas pelas câmeras, dosistema embarcado para a estação base. Os primeiros testes realizados mostra-ram que a latência poderia ser realmente um problema. Com isso, alguns mé-todos de streaming foram testados, como o WebRTC, Netcat e GStreamer, como objetivo de encontrar um serviço com baixa latência e ao mesmo tempo com-patível com a biblioteca OpenCV.

Durante as tentativas com os métodos citados, observou-se que as câmerasadquiridas para o desenvolvimento do projeto se mostraram incompatíveis comos métodos de streaming, então, foi necessário adquirir novas câmeras, foramadiquiridas as Logitech C270, que são compatíveis com os métodos. Com asnovas câmeras e utilizando o programa mjpeg-streamer, foi possível realizar ostreaming, de forma compatível com o OpenCV e apresentando baixa latência.

A partir da mudança nas câmeras, foi necessário reprojetar algumas peçasda estrutura para posicionar de forma adequada às novas câmeras. Como con-sequência, também foi necessário adquirir um servo motor mais potente, pois,as novas câmeras aumentaram o peso sobre o servo motor, causando assim, ins-tabilidade durante a movimentação, interferindo na precisão da detecção faciale de profundidade.

Outra dificuldade encontrada foi com relação a capacidade do Raspberry Piem gerar 2 sinais PWM.Os sinais originados por software se mostraram poucoprecisos, o que dificultou nos ajustes do controle dos servo motores. O cenárioideal seria a utilização de 2 sinais PWM por hardware.

Quando submetidos a uma carga, os servo motores demandam alta cor-rente, chegando a picos de 1A, com isso as baterias de 9V, que foram utilizadas aprincípio, se tornaram insuficientes para a alimentação. Sendo assim, a soluçãofoi utilizar fontes de alimentação disponíveis na universidade.

4.3 Custos

Ao início do desenvolvimento foram estimados os custos necessários para exe-cução do projeto. Por conta de fatores diversos estes custos foram extrapolados.A Tabela 1 apresenta o orçamento final de construção do sistema, mostrando oscomponentes necessários, suas quantidades e valores.

Page 15: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 15

Tabela 1: Orçamento do projeto.Componente Quantidade Valor unitário (R$) Valor total (R$)Raspberry Pi 1 159,00 159,00Fonte Raspberry Pi 3 1 29,00 29,00Cartão MicroSD 1 35,00 35,00Kit Jumper Macho - Fêmea 1 8,50 8,50Servo Motor 2 49,00 98,00Impressão 3D 1 50,00 50,00Câmera Logitech C270 2 100,00 200,00TOTAL: 604,30

5 Conclusão

A execução do projeto se mostrou suficiente para atender os objetivos propos-tos. Apesar dos desvios de cronograma e extrapolação do orçamento os resul-tados obtidos se mostraram satisfatórios e condizentes com o esperado, salien-tando ainda mais a importância do planejamento antes de iniciar a execução.Devido a elaboração do cronograma, foi possível ter um maior controle sobreo desenvolvimento, permitindo total domínio sobre qual estágio de desenvol-vimento se encontrava o sistema em cada semana, além de nos dar uma visãodas próximas tarefas a serem executadas, permitindo realizar a manipulações,de forma obter um desenvolvimento mais adequado.

Durante o desenvolvimento, foi possível identificar a alta complexidade emtrabalhar com sistemas em tempo real, principalmente devido ao fato de que aresposta do sistema é muito afetada por pequenos delays oriundos, principal-mente, da transmissão de vídeo e dados, que interferem diretamente na movi-mentação do sistema, gerando assim um acúmulo de interferências que dificul-tam a operação em tempo real.

Trabalhar com visão computacional utilizando a biblioteca OpenCV deman-dou muito tempo dos integrantes da equipe devido ao fato de que a documen-tação disponível é orientada a profissionais da área, utilizando-se de termino-logias específicas da visão computacional, exigindo assim um alto desprendi-mento de tempo para identificar as funcionalidades disponíveis na biblioteca equais eram aplicáveis aos nossos interesses.

A movimentação dos servo motores também foi uma fonte de problemas nadetecção facial, pois, o reconhecimento facial atrelado ao seguimento de facesdevem estar em sincronia, dado que, que instabilidade na movimentação dosservo motores resulta na dificuldade em estabelecer a real posição das faces aserem detectadas.

O mapa de disparidade utilizado na inferência de distâncias apresentou umalto nível de complexidade para ser construído, além de ter uma literatura muito

Page 16: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 16

limitada, o que dificultou ainda mais a obtenção de informações pertinentespara a sua construção.

Uma das principais tecnologias utilizadas no decorrer do desenvolvimentodo projeto e que muito agregou aos membros da equipe, foi a impressão 3D.Além da visão computacional que mostrou ter um alto potencial para aplica-ções reais, a impressão 3D é uma ferramenta que cada vez mais se torna de fácilacesso a população em geral, permitindo a elaboração de projetos sofisticadosde forma pouco burocrática.

No entanto, o projeto apresenta algumas limitações. A movimentação físicado sistema mostrou um grau de impecisão, resultante da falta de robustez namontagem e do controle dos servos. Esta limitação não impediu o funciona-mento, mas gerou um grau de exatidão reduzido no seguimento das faces.

Outra limitação está relacionada ao ambiente externo. Para o mapeamentoadequado da profundidade de objetos na imagem, é recomendável que a cap-tura das imagens das cameras seja feito em ambiente relativamente livre de"perturbadores". A presença de iluminação irregular no cenário observado tendea prejudicar a qualidade do mapa gerado, portanto para melhor observar o fun-cionamento do sistema os testes foram relizados em ambientes com moderadaincidência de luz solar.

Podemos apontar alguns pontos a se melhorar em projetos futuros, base-ados nas dificuldades encontradas. O primeiro deles é o desenvolvimento deum sistema de alimentação compacto para os servo motores, para que eles pos-sam funcionar sem a fonte de alimentação. Um segundo ponto é a expansãodas capacidades de visão computacional do sistema, como por exemplo adici-onando reconhecimento de faces ou ainda detecção de outros tipos de objetos.Por fim, o controle dos servo motores poderia ser refinado para obter uma mo-vimentação mais suave e precisa, aumentando a eficiência e estabilidade. Umpossível aprimoramento poderia ser obtido realizando um projeto mais elabo-rado e pautado em cálculos estruturais de braços mecânicos, de modo a obteruma disposição estratégica das peças e componentes para que a movimentaçãopudesse ser beneficiada.

Page 17: Relatório Técnico - UTFPRpaginapessoal.utfpr.edu.br/gustavobborba/if66j-s71... · apresenta as soluções encontradas, divididas em Detecção facial e Mapa de pro-fundidade a partir

Relatório Técnico: Projeto Monalisa 17

Referências

[1] Jean-Yves Dufour. Intelligent video surveillance systems, 2013.

[2] Anil K. Jain Stan Z. Li. Handbook of face recognition, 2011.

[3] Max A. Denket. Frontiers in robotics research, 2006.

[4] Brent Stephens. Ultrafine particle emissions from desktop 3d printers. Else-vier, April 2013. Download: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.717.8508&rep=rep1&type=pdf.

[5] Paul Viola and Michael Jones. Rapid object detection using a boosted cas-cade of simple features. CVPR 2001., 2001. CVPR 2001. Proceedings of the2001 IEEE Computer Society Conference on. Vol. 1. IEEE, 2001.

[6] OpenCV library. https://opencv.org/, Acesso em 20 de outubro de 2017.

[7] Gary Bradski and Adrian Kaehler. Learning opencv: Computer vision withthe opencv library, 2008.

[8] Gary Bradski and Adrian Kaehler. Learning opencv: Depth map from stereoimages, 2008.

[9] Elliotte Harold. Java network programming, 4th edition, 2013.

[10] Site oficial do software. https://www.sketchup.com/pt-BR.

[11] Ian Gibson. Additive manufacturing technologies: 3d printing, rapid pro-totyping, and direct digital manufacturing, 2015.

[12] Herman F.Mark. Encyclopedia of polymer science and technology, concise,2007.

[13] Majid Jamshidian. Poly-lactic acid: Production, applications, nanocompo-sites, and release studies, 2010.

[14] Scott Preston. The definitive guide to building java robots, 2005.

[15] Eitan Farchi. Automatic simulation of network problems in udp-based javaprograms, 2004.

[16] Simon Monk. Raspberry pi cookbook, 2014.

[17] Crisan Calin. http://www.howtoembed.com/projects/raspberry-pi/78-pieye-webcam-streaming-in-m-jpg-format-with-raspberry-pi, 2012.